@geode/opengeodeweb-front 10.34.0-rc.8 → 10.34.0

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 (282) hide show
  1. package/{server → .build/server}/utils/app_config.js +10 -9
  2. package/{server → .build/server}/utils/cleanup.js +31 -17
  3. package/{server → .build/server}/utils/cloud.js +1 -4
  4. package/{server → .build/server}/utils/microservices.js +21 -9
  5. package/{server → .build/server}/utils/path.js +4 -4
  6. package/{server → .build/server}/utils/scripts.js +9 -9
  7. package/.build/server/utils/server_config.js +51 -0
  8. package/.build/server/utils/stream.js +6 -0
  9. package/{server → .build/server}/utils/ws_client.js +18 -3
  10. package/{shared → .build/shared}/scripts.js +10 -10
  11. package/.build/shared/utils/call_raw.js +31 -0
  12. package/{shared → .build/shared}/utils/call_schema.js +2 -2
  13. package/.build/shared/utils/fetch_raw.js +52 -0
  14. package/{shared → .build/shared}/utils/fetch_schema.js +2 -2
  15. package/{shared → .build/shared}/utils/file.js +3 -1
  16. package/{shared → .build/shared}/utils/response_handlers/load.js +10 -7
  17. package/{shared → .build/shared}/utils/validate_schema.js +1 -1
  18. package/app/components/ActionButton.vue +6 -6
  19. package/app/components/CameraManager/List.vue +5 -5
  20. package/app/components/CameraManager/Saver.vue +3 -5
  21. package/app/components/CameraManager.vue +6 -4
  22. package/app/components/CameraOrientation.vue +12 -12
  23. package/app/components/ClippingPlaneCard.vue +4 -2
  24. package/app/components/ClippingPlanes.vue +8 -8
  25. package/app/components/CrsSelector.vue +9 -10
  26. package/app/components/DeleteDialog.vue +4 -2
  27. package/app/components/DragAndDrop.vue +10 -12
  28. package/app/components/DragAndDropInternal/DragAndDropInline.vue +4 -2
  29. package/app/components/ExtensionSelector.vue +4 -4
  30. package/app/components/FeedBack/ErrorBanner.vue +3 -1
  31. package/app/components/FeedBack/Snackers.vue +4 -3
  32. package/app/components/FileSelector.vue +10 -8
  33. package/app/components/FileUploader.vue +11 -11
  34. package/app/components/GlassCard.vue +1 -1
  35. package/app/components/HybridRenderingView.vue +7 -5
  36. package/app/components/HybridViewerTooltip.vue +7 -7
  37. package/app/components/Launcher.vue +1 -1
  38. package/app/components/Loading/EcoMessages.vue +9 -3
  39. package/app/components/Loading.vue +2 -2
  40. package/app/components/MissingFilesSelector.vue +12 -10
  41. package/app/components/ObjectSelector.vue +10 -9
  42. package/app/components/PackagesVersions.vue +6 -5
  43. package/app/components/Recaptcha.vue +3 -3
  44. package/app/components/RemoteRenderingView.vue +6 -7
  45. package/app/components/Ruler.vue +3 -3
  46. package/app/components/Screenshot.vue +6 -6
  47. package/app/components/SearchBar.vue +4 -2
  48. package/app/components/ShrinkFilter.vue +7 -7
  49. package/app/components/Step.vue +6 -5
  50. package/app/components/Stepper.vue +4 -3
  51. package/app/components/ToolPanel.vue +6 -3
  52. package/app/components/ViewToolbar.vue +25 -28
  53. package/app/components/Viewer/ContextMenu/CenterButton.vue +7 -5
  54. package/app/components/Viewer/ContextMenu/CircularItems.vue +3 -3
  55. package/app/components/Viewer/ContextMenu/ContextMenu.vue +22 -19
  56. package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +10 -8
  57. package/app/components/Viewer/ContextMenu/InfoCard.vue +11 -12
  58. package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +13 -17
  59. package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +11 -15
  60. package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +12 -16
  61. package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +8 -12
  62. package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +11 -15
  63. package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +11 -15
  64. package/app/components/Viewer/Generic/Model/BlocksOptions.vue +67 -38
  65. package/app/components/Viewer/Generic/Model/CornersOptions.vue +53 -23
  66. package/app/components/Viewer/Generic/Model/EdgesOptions.vue +1 -3
  67. package/app/components/Viewer/Generic/Model/LinesOptions.vue +67 -38
  68. package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +31 -15
  69. package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +2 -3
  70. package/app/components/Viewer/Generic/Model/PointsOptions.vue +6 -6
  71. package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +69 -38
  72. package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +64 -46
  73. package/app/components/Viewer/ObjectTree/Base/Controls.vue +5 -5
  74. package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +13 -9
  75. package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +5 -5
  76. package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +10 -10
  77. package/app/components/Viewer/ObjectTree/Box.vue +6 -4
  78. package/app/components/Viewer/ObjectTree/Layout.vue +23 -21
  79. package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +14 -14
  80. package/app/components/Viewer/ObjectTree/Views/{ModelCollections.vue → ModelTree.vue} +59 -24
  81. package/app/components/Viewer/Options/AttributeColorBar.vue +4 -2
  82. package/app/components/Viewer/Options/AttributeRangeSelector.vue +4 -2
  83. package/app/components/Viewer/Options/AttributeSelector.vue +7 -9
  84. package/app/components/Viewer/Options/ColorMapList.vue +15 -13
  85. package/app/components/Viewer/Options/ColorMapPicker.vue +4 -4
  86. package/app/components/Viewer/Options/ColorPicker.vue +223 -41
  87. package/app/components/Viewer/Options/ColoringTypeSelector.vue +16 -16
  88. package/app/components/Viewer/Options/ColormapQuickPicker.vue +7 -5
  89. package/app/components/Viewer/Options/OptionsSection.vue +1 -1
  90. package/app/components/Viewer/Options/TextureItem.vue +8 -6
  91. package/app/components/Viewer/Options/TexturesSelector.vue +1 -1
  92. package/app/components/Viewer/OverlappingObjectsPicker.vue +8 -9
  93. package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +2 -6
  94. package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +12 -16
  95. package/app/components/Viewer/Surface/PolygonsOptions.vue +12 -16
  96. package/app/components/Viewer/Ui.vue +2 -2
  97. package/app/components/Wrapper.vue +1 -4
  98. package/app/components/ZScaling.vue +5 -3
  99. package/app/components/csv-preview/CsvPreviewer.vue +38 -37
  100. package/app/components/csv-preview/CsvSettings.vue +6 -4
  101. package/app/components/csv-preview/CsvTable.vue +1 -1
  102. package/app/composables/batch_style.ts +5 -6
  103. package/app/composables/clipping_planes_widget.ts +73 -181
  104. package/app/composables/clipping_planes_widget_entries.ts +189 -0
  105. package/app/composables/copy_to_clipboard.ts +7 -0
  106. package/app/composables/global_attribute_style.ts +163 -83
  107. package/app/composables/hover_highlight.ts +46 -14
  108. package/app/composables/model_collections.ts +26 -13
  109. package/app/composables/model_components.ts +26 -13
  110. package/app/composables/project_manager.ts +76 -19
  111. package/app/composables/responsive_middle_truncate.ts +13 -13
  112. package/app/composables/stepper_tree.ts +34 -11
  113. package/app/composables/tree_filter.ts +66 -44
  114. package/app/composables/tree_keyboard_nav.ts +25 -11
  115. package/app/composables/tree_scroll.ts +44 -14
  116. package/app/composables/use_adaptive_styles.ts +66 -23
  117. package/app/composables/use_overlapping_picker.ts +66 -16
  118. package/app/composables/use_quick_colormap.ts +16 -5
  119. package/app/composables/virtual_tree.ts +75 -43
  120. package/app/composables/vtk_implicit_plane_widget.d.ts +2 -0
  121. package/app/plugins/auto_store_register.ts +2 -7
  122. package/app/plugins/click_outside_ignore_snackbars.client.ts +39 -0
  123. package/app/stores/app.ts +57 -192
  124. package/app/stores/app_helpers/extension.ts +179 -0
  125. package/app/stores/back.ts +37 -21
  126. package/app/stores/camera_manager.ts +22 -20
  127. package/app/stores/cloud.ts +17 -13
  128. package/app/stores/data.ts +88 -47
  129. package/app/stores/data_helpers/collections.ts +36 -38
  130. package/app/stores/data_helpers/mesh.ts +45 -36
  131. package/app/stores/data_style.ts +50 -28
  132. package/app/stores/feedback.ts +6 -6
  133. package/app/stores/hybrid_viewer.ts +41 -52
  134. package/app/stores/infra.ts +39 -37
  135. package/app/stores/menu.ts +23 -14
  136. package/app/stores/treeview.ts +72 -42
  137. package/app/stores/viewer.ts +39 -27
  138. package/app/utils/attributes.ts +3 -3
  139. package/app/utils/clipping_planes.ts +111 -14
  140. package/app/utils/color_picker.ts +57 -0
  141. package/app/utils/colormap.ts +58 -35
  142. package/app/utils/default_styles/index.ts +2 -2
  143. package/app/utils/default_styles/meshes.ts +107 -13
  144. package/app/utils/default_styles/models.ts +83 -14
  145. package/app/utils/extension.ts +47 -20
  146. package/app/utils/import_workflow.ts +21 -13
  147. package/app/utils/name_cleaner.ts +1 -1
  148. package/app/utils/string.ts +1 -1
  149. package/app/utils/treeview.ts +2 -2
  150. package/internal/database/base_database.ts +7 -3
  151. package/internal/database/database.ts +36 -26
  152. package/internal/database/extended_database.ts +1 -1
  153. package/internal/stores/data_style/mesh/cells/cell.ts +70 -34
  154. package/internal/stores/data_style/mesh/cells/color.ts +12 -6
  155. package/internal/stores/data_style/mesh/cells/common.ts +18 -8
  156. package/internal/stores/data_style/mesh/cells/index.ts +122 -42
  157. package/internal/stores/data_style/mesh/cells/textures.ts +12 -6
  158. package/internal/stores/data_style/mesh/cells/vertex.ts +75 -34
  159. package/internal/stores/data_style/mesh/cells/visibility.ts +15 -4
  160. package/internal/stores/data_style/mesh/edges/color.ts +12 -6
  161. package/internal/stores/data_style/mesh/edges/common.ts +14 -6
  162. package/internal/stores/data_style/mesh/edges/edge.ts +71 -39
  163. package/internal/stores/data_style/mesh/edges/index.ts +117 -42
  164. package/internal/stores/data_style/mesh/edges/vertex.ts +76 -39
  165. package/internal/stores/data_style/mesh/edges/visibility.ts +15 -4
  166. package/internal/stores/data_style/mesh/edges/width.ts +12 -4
  167. package/internal/stores/data_style/mesh/index.ts +30 -11
  168. package/internal/stores/data_style/mesh/points/color.ts +12 -6
  169. package/internal/stores/data_style/mesh/points/common.ts +21 -8
  170. package/internal/stores/data_style/mesh/points/index.ts +101 -50
  171. package/internal/stores/data_style/mesh/points/size.ts +12 -4
  172. package/internal/stores/data_style/mesh/points/vertex.ts +75 -34
  173. package/internal/stores/data_style/mesh/points/visibility.ts +17 -7
  174. package/internal/stores/data_style/mesh/polygons/color.ts +12 -6
  175. package/internal/stores/data_style/mesh/polygons/common.ts +23 -6
  176. package/internal/stores/data_style/mesh/polygons/index.ts +130 -70
  177. package/internal/stores/data_style/mesh/polygons/polygon.ts +77 -43
  178. package/internal/stores/data_style/mesh/polygons/textures.ts +12 -6
  179. package/internal/stores/data_style/mesh/polygons/vertex.ts +79 -39
  180. package/internal/stores/data_style/mesh/polygons/visibility.ts +16 -6
  181. package/internal/stores/data_style/mesh/polyhedra/color.ts +12 -6
  182. package/internal/stores/data_style/mesh/polyhedra/common.ts +14 -6
  183. package/internal/stores/data_style/mesh/polyhedra/index.ts +115 -56
  184. package/internal/stores/data_style/mesh/polyhedra/polyhedron.ts +80 -39
  185. package/internal/stores/data_style/mesh/polyhedra/vertex.ts +79 -39
  186. package/internal/stores/data_style/mesh/polyhedra/visibility.ts +16 -6
  187. package/internal/stores/data_style/model/blocks/color.ts +43 -13
  188. package/internal/stores/data_style/model/blocks/common.ts +21 -6
  189. package/internal/stores/data_style/model/blocks/index.ts +89 -59
  190. package/internal/stores/data_style/model/blocks/polyhedron.ts +101 -44
  191. package/internal/stores/data_style/model/blocks/vertex.ts +107 -42
  192. package/internal/stores/data_style/model/blocks/visibility.ts +17 -4
  193. package/internal/stores/data_style/model/color.ts +171 -83
  194. package/internal/stores/data_style/model/common.ts +70 -21
  195. package/internal/stores/data_style/model/corners/color.ts +43 -11
  196. package/internal/stores/data_style/model/corners/common.ts +25 -6
  197. package/internal/stores/data_style/model/corners/index.ts +66 -41
  198. package/internal/stores/data_style/model/corners/vertex.ts +105 -74
  199. package/internal/stores/data_style/model/corners/visibility.ts +19 -4
  200. package/internal/stores/data_style/model/edges/common.ts +12 -4
  201. package/internal/stores/data_style/model/edges/index.ts +2 -1
  202. package/internal/stores/data_style/model/edges/visibility.ts +24 -7
  203. package/internal/stores/data_style/model/index.ts +24 -11
  204. package/internal/stores/data_style/model/lines/color.ts +41 -11
  205. package/internal/stores/data_style/model/lines/common.ts +17 -6
  206. package/internal/stores/data_style/model/lines/edge.ts +105 -42
  207. package/internal/stores/data_style/model/lines/index.ts +86 -59
  208. package/internal/stores/data_style/model/lines/vertex.ts +105 -42
  209. package/internal/stores/data_style/model/lines/visibility.ts +17 -4
  210. package/internal/stores/data_style/model/points/common.ts +8 -4
  211. package/internal/stores/data_style/model/points/index.ts +10 -3
  212. package/internal/stores/data_style/model/points/size.ts +12 -4
  213. package/internal/stores/data_style/model/points/visibility.ts +16 -6
  214. package/internal/stores/data_style/model/selection.ts +80 -58
  215. package/internal/stores/data_style/model/surfaces/color.ts +41 -11
  216. package/internal/stores/data_style/model/surfaces/common.ts +23 -6
  217. package/internal/stores/data_style/model/surfaces/index.ts +89 -59
  218. package/internal/stores/data_style/model/surfaces/polygon.ts +107 -67
  219. package/internal/stores/data_style/model/surfaces/vertex.ts +111 -67
  220. package/internal/stores/data_style/model/surfaces/visibility.ts +18 -5
  221. package/internal/stores/data_style/model/visibility.ts +82 -20
  222. package/internal/stores/data_style/state.ts +77 -65
  223. package/internal/stores/hybrid_viewer/brightness.ts +49 -31
  224. package/internal/stores/hybrid_viewer/camera.ts +191 -177
  225. package/internal/stores/hybrid_viewer/camera_animation.ts +11 -10
  226. package/internal/stores/hybrid_viewer/core.ts +64 -0
  227. package/internal/stores/hybrid_viewer/filters.ts +10 -16
  228. package/internal/stores/hybrid_viewer/highlight.ts +91 -130
  229. package/internal/stores/hybrid_viewer/ruler.ts +24 -15
  230. package/internal/stores/hybrid_viewer/scene.ts +96 -117
  231. package/internal/stores/hybrid_viewer/viewport.ts +74 -65
  232. package/internal/stores/hybrid_viewer/vtk_types.ts +13 -29
  233. package/internal/utils/api_fetch.ts +54 -23
  234. package/internal/utils/upload_file.ts +74 -53
  235. package/internal/utils/viewer_call.ts +22 -13
  236. package/internal/utils/ws_client.ts +24 -13
  237. package/nuxt.config.ts +58 -1
  238. package/package.json +20 -8
  239. package/server/api/cloud/extensions/run.post.ts +6 -10
  240. package/server/api/local/app/project_folder_path.post.ts +4 -4
  241. package/server/api/local/app/run_back.post.ts +5 -7
  242. package/server/api/local/app/run_viewer.post.ts +5 -7
  243. package/server/api/local/extensions/kill.post.ts +4 -3
  244. package/server/api/local/extensions/run.post.ts +7 -10
  245. package/server/api/local/extensions/upload.put.ts +44 -54
  246. package/server/api/microservice/app/get_is_app_ready.get.ts +4 -5
  247. package/server/api/microservice/app/set_app_base_url.post.ts +5 -6
  248. package/server/api/microservice/app/set_back_base_url.post.ts +5 -6
  249. package/server/api/microservice/app/set_is_app_ready.post.ts +5 -6
  250. package/server/api/microservice/app/set_viewer_base_url.post.ts +5 -6
  251. package/server/api/microservice/extensions/download.post.ts +5 -4
  252. package/server/api/serverless/run_cloud.post.ts +53 -11
  253. package/server/utils/app_config.ts +29 -22
  254. package/server/utils/cleanup.ts +60 -30
  255. package/server/utils/cloud.ts +9 -8
  256. package/server/utils/extension.ts +23 -9
  257. package/server/utils/microservices.ts +33 -24
  258. package/server/utils/path.ts +4 -4
  259. package/server/utils/scripts.ts +26 -23
  260. package/server/utils/server.ts +2 -2
  261. package/server/utils/server_config.ts +41 -27
  262. package/server/utils/stream.ts +6 -0
  263. package/server/utils/ws_client.ts +42 -8
  264. package/shared/scripts.ts +15 -10
  265. package/shared/utils/call_raw.ts +23 -16
  266. package/shared/utils/call_schema.ts +5 -8
  267. package/shared/utils/fetch_raw.ts +87 -47
  268. package/shared/utils/fetch_schema.ts +6 -9
  269. package/shared/utils/file.ts +8 -2
  270. package/shared/utils/response_handlers/load.ts +26 -11
  271. package/shared/utils/types.ts +9 -9
  272. package/shared/utils/validate_schema.ts +1 -1
  273. package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +0 -276
  274. package/server/types/vendor.d.ts +0 -64
  275. package/server/utils/server_config.js +0 -43
  276. package/shared/utils/call_raw.js +0 -30
  277. package/shared/utils/fetch_raw.js +0 -40
  278. /package/{opengeodeweb_front_schemas.js → .build/opengeodeweb_front_schemas.js} +0 -0
  279. /package/{server → .build/server}/utils/server.js +0 -0
  280. /package/{shared → .build/shared}/app_mode.js +0 -0
  281. /package/{shared → .build/shared}/utils/parse_boolean.js +0 -0
  282. /package/{shared → .build/shared}/utils/types.js +0 -0
