diff --git a/app/classes/shared/server.py b/app/classes/shared/server.py index 3c46e009..01fbab35 100644 --- a/app/classes/shared/server.py +++ b/app/classes/shared/server.py @@ -140,7 +140,11 @@ class Server: try: self.process = pexpect.spawn(self.server_command, cwd=self.server_path, timeout=None, encoding=None) except Exception as ex: - logger.error("Server {} failed to start with error code: {}".format(self.name, ex)) + msg = "Server {} failed to start with error code: {}".format(self.name, ex) + logger.error(msg) + websocket_helper.broadcast('send_start_error', { + 'error': msg + }) return False self.is_crashed = False diff --git a/app/frontend/templates/panel/dashboard.html b/app/frontend/templates/panel/dashboard.html index b6b5bbc4..dbfe5086 100644 --- a/app/frontend/templates/panel/dashboard.html +++ b/app/frontend/templates/panel/dashboard.html @@ -235,6 +235,39 @@ function send_command (server_id, command){ }); } +if (webSocket) { + webSocket.on('send_start_error', function (start_error) { + var closeEl = document.createElement('span'); + var strongEL = document.createElement('strong'); + var msgEl = document.createElement('div'); + + closeEl.innerHTML = '×'; + strongEL.textContent = 'Warning: '; + msgEl.append(strongEL, start_error.error); + + + closeEl.style.marginLeft = '15px'; + closeEl.style.fontWeight = 'bold'; + closeEl.style.float = 'right'; + closeEl.style.fontSize = '22px'; + closeEl.style.lineHeight = '20px'; + closeEl.style.cursor = 'pointer'; + + closeEl.addEventListener('click', function () {this.parentElement.style.display='none';}); + + var parentEl = document.createElement('div'); + + parentEl.style.padding = '20px'; + parentEl.style.backgroundColor = '#f7970f'; + + parentEl.appendChild(closeEl); + parentEl.appendChild(msgEl); + + document.querySelector('.warnings').appendChild(parentEl); + + }); + } + $( document ).ready(function() { console.log('ready for JS!') diff --git a/app/frontend/templates/panel/server_term.html b/app/frontend/templates/panel/server_term.html index 2e43cdb3..bdb0712a 100644 --- a/app/frontend/templates/panel/server_term.html +++ b/app/frontend/templates/panel/server_term.html @@ -144,7 +144,38 @@ } }); } +if (webSocket) { + webSocket.on('send_start_error', function (start_error) { + var closeEl = document.createElement('span'); + var strongEL = document.createElement('strong'); + var msgEl = document.createElement('div'); + closeEl.innerHTML = '×'; + strongEL.textContent = 'Warning: '; + msgEl.append(strongEL, start_error.error); + + + closeEl.style.marginLeft = '15px'; + closeEl.style.fontWeight = 'bold'; + closeEl.style.float = 'right'; + closeEl.style.fontSize = '22px'; + closeEl.style.lineHeight = '20px'; + closeEl.style.cursor = 'pointer'; + + closeEl.addEventListener('click', function () {this.parentElement.style.display='none';}); + + var parentEl = document.createElement('div'); + + parentEl.style.padding = '20px'; + parentEl.style.backgroundColor = '#f7970f'; + + parentEl.appendChild(closeEl); + parentEl.appendChild(msgEl); + + document.querySelector('.warnings').appendChild(parentEl); + + }); + } // Convert running to lower case (example: 'True' converts to 'true') and // then to boolean via JSON.parse() let online = JSON.parse('{{ data['server_stats']['running'] }}'.toLowerCase());