@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
@@ -1,83 +1,272 @@
1
- <script setup>
2
- // oxlint-disable id-length
3
- defineProps({
4
- disabledAlpha: {
5
- type: Boolean,
6
- default: false,
7
- },
8
- });
1
+ <script setup lang="ts">
2
+ // oxlint-disable id-length since vuetify require { r,g,b} format to work
3
+ import { formatColorString, parseColorString } from "@ogw_front/utils/color_picker";
4
+ import type { RGBAColor } from "@ogw_front/utils/default_styles/constants";
5
+ import { useCopyToClipboard } from "@ogw_front/composables/copy_to_clipboard";
6
+
7
+ interface Props {
8
+ disabledAlpha?: boolean;
9
+ }
10
+
11
+ const { disabledAlpha = false } = defineProps<Props>();
12
+
13
+ const colorPickerWrapperRef = useTemplateRef<HTMLElement>("colorPickerWrapperRef");
14
+ const { pressed } = useMousePressed({ target: colorPickerWrapperRef });
15
+
16
+ const model = defineModel<RGBAColor>();
17
+ const { copy, copied } = useCopyToClipboard();
9
18
 
10
- const colorPickerRef = useTemplateRef("colorPickerRef");
11
- const model = defineModel({ type: Object });
12
- const { pressed } = useMousePressed({ target: colorPickerRef });
19
+ const currentMode = ref(disabledAlpha ? "rgb" : "rgba");
20
+ const colorInputText = ref("");
13
21
 
22
+ const initialColor = model.value as RGBAColor;
14
23
  const vuetifyColor = ref({
15
- r: model.value.red,
16
- g: model.value.green,
17
- b: model.value.blue,
18
- a: model.value.alpha,
24
+ r: initialColor.red,
25
+ g: initialColor.green,
26
+ b: initialColor.blue,
27
+ a: initialColor.alpha,
19
28
  });
20
29
 
