@geode/opengeodeweb-front 10.34.0-rc.2 → 10.34.0-rc.21

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 (499) hide show
  1. package/.build/opengeodeweb_front_schemas.js +175 -0
  2. package/.build/server/utils/app_config.js +57 -0
  3. package/.build/server/utils/cleanup.js +135 -0
  4. package/.build/server/utils/cloud.js +156 -0
  5. package/.build/server/utils/microservices.js +153 -0
  6. package/.build/server/utils/path.js +108 -0
  7. package/.build/server/utils/scripts.js +134 -0
  8. package/.build/server/utils/server.js +44 -0
  9. package/.build/server/utils/server_config.js +51 -0
  10. package/.build/server/utils/stream.js +6 -0
  11. package/.build/server/utils/ws_client.js +100 -0
  12. package/.build/shared/app_mode.js +8 -0
  13. package/.build/shared/scripts.js +49 -0
  14. package/.build/shared/utils/call_raw.js +31 -0
  15. package/.build/shared/utils/call_schema.js +28 -0
  16. package/.build/shared/utils/fetch_raw.js +52 -0
  17. package/.build/shared/utils/fetch_schema.js +32 -0
  18. package/.build/shared/utils/file.js +14 -0
  19. package/.build/shared/utils/parse_boolean.js +23 -0
  20. package/.build/shared/utils/response_handlers/load.js +50 -0
  21. package/.build/shared/utils/types.js +1 -0
  22. package/.build/shared/utils/validate_schema.js +17 -0
  23. package/README.md +8 -0
  24. package/app/assets/{geode_objects.js → geode_objects.ts} +8 -1
  25. package/app/components/ActionButton.vue +28 -12
  26. package/app/components/Basic/Slider.vue +2 -2
  27. package/app/components/Basic/Switch.vue +2 -2
  28. package/app/components/CameraManager/List.vue +11 -11
  29. package/app/components/CameraManager/Saver.vue +8 -4
  30. package/app/components/CameraManager.vue +24 -12
  31. package/app/components/CameraOrientation.vue +31 -17
  32. package/app/components/ClippingPlaneCard.vue +13 -12
  33. package/app/components/ClippingPlanes.vue +31 -21
  34. package/app/components/CrsSelector.vue +26 -18
  35. package/app/components/DeleteDialog.vue +18 -16
  36. package/app/components/DragAndDrop.vue +55 -37
  37. package/app/components/DragAndDropInternal/DragAndDropInline.vue +31 -16
  38. package/app/components/DragAndDropInternal/DragAndDropOverlay.vue +32 -19
  39. package/app/components/ExtensionSelector.vue +34 -18
  40. package/app/components/FeedBack/ErrorBanner.vue +4 -3
  41. package/app/components/FeedBack/Snackers.vue +6 -5
  42. package/app/components/FetchingData.vue +8 -12
  43. package/app/components/FileSelector.vue +27 -17
  44. package/app/components/FileUploader.vue +51 -30
  45. package/app/components/GlassCard.vue +17 -13
  46. package/app/components/HybridRenderingView.vue +25 -12
  47. package/app/components/HybridViewerTooltip.vue +28 -26
  48. package/app/components/InfraConnected.vue +1 -1
  49. package/app/components/Launcher.vue +12 -10
  50. package/app/components/Loading/EcoMessages.vue +24 -13
  51. package/app/components/Loading/Header.vue +6 -7
  52. package/app/components/Loading/Progress.vue +6 -7
  53. package/app/components/Loading.vue +10 -14
  54. package/app/components/MissingFilesSelector.vue +35 -19
  55. package/app/components/ObjectSelector.vue +37 -21
  56. package/app/components/PackagesVersions.vue +16 -8
  57. package/app/components/Recaptcha.vue +17 -23
  58. package/app/components/RemoteRenderingView.vue +21 -15
  59. package/app/components/Ruler.vue +11 -9
  60. package/app/components/Screenshot.vue +25 -19
  61. package/app/components/SearchBar.vue +12 -6
  62. package/app/components/ShrinkFilter.vue +19 -14
  63. package/app/components/Step.vue +32 -12
  64. package/app/components/Stepper.vue +19 -7
  65. package/app/components/ToolPanel.vue +29 -13
  66. package/app/components/ViewToolbar.vue +53 -44
  67. package/app/components/Viewer/ContextMenu/CenterButton.vue +16 -9
  68. package/app/components/Viewer/ContextMenu/CircularItems.vue +13 -10
  69. package/app/components/Viewer/ContextMenu/ContextMenu.vue +40 -32
  70. package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +31 -17
  71. package/app/components/Viewer/ContextMenu/InfoCard.vue +38 -22
  72. package/app/components/Viewer/EdgedCurve/PointsOptions.vue +8 -5
  73. package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +67 -48
  74. package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +74 -50
  75. package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +69 -50
  76. package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +47 -35
  77. package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +91 -51
  78. package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +74 -49
  79. package/app/components/Viewer/Generic/Model/BlocksOptions.vue +115 -53
  80. package/app/components/Viewer/Generic/Model/CornersOptions.vue +75 -37
  81. package/app/components/Viewer/Generic/Model/EdgesOptions.vue +13 -9
  82. package/app/components/Viewer/Generic/Model/LinesOptions.vue +110 -61
  83. package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +32 -21
  84. package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +9 -5
  85. package/app/components/Viewer/Generic/Model/PointsOptions.vue +19 -13
  86. package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +119 -49
  87. package/app/components/Viewer/Grid/2D/CellsOptions.vue +8 -5
  88. package/app/components/Viewer/Grid/2D/EdgesOptions.vue +8 -5
  89. package/app/components/Viewer/Grid/2D/PointsOptions.vue +8 -5
  90. package/app/components/Viewer/Grid/3D/CellsOptions.vue +8 -5
  91. package/app/components/Viewer/Grid/3D/EdgesOptions.vue +8 -5
  92. package/app/components/Viewer/Grid/3D/FacetsOptions.vue +8 -5
  93. package/app/components/Viewer/Grid/3D/PointsOptions.vue +8 -5
  94. package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +120 -76
  95. package/app/components/Viewer/ObjectTree/Base/Controls.vue +25 -10
  96. package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +42 -17
  97. package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +22 -9
  98. package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +29 -14
  99. package/app/components/Viewer/ObjectTree/Box.vue +32 -15
  100. package/app/components/Viewer/ObjectTree/Layout.vue +55 -35
  101. package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +63 -34
  102. package/app/components/Viewer/ObjectTree/Views/{ModelCollections.vue → ModelTree.vue} +101 -39
  103. package/app/components/Viewer/Options/AttributeColorBar.vue +14 -6
  104. package/app/components/Viewer/Options/AttributeRangeSelector.vue +8 -4
  105. package/app/components/Viewer/Options/AttributeSelector.vue +64 -33
  106. package/app/components/Viewer/Options/ColorMapList.vue +52 -24
  107. package/app/components/Viewer/Options/ColorMapPicker.vue +15 -11
  108. package/app/components/Viewer/Options/ColorPicker.vue +239 -50
  109. package/app/components/Viewer/Options/ColoringTypeSelector.vue +87 -67
  110. package/app/components/Viewer/Options/ColormapQuickPicker.vue +16 -12
  111. package/app/components/Viewer/Options/OptionsSection.vue +7 -5
  112. package/app/components/Viewer/Options/Sliders/Size.vue +3 -3
  113. package/app/components/Viewer/Options/Sliders/Slider.vue +9 -6
  114. package/app/components/Viewer/Options/Sliders/Width.vue +3 -3
  115. package/app/components/Viewer/Options/TextureItem.vue +29 -22
  116. package/app/components/Viewer/Options/TexturesSelector.vue +23 -12
  117. package/app/components/Viewer/Options/VisibilitySwitch.vue +3 -3
  118. package/app/components/Viewer/OverlappingObjectsPicker.vue +27 -12
  119. package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +38 -26
  120. package/app/components/Viewer/Solid/EdgesOptions.vue +8 -5
  121. package/app/components/Viewer/Solid/PointsOptions.vue +8 -5
  122. package/app/components/Viewer/Solid/PolygonsOptions.vue +8 -5
  123. package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +73 -48
  124. package/app/components/Viewer/Surface/EdgesOptions.vue +8 -5
  125. package/app/components/Viewer/Surface/PointsOptions.vue +8 -5
  126. package/app/components/Viewer/Surface/PolygonsOptions.vue +79 -49
  127. package/app/components/Viewer/Surface/Triangulated/TrianglesOptions.vue +8 -5
  128. package/app/components/Viewer/TetrahedralSolid/TetrahedraOptions.vue +8 -5
  129. package/app/components/Viewer/TetrahedralSolid/TrianglesOptions.vue +8 -5
  130. package/app/components/Viewer/Ui.vue +19 -14
  131. package/app/components/Wrapper.vue +16 -10
  132. package/app/components/ZScaling.vue +18 -10
  133. package/app/components/csv-preview/CsvPreviewer.vue +72 -50
  134. package/app/components/csv-preview/CsvSettings.vue +30 -50
  135. package/app/components/csv-preview/CsvTable.vue +34 -14
  136. package/app/composables/{batch_style.js → batch_style.ts} +9 -7
  137. package/app/composables/clipping_planes_widget.ts +204 -0
  138. package/app/composables/clipping_planes_widget_entries.ts +189 -0
  139. package/app/composables/copy_to_clipboard.ts +7 -0
  140. package/app/composables/global_attribute_style.ts +303 -0
  141. package/app/composables/hover_highlight.ts +127 -0
  142. package/app/composables/{model_collections.js → model_collections.ts} +28 -9
  143. package/app/composables/{model_components.js → model_components.ts} +28 -9
  144. package/app/composables/{project_manager.js → project_manager.ts} +77 -20
  145. package/app/composables/responsive_middle_truncate.ts +48 -0
  146. package/app/composables/{run_function_when_microservices_connected.js → run_function_when_microservices_connected.ts} +1 -1
  147. package/app/composables/stepper_tree.ts +79 -0
  148. package/app/composables/tree_filter.ts +194 -0
  149. package/app/composables/{tree_keyboard_nav.js → tree_keyboard_nav.ts} +62 -20
  150. package/app/composables/{tree_scroll.js → tree_scroll.ts} +61 -12
  151. package/app/composables/use_adaptive_styles.ts +186 -0
  152. package/app/composables/use_overlapping_picker.ts +263 -0
  153. package/app/composables/use_quick_colormap.ts +55 -0
  154. package/app/composables/virtual_tree.ts +271 -0
  155. package/app/composables/vtk_implicit_plane_widget.d.ts +2 -0
  156. package/app/plugins/{auto_store_register.js → auto_store_register.ts} +3 -5
  157. package/app/plugins/click_outside_ignore_snackbars.client.ts +36 -0
  158. package/app/stores/app.ts +252 -0
  159. package/app/stores/app_helpers/extension.ts +179 -0
  160. package/app/stores/{back.js → back.ts} +54 -28
  161. package/app/stores/camera_manager.ts +80 -0
  162. package/app/stores/{cloud.js → cloud.ts} +18 -13
  163. package/app/stores/data.ts +392 -0
  164. package/app/stores/data_helpers/collections.ts +138 -0
  165. package/app/stores/data_helpers/mesh.ts +169 -0
  166. package/app/stores/data_style.ts +167 -0
  167. package/app/stores/{feedback.js → feedback.ts} +19 -8
  168. package/app/stores/{hybrid_viewer.js → hybrid_viewer.ts} +49 -45
  169. package/app/stores/infra.ts +106 -0
  170. package/app/stores/{menu.js → menu.ts} +67 -36
  171. package/app/stores/treeview.ts +383 -0
  172. package/app/stores/{viewer.js → viewer.ts} +75 -42
  173. package/app/utils/attributes.ts +40 -0
  174. package/app/utils/clipping_planes.ts +222 -0
  175. package/app/utils/color_picker.js +54 -0
  176. package/app/utils/colormap.ts +102 -0
  177. package/app/utils/default_styles/{constants.js → constants.ts} +25 -12
  178. package/app/utils/default_styles/{index.js → index.ts} +4 -3
  179. package/app/utils/default_styles/meshes.ts +264 -0
  180. package/app/utils/default_styles/{models.js → models.ts} +106 -52
  181. package/app/utils/{extension.js → extension.ts} +63 -19
  182. package/app/utils/{import_workflow.js → import_workflow.ts} +39 -22
  183. package/app/utils/{log.js → log.ts} +12 -2
  184. package/app/utils/{name_cleaner.js → name_cleaner.ts} +6 -6
  185. package/app/utils/status.ts +19 -0
  186. package/app/utils/{stores.js → stores.ts} +5 -5
  187. package/app/utils/{string.js → string.ts} +6 -6
  188. package/app/utils/{treeview.js → treeview.ts} +4 -1
  189. package/internal/database/{base_database.js → base_database.ts} +7 -3
  190. package/internal/database/database.ts +102 -0
  191. package/internal/database/{extended_database.js → extended_database.ts} +5 -1
  192. package/internal/database/tables/camera_positions.ts +6 -0
  193. package/internal/database/tables/{data.js → data.ts} +3 -1
  194. package/internal/database/tables/data_style.ts +6 -0
  195. package/internal/database/tables/model_component_datastyle.ts +6 -0
  196. package/internal/database/tables/model_component_type_datastyle.ts +6 -0
  197. package/internal/database/tables/model_components.ts +6 -0
  198. package/internal/database/tables/model_components_relation.ts +6 -0
  199. package/internal/database/tables/table_definition.ts +5 -0
  200. package/internal/stores/data_style/mesh/cells/cell.ts +279 -0
  201. package/internal/stores/data_style/mesh/cells/{color.js → color.ts} +13 -7
  202. package/internal/stores/data_style/mesh/cells/common.ts +50 -0
  203. package/internal/stores/data_style/mesh/cells/index.ts +161 -0
  204. package/internal/stores/data_style/mesh/cells/{textures.js → textures.ts} +14 -8
  205. package/internal/stores/data_style/mesh/cells/vertex.ts +285 -0
  206. package/internal/stores/data_style/mesh/cells/visibility.ts +46 -0
  207. package/internal/stores/data_style/mesh/edges/{color.js → color.ts} +13 -7
  208. package/internal/stores/data_style/mesh/edges/common.ts +41 -0
  209. package/internal/stores/data_style/mesh/edges/edge.ts +279 -0
  210. package/internal/stores/data_style/mesh/edges/index.ts +155 -0
  211. package/internal/stores/data_style/mesh/edges/vertex.ts +285 -0
  212. package/internal/stores/data_style/mesh/edges/visibility.ts +45 -0
  213. package/internal/stores/data_style/mesh/edges/width.ts +42 -0
  214. package/internal/stores/data_style/mesh/{index.js → index.ts} +34 -14
  215. package/internal/stores/data_style/mesh/points/{color.js → color.ts} +13 -7
  216. package/internal/stores/data_style/mesh/points/common.ts +51 -0
  217. package/internal/stores/data_style/mesh/points/index.ts +133 -0
  218. package/internal/stores/data_style/mesh/points/size.ts +43 -0
  219. package/internal/stores/data_style/mesh/points/vertex.ts +285 -0
  220. package/internal/stores/data_style/mesh/points/visibility.ts +49 -0
  221. package/internal/stores/data_style/mesh/polygons/{color.js → color.ts} +13 -7
  222. package/internal/stores/data_style/mesh/polygons/common.ts +50 -0
  223. package/internal/stores/data_style/mesh/polygons/index.ts +167 -0
  224. package/internal/stores/data_style/mesh/polygons/polygon.ts +282 -0
  225. package/internal/stores/data_style/mesh/polygons/{textures.js → textures.ts} +14 -8
  226. package/internal/stores/data_style/mesh/polygons/vertex.ts +288 -0
  227. package/internal/stores/data_style/mesh/polygons/visibility.ts +48 -0
  228. package/internal/stores/data_style/mesh/polyhedra/{color.js → color.ts} +13 -7
  229. package/internal/stores/data_style/mesh/polyhedra/common.ts +41 -0
  230. package/internal/stores/data_style/mesh/polyhedra/index.ts +157 -0
  231. package/internal/stores/data_style/mesh/polyhedra/polyhedron.ts +294 -0
  232. package/internal/stores/data_style/mesh/polyhedra/vertex.ts +288 -0
  233. package/internal/stores/data_style/mesh/polyhedra/visibility.ts +48 -0
  234. package/internal/stores/data_style/model/blocks/{color.js → color.ts} +50 -13
  235. package/internal/stores/data_style/model/blocks/common.ts +67 -0
  236. package/internal/stores/data_style/model/blocks/{index.js → index.ts} +111 -66
  237. package/internal/stores/data_style/model/blocks/polyhedron.ts +363 -0
  238. package/internal/stores/data_style/model/blocks/vertex.ts +349 -0
  239. package/internal/stores/data_style/model/blocks/visibility.ts +37 -0
  240. package/internal/stores/data_style/model/color.ts +348 -0
  241. package/internal/stores/data_style/model/common.ts +262 -0
  242. package/internal/stores/data_style/model/corners/{color.js → color.ts} +49 -10
  243. package/internal/stores/data_style/model/corners/common.ts +71 -0
  244. package/internal/stores/data_style/model/corners/{index.js → index.ts} +86 -47
  245. package/internal/stores/data_style/model/corners/vertex.ts +315 -0
  246. package/internal/stores/data_style/model/corners/visibility.ts +39 -0
  247. package/internal/stores/data_style/model/edges/common.ts +29 -0
  248. package/internal/stores/data_style/model/edges/{index.js → index.ts} +2 -7
  249. package/internal/stores/data_style/model/edges/visibility.ts +55 -0
  250. package/internal/stores/data_style/model/{index.js → index.ts} +24 -11
  251. package/internal/stores/data_style/model/lines/{color.js → color.ts} +47 -10
  252. package/internal/stores/data_style/model/lines/common.ts +63 -0
  253. package/internal/stores/data_style/model/lines/edge.ts +343 -0
  254. package/internal/stores/data_style/model/lines/{index.js → index.ts} +108 -66
  255. package/internal/stores/data_style/model/lines/vertex.ts +344 -0
  256. package/internal/stores/data_style/model/lines/visibility.ts +37 -0
  257. package/internal/stores/data_style/model/points/common.ts +25 -0
  258. package/internal/stores/data_style/model/points/index.ts +35 -0
  259. package/internal/stores/data_style/model/points/size.ts +44 -0
  260. package/internal/stores/data_style/model/points/visibility.ts +46 -0
  261. package/internal/stores/data_style/model/selection.ts +138 -0
  262. package/internal/stores/data_style/model/surfaces/{color.js → color.ts} +47 -10
  263. package/internal/stores/data_style/model/surfaces/common.ts +69 -0
  264. package/internal/stores/data_style/model/surfaces/{index.js → index.ts} +113 -66
  265. package/internal/stores/data_style/model/surfaces/polygon.ts +347 -0
  266. package/internal/stores/data_style/model/surfaces/vertex.ts +351 -0
  267. package/internal/stores/data_style/model/surfaces/visibility.ts +37 -0
  268. package/internal/stores/data_style/model/{visibility.js → visibility.ts} +112 -32
  269. package/internal/stores/data_style/state.ts +281 -0
  270. package/internal/stores/data_style/types.ts +30 -0
  271. package/internal/stores/hybrid_viewer/brightness.ts +124 -0
  272. package/internal/stores/hybrid_viewer/camera.ts +326 -0
  273. package/internal/stores/hybrid_viewer/{camera_animation.js → camera_animation.ts} +30 -12
  274. package/internal/stores/hybrid_viewer/{constants.js → constants.ts} +2 -2
  275. package/internal/stores/hybrid_viewer/core.ts +64 -0
  276. package/internal/stores/hybrid_viewer/{filters.js → filters.ts} +10 -13
  277. package/internal/stores/hybrid_viewer/highlight.ts +183 -0
  278. package/internal/stores/hybrid_viewer/{ruler.js → ruler.ts} +50 -22
  279. package/internal/stores/hybrid_viewer/scene.ts +125 -0
  280. package/internal/stores/hybrid_viewer/viewport.ts +177 -0
  281. package/internal/stores/hybrid_viewer/vtk_types.ts +58 -0
  282. package/internal/utils/api_fetch.ts +133 -0
  283. package/internal/utils/upload_file.ts +115 -0
  284. package/internal/utils/viewer_call.ts +99 -0
  285. package/internal/utils/ws_client.ts +54 -0
  286. package/nuxt.config.ts +168 -0
  287. package/opengeodeweb_front_schemas.json +2 -2
  288. package/package.json +49 -13
  289. package/server/api/cloud/extensions/{run.post.js → run.post.ts} +16 -12
  290. package/server/api/local/app/project_folder_path.post.ts +33 -0
  291. package/server/api/local/app/run_back.post.ts +39 -0
  292. package/server/api/local/app/run_viewer.post.ts +39 -0
  293. package/server/api/local/extensions/{kill.post.js → kill.post.ts} +15 -8
  294. package/server/api/local/extensions/{run.post.js → run.post.ts} +17 -12
  295. package/server/api/local/extensions/upload.put.ts +71 -0
  296. package/server/api/microservice/app/{get_is_app_ready.get.js → get_is_app_ready.get.ts} +5 -5
  297. package/server/api/microservice/app/schemas/get_is_app_ready.json +1 -1
  298. package/server/api/microservice/app/set_app_base_url.post.ts +29 -0
  299. package/server/api/microservice/app/set_back_base_url.post.ts +26 -0
  300. package/server/api/microservice/app/set_is_app_ready.post.ts +29 -0
  301. package/server/api/microservice/app/set_viewer_base_url.post.ts +26 -0
  302. package/server/api/microservice/extensions/{download.post.js → download.post.ts} +13 -6
  303. package/server/api/serverless/run_cloud.post.ts +92 -0
  304. package/server/utils/{app_config.js → app_config.ts} +40 -18
  305. package/server/utils/{cleanup.js → cleanup.ts} +76 -29
  306. package/server/utils/{cloud.js → cloud.ts} +33 -17
  307. package/server/utils/{extension.js → extension.ts} +31 -4
  308. package/server/utils/{microservices.js → microservices.ts} +68 -27
  309. package/server/utils/{path.js → path.ts} +36 -17
  310. package/server/utils/{scripts.js → scripts.ts} +49 -33
  311. package/server/utils/{server.js → server.ts} +13 -6
  312. package/server/utils/server_config.ts +74 -0
  313. package/server/utils/stream.ts +6 -0
  314. package/server/utils/ws_client.ts +165 -0
  315. package/shared/{scripts.js → scripts.ts} +15 -10
  316. package/shared/utils/call_raw.ts +73 -0
  317. package/shared/utils/{call_schema.js → call_schema.ts} +15 -6
  318. package/shared/utils/fetch_raw.ts +125 -0
  319. package/shared/utils/{fetch_schema.js → fetch_schema.ts} +16 -7
  320. package/shared/utils/file.ts +22 -0
  321. package/shared/utils/{parse_boolean.js → parse_boolean.ts} +1 -1
  322. package/shared/utils/response_handlers/load.ts +109 -0
  323. package/shared/utils/types.ts +27 -0
  324. package/shared/utils/{validate_schema.js → validate_schema.ts} +3 -1
  325. package/.github/workflows/config.json +0 -5
  326. package/.github/workflows/deploy.yml +0 -15
  327. package/.github/workflows/manual_release.yml +0 -11
  328. package/.github/workflows/merge_request.yml +0 -9
  329. package/.github/workflows/pr_update.yml +0 -11
  330. package/.github/workflows/prepare_deploy.yml +0 -9
  331. package/.github/workflows/schedule.yml +0 -18
  332. package/.github/workflows/test.yml +0 -14
  333. package/.github/workflows/test_pr.yml +0 -12
  334. package/.oxlintrc.json +0 -150
  335. package/.releaserc +0 -11
  336. package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +0 -224
  337. package/app/composables/clipping_planes_widget.js +0 -249
  338. package/app/composables/global_attribute_style.js +0 -181
  339. package/app/composables/hover_highlight.js +0 -91
  340. package/app/composables/responsive_middle_truncate.js +0 -34
  341. package/app/composables/stepper_tree.js +0 -56
  342. package/app/composables/tree_filter.js +0 -138
  343. package/app/composables/use_adaptive_styles.js +0 -120
  344. package/app/composables/use_overlapping_picker.js +0 -169
  345. package/app/composables/use_quick_colormap.js +0 -32
  346. package/app/composables/virtual_tree.js +0 -191
  347. package/app/stores/app.js +0 -326
  348. package/app/stores/camera_manager.js +0 -57
  349. package/app/stores/data.js +0 -278
  350. package/app/stores/data_helpers/collections.js +0 -96
  351. package/app/stores/data_helpers/mesh.js +0 -122
  352. package/app/stores/data_style.js +0 -116
  353. package/app/stores/infra.js +0 -95
  354. package/app/stores/treeview.js +0 -290
  355. package/app/utils/attributes.js +0 -23
  356. package/app/utils/clipping_planes.js +0 -110
  357. package/app/utils/colormap.js +0 -64
  358. package/app/utils/default_styles/meshes.js +0 -191
  359. package/app/utils/status.js +0 -10
  360. package/commitlint.config.js +0 -20
  361. package/internal/database/database.js +0 -80
  362. package/internal/database/tables/camera_positions.js +0 -4
  363. package/internal/database/tables/data_style.js +0 -4
  364. package/internal/database/tables/model_component_datastyle.js +0 -4
  365. package/internal/database/tables/model_component_type_datastyle.js +0 -4
  366. package/internal/database/tables/model_components.js +0 -4
  367. package/internal/database/tables/model_components_relation.js +0 -4
  368. package/internal/stores/data_style/mesh/cells/cell.js +0 -196
  369. package/internal/stores/data_style/mesh/cells/common.js +0 -39
  370. package/internal/stores/data_style/mesh/cells/index.js +0 -81
  371. package/internal/stores/data_style/mesh/cells/vertex.js +0 -193
  372. package/internal/stores/data_style/mesh/cells/visibility.js +0 -35
  373. package/internal/stores/data_style/mesh/edges/common.js +0 -32
  374. package/internal/stores/data_style/mesh/edges/edge.js +0 -195
  375. package/internal/stores/data_style/mesh/edges/index.js +0 -81
  376. package/internal/stores/data_style/mesh/edges/vertex.js +0 -196
  377. package/internal/stores/data_style/mesh/edges/visibility.js +0 -34
  378. package/internal/stores/data_style/mesh/edges/width.js +0 -34
  379. package/internal/stores/data_style/mesh/points/common.js +0 -37
  380. package/internal/stores/data_style/mesh/points/index.js +0 -82
  381. package/internal/stores/data_style/mesh/points/size.js +0 -35
  382. package/internal/stores/data_style/mesh/points/vertex.js +0 -193
  383. package/internal/stores/data_style/mesh/points/visibility.js +0 -37
  384. package/internal/stores/data_style/mesh/polygons/common.js +0 -32
  385. package/internal/stores/data_style/mesh/polygons/index.js +0 -107
  386. package/internal/stores/data_style/mesh/polygons/polygon.js +0 -196
  387. package/internal/stores/data_style/mesh/polygons/vertex.js +0 -196
  388. package/internal/stores/data_style/mesh/polygons/visibility.js +0 -38
  389. package/internal/stores/data_style/mesh/polyhedra/common.js +0 -32
  390. package/internal/stores/data_style/mesh/polyhedra/index.js +0 -98
  391. package/internal/stores/data_style/mesh/polyhedra/polyhedron.js +0 -196
  392. package/internal/stores/data_style/mesh/polyhedra/vertex.js +0 -196
  393. package/internal/stores/data_style/mesh/polyhedra/visibility.js +0 -38
  394. package/internal/stores/data_style/model/blocks/common.js +0 -51
  395. package/internal/stores/data_style/model/blocks/polyhedron.js +0 -215
  396. package/internal/stores/data_style/model/blocks/vertex.js +0 -204
  397. package/internal/stores/data_style/model/blocks/visibility.js +0 -20
  398. package/internal/stores/data_style/model/color.js +0 -218
  399. package/internal/stores/data_style/model/common.js +0 -141
  400. package/internal/stores/data_style/model/corners/common.js +0 -51
  401. package/internal/stores/data_style/model/corners/vertex.js +0 -204
  402. package/internal/stores/data_style/model/corners/visibility.js +0 -20
  403. package/internal/stores/data_style/model/edges/common.js +0 -20
  404. package/internal/stores/data_style/model/edges/visibility.js +0 -38
  405. package/internal/stores/data_style/model/lines/common.js +0 -51
  406. package/internal/stores/data_style/model/lines/edge.js +0 -203
  407. package/internal/stores/data_style/model/lines/vertex.js +0 -204
  408. package/internal/stores/data_style/model/lines/visibility.js +0 -20
  409. package/internal/stores/data_style/model/points/common.js +0 -20
  410. package/internal/stores/data_style/model/points/index.js +0 -25
  411. package/internal/stores/data_style/model/points/size.js +0 -36
  412. package/internal/stores/data_style/model/points/visibility.js +0 -36
  413. package/internal/stores/data_style/model/selection.js +0 -89
  414. package/internal/stores/data_style/model/surfaces/common.js +0 -51
  415. package/internal/stores/data_style/model/surfaces/polygon.js +0 -215
  416. package/internal/stores/data_style/model/surfaces/vertex.js +0 -215
  417. package/internal/stores/data_style/model/surfaces/visibility.js +0 -20
  418. package/internal/stores/data_style/state.js +0 -197
  419. package/internal/stores/hybrid_viewer/brightness.js +0 -82
  420. package/internal/stores/hybrid_viewer/camera.js +0 -274
  421. package/internal/stores/hybrid_viewer/highlight.js +0 -170
  422. package/internal/stores/hybrid_viewer/scene.js +0 -136
  423. package/internal/stores/hybrid_viewer/viewport.js +0 -140
  424. package/internal/utils/api_fetch.js +0 -52
  425. package/internal/utils/upload_file.js +0 -57
  426. package/internal/utils/viewer_call.js +0 -49
  427. package/internal/utils/ws_client.js +0 -29
  428. package/nuxt.config.js +0 -106
  429. package/scripts/generate_geode_objects.js +0 -24
  430. package/server/api/local/app/project_folder_path.post.js +0 -29
  431. package/server/api/local/app/run_back.post.js +0 -33
  432. package/server/api/local/app/run_viewer.post.js +0 -33
  433. package/server/api/local/extensions/upload.put.js +0 -72
  434. package/server/api/microservice/app/set_app_base_url.post.js +0 -25
  435. package/server/api/microservice/app/set_back_base_url.post.js +0 -22
  436. package/server/api/microservice/app/set_is_app_ready.post.js +0 -25
  437. package/server/api/microservice/app/set_viewer_base_url.post.js +0 -22
  438. package/server/api/serverless/run_cloud.post.js +0 -44
  439. package/server/utils/server_config.js +0 -58
  440. package/server/utils/ws_client.js +0 -112
  441. package/shared/utils/call_raw.js +0 -46
  442. package/shared/utils/fetch_raw.js +0 -61
  443. package/shared/utils/file.js +0 -16
  444. package/shared/utils/response_handlers/load.js +0 -74
  445. package/tests/integration/data/uploads/test.og_brep +0 -0
  446. package/tests/integration/data/uploads/test.og_edc2d +0 -0
  447. package/tests/integration/data/uploads/test.og_edc3d +0 -0
  448. package/tests/integration/data/uploads/test.og_psf3d +0 -0
  449. package/tests/integration/data/uploads/test.og_rgd2d +0 -0
  450. package/tests/integration/data/uploads/test.og_rgd3d +0 -0
  451. package/tests/integration/data/uploads/test.vtu +0 -22
  452. package/tests/integration/setup.js +0 -92
  453. package/tests/integration/stores/data_style/mesh/cells.nuxt.test.js +0 -343
  454. package/tests/integration/stores/data_style/mesh/edges.nuxt.test.js +0 -254
  455. package/tests/integration/stores/data_style/mesh/index.nuxt.test.js +0 -62
  456. package/tests/integration/stores/data_style/mesh/points.nuxt.test.js +0 -201
  457. package/tests/integration/stores/data_style/mesh/polygons.nuxt.test.js +0 -260
  458. package/tests/integration/stores/data_style/mesh/polyhedra.nuxt.test.js +0 -267
  459. package/tests/integration/stores/data_style/model/blocks.nuxt.test.js +0 -397
  460. package/tests/integration/stores/data_style/model/corners.nuxt.test.js +0 -264
  461. package/tests/integration/stores/data_style/model/edges.nuxt.test.js +0 -71
  462. package/tests/integration/stores/data_style/model/index.nuxt.test.js +0 -92
  463. package/tests/integration/stores/data_style/model/lines.nuxt.test.js +0 -379
  464. package/tests/integration/stores/data_style/model/points.nuxt.test.js +0 -95
  465. package/tests/integration/stores/data_style/model/surfaces.nuxt.test.js +0 -574
  466. package/tests/integration/stores/viewer.nuxt.test.js +0 -69
  467. package/tests/setup_indexeddb.js +0 -4
  468. package/tests/unit/components/CrsSelector.nuxt.test.js +0 -55
  469. package/tests/unit/components/DragAndDrop.nuxt.test.js +0 -89
  470. package/tests/unit/components/ExtensionSelector.nuxt.test.js +0 -65
  471. package/tests/unit/components/FeedBack/ErrorsBanner.nuxt.test.js +0 -41
  472. package/tests/unit/components/FeedBack/Snackers.nuxt.test.js +0 -49
  473. package/tests/unit/components/FileSelector.nuxt.test.js +0 -124
  474. package/tests/unit/components/FileUploader.nuxt.test.js +0 -69
  475. package/tests/unit/components/MissingFilesSelector.nuxt.test.js +0 -77
  476. package/tests/unit/components/ObjectSelector.nuxt.test.js +0 -118
  477. package/tests/unit/components/PackagesVersions.nuxt.test.js +0 -42
  478. package/tests/unit/components/Step.nuxt.test.js +0 -51
  479. package/tests/unit/components/Stepper.nuxt.test.js +0 -41
  480. package/tests/unit/components/ToolPanel.nuxt.test.js +0 -66
  481. package/tests/unit/composables/api_fetch.nuxt.test.js +0 -75
  482. package/tests/unit/composables/project_manager.nuxt.test.js +0 -299
  483. package/tests/unit/composables/run_function_when_microservices_connected.nuxt.test.js +0 -57
  484. package/tests/unit/composables/upload_file.nuxt.test.js +0 -45
  485. package/tests/unit/composables/virtual_tree.nuxt.test.js +0 -63
  486. package/tests/unit/plugins/project_load.nuxt.test.js +0 -98
  487. package/tests/unit/stores/app.nuxt.test.js +0 -189
  488. package/tests/unit/stores/back.nuxt.test.js +0 -147
  489. package/tests/unit/stores/cloud.nuxt.test.js +0 -90
  490. package/tests/unit/stores/data.nuxt.test.js +0 -162
  491. package/tests/unit/stores/feedback.nuxt.test.js +0 -90
  492. package/tests/unit/stores/infra.nuxt.test.js +0 -313
  493. package/tests/unit/stores/treeview.nuxt.test.js +0 -63
  494. package/tests/unit/stores/viewer.nuxt.test.js +0 -161
  495. package/tests/unit/utils/validate_schema.nuxt.test.js +0 -38
  496. package/tests/utils.js +0 -20
  497. package/tests/vitest.config.js +0 -67
  498. /package/server/api/local/app/{kill.post.js → kill.post.ts} +0 -0
  499. /package/shared/{app_mode.js → app_mode.ts} +0 -0
