@geode/opengeodeweb-front 9.11.0-rc.8 → 9.11.0-rc.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/.github/workflows/test.yml +23 -0
  2. package/components/FeedBack/ErrorBanner.vue +1 -1
  3. package/components/FeedBack/Snackers.vue +1 -1
  4. package/components/HybridRenderingView.vue +38 -12
  5. package/components/Launcher.vue +1 -1
  6. package/components/PackagesVersions.vue +1 -1
  7. package/components/Recaptcha.vue +1 -1
  8. package/components/RemoteRenderingView.vue +1 -1
  9. package/components/Viewer/BreadCrumb.vue +1 -1
  10. package/components/Viewer/Tree/ObjectTree.vue +1 -1
  11. package/components/Viewer/TreeObject.vue +1 -1
  12. package/components/Wrapper.vue +1 -1
  13. package/composables/api_fetch.js +2 -2
  14. package/composables/run_function_when_microservices_connected.js +1 -1
  15. package/composables/upload_file.js +2 -2
  16. package/composables/viewer_call.js +38 -38
  17. package/internal_stores/mesh/edges.js +49 -52
  18. package/internal_stores/mesh/index.js +20 -14
  19. package/internal_stores/mesh/points.js +9 -7
  20. package/internal_stores/mesh/polygons.js +9 -7
  21. package/internal_stores/mesh/polyhedra.js +8 -6
  22. package/internal_stores/model/blocks.js +1 -1
  23. package/internal_stores/model/corners.js +1 -1
  24. package/internal_stores/model/edges.js +1 -8
  25. package/internal_stores/model/index.js +1 -1
  26. package/internal_stores/model/lines.js +2 -2
  27. package/internal_stores/model/points.js +2 -2
  28. package/internal_stores/model/surfaces.js +1 -1
  29. package/package.json +13 -6
  30. package/stores/data_base.js +9 -1
  31. package/stores/data_style.js +7 -6
  32. package/stores/feedback.js +1 -1
  33. package/stores/geode.js +5 -5
  34. package/stores/hybrid_viewer.js +1 -1
  35. package/stores/infra.js +10 -10
  36. package/stores/treeview.js +1 -1
  37. package/stores/viewer.js +5 -6
  38. package/tests/integration/data/fake_id/edged_curve.vtp +20 -0
  39. package/tests/integration/microservices/back/requirements.in +1 -0
  40. package/tests/integration/microservices/back/requirements.txt +75 -0
  41. package/tests/integration/microservices/viewer/requirements.in +1 -0
  42. package/tests/integration/microservices/viewer/requirements.txt +87 -0
  43. package/tests/integration/stores/DataStyle/mesh/Edges.nuxt.test.js +138 -0
  44. package/{test → tests/unit}/components/CrsSelector.nuxt.test.js +6 -3
  45. package/{test → tests/unit}/components/ExtensionSelector.nuxt.test.js +6 -3
  46. package/{test → tests/unit}/components/FeedBack/ErrorsBanner.nuxt.test.js +10 -3
  47. package/{test → tests/unit}/components/FeedBack/Snackers.nuxt.test.js +24 -21
  48. package/{test → tests/unit}/components/FileSelector.nuxt.test.js +5 -2
  49. package/{test → tests/unit}/components/FileUploader.nuxt.test.js +6 -3
  50. package/{test → tests/unit}/components/Inspector/InspectionButton.nuxt.test.js +6 -3
  51. package/{test → tests/unit}/components/Launcher.nuxt.test.js +9 -2
  52. package/{test → tests/unit}/components/MissingFilesSelector.nuxt.test.js +6 -3
  53. package/{test → tests/unit}/components/ObjectSelector.nuxt.test.js +6 -3
  54. package/{test → tests/unit}/components/PackagesVersions.nuxt.test.js +5 -3
  55. package/{test → tests/unit}/components/Stepper.nuxt.test.js +1 -0
  56. package/{test → tests/unit}/components/Wrapper.nuxt.test.js +1 -1
  57. package/{test → tests/unit}/composables/api_fetch.nuxt.test.js +3 -2
  58. package/{test/composables/run_function_when_microservices_connected.test.js → tests/unit/composables/run_function_when_microservices_connected.nuxt.test.js} +18 -5
  59. package/{test → tests/unit}/composables/upload_file.nuxt.test.js +7 -8
  60. package/{test → tests/unit}/stores/Feedback.nuxt.test.js +12 -8
  61. package/{test → tests/unit}/stores/Geode.nuxt.test.js +33 -10
  62. package/{test → tests/unit}/stores/Infra.nuxt.test.js +58 -25
  63. package/{test → tests/unit}/stores/Viewer.nuxt.test.js +101 -20
  64. package/{test → tests/unit}/utils/validate_schema.nuxt.test.js +3 -0
  65. package/tests/vitest.config.js +33 -0
  66. package/utils/default_styles.js +246 -0
  67. package/utils/local.js +180 -0
  68. package/vitest.config.js +0 -13
  69. /package/{test → tests/unit}/components/Inspector/ResultPanel.nuxt.test.js +0 -0
  70. /package/{test → tests/unit}/components/Step.nuxt.test.js +0 -0
