@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,27 +1,39 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
2
  import FetchingData from "@ogw_front/components/FetchingData.vue";
3
3
  import { geode_objects } from "@ogw_front/assets/geode_objects";
4
4
  import { resolveAllowedObjects } from "@ogw_shared/utils/response_handlers/load.js";
5
5
  import schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json";
6
6
  import { useBackStore } from "@ogw_front/stores/back";
7
7
 
8
+ // Mirrors the (unexported) shape produced by shared/utils/response_handlers/load.ts.
9
+ interface AllowedObject {
10
+ is_loadable: number;
11
+ object_priority?: number;
12
+ }
13
+ type AllowedObjectMap = Record<string, AllowedObject>;
14
+
8
15
  const schema = schemas.opengeodeweb_back.allowed_objects;
9
16
 
10
- const emit = defineEmits(["update_values", "increment_step"]);
17
+ const emit = defineEmits<{
18
+ update_values: [value: { geode_object_type: string }];
19
+ increment_step: [];
20
+ }>();
21
+
22
+ interface Props {
23
+ filenames: string[];
24
+ }
11
25
 
12
- const { filenames } = defineProps({
13
- filenames: { type: Array, required: true },
14
- });
26
+ const { filenames } = defineProps<Props>();
15
27
 
16
28
  const backStore = useBackStore();
17
29
 
18
- const loading = ref(false);
19
- const allowedGeodeObjects = ref({});
30
+ const loading = ref<boolean>(false);
31
+ const allowedGeodeObjects = ref<AllowedObjectMap>({});
20
32
  const toggleLoading = useToggle(loading);
21
- const multipleFilesNoCommon = ref(false);
33
+ const multipleFilesNoCommon = ref<boolean>(false);
22
34
 