@@ -0,0 +1,343 @@
1
+ // oxlint-disable eslint/max-lines
2
+ import { DEFAULT_NO_DATA_COLOR } from "@ogw_front/utils/default_styles/constants";
3
+ // Third party imports
4
+ import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
5
+
6
+ // Local imports
7
+ import { getRGBPointsFromPreset } from "@ogw_front/utils/colormap";
8
+ import { useDataStore } from "@ogw_front/stores/data";
9
+ import { useModelLinesCommonStyle } from "./common";
10
+ import { useViewerStore } from "@ogw_front/stores/viewer";
11
+
12
+ // Local constants
13
+ const attributeSchema = viewer_schemas.opengeodeweb_viewer.model.lines.attribute.edge.attribute;
14
+
15
+ interface AttributeStoredConfig {
16
+ minimum: number | undefined;
17
+ maximum: number | undefined;
18
+ colorMap: string | undefined;
19
+ no_data_color: unknown;
20
+ }
21
+
22
+ interface AttributeState {
23
+ name?: string;
24
+ item?: number;
25
+ storedConfigs?: Record<string, { lastItem: number } & Record<string, AttributeStoredConfig>>;
26
+ }
27
+
28
+ interface AttributeInput {
29
+ name: string | undefined;
30
+ item: number | undefined;
31
+ minimum: number | undefined;
32
+ maximum: number | undefined;
33
+ colorMap: string | undefined;
34
+ no_data_color?: unknown;
35
+ }
36
+
37
+ function isModelLinesEdgeAttributeValid({
38
+ name,
39
+ item,
40
+ minimum,
41
+ maximum,
42
+ colorMap,
43
+ }: AttributeInput): boolean {
44
+ return (
45
+ name !== undefined &&
46
+ item !== undefined &&
47
+ minimum !== undefined &&
48
+ maximum !== undefined &&
49
+ colorMap !== undefined
50
+ );
51
+ }
52
+
53
+ interface UseModelLinesEdgeAttributeReturn {
54
+ modelLinesEdgeAttributeName: (modelId: string, lineId?: string) => string | undefined;
55
+ modelLinesEdgeAttributeItem: (modelId: string, lineId?: string) => number;
56
+ modelLinesEdgeAttributeRange: (
57
+ modelId: string,
58
+ lineId?: string,
59
+ ) => [number | undefined, number | undefined];
60
+ modelLinesEdgeAttributeColorMap: (modelId: string, lineId?: string) => string | undefined;
61
+ modelLinesEdgeAttributeStoredConfig: (
62
+ modelId: string,
63
+ lineId: string | undefined,
64
+ name: string | undefined,
65
+ item: number | undefined,
66
+ ) => AttributeStoredConfig;
67
+ setModelLinesEdgeAttribute: (
68
+ modelId: string,
69
+ lineIds: string[],
70
+ input: AttributeInput,
71
+ ) => Promise<unknown>;
72
+ setModelLinesEdgeAttributeName: (
73
+ modelId: string,
74
+ lineIds: string[],
75
+ name: string,
76
+ ) => Promise<unknown>;
77
+ setModelLinesEdgeAttributeItem: (
78
+ modelId: string,
79
+ lineIds: string[],
80
+ item: number,
81
+ ) => Promise<unknown>;
82
+ setModelLinesEdgeAttributeRange: (
83
+ modelId: string,
84
+ lineIds: string[],
85
+ minimum: number,
86
+ maximum: number,
87
+ ) => Promise<unknown>;
88
+ setModelLinesEdgeAttributeColorMap: (
89
+ modelId: string,
90
+ lineIds: string[],
91
+ colorMap: string | undefined,
92
+ ) => Promise<unknown>;
93
+ modelLinesEdgeAttributeNoDataColor: (modelId: string, lineId?: string) => unknown;
94
+ setModelLinesEdgeAttributeNoDataColor: (
95
+ modelId: string,
96
+ lineIds: string[],
97
+ no_data_color: unknown,
98
+ ) => Promise<unknown>;
99
+ }
100
+
101
+ // oxlint-disable-next-line max-lines-per-function
102
+ function useModelLinesEdgeAttribute(): UseModelLinesEdgeAttributeReturn {
103
+ const dataStore = useDataStore();
104
+ const modelLinesCommonStyle = useModelLinesCommonStyle();
105
+ const viewerStore = useViewerStore();
106
+ function modelLinesEdgeAttribute(modelId: string, lineId?: string): AttributeState {
107
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring.edge shape is defined by the data style schema.
108
+ return modelLinesCommonStyle.modelLineColoring(modelId, lineId).edge as AttributeState;
109
+ }
110
+ function modelLinesEdgeAttributeStoredConfig(
111
+ modelId: string,
112
+ lineId: string | undefined,
113
+ name: string | undefined,
114
+ item: number | undefined,
115
+ ): AttributeStoredConfig {
116
+ const { storedConfigs } = modelLinesEdgeAttribute(modelId, lineId);
117
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
118
+ const itemConfig = item === undefined ? undefined : nameConfig?.[item];
119
+ if (itemConfig !== undefined) {
120
+ return itemConfig;
121
+ }
122
+ return {
123
+ minimum: undefined,
124
+ maximum: undefined,
125
+ colorMap: undefined,
126
+ no_data_color: DEFAULT_NO_DATA_COLOR,
127
+ };
128
+ }
129
+ async function mutateModelLinesEdgeStyle(
130
+ modelId: string,
131
+ lineIds: string[],
132
+ values: Record<string, unknown>,
133
+ ): Promise<void> {
134
+ const tasks: Promise<void>[] = [
135
+ modelLinesCommonStyle.mutateModelLinesColoring(modelId, lineIds, {
136
+ edge: values,
137
+ }),
138
+ ];
139
+ const totalLineIds = await dataStore.getLinesGeodeIds(modelId);
140
+ if (lineIds.length === totalLineIds.length) {
141
+ tasks.push(
142
+ modelLinesCommonStyle.mutateModelLinesTypeColoring(modelId, {
143
+ edge: values,
144
+ }),
145
+ );
146
+ }
147
+ await Promise.all(tasks);
148
+ }
149
+ async function setModelLinesEdgeAttributeStoredConfig(
150
+ modelId: string,
151
+ lineIds: string[],
152
+ name: string | undefined,
153
+ item: number | undefined,
154
+ config: Partial<AttributeStoredConfig>,
155
+ ): Promise<void> {
156
+ if (name === undefined || item === undefined) {
157
+ return;
158
+ }
159
+ await mutateModelLinesEdgeStyle(modelId, lineIds, {
160
+ storedConfigs: {
161
+ [name]: {
162
+ lastItem: item,
163
+ [item]: config,
164
+ },
165
+ },
166
+ });
167
+ }
168
+ function modelLinesEdgeAttributeName(modelId: string, lineId?: string): string | undefined {
169
+ return modelLinesEdgeAttribute(modelId, lineId).name;
170
+ }
171
+ function modelLinesEdgeAttributeLastItem(
172
+ modelId: string,
173
+ lineId: string | undefined,
174
+ name: string | undefined,
175
+ ): number {
176
+ const { storedConfigs } = modelLinesEdgeAttribute(modelId, lineId);
177
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
178
+ if (nameConfig !== undefined) {
179
+ return nameConfig.lastItem;
180
+ }
181
+ return 0;
182
+ }
183
+ function modelLinesEdgeAttributeItem(modelId: string, lineId?: string): number {
184
+ const edgeAttribute = modelLinesEdgeAttribute(modelId, lineId);
185
+ return (
186
+ edgeAttribute.item ?? modelLinesEdgeAttributeLastItem(modelId, lineId, edgeAttribute.name)
187
+ );
188
+ }
189
+ function modelLinesEdgeAttributeRange(
190
+ modelId: string,
191
+ lineId?: string,
192
+ ): [number | undefined, number | undefined] {
193
+ const name = modelLinesEdgeAttributeName(modelId, lineId);
194
+ const item = modelLinesEdgeAttributeItem(modelId, lineId);
195
+ const storedConfig = modelLinesEdgeAttributeStoredConfig(modelId, lineId, name, item);
196
+ const { minimum, maximum } = storedConfig;
197
+ return [minimum, maximum];
198
+ }
199
+ function modelLinesEdgeAttributeColorMap(modelId: string, lineId?: string): string | undefined {
200
+ const name = modelLinesEdgeAttributeName(modelId, lineId);
201
+ const item = modelLinesEdgeAttributeItem(modelId, lineId);
202
+ const storedConfig = modelLinesEdgeAttributeStoredConfig(modelId, lineId, name, item);
203
+ return storedConfig.colorMap;
204
+ }
205
+ async function setModelLinesEdgeAttribute(
206
+ modelId: string,
207
+ lineIds: string[],
208
+ {
209
+ name,
210
+ item,
211
+ minimum,
212
+ maximum,
213
+ colorMap,
214
+ no_data_color = DEFAULT_NO_DATA_COLOR,
215
+ }: AttributeInput,
216
+ ): Promise<unknown> {
217
+ await mutateModelLinesEdgeStyle(modelId, lineIds, {
218
+ name,
219
+ item,
220
+ });
221
+ await setModelLinesEdgeAttributeStoredConfig(modelId, lineIds, name, item, {
222
+ minimum,
223
+ maximum,
224
+ colorMap,
225
+ no_data_color,
226
+ });
227
+ const points = getRGBPointsFromPreset(colorMap ?? "");
228
+ const line_viewer_ids = await dataStore.getMeshComponentsViewerIds(modelId, lineIds);
229
+ const params = {
230
+ id: modelId,
231
+ block_ids: line_viewer_ids,
232
+ name,
233
+ item,
234
+ points,
235
+ minimum,
236
+ maximum,
237
+ no_data_color,
238
+ };
239
+ return viewerStore.request({
240
+ schema: attributeSchema,
241
+ params,
242
+ });
243
+ }
244
+ async function applyEdgeAttribute(modelId: string, lineIds: string[]): Promise<void> {
245
+ const name = modelLinesEdgeAttributeName(modelId, lineIds[0]);
246
+ const item = modelLinesEdgeAttributeItem(modelId, lineIds[0]);
247
+ const storedConfig = modelLinesEdgeAttributeStoredConfig(modelId, lineIds[0], name, item);
248
+ const attribute: AttributeInput = {
249
+ name,
250
+ item,
251
+ minimum: storedConfig.minimum,
252
+ maximum: storedConfig.maximum,
253
+ colorMap: storedConfig.colorMap,
254
+ no_data_color: storedConfig.no_data_color,
255
+ };
256
+ if (isModelLinesEdgeAttributeValid(attribute)) {
257
+ await setModelLinesEdgeAttribute(modelId, lineIds, attribute);
258
+ }
259
+ }
260
+ async function setModelLinesEdgeAttributeName(
261
+ modelId: string,
262
+ lineIds: string[],
263
+ name: string,
264
+ ): Promise<unknown> {
265
+ const item = modelLinesEdgeAttributeLastItem(modelId, lineIds[0], name);
266
+ await mutateModelLinesEdgeStyle(modelId, lineIds, {
267
+ name,
268
+ item,
269
+ });
270
+ return applyEdgeAttribute(modelId, lineIds);
271
+ }
272
+ async function setModelLinesEdgeAttributeItem(
273
+ modelId: string,
274
+ lineIds: string[],
275
+ item: number,
276
+ ): Promise<unknown> {
277
+ await mutateModelLinesEdgeStyle(modelId, lineIds, {
278
+ item,
279
+ });
280
+ return applyEdgeAttribute(modelId, lineIds);
281
+ }
282
+ async function setModelLinesEdgeAttributeRange(
283
+ modelId: string,
284
+ lineIds: string[],
285
+ minimum: number,
286
+ maximum: number,
287
+ ): Promise<unknown> {
288
+ const name = modelLinesEdgeAttributeName(modelId, lineIds[0]);
289
+ const item = modelLinesEdgeAttributeItem(modelId, lineIds[0]);
290
+ await setModelLinesEdgeAttributeStoredConfig(modelId, lineIds, name, item, {
291
+ minimum,
292
+ maximum,
293
+ });
294
+ return applyEdgeAttribute(modelId, lineIds);
295
+ }
296
+ async function setModelLinesEdgeAttributeColorMap(
297
+ modelId: string,
298
+ lineIds: string[],
299
+ colorMap: string | undefined,
300
+ ): Promise<unknown> {
301
+ const name = modelLinesEdgeAttributeName(modelId, lineIds[0]);
302
+ const item = modelLinesEdgeAttributeItem(modelId, lineIds[0]);
303
+ await setModelLinesEdgeAttributeStoredConfig(modelId, lineIds, name, item, {
304
+ colorMap,
305
+ });
306
+ return applyEdgeAttribute(modelId, lineIds);
307
+ }
308
+ function modelLinesEdgeAttributeNoDataColor(modelId: string, lineId?: string): unknown {
309
+ const name = modelLinesEdgeAttributeName(modelId, lineId);
310
+ const item = modelLinesEdgeAttributeItem(modelId, lineId);
311
+ const storedConfig = modelLinesEdgeAttributeStoredConfig(modelId, lineId, name, item);
312
+ return storedConfig.no_data_color;
313
+ }
314
+ async function setModelLinesEdgeAttributeNoDataColor(
315
+ modelId: string,
316
+ lineIds: string[],
317
+ no_data_color: unknown,
318
+ ): Promise<unknown> {
319
+ const name = modelLinesEdgeAttributeName(modelId, lineIds[0]);
320
+ const item = modelLinesEdgeAttributeItem(modelId, lineIds[0]);
321
+ const storedConfig = modelLinesEdgeAttributeStoredConfig(modelId, lineIds[0], name, item);
322
+ await setModelLinesEdgeAttributeStoredConfig(modelId, lineIds, name, item, {
323
+ ...storedConfig,
324
+ no_data_color,
325
+ });
326
+ return applyEdgeAttribute(modelId, lineIds);
327
+ }
328
+ return {
329
+ modelLinesEdgeAttributeName,
330
+ modelLinesEdgeAttributeItem,
331
+ modelLinesEdgeAttributeRange,
332
+ modelLinesEdgeAttributeColorMap,
333
+ modelLinesEdgeAttributeStoredConfig,
334
+ setModelLinesEdgeAttribute,
335
+ setModelLinesEdgeAttributeName,
336
+ setModelLinesEdgeAttributeItem,
337
+ setModelLinesEdgeAttributeRange,
338
+ setModelLinesEdgeAttributeColorMap,
339
+ modelLinesEdgeAttributeNoDataColor,
340
+ setModelLinesEdgeAttributeNoDataColor,
341
+ };
342
+ }
343
+ export { isModelLinesEdgeAttributeValid, useModelLinesEdgeAttribute };
@@ -5,11 +5,33 @@ import { useModelLinesColor } from "./color";
5
5
  import { useModelLinesCommonStyle } from "./common";