@@ -27,7 +27,7 @@ export function useMeshPolyhedraStyle() {
27
27
 
28
28
  /** Actions **/
29
29
  function setPolyhedraVisibility(id, visibility) {
30
- viewer_call(
30
+ return viewer_call(
31
31
  {
32
32
  schema: mesh_polyhedra_schemas.visibility,
33
33
  params: { id, visibility },
@@ -60,7 +60,7 @@ export function useMeshPolyhedraStyle() {
60
60
  )
61
61
  }
62
62
  function setPolyhedraColor(id, color) {
63
- viewer_call(
63
+ return viewer_call(
64
64
  {
65
65
  schema: mesh_polyhedra_schemas.color,
66
66
  params: { id, color },
@@ -78,7 +78,7 @@ export function useMeshPolyhedraStyle() {
78
78
  }
79
79
 
80
80
  function setPolyhedraVertexAttribute(id, vertex_attribute) {
81
- viewer_call(
81
+ return viewer_call(
82
82
  {
83
83
  schema: mesh_polyhedra_schemas.vertex_attribute,
84
84
  params: { id, ...vertex_attribute },
@@ -96,7 +96,7 @@ export function useMeshPolyhedraStyle() {
96
96
  }
97
97
 
98
98
  function setPolyhedraPolyhedronAttribute(id, polyhedron_attribute) {
99
- viewer_call(
99
+ return viewer_call(
100
100
  {
101
101
  schema: mesh_polyhedra_schemas.polyhedron_attribute,
102
102
  params: { id, ...polyhedron_attribute },
@@ -115,8 +115,10 @@ export function useMeshPolyhedraStyle() {
115
115
  }
116
116
 
117
117
  function applyPolyhedraStyle(id, style) {
118
- setPolyhedraVisibility(id, style.visibility)
119
- setPolyhedraActiveColoring(id, style.coloring.active)
118
+ return Promise.all([
119
+ setPolyhedraVisibility(id, style.visibility),
120
+ setPolyhedraActiveColoring(id, style.coloring.active),
121
+ ])
120
122
  }
121
123
 
122
124
  return {
@@ -15,7 +15,7 @@ export function useBlocksStyle() {
15
15
  /** Actions **/
16
16
  function setBlockVisibility(id, block_ids, visibility) {
17
17
  const block_flat_indexes = dataBaseStore.getFlatIndexes(id, block_ids)
18
- viewer_call(
18
+ return viewer_call(
19
19
  {
20
20
  schema: blocks_schemas.visibility,
21
21
  params: { id, block_ids: block_flat_indexes, visibility },
@@ -14,7 +14,7 @@ export function useCornersStyle() {
14
14
  /** Actions **/
15
15
  function setCornerVisibility(id, corner_ids, visibility) {
16
16
  const corner_flat_indexes = dataBaseStore.getFlatIndexes(id, corner_ids)
17
- viewer_call(
17
+ return viewer_call(
18
18
  {
19
19
  schema: corners_schemas.visibility,
20
20
  params: { id, block_ids: corner_flat_indexes, visibility },
@@ -9,14 +9,7 @@ export function useModelEdgesStyle() {
9
9
  }
10
10
 
11
11
  function setModelEdgesVisibility(id, visibility) {
12
- if (!dataStyleStore.styles[id]) {
13
- dataStyleStore.styles[id] = {}
14
- }
15
- if (!dataStyleStore.styles[id].edges) {
16
- dataStyleStore.styles[id].edges = {}
17
- }
18
-
19
- viewer_call(
12
+ return viewer_call(
20
13
  {
21
14
  schema: model_edges_schemas.visibility,
22
15
  params: { id, visibility },
@@ -63,7 +63,7 @@ export default function useModelStyle() {
63
63
  }
64
64
 
65
65
  function setModelVisibility(id, visibility) {
66
- viewer_call(
66
+ return viewer_call(
67
67
  {
68
68
  schema: viewer_schemas.opengeodeweb_viewer.model.visibility,
69
69
  params: { id, visibility },
@@ -18,7 +18,7 @@ export function useLinesStyle() {
18
18
  /** Actions **/
19
19
  function setLineVisibility(id, line_ids, visibility) {
20
20
  const line_flat_indexes = dataBaseStore.getFlatIndexes(id, line_ids)
21
- viewer_call(
21
+ return viewer_call(
22
22
  {
23
23
  schema: lines_schemas.visibility,
24
24
  params: { id, block_ids: line_flat_indexes, visibility },
@@ -38,7 +38,7 @@ export function useLinesStyle() {
38
38
 
39
39
  function setLineColor(id, line_ids, color) {
40
40
  const line_flat_indexes = dataBaseStore.getFlatIndexes(id, line_ids)
41
- viewer_call(
41
+ return viewer_call(
42
42
  {
43
43
  schema: lines_schemas.color,
44
44
  params: { id, block_ids: line_flat_indexes, color },
@@ -12,7 +12,7 @@ export function useModelPointsStyle() {
12
12
  }
13
13
 
14
14
  function setModelPointsVisibility(id, visibility) {
15
- viewer_call(
15
+ return viewer_call(
16
16
  {
17
17
  schema: model_points_schemas.visibility,
18
18
  params: { id, visibility },
@@ -27,7 +27,7 @@ export function useModelPointsStyle() {
27
27
  }
28
28
 
29
29
  function setModelPointsSize(id, size) {
30
- viewer_call(
30
+ return viewer_call(
31
31
  {
32
32
  schema: model_points_schemas.size,
33
33
  params: { id, size },
@@ -14,7 +14,7 @@ export function useSurfacesStyle() {
14
14
  /** Actions **/
15
15
  function setSurfaceVisibility(id, surface_ids, visibility) {
16
16
  const surface_flat_indexes = dataBaseStore.getFlatIndexes(id, surface_ids)
17
- viewer_call(
17
+ return viewer_call(
18
18
  {
19
19
  schema: surfaces_schemas.visibility,
20
20
  params: { id, block_ids: surface_flat_indexes, visibility },
package/package.json CHANGED
@@ -2,16 +2,19 @@
2
2
  "name": "@geode/opengeodeweb-front",
3
3
  "scripts": {
4
4
  "lint": "eslint --fix --ext .js,.vue --ignore-path .gitignore .",
5
- "test": "vitest",
6
- "coverage": "vitest run --coverage",
5
+ "test": "npm run test:unit",
6
+ "tests": "vitest --config ./tests/vitest.config.js",
7
+ "test:unit": "npm run tests --project unit",
8
+ "test:integration": "npm run tests --project integration",
7
9
  "geode_objects": "node scripts/generate_geode_objects.js && prettier ./assets/geode_objects.js --write",
8
10
  "build": ""
9
11
  },
10
12
  "devDependencies": {
11
- "@nuxt/test-utils": "3.18.0",
13
+ "@nuxt/test-utils": "3.19.2",
12
14
  "@pinia/testing": "0.1.7",
13
15
  "@vitejs/plugin-vue": "5.2.3",
14
16
  "@vue/test-utils": "2.4.6",
17
+ "electron": "36.4.0",
15
18
  "eslint": "9.26.0",
16
19
  "eslint-plugin-import": "2.31.0",
17
20
  "eslint-plugin-nuxt": "4.0.0",
@@ -21,13 +24,15 @@
21
24
  "eslint-plugin-vuetify": "2.5.2",
22
25
  "happy-dom": "17.4.6",
23
26
  "jsdom": "26.1.0",
27
+ "msw": "2.11.1",
24
28
  "nuxt": "3.13.2",
25
29
  "playwright-core": "1.52.0",
26
30
  "prettier": "3.3.3",
27
31
  "resize-observer-polyfill": "1.5.1",
32
+ "unplugin-auto-import": "^20.0.0",
28
33
  "vite": "6.3.5",
29
34
  "vite-plugin-vuetify": "2.1.1",
30
- "vitest": "3.1.2",
35
+ "vitest": "3.2.4",
31
36
  "vitest-environment-nuxt": "1.0.1"
32
37
  },
33
38
  "overrides": {
@@ -35,7 +40,7 @@
35
40
  },
36
41
  "description": "OpenSource Vue/Vuetify framework for web applications",
37
42
  "type": "module",
38
- "version": "9.11.0-rc.8",
43
+ "version": "9.11.0-rc.9",
39
44
  "main": "./nuxt.config.js",
40
45
  "dependencies": {
41
46
  "@geode/opengeodeweb-back": "latest",
@@ -47,10 +52,12 @@
47
52
  "@vueuse/components": "13.1.0",
48
53
  "@vueuse/nuxt": "13.1.0",
49
54
  "ajv": "8.17.1",
55
+ "get-port-please": "3.2.0",
50
56
  "is-electron": "2.2.2",
51
57
  "js-file-download": "0.4.12",
52
58
  "nuxt": "3.13.2",
53
- "pinia": "2.3.1",
59
+ "pidtree": "0.6.0",
60
+ "pinia": "3.0.3",
54
61
  "sass": "1.87.0",
55
62
  "semver": "7.7.1",
56
63
  "uuid": "11.1.0",
@@ -1,7 +1,8 @@
1
1
  import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json"
2
+ import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json"
2
3
 
3
4
  export const useDataBaseStore = defineStore("dataBase", () => {
4
- const treeview_store = use_treeview_store()
5
+ const treeview_store = useTreeviewStore()
5
6
  const hybridViewerStore = useHybridViewerStore()
6
7
 
7
8
  /** State **/
@@ -41,6 +42,12 @@ export const useDataBaseStore = defineStore("dataBase", () => {
41
42
  }
42
43
 
43
44
  /** Actions **/
45
+ async function registerObject(id, file_name, viewer_object) {
46
+ return viewer_call({
47
+ schema: viewer_schemas.opengeodeweb_viewer.generic.register,
48
+ params: { id, file_name, viewer_object },
49
+ })
50
+ }
44
51
  async function addItem(
45
52
  id,
46
53
  value = {
@@ -137,6 +144,7 @@ export const useDataBaseStore = defineStore("dataBase", () => {
137
144
  itemMetaDatas,
138
145
  meshComponentType,
139
146
  formatedMeshComponents,
147
+ registerObject,
140
148
  addItem,
141
149
  fetchUuidToFlatIndexDict,
142
150
  fetchMeshComponents,
@@ -12,21 +12,22 @@ export const useDataStyleStore = defineStore("dataStyle", () => {
12
12
  /** Actions **/
13
13
  function addDataStyle(id, geode_object, object_type) {
14
14
  dataStyleState.styles[id] = getDefaultStyle(geode_object)
15
-
16
15
  if (object_type === "mesh") {
17
- meshStyleStore.applyMeshDefaultStyle(id)
16
+ return Promise.all([meshStyleStore.applyMeshDefaultStyle(id)])
18
17
  } else if (object_type === "model") {
19
- modelStyleStore.setMeshComponentsDefaultStyle(id)
20
- modelStyleStore.applyModelDefaultStyle(id)
18
+ return Promise.all([
19
+ modelStyleStore.setMeshComponentsDefaultStyle(id),
20
+ modelStyleStore.applyModelDefaultStyle(id),
21
+ ])
21
22
  }
22
23
  }
23
24
 
24
25
  function setVisibility(id, visibility) {
25
26
  const object_type = dataBaseStore.itemMetaDatas(id).object_type
26
27
  if (object_type === "mesh") {
27
- meshStyleStore.setMeshVisibility(id, visibility)
28
+ return Promise.all([meshStyleStore.setMeshVisibility(id, visibility)])
28
29
  } else if (object_type === "model") {
29
- modelStyleStore.setModelVisibility(id, visibility)
30
+ return Promise.all([modelStyleStore.setModelVisibility(id, visibility)])
30
31
  }
31
32
  }
32
33
 
@@ -1,6 +1,6 @@
1
1
  import { v4 as uuidv4 } from "uuid"
2
2
 
3
- export const use_feedback_store = defineStore("feedback", {
3
+ export const useFeedbackStore = defineStore("feedback", {
4
4
  state: () => ({
5
5
  feedbacks: [],
6
6
  server_error: false,
package/stores/geode.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json"
2
2
  import Status from "@ogw_f/utils/status.js"
3
3
 
4
- export const use_geode_store = defineStore("geode", {
4
+ export const useGeodeStore = defineStore("geode", {
5
5
  state: () => ({
6
6
  default_local_port: "5000",
7
7
  request_counter: 0,
@@ -9,13 +9,13 @@ export const use_geode_store = defineStore("geode", {
9
9
  }),
10
10
  getters: {
11
11
  protocol() {
12
- if (use_infra_store().app_mode == appMode.appMode.CLOUD) {
12
+ if (useInfraStore().app_mode == appMode.appMode.CLOUD) {
13
13
  return "https"
14
14
  }
15
15
  return "http"
16
16
  },
17
17
  port() {
18
- if (use_infra_store().app_mode == appMode.appMode.CLOUD) {
18
+ if (useInfraStore().app_mode == appMode.appMode.CLOUD) {
19
19
  return "443"
20
20
  }
21
21
  const GEODE_PORT = useRuntimeConfig().public.GEODE_PORT
@@ -25,7 +25,7 @@ export const use_geode_store = defineStore("geode", {
25
25
  return this.default_local_port
26
26
  },
27
27
  base_url() {
28
- const infra_store = use_infra_store()
28
+ const infra_store = useInfraStore()
29
29
  let geode_url = `${this.protocol}://${infra_store.domain_name}:${this.port}`
30
30
  if (infra_store.app_mode == appMode.appMode.CLOUD) {
31
31
  if (infra_store.ID == "") {
@@ -49,7 +49,7 @@ export const use_geode_store = defineStore("geode", {
49
49
  },
50
50
  do_ping() {
51
51
  const geode_store = this
52
- const feedback_store = use_feedback_store()
52
+ const feedback_store = useFeedbackStore()
53
53
  return useFetch(back_schemas.opengeodeweb_back.ping.$id, {
54
54
  baseURL: this.base_url,
55
55
  method: back_schemas.opengeodeweb_back.ping.methods[0],
@@ -8,7 +8,7 @@ import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schem
8
8
  import Status from "@ogw_f/utils/status.js"
9
9
 
10
10
  export const useHybridViewerStore = defineStore("hybridViewer", () => {
11
- const viewer_store = use_viewer_store()
11
+ const viewer_store = useViewerStore()
12
12
  const db = reactive({})
13
13
  const status = ref(Status.NOT_CREATED)
14
14
  const camera_options = reactive({})
package/stores/infra.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { useStorage } from "@vueuse/core"
2
2
  import Status from "@ogw_f/utils/status.js"
3
3
 
4
- export const use_infra_store = defineStore("infra", {
4
+ export const useInfraStore = defineStore("infra", {
5
5
  state: () => ({
6
6
  app_mode: getAppMode(),
7
7
  ID: useStorage("ID", ""),
@@ -16,7 +16,7 @@ export const use_infra_store = defineStore("infra", {
16
16
  return "localhost"
17
17
  },
18
18
  lambda_url() {
19
- const geode_store = use_geode_store()
19
+ const geode_store = useGeodeStore()
20
20
  const public_runtime_config = useRuntimeConfig().public
21
21
  const url =
22
22
  geode_store.protocol +
@@ -31,12 +31,12 @@ export const use_infra_store = defineStore("infra", {
31
31
  },
32
32
  microservices_connected() {
33
33
  return (
34
- use_geode_store().status == Status.CONNECTED &&
35
- use_viewer_store().status == Status.CONNECTED
34
+ useGeodeStore().status == Status.CONNECTED &&
35
+ useViewerStore().status == Status.CONNECTED
36
36
  )
37
37
  },
38
38
  microservices_busy() {
39
- return use_geode_store().is_busy || use_viewer_store().is_busy
39
+ return useGeodeStore().is_busy || useViewerStore().is_busy
40
40
  },
41
41
  },
42
42
  actions: {
@@ -48,8 +48,8 @@ export const use_infra_store = defineStore("infra", {
48
48
  if (this.status === Status.CREATED) return
49
49
  console.log("LOCK GRANTED !", lock)
50
50
  if (this.app_mode == appMode.appMode.DESKTOP) {
51
- const viewer_store = use_viewer_store()
52
- const geode_store = use_geode_store()
51
+ const viewer_store = useViewerStore()
52
+ const geode_store = useGeodeStore()
53
53
  const back_port = await window.electronAPI.run_back(
54
54
  geode_store.default_local_port,
55
55
  )
@@ -64,7 +64,7 @@ export const use_infra_store = defineStore("infra", {
64
64
  })
65
65
  if (error.value || !data.value) {
66
66
  this.status = Status.NOT_CREATED
67
- const feedback_store = use_feedback_store()
67
+ const feedback_store = useFeedbackStore()
68
68
  feedback_store.server_error = true
69
69
  return
70
70
  }
@@ -77,8 +77,8 @@ export const use_infra_store = defineStore("infra", {
77
77
  },
78
78
  async create_connection() {
79
79
  console.log("create_connection")
80
- await use_viewer_store().ws_connect()
81
- await use_geode_store().do_ping()
80
+ await useViewerStore().ws_connect()
81
+ await useGeodeStore().do_ping()
82
82
  return
83
83
  },
84
84
  },
@@ -1,4 +1,4 @@
1
- export const use_treeview_store = defineStore("treeview", () => {
1
+ export const useTreeviewStore = defineStore("treeview", () => {
2
2
  const dataStyleStore = useDataStyleStore()
3
3
 
4
4
  /** State **/
package/stores/viewer.js CHANGED
@@ -4,7 +4,7 @@ import "@kitware/vtk.js/Rendering/OpenGL/Profiles/Geometry"
4
4
  import schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json"
5
5
  import Status from "@ogw_f/utils/status.js"
6
6
 
7
- export const use_viewer_store = defineStore("viewer", {
7
+ export const useViewerStore = defineStore("viewer", {
8
8
  state: () => ({
9
9
  default_local_port: "1234",
10
10
  client: {},
@@ -16,14 +16,14 @@ export const use_viewer_store = defineStore("viewer", {
16
16
  }),
17
17
  getters: {
18
18
  protocol() {
19
- if (use_infra_store().app_mode == appMode.appMode.CLOUD) {
19
+ if (useInfraStore().app_mode == appMode.appMode.CLOUD) {
20
20
  return "wss"
21
21
  } else {
22
22
  return "ws"
23
23
  }
24
24
  },
25
25
  port() {
26
- if (use_infra_store().app_mode == appMode.appMode.CLOUD) {
26
+ if (useInfraStore().app_mode == appMode.appMode.CLOUD) {
27
27
  return "443"
28
28
  }
29
29
  const VIEWER_PORT = useRuntimeConfig().public.VIEWER_PORT
@@ -33,7 +33,7 @@ export const use_viewer_store = defineStore("viewer", {
33
33
  return this.default_local_port
34
34
  },
35
35
  base_url() {
36
- const infra_store = use_infra_store()
36
+ const infra_store = useInfraStore()
37
37
  let viewer_url = `${this.protocol}://${infra_store.domain_name}:${this.port}`
38
38
  if (infra_store.app_mode == appMode.appMode.CLOUD) {
39
39
  if (infra_store.ID == "") {
@@ -60,7 +60,6 @@ export const use_viewer_store = defineStore("viewer", {
60
60
  this.picking_mode = false
61
61
  },
62
62
  async ws_connect() {
63
- if (process.env.NODE_ENV == "test") return
64
63
  if (this.status === Status.CONNECTED) return
65
64
  return navigator.locks.request("viewer.ws_connect", async (lock) => {
66
65
  if (this.status === Status.CONNECTED) return
@@ -125,7 +124,7 @@ export const use_viewer_store = defineStore("viewer", {
125
124
  resolve()
126
125
  })
127
126
  .catch((error) => {
128
- console.error(error)
127
+ console.error("error", error)
129
128
  viewer_store.status = Status.NOT_CONNECTED
130
129
  reject(error)
131
130
  })
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0"?>
2
+ <VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
3
+ <PolyData>
4
+ <Piece NumberOfPoints="4" NumberOfLines="4">
5
+ <PointData>
6
+ <DataArray type="Float64" Name="points" format="ascii" NumberOfComponents="3" RangeMin="0.100000001" RangeMax="9.39999962">0.1 0.2 0.3 2.1 9.4 6.7 7.5 5.2 6.3 8.7 1.4 4.7 </DataArray>
7
+ </PointData>
8
+ <Points>
9
+ <DataArray type="Float64" Name="Points" format="ascii" NumberOfComponents="3" RangeMin="0.10000000000000001" RangeMax="9.4000000000000004">0.1 0.2 0.3 2.1 9.4 6.7 7.5 5.2 6.3 8.7 1.4 4.7 </DataArray>
10
+ </Points>
11
+ <CellData>
12
+ <DataArray type="Float64" Name="edges" format="ascii" NumberOfComponents="2" RangeMin="0" RangeMax="3">0 1 0 2 3 2 1 2 </DataArray>
13
+ </CellData>
14
+ <Lines>
15
+ <DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="0" RangeMax="3">0 1 0 2 3 2 1 2 </DataArray>
16
+ <DataArray type="Int64" Name="offsets" format="ascii" RangeMin="0" RangeMax="4">2 4 6 8 </DataArray>
17
+ </Lines>
18
+ </Piece>
19
+ </PolyData>
20
+ </VTKFile>
@@ -0,0 +1 @@
1
+ OpenGeodeWeb-Back
@@ -0,0 +1,75 @@
1
+ #
2
+ # This file is autogenerated by pip-compile with Python 3.12
3
+ # by the following command:
4
+ #
5
+ # pip-compile requirements.in
6
+ #
7
+ asgiref==3.9.1
8
+ # via
9
+ # flask
10
+ # opengeodeweb-back
11
+ blinker==1.9.0
12
+ # via
13
+ # flask
14
+ # opengeodeweb-back
15
+ click==8.2.1
16
+ # via
17
+ # flask
18
+ # opengeodeweb-back
19
+ fastjsonschema==2.16.2
20
+ # via opengeodeweb-back
21
+ flask[async]==3.0.3
22
+ # via
23
+ # flask-cors
24
+ # opengeodeweb-back
25
+ flask-cors==6.0.1
26
+ # via opengeodeweb-back
27
+ geode-common==33.9.0
28
+ # via
29
+ # geode-viewables
30
+ # opengeodeweb-back
31
+ geode-viewables==3.2.0
32
+ # via opengeodeweb-back
33
+ itsdangerous==2.2.0
34
+ # via
35
+ # flask
36
+ # opengeodeweb-back
37
+ jinja2==3.1.6
38
+ # via
39
+ # flask
40
+ # opengeodeweb-back
41
+ markupsafe==3.0.2
42
+ # via
43
+ # jinja2
44
+ # opengeodeweb-back
45
+ # werkzeug
46
+ opengeode-core==15.24.2
47
+ # via
48
+ # geode-common
49
+ # geode-viewables
50
+ # opengeode-geosciences
51
+ # opengeode-geosciencesio
52
+ # opengeode-inspector
53
+ # opengeode-io
54
+ # opengeodeweb-back
55
+ opengeode-geosciences==9.2.2
56
+ # via
57
+ # geode-viewables
58
+ # opengeode-geosciencesio
59
+ # opengeodeweb-back
60
+ opengeode-geosciencesio==5.7.2
61
+ # via opengeodeweb-back
62
+ opengeode-inspector==6.7.0
63
+ # via opengeodeweb-back
64
+ opengeode-io==7.3.2
65
+ # via
66
+ # geode-viewables
67
+ # opengeode-geosciencesio
68
+ # opengeodeweb-back
69
+ opengeodeweb-back==5.9.1
70
+ # via -r requirements.in
71
+ werkzeug==3.0.3
72
+ # via
73
+ # flask
74
+ # flask-cors
75
+ # opengeodeweb-back
@@ -0,0 +1 @@
1
+ OpenGeodeWeb-Viewer[cpu]
@@ -0,0 +1,87 @@
1
+ #
2
+ # This file is autogenerated by pip-compile with Python 3.12
3
+ # by the following command:
4
+ #
5
+ # pip-compile --extra-index-url=https://wheels.vtk.org --pre requirements.in
6
+ #
7
+ --extra-index-url https://wheels.vtk.org
8
+
9
+ aiohappyeyeballs==2.6.1
10
+ # via
11
+ # aiohttp
12
+ # opengeodeweb-viewer
13
+ aiohttp==3.12.15
14
+ # via
15
+ # opengeodeweb-viewer
16
+ # wslink
17
+ aiosignal==1.4.0
18
+ # via
19
+ # aiohttp
20
+ # opengeodeweb-viewer
21
+ attrs==25.3.0
22
+ # via
23
+ # aiohttp
24
+ # opengeodeweb-viewer
25
+ contourpy==1.3.3
26
+ # via matplotlib
27
+ cycler==0.12.1
28
+ # via matplotlib
29
+ fastjsonschema==2.21.1
30
+ # via opengeodeweb-viewer
31
+ fonttools==4.59.2
32
+ # via matplotlib
33
+ frozenlist==1.7.0
34
+ # via
35
+ # aiohttp
36
+ # aiosignal
37
+ # opengeodeweb-viewer
38
+ idna==3.10
39
+ # via
40
+ # opengeodeweb-viewer
41
+ # yarl
42
+ kiwisolver==1.4.10rc0
43
+ # via matplotlib
44
+ matplotlib==3.10.6
45
+ # via vtk-osmesa
46
+ multidict==6.6.3
47
+ # via
48
+ # aiohttp
49
+ # opengeodeweb-viewer
50
+ # yarl
51
+ numpy==2.3.2
52
+ # via
53
+ # contourpy
54
+ # matplotlib
55
+ opengeodeweb-viewer[cpu]==1.11.0rc3
56
+ # via
57
+ # -r requirements.in
58
+ # opengeodeweb-viewer
59
+ packaging==25.0
60
+ # via matplotlib
61
+ pillow==11.3.0
62
+ # via matplotlib
63
+ propcache==0.3.2
64
+ # via
65
+ # aiohttp
66
+ # opengeodeweb-viewer
67
+ # yarl
68
+ pyparsing==3.2.3
69
+ # via matplotlib
70
+ python-dateutil==2.9.0.post0
71
+ # via matplotlib
72
+ six==1.17.0
73
+ # via python-dateutil
74
+ typing-extensions==4.14.1
75
+ # via
76
+ # aiosignal
77
+ # opengeodeweb-viewer
78
+ vtk-osmesa==9.3.1
79
+ # via opengeodeweb-viewer
80
+ websocket-client==1.8.0
81
+ # via opengeodeweb-viewer
82
+ wslink==1.12.4
83
+ # via opengeodeweb-viewer
84
+ yarl==1.20.1
85
+ # via
86
+ # aiohttp
87
+ # opengeodeweb-viewer