diff --git a/Canvas.js b/Canvas.js index e75a97714..29d8cc855 100644 --- a/Canvas.js +++ b/Canvas.js @@ -275,8 +275,11 @@ function newCanvas () { } if (event.shiftKey === true && (event.ctrlKey === true || event.metaKey === true) && (event.key === 'S' || event.key === 's')) { - canvas.designSpace.workspace.save() - canvas.cockpitSpace.setStatus('Workspace Saved.', 50, canvas.cockpitSpace.statusTypes.ALL_GOOD) + let saved = canvas.designSpace.workspace.save() + if (saved === true) { + canvas.cockpitSpace.setStatus('Workspace Saved.', 50, canvas.cockpitSpace.statusTypes.ALL_GOOD) + } + event.preventDefault() return } diff --git a/DesignSpace/Workspace/Workspace.js b/DesignSpace/Workspace/Workspace.js index b60758468..9762c19fc 100644 --- a/DesignSpace/Workspace/Workspace.js +++ b/DesignSpace/Workspace/Workspace.js @@ -66,6 +66,9 @@ function newWorkspace () { let circularProgressBar = newBusyProgressBar() circularProgressBar.fitFunction = canvas.floatingSpace.fitIntoVisibleArea let droppedNode + let sessionTimestamp = (new Date()).valueOf() + window.localStorage.setItem('Session Timestamp', sessionTimestamp) + console.log(sessionTimestamp) return thisObject @@ -113,8 +116,15 @@ function newWorkspace () { } function saveWorkspace () { - let textToSave = stringifyWorkspace() - window.localStorage.setItem(CANVAS_APP_NAME + '.' + 'Workspace', textToSave) + let savedSessionTimestamp = window.localStorage.getItem('Session Timestamp') + if (Number(savedSessionTimestamp) !== sessionTimestamp) { + canvas.cockpitSpace.setStatus('Could not save the Workspace. You have more that one instance of the Superlagos User Interface open at the same time. Plese close this instance as it is older than the others.', 150, canvas.cockpitSpace.statusTypes.WARNING) + } else { + let textToSave = stringifyWorkspace() + window.localStorage.setItem(CANVAS_APP_NAME + '.' + 'Workspace', textToSave) + window.localStorage.setItem('Session Timestamp', sessionTimestamp) + return true + } } function physics () { diff --git a/Spaces/CockpitSpace.js b/Spaces/CockpitSpace.js index 8b9a3c8e4..248e07c39 100644 --- a/Spaces/CockpitSpace.js +++ b/Spaces/CockpitSpace.js @@ -2,7 +2,8 @@ function newCockpitSpace () { const MODULE_NAME = 'CockpitSpace' const STATUS_TYPES = { - ALL_GOOD: 1 + ALL_GOOD: 1, + WARNING: 2 } let thisObject = { container: undefined, @@ -230,15 +231,15 @@ textColor = UI_COLOR.WHITE break } + case STATUS_TYPES.WARNING: + { + barColor = UI_COLOR.RED + textColor = UI_COLOR.TITANIUM_YELLOW + break + } } } - if (systemEventHandler.isConnected() !== true) { - barColor = UI_COLOR.RED - statusText = 'Lost connection with the local backend. Please check that all localhost servers are running.' - textColor = UI_COLOR.TITANIUM_YELLOW - } - browserCanvasContext.beginPath() browserCanvasContext.rect(zeroPoint.x, zeroPoint.y, thisObject.container.frame.width, thisObject.container.frame.height) browserCanvasContext.fillStyle = 'rgba(' + barColor + ', ' + opacity + ')' diff --git a/SystemEventHandler.js b/SystemEventHandler.js index e6fd960fc..dfc1de006 100644 --- a/SystemEventHandler.js +++ b/SystemEventHandler.js @@ -119,6 +119,10 @@ function newSystemEventHandler () { } } } + + if (thisObject.isConnected() !== true) { + canvas.cockpitSpace.setStatus('Lost connection with the local backend. Please check that all localhost servers are running.', 100, canvas.cockpitSpace.statusTypes.WARNING) + } } function setuptWebSockets (callBackFunction) {