6
6
  import { useModelLinesVisibility } from "./visibility";
7
7
 
8
- async function setModelLinesDefaultStyle(_id) {
8
+ interface ColorGroup {
9
+ color: unknown;
10
+ lines_ids: string[];
11
+ }
12
+
13
+ interface AttributeGroup {
14
+ name: string | undefined;
15
+ item: number | undefined;
16
+ minimum: number | undefined;
17
+ maximum: number | undefined;
18
+ colorMap: string | undefined;
19
+ lines_ids: string[];
20
+ }
21
+
22
+ async function setModelLinesDefaultStyle(_id: string): Promise<void> {
9
23
  // Placeholder
10
24
  }
11
25
 
12
- export function useModelLinesStyle() {
26
+ // oxlint-disable-next-line max-lines-per-function
27
+ export function useModelLinesStyle(): ReturnType<typeof useModelLinesCommonStyle> &
28
+ ReturnType<typeof useModelLinesVisibility> &
29
+ ReturnType<typeof useModelLinesColor> &
30
+ ReturnType<typeof useModelLinesVertexAttribute> &
31
+ ReturnType<typeof useModelLinesEdgeAttribute> & {
32
+ applyModelLinesStyle: (modelId: string) => Promise<void>;
33
+ setModelLinesDefaultStyle: (id: string) => Promise<void>;
34
+ } {
13
35
  const dataStore = useDataStore();
14
36
  const modelCommonStyle = useModelLinesCommonStyle();
15
37
  const modelVisibilityStyle = useModelLinesVisibility();
@@ -17,57 +39,68 @@ export function useModelLinesStyle() {
17
39
  const modelLinesVertexAttribute = useModelLinesVertexAttribute();
18
40
  const modelLinesEdgeAttribute = useModelLinesEdgeAttribute();
19
41
 
20
- function applyModelLinesVisibilityStyle(modelId, lines_ids) {
21
- const visibilityGroups = {};
42
+ async function applyModelLinesVisibilityStyle(
43
+ modelId: string,
44
+ lines_ids: string[],
45
+ ): Promise<void> {
46
+ const visibilityGroups: Record<string, string[]> = {};
22
47
  for (const line_id of lines_ids) {
23
48
  const style = modelCommonStyle.modelLineStyle(modelId, line_id);
24
49
  const visibility = String(style.visibility);
25
- if (!visibilityGroups[visibility]) {
26
- visibilityGroups[visibility] = [];
27
- }
50
+ visibilityGroups[visibility] ??= [];
28
51
  visibilityGroups[visibility].push(line_id);
29
52
  }
30
- return Promise.all(
31
- Object.entries(visibilityGroups).map(([visibility, ids]) =>
32
- modelVisibilityStyle.setModelLinesVisibility(modelId, ids, visibility === "true"),
33
- ),
53
+ await Promise.all(
54
+ Object.entries(visibilityGroups).map(async ([visibility, ids]) => {
55
+ const result = await modelVisibilityStyle.setModelLinesVisibility(
56
+ modelId,
57
+ ids,
58
+ visibility === "true",
59
+ );
60
+ return result;
61
+ }),
34
62
  );
35
63
  }
36
64
 
37
- function applyModelLinesColoringStyle(modelId, lines_ids) {
38
- const activeColoringGroups = {};
65
+ async function applyModelLinesColoringStyle(
66
+ modelId: string,
67
+ lines_ids: string[],
68
+ ): Promise<unknown[]> {
69
+ const activeColoringGroups: Record<string, string[]> = {};
39
70
  for (const line_id of lines_ids) {
40
- const activeColoring = modelColorStyle.modelLineActiveColoring(modelId, line_id);
41
- if (!activeColoringGroups[activeColoring]) {
42
- activeColoringGroups[activeColoring] = [];
43
- }
71
+ const activeColoring = String(modelColorStyle.modelLineActiveColoring(modelId, line_id));
72
+ activeColoringGroups[activeColoring] ??= [];
44
73
  activeColoringGroups[activeColoring].push(line_id);
45
74
  }
46
75
 
47
- const coloringPromises = [];
76
+ const coloringPromises: Promise<unknown>[] = [];
48
77
 
49
78
  for (const [type, type_lines_ids] of Object.entries(activeColoringGroups)) {
50
79
  if (type === "constant") {
51
- const colorGroups = {};
80
+ const colorGroups: Record<string, ColorGroup> = {};
52
81
  for (const line_id of type_lines_ids) {
53
82
  const color = modelColorStyle.modelLineColor(modelId, line_id);
54
83
  const color_key = JSON.stringify(color);
55
- if (!colorGroups[color_key]) {
56
- colorGroups[color_key] = { color, lines_ids: [] };
57
- }
84
+ colorGroups[color_key] ??= { color, lines_ids: [] };
58
85
  colorGroups[color_key].lines_ids.push(line_id);
59
86
  }
60
87
  coloringPromises.push(
61
- ...Object.values(colorGroups).map(({ color, lines_ids: ids }) =>
62
- modelColorStyle.setModelLinesColor(modelId, ids, color, "constant"),
63
- ),
88
+ ...Object.values(colorGroups).map(async ({ color, lines_ids: ids }) => {
89
+ const result = await modelColorStyle.setModelLinesColor(
90
+ modelId,
91
+ ids,
92
+ color,
93
+ "constant",
94
+ );
95
+ return result;
96
+ }),
64
97
  );
65
98
  } else if (type === "random") {
66
99
  coloringPromises.push(
67
100
  modelColorStyle.setModelLinesColor(modelId, type_lines_ids, undefined, "random"),
68
101
  );
69
102
  } else if (type === "vertex") {
70
- const vertexGroups = {};
103
+ const vertexGroups: Record<string, AttributeGroup> = {};
71
104
  for (const line_id of type_lines_ids) {
72
105
  const name = modelLinesVertexAttribute.modelLinesVertexAttributeName(modelId, line_id);
73
106
  const item = modelLinesVertexAttribute.modelLinesVertexAttributeItem(modelId, line_id);
@@ -84,32 +117,36 @@ export function useModelLinesStyle() {
84
117
  continue;
85
118
  }
86
119
  const key = `${name}_${item}_${colorMap}_${minimum}_${maximum}`;
87
- if (!vertexGroups[key]) {
88
- vertexGroups[key] = {
89
- name,
90
- item,
91
- minimum,
92
- maximum,
93
- colorMap,
94
- lines_ids: [],
95
- };
96
- }
120
+ vertexGroups[key] ??= {
121
+ name,
122
+ item,
123
+ minimum,
124
+ maximum,
125
+ colorMap,
126
+ lines_ids: [],
127
+ };
97
128
  vertexGroups[key].lines_ids.push(line_id);
98
129
  }
99
130
  coloringPromises.push(
100
131
  ...Object.values(vertexGroups).map(
101
- ({ name, item, minimum, maximum, colorMap, lines_ids: ids }) =>
102
- modelLinesVertexAttribute.setModelLinesVertexAttribute(modelId, ids, {
103
- name,
104
- item,
105
- minimum,
106
- maximum,
107
- colorMap,
108
- }),
132
+ async ({ name, item, minimum, maximum, colorMap, lines_ids: ids }) => {
133
+ const result = await modelLinesVertexAttribute.setModelLinesVertexAttribute(
134
+ modelId,
135
+ ids,
136
+ {
137
+ name,
138
+ item,
139
+ minimum,
140
+ maximum,
141
+ colorMap,
142
+ },
143
+ );
144
+ return result;
145
+ },
109
146
  ),
110
147
  );
111
148
  } else if (type === "edge") {
112
- const edgeGroups = {};
149
+ const edgeGroups: Record<string, AttributeGroup> = {};
113
150
  for (const line_id of type_lines_ids) {
114
151
  const name = modelLinesEdgeAttribute.modelLinesEdgeAttributeName(modelId, line_id);
115
152
  const item = modelLinesEdgeAttribute.modelLinesEdgeAttributeItem(modelId, line_id);
@@ -126,41 +163,46 @@ export function useModelLinesStyle() {
126
163
  continue;
127
164
  }
128
165
  const key = `${name}_${item}_${colorMap}_${minimum}_${maximum}`;
129
- if (!edgeGroups[key]) {
130
- edgeGroups[key] = {
131
- name,
132
- item,
133
- minimum,
134
- maximum,
135
- colorMap,
136
- lines_ids: [],
137
- };
138
- }
166
+ edgeGroups[key] ??= {
167
+ name,
168
+ item,
169
+ minimum,
170
+ maximum,
171
+ colorMap,
172
+ lines_ids: [],
173
+ };
139
174
  edgeGroups[key].lines_ids.push(line_id);
140
175
  }
141
176
  coloringPromises.push(
142
177
  ...Object.values(edgeGroups).map(
143
- ({ name, item, minimum, maximum, colorMap, lines_ids: ids }) =>
144
- modelLinesEdgeAttribute.setModelLinesEdgeAttribute(modelId, ids, {
145
- name,
146
- item,
147
- minimum,
148
- maximum,
149
- colorMap,
150
- }),
178
+ async ({ name, item, minimum, maximum, colorMap, lines_ids: ids }) => {
179
+ const result = await modelLinesEdgeAttribute.setModelLinesEdgeAttribute(
180
+ modelId,
181
+ ids,
182
+ {
183
+ name,
184
+ item,
185
+ minimum,
186
+ maximum,
187
+ colorMap,
188
+ },
189
+ );
190
+ return result;
191
+ },
151
192
  ),
152
193
  );
153
194
  }
154
195
  }
155
- return Promise.all(coloringPromises);
196
+ const results = await Promise.all(coloringPromises);
197
+ return results;
156
198
  }
157
199
 
158
- async function applyModelLinesStyle(modelId) {
200
+ async function applyModelLinesStyle(modelId: string): Promise<void> {
159
201
  const lines_ids = await dataStore.getLinesGeodeIds(modelId);
160
202
  if (lines_ids.length === 0) {
161
203
  return;
162
204
  }
163
- return Promise.all([
205
+ await Promise.all([
164
206
  applyModelLinesVisibilityStyle(modelId, lines_ids),
165
207
  applyModelLinesColoringStyle(modelId, lines_ids),
166
208
  ]);