@@ -1,3 +1,4 @@
1
+ // oxlint-disable eslint/max-lines
1
2
  import { DEFAULT_NO_DATA_COLOR } from "@ogw_front/utils/default_styles/constants";
2
3
  // Third party imports
3
4
  import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
@@ -50,12 +51,61 @@ function isModelBlocksPolyhedronAttributeValid({
50
51
  );
51
52
  }
52
53
 
54
+ interface UseModelBlocksPolyhedronAttributeReturn {
55
+ modelBlocksPolyhedronAttributeName: (modelId: string, blockId?: string) => string | undefined;
56
+ modelBlocksPolyhedronAttributeItem: (modelId: string, blockId?: string) => number;
57
+ modelBlocksPolyhedronAttributeRange: (
58
+ modelId: string,
59
+ blockId?: string,
60
+ ) => [number | undefined, number | undefined];
61
+ modelBlocksPolyhedronAttributeColorMap: (modelId: string, blockId?: string) => string | undefined;
62
+ modelBlocksPolyhedronAttributeStoredConfig: (
63
+ modelId: string,
64
+ blockId: string | undefined,
65
+ name: string | undefined,
66
+ item: number | undefined,
67
+ ) => AttributeStoredConfig;
68
+ setModelBlocksPolyhedronAttribute: (
69
+ modelId: string,
70
+ blockIds: string[],
71
+ input: AttributeInput,
72
+ ) => Promise<unknown>;
73
+ setModelBlocksPolyhedronAttributeName: (
74
+ modelId: string,
75
+ blockIds: string[],
76
+ name: string,
77
+ ) => Promise<unknown>;
78
+ setModelBlocksPolyhedronAttributeItem: (
79
+ modelId: string,
80
+ blockIds: string[],
81
+ item: number,
82
+ ) => Promise<unknown>;
83
+ setModelBlocksPolyhedronAttributeRange: (
84
+ modelId: string,
85
+ blockIds: string[],
86
+ minimum: number,
87
+ maximum: number,
88
+ ) => Promise<unknown>;
89
+ setModelBlocksPolyhedronAttributeColorMap: (
90
+ modelId: string,
91
+ blockIds: string[],
92
+ colorMap: string | undefined,
93
+ ) => Promise<unknown>;
94
+ modelBlocksPolyhedronAttributeNoDataColor: (modelId: string, blockId?: string) => unknown;
95
+ setModelBlocksPolyhedronAttributeNoDataColor: (
96
+ modelId: string,
97
+ blockIds: string[],
98
+ no_data_color: unknown,
99
+ ) => Promise<unknown>;
100
+ }
101
+
53
102
  // oxlint-disable-next-line max-lines-per-function
