fix: #310 keep loading animation bug is related to cytoscape undefined bug. And cytoscape node position remembering feature is not actually finished correctly yet before. Now remembering feature is done.

This commit is contained in:
Cindy Chang
2024-07-04 11:07:25 +08:00
parent 8a77df285b
commit d8d70f01f3
3 changed files with 67 additions and 17 deletions

View File

@@ -227,25 +227,27 @@ export default function cytoscapeMap(mapData, dataLayerType, dataLayerOption, cu
});
const cytoscapeStore = CytoscapeStore();
cy.ready(() => {
cytoscapeStore.loadPositionsFromStorage();
localStorage.getItem(SAVE_KEY_NAME) && console.log(JSON.parse(localStorage.getItem(SAVE_KEY_NAME)));
// 判斷localStorage是否儲存過拜訪資訊
// 若曾經儲存過拜訪後的座標位置則restore位置來渲染出來
if(localStorage.getItem(SAVE_KEY_NAME) && JSON.parse(localStorage.getItem(SAVE_KEY_NAME))) {
const allGraphsRemembered = JSON.parse(localStorage.getItem(SAVE_KEY_NAME));
const currentGraphNodesRemembered = allGraphsRemembered[cytoscapeStore.currentGraphId];
currentGraphNodesRemembered.forEach(nodeRemembered => {
const nodeToDecide = cy.getElementById(nodeRemembered.id);
if (nodeToDecide) {
nodeToDecide.position(nodeRemembered.position);
}
});
const currentGraphNodesRemembered = allGraphsRemembered[cytoscapeStore.currentGraphId]; // 可能是undefined
if(currentGraphNodesRemembered) {
currentGraphNodesRemembered.forEach(nodeRemembered => {
const nodeToDecide = cy.getElementById(nodeRemembered.id);
if (nodeToDecide) {
nodeToDecide.position(nodeRemembered.position);
}
});
}
}
//存下此刻剛進入畫面時當前所有節點的座標位置
const allNodes = cy.nodes();
allNodes.map(nodeFirstlySave => {
cytoscapeStore.saveNodePosition(nodeFirstlySave.id(), nodeFirstlySave.position);
cytoscapeStore.saveNodePosition(nodeFirstlySave.id(), nodeFirstlySave.position());
});
// 在改變節點位置後,盡可能地記錄節點線條的位置情報