30
+ function updateInputTextFromColor(red: number, green: number, blue: number, alpha: number) {
31
+ colorInputText.value =
32
+ disabledAlpha || currentMode.value === "rgb"
33
+ ? `${red}, ${green}, ${blue}`
34
+ : `${red}, ${green}, ${blue}, ${alpha}`;
35
+ }
36
+
37
+ interface VuetifyColor {
38
+ r: number;
39
+ g: number;
40
+ b: number;
41
+ a: number;
42
+ }
43
+
44
+ function commitColorToModel() {
45
+ const { r: red, g: green, b: blue, a: alpha } = vuetifyColor.value;
46
+ model.value = { red, green, blue, alpha };
47
+ }
48
+
49
+ function onPickerUpdate(color: VuetifyColor) {
50
+ const red = Math.round(color.r);
51
+ const green = Math.round(color.g);
52
+ const blue = Math.round(color.b);
53
+ const alpha = disabledAlpha ? 1 : Number(color.a.toFixed(2));
54
+
55
+ vuetifyColor.value = { r: red, g: green, b: blue, a: alpha };
56
+ updateInputTextFromColor(red, green, blue, alpha);
57
+ if (!pressed.value) {
58
+ commitColorToModel();
59
+ }
60
+ }
61
+
62
+ function toggleMode() {
63
+ if (disabledAlpha) {
64
+ return;
65
+ }
66
+ currentMode.value = currentMode.value === "rgba" ? "rgb" : "rgba";
67
+ const { r: red, g: green, b: blue, a: alpha } = vuetifyColor.value;
68
+ updateInputTextFromColor(red, green, blue, alpha);
69
+ }
70
+
71
+ async function copyToClipboard() {
72
+ const { r: red, g: green, b: blue, a: alpha } = vuetifyColor.value;
73
+ await copy(formatColorString({ red, green, blue, alpha }, currentMode.value));
74
+ }
75
+
76
+ function parseAndApplyText(text: string) {
77
+ const parsed = parseColorString(text);
78
+ if (!parsed) {
79
+ return false;
80
+ }
81
+
82
+ const { red, green, blue, alpha: rawAlpha } = parsed;
83
+ const alpha = disabledAlpha ? 1 : rawAlpha;
84
+
85
+ if (!disabledAlpha && alpha < 1) {
86
+ currentMode.value = "rgba";
87
+ }
88
+
89
+ vuetifyColor.value = { r: red, g: green, b: blue, a: alpha };
90
+ model.value = { red, green, blue, alpha };
91
+ updateInputTextFromColor(red, green, blue, alpha);
92
+ return true;
93
+ }
94
+
95
+ function onInputPaste(event: ClipboardEvent) {
96
+ event.preventDefault();
97
+ const text = event.clipboardData!.getData("text/plain");
98
+ parseAndApplyText(text);
99
+ }
100
+
101
+ function onInputCommit() {
102
+ if (!parseAndApplyText(colorInputText.value)) {
103
+ const { r: red, g: green, b: blue, a: alpha } = vuetifyColor.value;
104
+ updateInputTextFromColor(red, green, blue, alpha);
105
+ }
106
+ }
107
+
21
108
  watch(
22
109
  model,
23
110
  (newValue) => {
24
- const hasChanged =
25
- newValue.red !== vuetifyColor.value.r ||
26
- newValue.green !== vuetifyColor.value.g ||
27
- newValue.blue !== vuetifyColor.value.b ||
28
- newValue.alpha !== vuetifyColor.value.a;
29
- if (!hasChanged) {
111
+ if (!newValue) {
30
112
  return;
31
113
  }
32
- vuetifyColor.value = {
33
- r: newValue.red,
34
- g: newValue.green,
35
- b: newValue.blue,
36
- a: newValue.alpha,
37
- };
114
+ const { red, green, blue, alpha } = newValue;
115
+ if (
116
+ vuetifyColor.value.r !== red ||
117
+ vuetifyColor.value.g !== green ||
118
+ vuetifyColor.value.b !== blue ||
119
+ vuetifyColor.value.a !== alpha
120
+ ) {
121
+ vuetifyColor.value = { r: red, g: green, b: blue, a: alpha };
122
+ }
123
+ updateInputTextFromColor(red, green, blue, alpha);
38
124
  },
39
- { deep: true },
125
+ { deep: true, immediate: true },
40
126
  );
41
127
 
42
- watch(pressed, (value) => {
43
- if (!value) {
44
- model.value = {
45
- red: vuetifyColor.value.r,
46
- green: vuetifyColor.value.g,
47
- blue: vuetifyColor.value.b,
48
- alpha: vuetifyColor.value.a,
49
- };
128
+ watch(pressed, (isPressed) => {
129
+ if (!isPressed) {
130
+ commitColorToModel();
50
131
  }
51
132
  });
133
+
134
+ watch(
135
+ () => disabledAlpha,
136
+ (disabled) => {
137
+ if (disabled) {
138
+ currentMode.value = "rgb";
139
+ if (model.value) {
140
+ model.value = { ...model.value, alpha: 1 };
141
+ }
142
+ }
143
+ },
144
+ );
52
145
  </script>
53
146
 
54
147
  <template>
55
- <v-color-picker
56
- ref="colorPickerRef"
57
- data-testid="colorPicker"
58
- v-model="vuetifyColor"
59
- flat
60
- canvas-height="75"
61
- hide-inputs
62
- hide-eye-dropper
63
- :disabled-alpha="disabledAlpha"
64
- width="220"
65
- :mode="disabledAlpha ? 'rgb' : 'rgba'"
66
- class="mx-auto"
67
- />
148
+ <div
149
+ ref="colorPickerWrapperRef"
150
+ class="color-picker-wrapper mx-auto rounded-lg overflow-hidden border"
151
+ >
152
+ <v-color-picker
153
+ data-testid="colorPicker"
154
+ :model-value="vuetifyColor"
155
+ @update:model-value="onPickerUpdate"
156
+ mode="rgba"
157
+ flat
158
+ canvas-height="75"
159
+ hide-eye-dropper
160
+ hide-inputs
161
+ :disabled-alpha="disabledAlpha"
162
+ width="220"
163
+ class="mx-auto bg-transparent"
164
+ />
165
+
166
+ <div class="color-picker-controls pa-2 pt-0">
167
+ <div class="d-flex align-center justify-space-between px-1 mb-1">
168
+ <div class="d-flex align-center ga-1">
169
+ <span
170
+ class="text-caption font-weight-medium text-uppercase text-medium-emphasis"
171
+ style="font-size: 0.68rem"
172
+ >
173
+ {{ currentMode }}
174
+ </span>
175
+ <v-btn
176
+ v-if="!disabledAlpha"
177
+ icon
178
+ density="compact"
179
+ variant="text"
180
+ size="small"
181
+ @click="toggleMode"
182
+ v-tooltip="'Swap mode (RGB / RGBA)'"
183
+ >
184
+ <v-icon icon="mdi-swap-horizontal" size="16" />
185
+ </v-btn>
186
+ </div>
187
+
188
+ <v-btn
189
+ data-testid="copyColorBtn"
190
+ icon
191
+ density="compact"
192
+ variant="text"
193
+ size="small"
194
+ @click="copyToClipboard"
195
+ v-tooltip="'Copy to clipboard'"
196
+ >
197
+ <v-icon
198
+ :icon="copied ? 'mdi-check' : 'mdi-content-copy'"
199
+ size="14"
200
+ :color="copied ? 'success' : undefined"
201
+ />
202
+ </v-btn>
203
+ </div>
204
+
205
+ <input
206
+ data-testid="colorInput"
207
+ v-model="colorInputText"
208
+ class="color-input-field"
209
+ type="text"
210
+ spellcheck="false"
211
+ autocomplete="off"
212
+ @paste="onInputPaste"
213
+ @change="onInputCommit"
214
+ @keydown.enter.prevent="onInputCommit"
215
+ />
216
+ </div>
217
+ </div>
68
218
  </template>
69
219
 
70
220
  <style scoped>
221
+ .color-picker-wrapper {
222
+ width: 220px;
223
+ background-color: rgba(33, 33, 33, 0.95);
224
+ border: 1px solid rgba(255, 255, 255, 0.12) !important;
225
+ outline: none;
226
+ }
227
+
228
+ :deep(.v-color-picker) {
229
+ background-color: transparent !important;
230
+ box-shadow: none !important;
231
+ }
232
+
233
+ :deep(.v-color-picker-canvas),
234
+ :deep(.v-color-picker__preview),
71
235
  :deep(.v-color-picker__controls) {
72
- padding: 8px !important;
236
+ box-shadow: none !important;
237
+ }
238
+
239
+ :deep(.v-color-picker__controls) {
240
+ padding: 4px 8px 0 !important;
73
241
  }
74
242
 
75
243
  :deep(.v-color-picker__dot) {
76
244
  width: 18px !important;
77
245
  height: 18px !important;
246
+ box-shadow: none !important;
78
247
  }
79
248
 
80
249
  :deep(.v-color-picker__preview) {
81
250
  margin-bottom: 0 !important;
82
251
  }
252
+
253
+ .color-input-field {
254
+ width: 100%;
255
+ box-sizing: border-box;
256
+ padding: 6px 10px;
257
+ background-color: rgba(255, 255, 255, 0.08);
258
+ border: 1px solid transparent;
259
+ border-radius: 6px;
260
+ outline: none;
261
+ color: inherit;
262
+ font-size: 0.82rem;
263
+ font-family: monospace;
264
+ letter-spacing: 0.5px;
265
+ text-align: center;
266
+ transition: border-color 0.15s ease;
267
+ }
268
+
269
+ .color-input-field:focus {
270
+ border-color: rgba(255, 255, 255, 0.3);
271
+ }
83
272
  </style>
@@ -1,68 +1,83 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
+ import type { JsonRpcSchema } from "@ogw_shared/utils/types.js";
3
+ import type { RGBAColor } from "@ogw_front/utils/default_styles/constants";
2
4
  import ViewerOptionsAttributeSelector from "@ogw_front/components/Viewer/Options/AttributeSelector.vue";
3
5
  import ViewerOptionsColorPicker from "@ogw_front/components/Viewer/Options/ColorPicker.vue";
4
6
  import ViewerOptionsTexturesSelector from "@ogw_front/components/Viewer/Options/TexturesSelector.vue";
5
7
  import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json";
6
8
 
7
- const coloring_style_key = defineModel("coloring_style_key", { type: String });
9
+ interface Texture {
10
+ id: string;
11
+ texture_name: string;
12
+ }
8
13
 
9
- const color = defineModel("color", { type: Object });
10
- const textures = defineModel("textures", { type: Array });
14
+ interface CapabilityConfig {
15
+ available?: boolean;
16
+ hasColorMap?: boolean;
17
+ }
11
18
 
12
- const vertex_attribute_name = defineModel("vertex_attribute_name", { type: String });
13
- const vertex_attribute_item = defineModel("vertex_attribute_item", { type: Number });
14
- const vertex_attribute_range = defineModel("vertex_attribute_range", { type: Array });
15
- const vertex_attribute_color_map = defineModel("vertex_attribute_color_map", { type: String });
16
- const vertex_attribute_no_data_color = defineModel("vertex_attribute_no_data_color", {
17
- type: Object,
18
- });
19
+ interface Schemas {
20
+ vertex?: JsonRpcSchema;
21
+ edge?: JsonRpcSchema;
22
+ cell?: JsonRpcSchema;
23
+ polygon?: JsonRpcSchema;
24
+ polyhedron?: JsonRpcSchema;
25
+ }
19
26
 
20
- const edge_attribute_name = defineModel("edge_attribute_name", { type: String });
21
- const edge_attribute_item = defineModel("edge_attribute_item", { type: Number });
22
- const edge_attribute_range = defineModel("edge_attribute_range", { type: Array });
23
- const edge_attribute_color_map = defineModel("edge_attribute_color_map", { type: String });
24
- const edge_attribute_no_data_color = defineModel("edge_attribute_no_data_color", { type: Object });
27
+ const coloring_style_key = defineModel<string>("coloring_style_key");
25
28
 
26
- const cell_attribute_name = defineModel("cell_attribute_name", { type: String });
27
- const cell_attribute_item = defineModel("cell_attribute_item", { type: Number });
28
- const cell_attribute_range = defineModel("cell_attribute_range", { type: Array });
29
- const cell_attribute_color_map = defineModel("cell_attribute_color_map", { type: String });
30
- const cell_attribute_no_data_color = defineModel("cell_attribute_no_data_color", { type: Object });
29
+ const color = defineModel<RGBAColor>("color");
30
+ const textures = defineModel<Texture[]>("textures");
31
31
 
32
- const polygon_attribute_name = defineModel("polygon_attribute_name", { type: String });
33
- const polygon_attribute_item = defineModel("polygon_attribute_item", { type: Number });
34
- const polygon_attribute_range = defineModel("polygon_attribute_range", { type: Array });
35
- const polygon_attribute_color_map = defineModel("polygon_attribute_color_map", { type: String });
36
- const polygon_attribute_no_data_color = defineModel("polygon_attribute_no_data_color", {
37
- type: Object,
38
- });
32
+ const vertex_attribute_name = defineModel<string>("vertex_attribute_name");
33
+ const vertex_attribute_item = defineModel<number>("vertex_attribute_item");
34
+ const vertex_attribute_range = defineModel<(number | undefined)[]>("vertex_attribute_range");
35
+ const vertex_attribute_color_map = defineModel<string>("vertex_attribute_color_map");
36
+ const vertex_attribute_no_data_color = defineModel<RGBAColor>("vertex_attribute_no_data_color");
39
37
 
40
- const polyhedron_attribute_name = defineModel("polyhedron_attribute_name", { type: String });
41
- const polyhedron_attribute_item = defineModel("polyhedron_attribute_item", { type: Number });
42
- const polyhedron_attribute_range = defineModel("polyhedron_attribute_range", { type: Array });
43
- const polyhedron_attribute_color_map = defineModel("polyhedron_attribute_color_map", {
44
- type: String,
45
- });
46
- const polyhedron_attribute_no_data_color = defineModel("polyhedron_attribute_no_data_color", {
47
- type: Object,
48
- });
38
+ const edge_attribute_name = defineModel<string>("edge_attribute_name");
39
+ const edge_attribute_item = defineModel<number>("edge_attribute_item");
40
+ const edge_attribute_range = defineModel<(number | undefined)[]>("edge_attribute_range");
41
+ const edge_attribute_color_map = defineModel<string>("edge_attribute_color_map");
42
+ const edge_attribute_no_data_color = defineModel<RGBAColor>("edge_attribute_no_data_color");
49
43
 
50
- const { id, componentIds, capabilities, schemas, allowRandom } = defineProps({
51
- id: { type: String, required: true },
52
- componentIds: { type: Array, default: undefined },
53
- capabilities: {
54
- type: Object,
55
- default: () => ({}),
56
- },
57
- schemas: {
58
- type: Object,
59
- default: () => ({}),
60
- },
61
- allowRandom: {
62
- type: Boolean,
63
- default: false,
64
- },
65
- });
44
+ const cell_attribute_name = defineModel<string>("cell_attribute_name");
45
+ const cell_attribute_item = defineModel<number>("cell_attribute_item");
46
+ const cell_attribute_range = defineModel<(number | undefined)[]>("cell_attribute_range");
47
+ const cell_attribute_color_map = defineModel<string>("cell_attribute_color_map");
48
+ const cell_attribute_no_data_color = defineModel<RGBAColor>("cell_attribute_no_data_color");
49
+
50
+ const polygon_attribute_name = defineModel<string>("polygon_attribute_name");
51
+ const polygon_attribute_item = defineModel<number>("polygon_attribute_item");
52
+ const polygon_attribute_range = defineModel<(number | undefined)[]>("polygon_attribute_range");
53
+ const polygon_attribute_color_map = defineModel<string>("polygon_attribute_color_map");
54
+ const polygon_attribute_no_data_color = defineModel<RGBAColor>("polygon_attribute_no_data_color");
55
+
56
+ const polyhedron_attribute_name = defineModel<string>("polyhedron_attribute_name");
57
+ const polyhedron_attribute_item = defineModel<number>("polyhedron_attribute_item");
58
+ const polyhedron_attribute_range = defineModel<(number | undefined)[]>(
59
+ "polyhedron_attribute_range",
60
+ );
61
+ const polyhedron_attribute_color_map = defineModel<string>("polyhedron_attribute_color_map");
62
+ const polyhedron_attribute_no_data_color = defineModel<RGBAColor>(
63
+ "polyhedron_attribute_no_data_color",
64
+ );
65
+
66
+ interface Props {
67
+ id: string;
68
+ componentIds?: string[];
69
+ capabilities?: Record<string, CapabilityConfig>;
70
+ schemas?: Schemas;
71
+ allowRandom?: boolean;
72
+ }
73
+
74
+ const {
75
+ id,
76
+ componentIds = undefined,
77
+ capabilities = {},
78
+ schemas = {},
79
+ allowRandom = false,
80
+ } = defineProps<Props>();
66
81
 
67
82
  const vertexSchema = schemas.vertex || back_schemas.opengeodeweb_back.vertex_attribute_names;
68
83
  const edgeSchema = schemas.edge || back_schemas.opengeodeweb_back.edge_attribute_names;
@@ -71,37 +86,39 @@ const polygonSchema = schemas.polygon || back_schemas.opengeodeweb_back.polygon_
71
86
  const polyhedronSchema =
72
87
  schemas.polyhedron || back_schemas.opengeodeweb_back.polyhedron_attribute_names;
73
88
 
74
- function isAvailable(key) {
89
+ function isAvailable(key: string): boolean {
75
90
  if (capabilities[key] && capabilities[key].available === false) {
76
91
  return false;
77
92
  }
78
93
  return true;
79
94
  }
80
95
 
81
- function hasColorMap(key) {
96
+ function hasColorMap(key: string): boolean {
82
97
  if (capabilities[key] && capabilities[key].hasColorMap === false) {
83
98
  return false;
84
99
  }
85
100
  return true;
86
101
  }
87
102
 
88
- const has_color = computed(() => color.value !== undefined && isAvailable("color"));
89
- const has_textures = computed(() => textures.value !== undefined && isAvailable("textures"));
90
- const has_vertex = computed(
103
+ const has_color = computed<boolean>(() => color.value !== undefined && isAvailable("color"));
104
+ const has_textures = computed<boolean>(
105
+ () => textures.value !== undefined && isAvailable("textures"),
106
+ );
107
+ const has_vertex = computed<boolean>(
91
108
  () =>
92
109
  vertex_attribute_range.value !== undefined && isAvailable("vertex") && hasColorMap("vertex"),
93
110
  );
94
- const has_edge = computed(
111
+ const has_edge = computed<boolean>(
95
112
  () => edge_attribute_range.value !== undefined && isAvailable("edge") && hasColorMap("edge"),
96
113
  );
97
- const has_cells = computed(
114
+ const has_cells = computed<boolean>(
98
115
  () => cell_attribute_range.value !== undefined && isAvailable("cell") && hasColorMap("cell"),
99
116
  );
100
- const has_polygons = computed(
117
+ const has_polygons = computed<boolean>(
101
118
  () =>
102
119
  polygon_attribute_range.value !== undefined && isAvailable("polygon") && hasColorMap("polygon"),
103
120
  );
104
- const has_polyhedra = computed(
121
+ const has_polyhedra = computed<boolean>(
105
122
  () =>
106
123
  polyhedron_attribute_range.value !== undefined &&
107
124
  isAvailable("polyhedron") &&
@@ -119,7 +136,7 @@ const polyhedron_dict = {
119
136
  name: "Polyhedron attribute",
120
137
  value: "polyhedron",
121
138
  };
122
- const coloring_styles = computed(() => {
139
+ const coloring_styles = computed<{ labels: string[]; values: string[] }>(() => {
123
140
  const array = [];
124
141
  if (has_color.value) {
125
142
  array.push(color_dict);
@@ -152,9 +169,9 @@ const coloring_styles = computed(() => {
152
169
  return { labels, values };
153
170
  });
154
171
 
155
- const coloring_style_label = ref("");
172
+ const coloring_style_label = ref<string>("");
156
173
 
157
- const active_key = computed(() => {
174
+ const active_key = computed<string | undefined>(() => {
158
175
  const index = coloring_styles.value.labels.indexOf(coloring_style_label.value);
159
176
  return index === -1 ? coloring_style_key.value : coloring_styles.value.values[index];
160
177
  });
@@ -177,7 +194,7 @@ watch(
177
194
  polygon: polygon_attribute_name.value,
178
195
  polyhedron: polyhedron_attribute_name.value,
179
196
  };
180
- if (!(key in names) || names[key]) {
197
+ if (key === undefined || !(key in names) || names[key as keyof typeof names]) {
181
198
  coloring_style_key.value = key;
182
199
  }
183
200
  },
@@ -186,9 +203,12 @@ watch(
186
203
  watch(
187
204
  coloring_style_key,
188
205
  (value) => {
206
+ if (value === undefined) {
207
+ return;
208
+ }
189
209
  const index = coloring_styles.value.values.indexOf(value);
190
210
  if (index !== -1) {
191
- coloring_style_label.value = coloring_styles.value.labels[index];
211
+ coloring_style_label.value = coloring_styles.value.labels[index] ?? "";
192
212
  }
193
213
  },
194
214
  { immediate: true },
@@ -1,39 +1,43 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
2
  import AttributeRangeSelector from "@ogw_front/components/Viewer/Options/AttributeRangeSelector.vue";
3
3
  import ColorMapList from "@ogw_front/components/Viewer/Options/ColorMapList.vue";
4
4
 
5
5
  import { getPresetsWithCurrentAtTop } from "@ogw_front/utils/colormap";
6
6
  import { useGlobalAttributeStyle } from "@ogw_front/composables/global_attribute_style";
7
7
 
8
- const { dataId, x, y } = defineProps({
9
- dataId: { required: false, type: String, default: undefined },
10
- x: { required: true, type: Number },
11
- y: { required: true, type: Number },
12
- });
8
+ interface Props {
9
+ dataId?: string;
10
+ x: number;
11
+ y: number;
12
+ }
13
+
14
+ const { dataId = undefined, x, y } = defineProps<Props>();
13
15
 
14
- const show = defineModel("show", { type: Boolean, default: false });
16
+ const show = defineModel<boolean>("show", { default: false });
15
17
 
16
- const dataIdRef = computed(() => dataId);
18
+ const dataIdRef = computed<string>(() => dataId);
17
19
  const { currentColormap, currentRange, applyGlobalColormap, resetGlobalRange } =
18
20
  useGlobalAttributeStyle(dataIdRef);
19
21
 
20
- const minimum = computed({
22
+ const minimum = computed<number>({
21
23
  get: () => currentRange.value[0],
22
24
  set: (val) => {
23
25
  currentRange.value = [val, currentRange.value[1]];
24
26
  },
25
27
  });
26
28
 
27
- const maximum = computed({
29
+ const maximum = computed<number>({
28
30
  get: () => currentRange.value[1],
29
31
  set: (val) => {
30
32
  currentRange.value = [currentRange.value[0], val];
31
33
  },
32
34
  });
33
35
 
34
- const quickColormapPresets = computed(() => getPresetsWithCurrentAtTop(currentColormap.value));
36
+ const quickColormapPresets = computed<{ Name: string }[]>(() =>
37
+ getPresetsWithCurrentAtTop(currentColormap.value),
38
+ );
35
39
 
36
- async function onQuickColormapSelect(preset) {
40
+ async function onQuickColormapSelect(preset: { Name: string }): Promise<void> {
37
41
  await applyGlobalColormap(preset.Name);
38
42
  }
39
43
  </script>
@@ -1,9 +1,11 @@
1
- <script setup>
2
- const { title } = defineProps({
3
- title: { type: String, required: true },
4
- });
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ title: string;
4
+ }
5
+
6
+ const { title } = defineProps<Props>();
5
7
 
6
- const isCollapsed = ref(false);
8
+ const isCollapsed = ref<boolean>(false);
7
9
  </script>
8
10
 
9
11
  <template>
@@ -1,7 +1,7 @@
1
- <script setup>
2
- import Slider from "./Slider";
1
+ <script setup lang="ts">
2
+ import Slider from "./Slider.vue";
3
3
 
4
- const size = defineModel({ type: Number });
4
+ const size = defineModel<number>();
5
5
  </script>
6
6
 
7
7
  <template>
@@ -1,10 +1,13 @@
1
- <script setup>
2
- import BasicSlider from "@ogw_front/components/Basic/Slider";
1
+ <script setup lang="ts">
2
+ import BasicSlider from "@ogw_front/components/Basic/Slider.vue";
3
3
 
4
- const model = defineModel({ type: Number });
5
- const { tooltip } = defineProps({
6
- tooltip: { type: String, required: true },
7
- });
4
+ const model = defineModel<number>();
5
+
6
+ interface Props {
7
+ tooltip: string;
8
+ }
9
+
10
+ const { tooltip } = defineProps<Props>();
8
11
  </script>
9
12
 
10
13
  <template>
@@ -1,7 +1,7 @@
1
- <script setup>
2
- import Slider from "./Slider";
1
+ <script setup lang="ts">
2
+ import Slider from "./Slider.vue";
3
3
 
4
- const width = defineModel({ type: Number });
4
+ const width = defineModel<number>();
5
5
  </script>
6
6
 
7
7
  <template>