54
- function useModelBlocksPolyhedronAttribute() {
103
+ function useModelBlocksPolyhedronAttribute(): UseModelBlocksPolyhedronAttributeReturn {
55
104
  const dataStore = useDataStore();
56
105
  const modelBlocksCommonStyle = useModelBlocksCommonStyle();
57
106
  const viewerStore = useViewerStore();
58
107
  function modelBlocksPolyhedronAttribute(modelId: string, blockId?: string): AttributeState {
108
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring.polyhedron shape is defined by the data style schema.
59
109
  return modelBlocksCommonStyle.modelBlockColoring(modelId, blockId).polyhedron as AttributeState;
60
110
  }
61
111
  function modelBlocksPolyhedronAttributeStoredConfig(
@@ -65,14 +115,10 @@ function useModelBlocksPolyhedronAttribute() {
65
115
  item: number | undefined,
66
116
  ): AttributeStoredConfig {
67
117
  const { storedConfigs } = modelBlocksPolyhedronAttribute(modelId, blockId);
68
- if (
69
- storedConfigs &&
70
- name !== undefined &&
71
- name in storedConfigs &&
72
- item !== undefined &&
73
- item in storedConfigs[name]!
74
- ) {
75
- return storedConfigs[name]![item]!;
118
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
119
+ const itemConfig = item === undefined ? undefined : nameConfig?.[item];
120
+ if (itemConfig !== undefined) {
121
+ return itemConfig;
76
122
  }
77
123
  return {
78
124
  minimum: undefined,
@@ -81,32 +127,41 @@ function useModelBlocksPolyhedronAttribute() {
81
127
  no_data_color: DEFAULT_NO_DATA_COLOR,
82
128
  };
83
129
  }
84
- function mutateModelBlocksPolyhedronStyle(
130
+ async function mutateModelBlocksPolyhedronStyle(
85
131
  modelId: string,
86
132
  blockIds: string[],
87
133
  values: Record<string, unknown>,
88
- ) {
89
- if (blockIds.length > 1) {
90
- modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
134
+ ): Promise<void> {
135
+ const tasks: Promise<void>[] = [
136
+ modelBlocksCommonStyle.mutateModelBlocksColoring(modelId, blockIds, {
91
137
  polyhedron: values,
92
- });
138
+ }),
139
+ ];
140
+ const totalBlockIds = await dataStore.getBlocksGeodeIds(modelId);
141
+ if (blockIds.length === totalBlockIds.length) {
142
+ tasks.push(
143
+ modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
144
+ polyhedron: values,
145
+ }),
146
+ );
93
147
  }
94
- return modelBlocksCommonStyle.mutateModelBlocksColoring(modelId, blockIds, {
95
- polyhedron: values,
96
- });
148
+ await Promise.all(tasks);
97
149
  }
98
- function setModelBlocksPolyhedronAttributeStoredConfig(
150
+ async function setModelBlocksPolyhedronAttributeStoredConfig(
99
151
  modelId: string,
100
152
  blockIds: string[],
101
153
  name: string | undefined,
102
154
  item: number | undefined,
103
155
  config: Partial<AttributeStoredConfig>,
104
- ) {
105
- return mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
156
+ ): Promise<void> {
157
+ if (name === undefined || item === undefined) {
158
+ return;
159
+ }
160
+ await mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
106
161
  storedConfigs: {
107
- [name as string]: {
162
+ [name]: {
108
163
  lastItem: item,
109
- [item as number]: config,
164
+ [item]: config,
110
165
  },
111
166
  },
112
167
  });
@@ -123,8 +178,9 @@ function useModelBlocksPolyhedronAttribute() {
123
178
  name: string | undefined,
124
179
  ): number {
125
180
  const { storedConfigs } = modelBlocksPolyhedronAttribute(modelId, blockId);
126
- if (storedConfigs && name !== undefined && name in storedConfigs) {
127
- return storedConfigs[name]!.lastItem;
181
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
182
+ if (nameConfig !== undefined) {
183
+ return nameConfig.lastItem;
128
184
  }
129
185
  return 0;
130
186
  }
@@ -165,18 +221,18 @@ function useModelBlocksPolyhedronAttribute() {
165
221
  colorMap,
166
222
  no_data_color = DEFAULT_NO_DATA_COLOR,
167
223
  }: AttributeInput,
168
- ) {
169
- mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
224
+ ): Promise<unknown> {
225
+ await mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
170
226
  name,
171
227
  item,
172
228
  });
173
- setModelBlocksPolyhedronAttributeStoredConfig(modelId, blockIds, name, item, {
229
+ await setModelBlocksPolyhedronAttributeStoredConfig(modelId, blockIds, name, item, {
174
230
  minimum,
175
231
  maximum,
176
232
  colorMap,
177
233
  no_data_color,
178
234
  });
179
- const points = getRGBPointsFromPreset(colorMap as string);
235
+ const points = getRGBPointsFromPreset(colorMap ?? "");
180
236
  const viewer_ids = await dataStore.getMeshComponentsViewerIds(modelId, blockIds);
181
237
  const params = {
182
238
  id: modelId,
@@ -193,7 +249,7 @@ function useModelBlocksPolyhedronAttribute() {
193
249
  params,
194
250
  });
195
251
  }
196
- function applyPolyhedronAttribute(modelId: string, blockIds: string[]) {
252
+ async function applyPolyhedronAttribute(modelId: string, blockIds: string[]): Promise<unknown> {
197
253
  const name = modelBlocksPolyhedronAttributeName(modelId, blockIds[0]);
198
254
  const item = modelBlocksPolyhedronAttributeItem(modelId, blockIds[0]);
199
255
  const storedConfig = modelBlocksPolyhedronAttributeStoredConfig(
@@ -211,54 +267,55 @@ function useModelBlocksPolyhedronAttribute() {
211
267
  no_data_color: storedConfig.no_data_color,
212
268
  };
213
269
  if (isModelBlocksPolyhedronAttributeValid(attribute)) {
214
- return setModelBlocksPolyhedronAttribute(modelId, blockIds, attribute);
270
+ const result = await setModelBlocksPolyhedronAttribute(modelId, blockIds, attribute);
271
+ return result;
215
272
  }
216
- return Promise.resolve();
273
+ return undefined;
217
274
  }
218
- function setModelBlocksPolyhedronAttributeName(
275
+ async function setModelBlocksPolyhedronAttributeName(
219
276
  modelId: string,
220
277
  blockIds: string[],
221
278
  name: string,
222
- ) {
279
+ ): Promise<unknown> {
223
280
  const item = modelBlocksPolyhedronAttributeLastItem(modelId, blockIds[0], name);
224
- mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
281
+ await mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
225
282
  name,
226
283
  item,
227
284
  });
228
285
  return applyPolyhedronAttribute(modelId, blockIds);
229
286
  }
230
- function setModelBlocksPolyhedronAttributeItem(
287
+ async function setModelBlocksPolyhedronAttributeItem(
231
288
  modelId: string,
232
289
  blockIds: string[],
233
290
  item: number,
234
- ) {
235
- mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
291
+ ): Promise<unknown> {
292
+ await mutateModelBlocksPolyhedronStyle(modelId, blockIds, {
236
293
  item,
237
294
  });
238
295
  return applyPolyhedronAttribute(modelId, blockIds);
239
296
  }
240
- function setModelBlocksPolyhedronAttributeRange(
297
+ async function setModelBlocksPolyhedronAttributeRange(
241
298
  modelId: string,
242
299
  blockIds: string[],
243
300
  minimum: number,
244
301
  maximum: number,
245
- ) {
302
+ ): Promise<unknown> {
246
303
  const name = modelBlocksPolyhedronAttributeName(modelId, blockIds[0]);
247
304
  const item = modelBlocksPolyhedronAttributeItem(modelId, blockIds[0]);
248
- setModelBlocksPolyhedronAttributeStoredConfig(modelId, blockIds, name, item, {
305
+ await setModelBlocksPolyhedronAttributeStoredConfig(modelId, blockIds, name, item, {
249
306
  minimum,
250
307
  maximum,
251
308
  });
252
309
  return applyPolyhedronAttribute(modelId, blockIds);
253
310
  }
254
- function setModelBlocksPolyhedronAttributeColorMap(
311
+ async function setModelBlocksPolyhedronAttributeColorMap(
255
312
  modelId: string,
256
313
  blockIds: string[],
257
314
  colorMap: string | undefined,
258
- ) {
315
+ ): Promise<unknown> {
259
316
  const name = modelBlocksPolyhedronAttributeName(modelId, blockIds[0]);
260
317
  const item = modelBlocksPolyhedronAttributeItem(modelId, blockIds[0]);
261
- setModelBlocksPolyhedronAttributeStoredConfig(modelId, blockIds, name, item, {
318
+ await setModelBlocksPolyhedronAttributeStoredConfig(modelId, blockIds, name, item, {
262
319
  colorMap,
263
320
  });
264
321
  return applyPolyhedronAttribute(modelId, blockIds);
@@ -273,7 +330,7 @@ function useModelBlocksPolyhedronAttribute() {
273
330
  modelId: string,
274
331
  blockIds: string[],
275
332
  no_data_color: unknown,
276
- ) {
333
+ ): Promise<unknown> {
277
334
  const name = modelBlocksPolyhedronAttributeName(modelId, blockIds[0]);
278
335
  const item = modelBlocksPolyhedronAttributeItem(modelId, blockIds[0]);
279
336
  const storedConfig = modelBlocksPolyhedronAttributeStoredConfig(
@@ -1,3 +1,4 @@
1
+ // oxlint-disable eslint/max-lines
1
2
  import { DEFAULT_NO_DATA_COLOR } from "@ogw_front/utils/default_styles/constants";
2
3
  // Third party imports
3
4
  import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
@@ -49,12 +50,61 @@ function isModelBlocksVertexAttributeValid({
49
50
  );
50
51
  }
51
52
 
53
+ interface UseModelBlocksVertexAttributeReturn {
54
+ modelBlocksVertexAttributeName: (modelId: string, blockId?: string) => string | undefined;
55
+ modelBlocksVertexAttributeItem: (modelId: string, blockId?: string) => number;
56
+ modelBlocksVertexAttributeRange: (
57
+ modelId: string,
58
+ blockId?: string,
59
+ ) => [number | undefined, number | undefined];
60
+ modelBlocksVertexAttributeColorMap: (modelId: string, blockId?: string) => string | undefined;
61
+ modelBlocksVertexAttributeStoredConfig: (
62
+ modelId: string,
63
+ blockId: string | undefined,
64
+ name: string | undefined,
65
+ item: number | undefined,
66
+ ) => AttributeStoredConfig;
67
+ setModelBlocksVertexAttribute: (
68
+ modelId: string,
69
+ blockIds: string[],
70
+ input: AttributeInput,
71
+ ) => Promise<unknown>;
72
+ setModelBlocksVertexAttributeName: (
73
+ modelId: string,
74
+ blockIds: string[],
75
+ name: string,
76
+ ) => Promise<unknown>;
77
+ setModelBlocksVertexAttributeItem: (
78
+ modelId: string,
79
+ blockIds: string[],
80
+ item: number,
81
+ ) => Promise<unknown>;
82
+ setModelBlocksVertexAttributeRange: (
83
+ modelId: string,
84
+ blockIds: string[],
85
+ minimum: number,
86
+ maximum: number,
87
+ ) => Promise<unknown>;
88
+ setModelBlocksVertexAttributeColorMap: (
89
+ modelId: string,
90
+ blockIds: string[],
91
+ colorMap: string | undefined,
92
+ ) => Promise<unknown>;
93
+ modelBlocksVertexAttributeNoDataColor: (modelId: string, blockId?: string) => unknown;
94
+ setModelBlocksVertexAttributeNoDataColor: (
95
+ modelId: string,
96
+ blockIds: string[],
97
+ no_data_color: unknown,
98
+ ) => Promise<unknown>;
99
+ }
100
+
52
101
  // oxlint-disable-next-line max-lines-per-function
53
- function useModelBlocksVertexAttribute() {
102
+ function useModelBlocksVertexAttribute(): UseModelBlocksVertexAttributeReturn {
54
103
  const dataStore = useDataStore();
55
104
  const modelBlocksCommonStyle = useModelBlocksCommonStyle();
56
105
  const viewerStore = useViewerStore();
57
106
  function modelBlocksVertexAttribute(modelId: string, blockId?: string): AttributeState {
107
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring.vertex shape is defined by the data style schema.
58
108
  return modelBlocksCommonStyle.modelBlockColoring(modelId, blockId).vertex as AttributeState;
59
109
  }
60
110
  function modelBlocksVertexAttributeStoredConfig(
@@ -64,14 +114,10 @@ function useModelBlocksVertexAttribute() {
64
114
  item: number | undefined,
65
115
  ): AttributeStoredConfig {
66
116
  const { storedConfigs } = modelBlocksVertexAttribute(modelId, blockId);
67
- if (
68
- storedConfigs &&
69
- name !== undefined &&
70
- name in storedConfigs &&
71
- item !== undefined &&
72
- item in storedConfigs[name]!
73
- ) {
74
- return storedConfigs[name]![item]!;
117
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
118
+ const itemConfig = item === undefined ? undefined : nameConfig?.[item];
119
+ if (itemConfig !== undefined) {
120
+ return itemConfig;
75
121
  }
76
122
  return {
77
123
  minimum: undefined,
@@ -80,32 +126,41 @@ function useModelBlocksVertexAttribute() {
80
126
  no_data_color: DEFAULT_NO_DATA_COLOR,
81
127
  };
82
128
  }
83
- function mutateModelBlocksVertexStyle(
129
+ async function mutateModelBlocksVertexStyle(
84
130
  modelId: string,
85
131
  blockIds: string[],
86
132
  values: Record<string, unknown>,
87
- ) {
88
- if (blockIds.length > 1) {
89
- modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
133
+ ): Promise<void> {
134
+ const tasks: Promise<void>[] = [
135
+ modelBlocksCommonStyle.mutateModelBlocksColoring(modelId, blockIds, {
90
136
  vertex: values,
91
- });
137
+ }),
138
+ ];
139
+ const totalBlockIds = await dataStore.getBlocksGeodeIds(modelId);
140
+ if (blockIds.length === totalBlockIds.length) {
141
+ tasks.push(
142
+ modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
143
+ vertex: values,
144
+ }),
145
+ );
92
146
  }
93
- return modelBlocksCommonStyle.mutateModelBlocksColoring(modelId, blockIds, {
94
- vertex: values,
95
- });
147
+ await Promise.all(tasks);
96
148
  }
97
- function setModelBlocksVertexAttributeStoredConfig(
149
+ async function setModelBlocksVertexAttributeStoredConfig(
98
150
  modelId: string,
99
151
  blockIds: string[],
100
152
  name: string | undefined,
101
153
  item: number | undefined,
102
154
  config: Partial<AttributeStoredConfig>,
103
- ) {
104
- return mutateModelBlocksVertexStyle(modelId, blockIds, {
155
+ ): Promise<void> {
156
+ if (name === undefined || item === undefined) {
157
+ return;
158
+ }
159
+ await mutateModelBlocksVertexStyle(modelId, blockIds, {
105
160
  storedConfigs: {
106
- [name as string]: {
161
+ [name]: {
107
162
  lastItem: item,
108
- [item as number]: config,
163
+ [item]: config,
109
164
  },
110
165
  },
111
166
  });
@@ -119,8 +174,9 @@ function useModelBlocksVertexAttribute() {
119
174
  name: string | undefined,
120
175
  ): number {
121
176
  const { storedConfigs } = modelBlocksVertexAttribute(modelId, blockId);
122
- if (storedConfigs && name !== undefined && name in storedConfigs) {
123
- return storedConfigs[name]!.lastItem;
177
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
178
+ if (nameConfig !== undefined) {
179
+ return nameConfig.lastItem;
124
180
  }
125
181
  return 0;
126
182
  }
@@ -161,18 +217,18 @@ function useModelBlocksVertexAttribute() {
161
217
  colorMap,
162
218
  no_data_color = DEFAULT_NO_DATA_COLOR,
163
219
  }: AttributeInput,
164
- ) {
165
- mutateModelBlocksVertexStyle(modelId, blockIds, {
220
+ ): Promise<unknown> {
221
+ await mutateModelBlocksVertexStyle(modelId, blockIds, {
166
222
  name,
167
223
  item,
168
224
  });
169
- setModelBlocksVertexAttributeStoredConfig(modelId, blockIds, name, item, {
225
+ await setModelBlocksVertexAttributeStoredConfig(modelId, blockIds, name, item, {
170
226
  minimum,
171
227
  maximum,
172
228
  colorMap,
173
229
  no_data_color,
174
230
  });
175
- const points = getRGBPointsFromPreset(colorMap as string);
231
+ const points = getRGBPointsFromPreset(colorMap ?? "");
176
232
  const block_viewer_ids = await dataStore.getMeshComponentsViewerIds(modelId, blockIds);
177
233
  const params = {
178
234
  id: modelId,
@@ -189,7 +245,7 @@ function useModelBlocksVertexAttribute() {
189
245
  params,
190
246
  });
191
247
  }
192
- function applyVertexAttribute(modelId: string, blockIds: string[]) {
248
+ async function applyVertexAttribute(modelId: string, blockIds: string[]): Promise<unknown> {
193
249
  const name = modelBlocksVertexAttributeName(modelId, blockIds[0]);
194
250
  const item = modelBlocksVertexAttributeItem(modelId, blockIds[0]);
195
251
  const storedConfig = modelBlocksVertexAttributeStoredConfig(modelId, blockIds[0], name, item);
@@ -202,46 +258,55 @@ function useModelBlocksVertexAttribute() {
202
258
  no_data_color: storedConfig.no_data_color,
203
259
  };
204
260
  if (isModelBlocksVertexAttributeValid(attribute)) {
205
- return setModelBlocksVertexAttribute(modelId, blockIds, attribute);
261
+ const result = await setModelBlocksVertexAttribute(modelId, blockIds, attribute);
262
+ return result;
206
263
  }
207
- return Promise.resolve();
264
+ return undefined;
208
265
  }
209
- function setModelBlocksVertexAttributeName(modelId: string, blockIds: string[], name: string) {
266
+ async function setModelBlocksVertexAttributeName(
267
+ modelId: string,
268
+ blockIds: string[],
269
+ name: string,
270
+ ): Promise<unknown> {
210
271
  const item = modelBlocksVertexAttributeLastItem(modelId, blockIds[0], name);
211
- mutateModelBlocksVertexStyle(modelId, blockIds, {
272
+ await mutateModelBlocksVertexStyle(modelId, blockIds, {
212
273
  name,
213
274
  item,
214
275
  });
215
276
  return applyVertexAttribute(modelId, blockIds);
216
277
  }
217
- function setModelBlocksVertexAttributeItem(modelId: string, blockIds: string[], item: number) {
218
- mutateModelBlocksVertexStyle(modelId, blockIds, {
278
+ async function setModelBlocksVertexAttributeItem(
279
+ modelId: string,
280
+ blockIds: string[],
281
+ item: number,
282
+ ): Promise<unknown> {
283
+ await mutateModelBlocksVertexStyle(modelId, blockIds, {
219
284
  item,
220
285
  });
221
286
  return applyVertexAttribute(modelId, blockIds);
222
287
  }
223
- function setModelBlocksVertexAttributeRange(
288
+ async function setModelBlocksVertexAttributeRange(
224
289
  modelId: string,
225
290
  blockIds: string[],
226
291
  minimum: number,
227
292
  maximum: number,
228
- ) {
293
+ ): Promise<unknown> {
229
294
  const name = modelBlocksVertexAttributeName(modelId, blockIds[0]);
230
295
  const item = modelBlocksVertexAttributeItem(modelId, blockIds[0]);
231
- setModelBlocksVertexAttributeStoredConfig(modelId, blockIds, name, item, {
296
+ await setModelBlocksVertexAttributeStoredConfig(modelId, blockIds, name, item, {
232
297
  minimum,
233
298
  maximum,
234
299
  });
235
300
  return applyVertexAttribute(modelId, blockIds);
236
301
  }
237
- function setModelBlocksVertexAttributeColorMap(
302
+ async function setModelBlocksVertexAttributeColorMap(
238
303
  modelId: string,
239
304
  blockIds: string[],
240
305
  colorMap: string | undefined,
241
- ) {
306
+ ): Promise<unknown> {
242
307
  const name = modelBlocksVertexAttributeName(modelId, blockIds[0]);
243
308
  const item = modelBlocksVertexAttributeItem(modelId, blockIds[0]);
244
- setModelBlocksVertexAttributeStoredConfig(modelId, blockIds, name, item, {
309
+ await setModelBlocksVertexAttributeStoredConfig(modelId, blockIds, name, item, {
245
310
  colorMap,
246
311
  });
247
312
  return applyVertexAttribute(modelId, blockIds);
@@ -256,7 +321,7 @@ function useModelBlocksVertexAttribute() {
256
321
  modelId: string,
257
322
  blockIds: string[],
258
323
  no_data_color: unknown,
259
- ) {
324
+ ): Promise<unknown> {
260
325
  const name = modelBlocksVertexAttributeName(modelId, blockIds[0]);
261
326
  const item = modelBlocksVertexAttributeItem(modelId, blockIds[0]);
262
327
  const storedConfig = modelBlocksVertexAttributeStoredConfig(modelId, blockIds[0], name, item);
@@ -4,7 +4,14 @@ import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schem
4
4
 
5
5
  const schema = viewer_schemas.opengeodeweb_viewer.model.blocks.visibility;
6
6
 
7
- export function useModelBlocksVisibility() {
7
+ export function useModelBlocksVisibility(): {
8
+ setModelBlocksVisibility: (
9
+ modelId: string,
10
+ blocks_ids: string[],
11
+ visibility: boolean | undefined,
12
+ ) => Promise<unknown>;
13
+ modelBlockVisibility: (id: string, block_id?: string) => unknown;
14
+ } {
8
15
  const modelCommonStyle = useModelCommonStyle();
9
16
  const modelBlocksCommonStyle = useModelBlocksCommonStyle();
10
17
 
@@ -12,12 +19,18 @@ export function useModelBlocksVisibility() {
12
19
  return modelBlocksCommonStyle.modelBlockStyle(id, block_id).visibility;
13
20
  }
14
21
 
15
- function setModelBlocksVisibility(
22
+ async function setModelBlocksVisibility(
16
23
  modelId: string,
17
24
  blocks_ids: string[],
18
25
  visibility: boolean | undefined,
19
- ) {
20
- return modelCommonStyle.setModelTypeVisibility(modelId, blocks_ids, visibility, schema);
26
+ ): Promise<unknown> {
27
+ const result = await modelCommonStyle.setModelTypeVisibility(
28
+ modelId,
29
+ blocks_ids,
30
+ visibility,
31
+ schema,
32
+ );
33
+ return result;
21
34
  }
22
35
 
23
36
  return { setModelBlocksVisibility, modelBlockVisibility };