23
- async function fetchAllowedObjectsList() {
24
- const promiseArray = filenames.map((filename) => {
35
+ async function fetchAllowedObjectsList(): Promise<AllowedObjectMap[]> {
36
+ const promiseArray = filenames.map((filename): Promise<{ allowed_objects: AllowedObjectMap }> => {
25
37
  const params = { filename };
26
38
  return backStore.request({ schema, params });
27
39
  });
@@ -29,14 +41,25 @@ async function fetchAllowedObjectsList() {
29
41
  return responses.map((response) => response.allowed_objects);
30
42
  }
31
43
 
32
- function setGeodeObject(geode_object_type) {
44
+ function setGeodeObject(geode_object_type: string | undefined): void {
33
45
  if (geode_object_type) {
34
46
  emit("update_values", { geode_object_type });
35
47
  emit("increment_step");
36
48
  }
37
49
  }
38
50
 
39
- async function getAllowedGeodeObjects() {
51
+ // The geode_objects lookup is fixed and keyed by known object type names; a missing entry only happens if the backend reports a type this table doesn't know about.
52
+ function geodeObjectTooltip(key: string, isLoadable: boolean): string {
53
+ return isLoadable
54
+ ? (geode_objects[key]?.tooltip ?? key)
55
+ : `Data not loadable with this class (${key})`;
56
+ }
57
+
58
+ function geodeObjectImage(key: string): string | undefined {
59
+ return geode_objects[key]?.image;
60
+ }
61
+
62
+ async function getAllowedGeodeObjects(): Promise<void> {
40
63
  toggleLoading();
41
64
  allowedGeodeObjects.value = {};
42
65
  multipleFilesNoCommon.value = false;
@@ -59,14 +82,7 @@ await getAllowedGeodeObjects();
59
82
  <FetchingData v-if="loading" />
60
83
  <v-row v-else-if="Object.keys(allowedGeodeObjects).length" class="justify-left">
61
84
  <v-col v-for="(value, key) in allowedGeodeObjects" :key="key" cols="3" md="4">
62
- <v-tooltip
63
- :text="
64
- value['is_loadable']
65
- ? geode_objects[key].tooltip
66
- : `Data not loadable with this class (${key})`
67
- "
68
- location="bottom"
69
- >
85
+ <v-tooltip :text="geodeObjectTooltip(key, Boolean(value['is_loadable']))" location="bottom">
70
86
  <template v-slot:activator="{ props }">
71
87
  <span v-bind="props">
72
88
  <v-card
@@ -79,7 +95,7 @@ await getAllowedGeodeObjects();
79
95
  :elevation="value['is_loadable'] ? 5 : 3"
80
96
  >
81
97
  <v-img
82
- :src="geode_objects[key].image"
98
+ :src="geodeObjectImage(key)"
83
99
  cover
84
100
  :class="!value['is_loadable'] ? 'disabled' : undefined"
85
101
  />
@@ -1,20 +1,28 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
+ import type { JsonRpcSchema } from "@ogw_shared/utils/types.js";
2
3
  import { Status } from "@ogw_front/utils/status";
3
4
  import { useBackStore } from "@ogw_front/stores/back";
4
5
 
5
- const { schema } = defineProps({
6
- schema: { type: Object, required: true },
7
- });
6
+ interface Props {
7
+ schema: JsonRpcSchema;
8
+ }
9
+
10
+ const { schema } = defineProps<Props>();
11
+
12
+ interface PackageVersion {
13
+ package: string;
14
+ version: string;
15
+ }
8
16
 
9
17
  const backStore = useBackStore();
10
- const packages_versions = ref([]);
18
+ const packages_versions = ref<PackageVersion[]>([]);
11
19
 
12
- async function get_packages_versions() {
20
+ async function get_packages_versions(): Promise<void> {
13
21
  await backStore.request(
14
22
  { schema },
15
23
  {
16
- response_function: (response) => {
17
- packages_versions.value = response.versions;
24
+ response_function: (response: unknown) => {
25
+ packages_versions.value = (response as { versions: PackageVersion[] }).versions;
18
26
  },
19
27
  },
20
28
  );
@@ -1,36 +1,30 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
2
  import { useInfraStore } from "@ogw_front/stores/infra";
3
3
 
4
- const { buttonLabel, buttonColor, color } = defineProps({
5
- buttonLabel: {
6
- type: String,
7
- required: false,
8
- default: "Load the app",
9
- },
10
- buttonColor: {
11
- type: String,
12
- required: false,
13
- default: "white",
14
- },
15
- color: {
16
- type: String,
17
- required: false,
18
- default: undefined,
19
- },
20
- });
4
+ interface Props {
5
+ buttonLabel?: string;
6
+ buttonColor?: string;
7
+ color?: string;
8
+ }
9
+
10
+ const {
11
+ buttonLabel = "Load the app",
12
+ buttonColor = "white",
13
+ color = undefined,
14
+ } = defineProps<Props>();
21
15
 
22
16
  const name = ref("");
23
17
  const email = ref("");
24
18
  const launch = ref(false);
25
19
  const valid = ref(false);
26
20
  const emailRules = [
27
- (value) => {
21
+ (value: string): boolean | string => {
28
22
  if (value) {
29
23
  return true;
30
24
  }
31
25
  return "E-mail is required.";
32
26
  },
33
- (value) => {
27
+ (value: string): boolean | string => {
34
28
  if (/.+@.+\..+/u.test(value)) {
35
29
  return true;
36
30
  }
@@ -38,9 +32,9 @@ const emailRules = [
38
32
  },
39
33
  ];
40
34
 
41
- function submit() {
35
+ function submit(): Promise<void> {
42
36
  const infraStore = useInfraStore();
43
- return infraStore.create_backend(name.value, email.value, launch.value);
37
+ return infraStore.create_backend(email.value);
44
38
  }
45
39
  </script>
46
40
 
@@ -61,7 +55,7 @@ function submit() {
61
55
  </VRow>
62
56
  <VRow>
63
57
  <VCol>
64
- <VCheckbox label="Load the app" v-model="load" />
58
+ <VCheckbox label="Load the app" v-model="launch" />
65
59
  </VCol>
66
60
  </VRow>
67
61
  </VContainer>
@@ -1,4 +1,4 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
2
  import { useElementSize, useWindowSize } from "@vueuse/core";
3
3
 
4
4
  import { Status } from "@ogw_front/utils/status";
@@ -8,13 +8,15 @@ import { useQuickColormap } from "@ogw_front/composables/use_quick_colormap";
8
8
  import { useViewerStore } from "@ogw_front/stores/viewer";
9
9
 
10
10
  import ColormapQuickPicker from "@ogw_front/components/Viewer/Options/ColormapQuickPicker.vue";
11
- import ViewToolbar from "@ogw_front/components/ViewToolbar";
11
+ import ViewToolbar from "@ogw_front/components/ViewToolbar.vue";
12
12
  import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
13
- import vtkRemoteView from "@kitware/vtk.js/Rendering/Misc/RemoteView";
13
+ import { newInstance as vtkRemoteView } from "@kitware/vtk.js/Rendering/Misc/RemoteView";
14
14
 
15
- const { viewId } = defineProps({
16
- viewId: { type: String, default: "-1" },
17
- });
15
+ interface Props {
16
+ viewId?: string;
17
+ }
18
+
19
+ const { viewId = "-1" } = defineProps<Props>();
18
20
 
19
21
  const viewerStore = useViewerStore();
20
22
  const menuStore = useMenuStore();
@@ -26,7 +28,7 @@ const { width: windowWidth, height: windowHeight } = useWindowSize();
26
28
 
27
29
  const { pickColormap, quickColormap } = useQuickColormap();
28
30
 
29
- async function get_x_y(event) {
31
+ async function get_x_y(event: PointerEvent): Promise<void> {
30
32
  const { offsetX, offsetY, clientX, clientY } = event;
31
33
  if (viewerStore.picking_mode === true) {
32
34
  viewerStore.set_picked_point(offsetX, offsetY);
@@ -38,9 +40,8 @@ async function get_x_y(event) {
38
40
  }
39
41
  }
40
42
 
41
- const connected = ref(false);
42
- // oxlint-disable-next-line import/no-named-as-default-member
43
- const view = vtkRemoteView.newInstance({
43
+ const connected = ref<boolean>(false);
44
+ const view = vtkRemoteView({
44
45
  rpcWheelEvent: "viewport.mouse.zoom.wheel",
45
46
  });
46
47
 
@@ -48,7 +49,7 @@ if (location.hostname.split(".")[0] === "localhost") {
48
49
  view.setInteractiveRatio(1);
49
50
  }
50
51
 
51
- function resize() {
52
+ function resize(): void {
52
53
  if (view) {
53
54
  view.getCanvasView().setSize(0, 0);
54
55
  view.resize();
@@ -71,13 +72,16 @@ watch([width, height], () => {
71
72
  resize();
72
73
  });
73
74
 
74
- function connect() {
75
+ function connect(): void {
75
76
  if (viewerStore.status !== Status.CONNECTED) {
76
77
  return;
77
78
  }
78
79
  const session = viewerStore.client.getConnection().getSession();
79
80
  view.setSession(session);
80
- view.setViewId(props.viewId);
81
+ // Pre-existing bug fixed: `props` was never defined here (props were destructured
82
+ // Directly from defineProps above), so this threw a ReferenceError whenever
83
+ // Connect() ran. `viewId` is the same (reactive) destructured prop value.
84
+ view.setViewId(viewId);
81
85
  connected.value = true;
82
86
  view.render();
83
87
  }
@@ -90,7 +94,7 @@ watch(
90
94
  );
91
95
 
92
96
  watch(
93
- () => props.viewId,
97
+ () => viewId,
94
98
  (id) => {
95
99
  if (connected.value) {
96
100
  view.setViewId(id);
@@ -103,7 +107,9 @@ onMounted(async () => {
103
107
  if (import.meta.client) {
104
108
  window.addEventListener("resize", resize);
105
109
  await nextTick();
106
- view.setContainer(viewer.value.$el);
110
+ if (viewer.value) {
111
+ view.setContainer(viewer.value.$el);
112
+ }
107
113
  connect();
108
114
  resize();
109
115
  }
@@ -1,16 +1,18 @@
1
- <script setup>
2
- import ToolPanel from "@ogw_front/components/ToolPanel";
1
+ <script setup lang="ts">
2
+ import ToolPanel from "@ogw_front/components/ToolPanel.vue";
3
3
  import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer";
4
4
 
5
- const { escapeFunction } = defineProps({
6
- escapeFunction: { type: Function, default: undefined },
7
- });
5
+ interface Props {
6
+ escapeFunction?: () => void;
7
+ }
8
+
9
+ const { escapeFunction = undefined } = defineProps<Props>();
8
10
 
9
- const show = defineModel("show", { type: Boolean, default: false });
11
+ const show = defineModel<boolean>("show", { default: false });
10
12
  const hybridViewerStore = useHybridViewerStore();
11
13
 
12
- const localPoint1 = ref([0, 0, 0]);
13
- const localPoint2 = ref([0, 0, 0]);
14
+ const localPoint1 = ref<number[]>([0, 0, 0]);
15
+ const localPoint2 = ref<number[]>([0, 0, 0]);
14
16
 
15
17
  watch(
16
18
  () => hybridViewerStore.ruler_point1,
@@ -47,7 +49,7 @@ watch(
47
49
  },
48
50
  );
49
51
 
50
- async function applyManualCoords() {
52
+ async function applyManualCoords(): Promise<void> {
51
53
  hybridViewerStore.ruler_point1 = [...localPoint1.value];
52
54
  hybridViewerStore.ruler_point2 = [...localPoint2.value];
53
55
  await hybridViewerStore.applyRuler();
@@ -1,28 +1,32 @@
1
- <script setup>
2
- import ToolPanel from "@ogw_front/components/ToolPanel";
1
+ <script setup lang="ts">
2
+ import ToolPanel from "@ogw_front/components/ToolPanel.vue";
3
3
  import fileDownload from "js-file-download";
4
4
  import { useClipboardItems } from "@vueuse/core";
5
5
  import { useFeedbackStore } from "@ogw_front/stores/feedback";
6
6
  import { useViewerStore } from "@ogw_front/stores/viewer";
7
7
  import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
8
8
 
9
- const show = defineModel({ type: Boolean, default: false });
9
+ const DEFAULT_PANEL_WIDTH = 260;
10
10
 
11
- const { width, escapeFunction } = defineProps({
12
- width: { type: Number, default: 260 },
13
- escapeFunction: { type: Function, default: undefined },
14
- });
11
+ const show = defineModel<boolean>({ default: false });
12
+
13
+ interface Props {
14
+ width?: number;
15
+ escapeFunction?: () => void;
16
+ }
17
+
18
+ const { width = DEFAULT_PANEL_WIDTH, escapeFunction = undefined } = defineProps<Props>();
15
19
 
16
20
  const output_extensions =
17
21
  viewer_schemas.opengeodeweb_viewer.viewer.take_screenshot.properties.output_extension.enum;
18
- const filename = ref("");
19
- const output_extension = ref("png");
20
- const include_background = ref(true);
21
- const screenshot_type = ref("file");
22
+ const filename = ref<string>("");
23
+ const output_extension = ref<string>("png");
24
+ const include_background = ref<boolean>(true);
25
+ const screenshot_type = ref<string>("file");
22
26
 
23
27
  const { copy } = useClipboardItems();
24
28
 
25
- async function takeScreenshot() {
29
+ async function takeScreenshot(): Promise<void> {
26
30
  const viewerStore = useViewerStore();
27
31
  const feedbackStore = useFeedbackStore();
28
32
  const current_filename = screenshot_type.value === "file" ? filename.value : "screenshot";
@@ -38,21 +42,23 @@ async function takeScreenshot() {
38
42
  params,
39
43
  },
40
44
  {
41
- response_function: async (response) => {
45
+ response_function: async (response: unknown) => {
46
+ const { blob } = response as { blob: BlobPart };
42
47
  if (screenshot_type.value === "file") {
43
- fileDownload(response.blob, `${current_filename}.${output_extension.value}`);
48
+ fileDownload(blob, `${current_filename}.${output_extension.value}`);
44
49
  feedbackStore.add_success("Screenshot downloaded");
45
50
  } else {
46
51
  try {
47
- const pngBlob = new Blob([response.blob], { type: "image/png" });
52
+ const pngBlob = new Blob([blob], { type: "image/png" });
48
53
  await copy([new ClipboardItem({ "image/png": pngBlob })]);
49
54
  feedbackStore.add_success("Screenshot copied to clipboard");
50
55
  } catch (error) {
56
+ const message = error instanceof Error ? error.message : String(error);
51
57
  feedbackStore.add_error(
52
- undefined,
53
- undefined,
58
+ 0,
59
+ "",
54
60
  "Clipboard Error",
55
- `Failed to copy screenshot to clipboard: ${error.message}`,
61
+ `Failed to copy screenshot to clipboard: ${message}`,
56
62
  );
57
63
  }
58
64
  }
@@ -74,7 +80,7 @@ watch(screenshot_type, (value) => {
74
80
  }
75
81
  });
76
82
 
77
- function handleClose() {
83
+ function handleClose(): void {
78
84
  if (escapeFunction) {
79
85
  escapeFunction();
80
86
  }
@@ -1,10 +1,16 @@
1
- <script setup>
2
- const { modelValue, label } = defineProps({
3
- modelValue: { type: String, default: "" },
4
- label: { type: String, default: "" },
5
- });
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ modelValue?: string;
4
+ label?: string;
5
+ }
6
6
 
7
- const emit = defineEmits(["update:modelValue"]);
7
+ const { modelValue = "", label = "" } = defineProps<Props>();
8
+
9
+ interface Emits {
10
+ "update:modelValue": [value: string];
11
+ }
12
+
13
+ const emit = defineEmits<Emits>();
8
14
  </script>
9
15
 
10
16
  <template>
@@ -1,5 +1,5 @@
1
- <script setup>
2
- import ToolPanel from "@ogw_front/components/ToolPanel";
1
+ <script setup lang="ts">
2
+ import ToolPanel from "@ogw_front/components/ToolPanel.vue";
3
3
  import { useDataStore } from "@ogw_front/stores/data";
4
4
  import { useDebounceFn } from "@vueuse/core";
5
5
  import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer";
@@ -8,23 +8,28 @@ const DEFAULT_SHRINK_VALUE = 0.8;
8
8
  const MAX_SHRINK_VALUE = 1;
9
9
  const DEBOUNCE_DELAY = 100;
10
10
 
11
- const { escapeFunction } = defineProps({
12
- escapeFunction: { type: Function, default: undefined },
13
- });
11
+ interface Props {
12
+ escapeFunction?: () => void;
13
+ }
14
+
15
+ const { escapeFunction = undefined } = defineProps<Props>();
14
16
 
15
- const show = defineModel("show", { type: Boolean, default: false });
17
+ const show = defineModel<boolean>("show", { default: false });
16
18
  const dataStore = useDataStore();
17
19
  const hybridViewerStore = useHybridViewerStore();
18
- const targetAllVisible = ref(true);
19
- const selectedDatasetIds = ref([]);
20
- const shrinkFactor = ref(DEFAULT_SHRINK_VALUE);
20
+ const targetAllVisible = ref<boolean>(true);
21
+ const selectedDatasetIds = ref<string[]>([]);
22
+ const shrinkFactor = ref<number>(DEFAULT_SHRINK_VALUE);
21
23
 
22
24
  const allItems = dataStore.refAllItems();
23
- const availableDatasets = computed(() =>
24
- allItems.value.map((item) => ({ title: item.name || item.id, value: item.id })),
25
+ const availableDatasets = computed<{ title: string; value: string }[]>(() =>
26
+ allItems.value.map((item) => ({
27
+ title: item.name || item.id,
28
+ value: item.id,
29
+ })),
25
30
  );
26
31
 
27
- async function applyShrink() {
32
+ async function applyShrink(): Promise<void> {
28
33
  const allIds = allItems.value.map((item) => item.id);
29
34
  if (allIds.length === 0) {
30
35
  return;
@@ -42,12 +47,12 @@ async function applyShrink() {
42
47
 
43
48
  const debouncedApply = useDebounceFn(() => applyShrink(), DEBOUNCE_DELAY);
44
49
 
45
- async function resetShrink() {
50
+ async function resetShrink(): Promise<void> {
46
51
  shrinkFactor.value = DEFAULT_SHRINK_VALUE;
47
52
  await applyShrink();
48
53
  }
49
54
 
50
- async function removeShrink() {
55
+ async function removeShrink(): Promise<void> {
51
56
  shrinkFactor.value = MAX_SHRINK_VALUE;
52
57
  const allIds = allItems.value.map((item) => item.id);
53
58
  if (allIds.length > 0) {
@@ -1,22 +1,42 @@
1
- <script setup>
2
- function truncate(text, maxLength) {
1
+ <script setup lang="ts">
2
+ import type { useStepperTree } from "@ogw_front/composables/stepper_tree";
3
+
4
+ interface StepConfig {
5
+ step_title: string;
6
+ chips?: string[];
7
+ component: {
8
+ component_name: string;
9
+ component_options?: Record<string, unknown>;
10
+ };
11
+ }
12
+
13
+ function truncate(text: string, maxLength: number): string {
3
14
  if (text.length > maxLength) {
4
15
  return `${text.slice(0, maxLength)}...`;
5
16
  }
6
17
  return text;
7
18
  }
8
19
 
9
- const { stepIndex, stepperTree } = defineProps({
10
- stepIndex: { type: Number, required: true },
11
- stepperTree: { type: Object, required: true },
12
- });
20
+ interface Props {
21
+ stepIndex: number;
22
+ stepperTree: ReturnType<typeof useStepperTree>;
23
+ }
24
+
25
+ const { stepIndex, stepperTree } = defineProps<Props>();
26
+
27
+ interface Emits {
28
+ reset_values: [];
29
+ }
13
30
 
14
- const emit = defineEmits(["reset_values"]);
31
+ const emit = defineEmits<Emits>();
15
32
 
16
33
  const { state, increment_step, decrement_step, update_values } = stepperTree;
17
- const { current_step_index, steps } = toRefs(state);
34
+ const { current_step_index, steps } = toRefs(state) as unknown as {
35
+ current_step_index: Ref<number>;
36
+ steps: Ref<StepConfig[]>;
37
+ };
18
38
 
19
- const sortedChips = computed(() => {
39
+ const sortedChips = computed<string[]>(() => {
20
40
  const chips = steps.value[stepIndex]?.chips || [];
21
41
  return chips.toSorted((chipA, chipB) =>
22
42
  chipA.localeCompare(chipB, undefined, {
@@ -41,7 +61,7 @@ const sortedChips = computed(() => {
41
61
  class="text-subtitle-1 font-weight-bold mb-0 transition-swing"
42
62
  :class="current_step_index === stepIndex ? 'text-primary' : 'text-grey-darken-1'"
43
63
  >
44
- {{ steps[stepIndex].step_title }}
64
+ {{ steps[stepIndex]!.step_title }}
45
65
  </p>
46
66
 
47
67
  <v-sheet
@@ -69,8 +89,8 @@ const sortedChips = computed(() => {
69
89
  <component
70
90
  v-if="stepIndex === current_step_index"
71
91
  :key="stepIndex"
72
- :is="steps[stepIndex].component.component_name"
73
- v-bind="steps[stepIndex].component.component_options"
92
+ :is="steps[stepIndex]!.component.component_name"
93
+ v-bind="steps[stepIndex]!.component.component_options"
74
94
  @increment_step="increment_step"
75
95
  @decrement_step="decrement_step"
76
96
  @update_values="update_values"
@@ -1,12 +1,24 @@
1
- <script setup>
2
- import Step from "@ogw_front/components/Step";
1
+ <script setup lang="ts">
2
+ import Step from "@ogw_front/components/Step.vue";
3
+ import type { useStepperTree } from "@ogw_front/composables/stepper_tree";
3
4
 
4
- const emit = defineEmits(["reset_values", "close"]);
5
- const { stepperTree } = defineProps({
6
- stepperTree: { type: Object, required: true },
7
- });
5
+ interface Emits {
6
+ reset_values: [];
7
+ close: [];
8
+ }
9
+
10
+ const emit = defineEmits<Emits>();
11
+
12
+ interface Props {
13
+ stepperTree: ReturnType<typeof useStepperTree>;
14
+ }
15
+
16
+ const { stepperTree } = defineProps<Props>();
8
17
  const { state } = stepperTree;
9
- const { steps, current_step_index } = toRefs(state);
18
+ const { steps, current_step_index } = toRefs(state) as unknown as {
19
+ steps: Ref<unknown[]>;
20
+ current_step_index: Ref<number>;
21
+ };
10
22
  </script>
11
23
 
12
24
  <template>
@@ -1,19 +1,35 @@
1
- <script setup>
2
- import GlassCard from "@ogw_front/components/GlassCard";
1
+ <script setup lang="ts">
2
+ import GlassCard from "@ogw_front/components/GlassCard.vue";
3
3
 
4
- const { title, width, closeLabel, actionLabel, clickOutside, escapeFunction } = defineProps({
5
- title: { type: String, default: "" },
6
- width: { type: Number, default: 260 },
7
- closeLabel: { type: String, default: "Close" },
8
- actionLabel: { type: String, default: undefined },
9
- clickOutside: { type: Boolean, default: true },
10
- escapeFunction: { type: Function, default: undefined },
11
- });
4
+ const DEFAULT_PANEL_WIDTH = 260;
12
5
 
13
- const model = defineModel({ type: Boolean, default: false });
14
- const emit = defineEmits(["action"]);
6
+ interface Props {
7
+ title?: string;
8
+ width?: number;
9
+ closeLabel?: string;
10
+ actionLabel?: string;
11
+ clickOutside?: boolean;
12
+ escapeFunction?: () => void;
13
+ }
14
+
15
+ const {
16
+ title = "",
17
+ width = DEFAULT_PANEL_WIDTH,
18
+ closeLabel = "Close",
19
+ actionLabel = undefined,
20
+ clickOutside = true,
21
+ escapeFunction = undefined,
22
+ } = defineProps<Props>();
23
+
24
+ const model = defineModel<boolean>({ default: false });
25
+
26
+ interface Emits {
27
+ action: [];
28
+ }
29
+
30
+ const emit = defineEmits<Emits>();
15
31
 
16
- function close() {
32
+ function close(): void {
17
33
  if (escapeFunction) {
18
34
  escapeFunction();
19
35
  }