diff --git a/ChartsSpace/TimeMachine.js b/ChartsSpace/TimeMachine.js index 393e15bb0..72e23cbf1 100644 --- a/ChartsSpace/TimeMachine.js +++ b/ChartsSpace/TimeMachine.js @@ -329,10 +329,21 @@ function newTimeMachine () { } function physics () { - thisObjectPhysics() - childrenPhysics() - syncWithDesigner() - saveFrame(thisObject.payload, thisObject.container.frame) + if (thisObject.container.frame.isInViewPort()) { + thisObjectPhysics() + childrenPhysics() + syncWithDesigner() + saveFrame(thisObject.payload, thisObject.container.frame) + } + panelPhysics() + } + + function panelPhysics () { + if (thisObject.container.frame.isInViewPort()) { + canvas.panelsSpace.makeVisible(thisObject.payload.node.id) + } else { + canvas.panelsSpace.makeInvisible(thisObject.payload.node.id) + } } function syncWithDesigner () { diff --git a/Panels/LayersPanel.js b/Panels/LayersPanel.js index f48ad51f5..2b0fc501e 100644 --- a/Panels/LayersPanel.js +++ b/Panels/LayersPanel.js @@ -5,6 +5,7 @@ function newProductsPanel () { container: undefined, layers: [], payload: undefined, + isVisible: true, getLoadingLayers: getLoadingLayers, physics: physics, draw: draw, diff --git a/Spaces/ChartSpace.js b/Spaces/ChartSpace.js index 67b21038c..dced0c410 100644 --- a/Spaces/ChartSpace.js +++ b/Spaces/ChartSpace.js @@ -332,11 +332,11 @@ function newChartSpace () { } if (timeMachine.container.frame.isInViewPort()) { - timeMachine.physics() thisObject.inViewport.set(timeMachine.payload.node.id, timeMachine) } else { thisObject.inViewport.delete(timeMachine.payload.node.id) } + timeMachine.physics() } } diff --git a/Spaces/PanelsSpace.js b/Spaces/PanelsSpace.js index 4be89c240..eef432453 100644 --- a/Spaces/PanelsSpace.js +++ b/Spaces/PanelsSpace.js @@ -8,6 +8,8 @@ function newPanelsSpace () { let thisObject = { visible: true, container: undefined, + makeVisible: makeVisible, + makeInvisible: makeInvisible, createNewPanel: createNewPanel, destroyPanel: destroyPanel, getPanel: getPanel, @@ -73,6 +75,24 @@ function newPanelsSpace () { return panel.handle } + function makeVisible (owner) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] + if (panel.owner === owner) { + panel.isVisible = true + } + } + } + + function makeInvisible (owner) { + for (let i = 0; i < thisObject.panels.length; i++) { + let panel = thisObject.panels[i] + if (panel.owner === owner) { + panel.isVisible = false + } + } + } + function destroyPanel (pPanelHandle) { for (let i = 0; i < thisObject.panels.length; i++) { let panel = thisObject.panels[i] @@ -264,11 +284,12 @@ function newPanelsSpace () { for (let i = 0; i < currentIndex; i++) { let panel = thisObject.panels[i] - - if (isThisPointInsideThisFrame(corner1, panel.container.frame) === true) { return true } - if (isThisPointInsideThisFrame(corner2, panel.container.frame) === true) { return true } - if (isThisPointInsideThisFrame(corner3, panel.container.frame) === true) { return true } - if (isThisPointInsideThisFrame(corner4, panel.container.frame) === true) { return true } + if (panel.isVisible === true) { + if (isThisPointInsideThisFrame(corner1, panel.container.frame) === true) { return true } + if (isThisPointInsideThisFrame(corner2, panel.container.frame) === true) { return true } + if (isThisPointInsideThisFrame(corner3, panel.container.frame) === true) { return true } + if (isThisPointInsideThisFrame(corner4, panel.container.frame) === true) { return true } + } } function isThisPointInsideThisFrame (point, frame) {