Skip to content

Commit 63f07e2

Browse files
committed
stable
1 parent a5b1ebf commit 63f07e2

File tree

5 files changed

+69
-11
lines changed

5 files changed

+69
-11
lines changed

composables/project_manager.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ export function useProjectManager() {
3333
async function importProjectFile(file) {
3434
geode.start_request()
3535
try {
36+
console.log("[ProjectManager] Import start with file:", file?.name)
37+
3638
const infra = useInfraStore()
3739
await infra.create_connection()
3840

@@ -53,18 +55,22 @@ export function useProjectManager() {
5355
schema: viewer_schemas.opengeodeweb_viewer.import_project,
5456
params: {},
5557
})
58+
5659
await viewer_call({
5760
schema: viewer_schemas.opengeodeweb_viewer.viewer.reset_visualization,
5861
params: {},
5962
})
6063

61-
// const dataBaseStore = useDataBaseStore()
6264
const treeviewStore = useTreeviewStore()
6365
treeviewStore.isImporting = true
6466

6567
await appStore.importStores(result.snapshot)
6668

69+
const dataStyleStore = useDataStyleStore()
70+
await dataStyleStore.applyAllStylesFromState()
71+
6772
treeviewStore.isImporting = false
73+
console.log("[ProjectManager] Import finished")
6874
} finally {
6975
geode.stop_request()
7076
}

stores/app.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ export const useAppStore = defineStore("app", () => {
2020
let exportCount = 0
2121

2222
for (const store of stores) {
23-
if (!store.exportStores) {
24-
continue
25-
}
23+
if (!store.exportStores) continue
2624
const storeId = store.$id
2725
try {
2826
snapshot[storeId] = store.exportStores()
@@ -31,7 +29,10 @@ export const useAppStore = defineStore("app", () => {
3129
console.error(`[AppStore] Error exporting store "${storeId}":`, error)
3230
}
3331
}
34-
console.log(`[AppStore] Exported ${exportCount} stores`)
32+
console.log(
33+
`[AppStore] Exported ${exportCount} stores; snapshot keys:`,
34+
Object.keys(snapshot),
35+
)
3536
return snapshot
3637
}
3738

@@ -40,6 +41,11 @@ export const useAppStore = defineStore("app", () => {
4041
console.warn("[AppStore] import called with invalid snapshot")
4142
return
4243
}
44+
console.log(
45+
"[AppStore] Import snapshot keys:",
46+
Object.keys(snapshot || {}),
47+
)
48+
4349
let importedCount = 0
4450
const notFoundStores = []
4551
for (const store of stores) {

stores/data_base.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,14 @@ export const useDataBaseStore = defineStore("dataBase", () => {
6969
id,
7070
value.object_type,
7171
)
72-
7372
hybridViewerStore.addItem(id, value.vtk_js)
7473
}
7574

7675
async function fetchMeshComponents(id) {
7776
await api_fetch(
7877
{
7978
schema: back_schemas.opengeodeweb_back.models.mesh_components,
80-
params: {
81-
id,
82-
},
79+
params: { id },
8380
},
8481
{
8582
response_function: async (response) => {
@@ -107,6 +104,18 @@ export const useDataBaseStore = defineStore("dataBase", () => {
107104
)
108105
}
109106

107+
async function importStores(snapshot) {
108+
const entries = snapshot?.db || {}
109+
const hybrid_store = useHybridViewerStore()
110+
await hybrid_store.initHybridViewer()
111+
hybrid_store.clear()
112+
console.log("[DataBase] importStores entries:", Object.keys(entries))
113+
for (const [id, item] of Object.entries(entries)) {
114+
await registerObject(id)
115+
await addItem(id, item)
116+
}
117+
}
118+
110119
function getCornersUuids(id) {
111120
const { mesh_components } = itemMetaDatas(id)
112121
return Object.values(mesh_components["Corner"])

stores/data_style.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,37 @@ export const useDataStyleStore = defineStore("dataStyle", () => {
7171
}
7272

7373
async function importStores(snapshot) {
74-
dataStyleState.styles = snapshot?.styles || {}
74+
const stylesSnapshot = snapshot?.styles || {}
75+
console.log("[DataStyle] importStores snapshot ids:", Object.keys(stylesSnapshot))
76+
77+
for (const id of Object.keys(dataStyleState.styles)) {
78+
delete dataStyleState.styles[id]
79+
}
80+
for (const [id, style] of Object.entries(stylesSnapshot)) {
81+
dataStyleState.styles[id] = style
82+
}
83+
}
84+
85+
async function applyAllStylesFromState() {
86+
const ids = Object.keys(dataStyleState.styles || {})
87+
console.log("[DataStyle] applyAllStylesFromState ids:", ids)
88+
const applyTasks = []
89+
for (const id of ids) {
90+
const meta = dataBaseStore.itemMetaDatas(id)
91+
const objectType = meta?.object_type
92+
const style = dataStyleState.styles[id]
93+
if (!style) {
94+
console.warn("[DataStyle] No style for id:", id, "skip")
95+
continue
96+
}
97+
if (objectType === "mesh") {
98+
applyTasks.push(Promise.all(meshStyleStore.applyMeshDefaultStyle(id)))
99+
} else if (objectType === "model") {
100+
applyTasks.push(modelStyleStore.applyModelDefaultStyle(id))
101+
}
102+
}
103+
await Promise.all(applyTasks)
104+
console.log("[DataStyle] applyAllStylesFromState finished")
75105
}
76106

77107
return {
@@ -82,6 +112,7 @@ export const useDataStyleStore = defineStore("dataStyle", () => {
82112
modelEdgesVisibility,
83113
exportStores,
84114
importStores,
115+
applyAllStylesFromState,
85116
...meshStyleStore,
86117
...modelStyleStore,
87118
}

stores/treeview.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,14 @@ export const useTreeviewStore = defineStore("treeview", () => {
1111
const isTreeCollection = ref(false)
1212
const selectedTree = ref(null)
1313

14+
const isImporting = ref(false)
15+
1416
/** Functions **/
1517
function addItem(geodeObject, displayed_name, id, object_type) {
16-
dataStyleStore.addDataStyle(id, geodeObject, object_type)
18+
if (!isImporting.value) {
19+
dataStyleStore.addDataStyle(id, geodeObject, object_type)
20+
}
21+
1722
const child = { title: displayed_name, id, object_type }
1823

1924
for (let i = 0; i < items.value.length; i++) {
@@ -83,6 +88,7 @@ export const useTreeviewStore = defineStore("treeview", () => {
8388
panelWidth,
8489
model_id,
8590
selectedTree,
91+
isImporting,
8692
addItem,
8793
displayAdditionalTree,
8894
displayFileTree,

0 commit comments

Comments
 (0)