@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,7 +1,6 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
2
  import GlobalObjects from "@ogw_front/components/Viewer/ObjectTree/Views/GlobalObjects.vue";
3
- import ModelCollections from "@ogw_front/components/Viewer/ObjectTree/Views/ModelCollections.vue";
4
- import ModelComponents from "@ogw_front/components/Viewer/ObjectTree/Views/ModelComponents.vue";
3
+ import ModelTree from "@ogw_front/components/Viewer/ObjectTree/Views/ModelTree.vue";
5
4
  import ViewerObjectTreeBox from "@ogw_front/components/Viewer/ObjectTree/Box.vue";
6
5
  import { geode_objects } from "@ogw_front/assets/geode_objects";
7
6
  import { useAdaptiveStyles } from "@ogw_front/composables/use_adaptive_styles";
@@ -16,24 +15,31 @@ const TOTAL_PERCENT = 100;
16
15
  const MAX_PANEL_WIDTH_RATIO = 0.8;
17
16
  const AUTO_CLOSE_THRESHOLD = 80;
18
17
 
19
- const { containerWidth } = defineProps({
20
- containerWidth: { type: Number, required: true },
21
- });
18
+ interface Props {
19
+ containerWidth: number;
20
+ }
21
+
22
+ const { containerWidth } = defineProps<Props>();
22
23
 
23
24
  const treeviewStore = useTreeviewStore();
24
- const emit = defineEmits(["show-menu"]);
25
+
26
+ interface Emits {
27
+ "show-menu": [payload: Record<string, unknown>];
28
+ }
29
+
30
+ const emit = defineEmits<Emits>();
25
31
 
26
32
  const activityBar = useTemplateRef("activity-bar");
27
33
  const { adaptiveStyles: activityBarAdaptiveStyles } = useAdaptiveStyles(activityBar);
28
34
 
29
- const maxWidth = computed(() => containerWidth * MAX_PANEL_WIDTH_RATIO);
35
+ const maxWidth = computed<number>(() => containerWidth * MAX_PANEL_WIDTH_RATIO);
30
36
 
31
37
  const mainView = computed(() => treeviewStore.opened_views.find((view) => view.id === "main"));
32
38
  const additionalViews = computed(() =>
33
39
  treeviewStore.opened_views.filter((view) => view.id !== "main"),
34
40
  );
35
41
 
36
- const totalWidth = computed(() => {
42
+ const totalWidth = computed<string>(() => {
37
43
  const hasAdditional = additionalViews.value.length > 0;
38
44
  const hasMain = Boolean(mainView.value);
39
45
  const gap = hasAdditional && hasMain ? GAP_WIDTH : 0;
@@ -42,23 +48,23 @@ const totalWidth = computed(() => {
42
48
  return `${firstColWidth + secondColWidth + gap}px`;
43
49
  });
44
50
 
45
- const rowHeights = computed({
51
+ const rowHeights = computed<number[]>({
46
52
  get: () => treeviewStore.rowHeights,
47
53
  set: (val) => treeviewStore.setRowHeights(val),
48
54
  });
49
- const draggedIndex = ref(undefined);
55
+ const draggedIndex = ref<number | undefined>(undefined);
50
56
 
51
57
  watch(
52
58
  () => additionalViews.value.length,
53
59
  (newLength) => {
54
60
  if (newLength > 0 && rowHeights.value.length !== newLength) {
55
- treeviewStore.setRowHeights(Array.from({ length: newLength }).fill(PERCENT_100 / newLength));
61
+ treeviewStore.setRowHeights(Array.from({ length: newLength }, () => PERCENT_100 / newLength));
56
62
  }
57
63
  },
58
64
  { immediate: true },
59
65
  );
60
66
 
61
- watch([maxWidth, () => additionalViews.value.length], ([newMax]) => {
67
+ watch([maxWidth, (): number => additionalViews.value.length], ([newMax]): void => {
62
68
  const hasAdditional = additionalViews.value.length > 0;
63
69
  const gap = hasAdditional ? GAP_WIDTH : 0;
64
70
  const total =
@@ -80,25 +86,25 @@ watch([maxWidth, () => additionalViews.value.length], ([newMax]) => {
80
86
  }
81
87
  });
82
88
 
83
- function onDragStart(index) {
89
+ function onDragStart(index: number): void {
84
90
  draggedIndex.value = index;
85
91
  }
86
92
 
87
- function onDragOver(event) {
93
+ function onDragOver(event: DragEvent): void {
88
94
  event.preventDefault();
89
95
  }
90
96
 
91
- function onDrop(targetIndex) {
97
+ function onDrop(targetIndex: number): void {
92
98
  if (draggedIndex.value !== undefined && draggedIndex.value !== targetIndex) {
93
99
  treeviewStore.moveView(draggedIndex.value, targetIndex);
94
100
  }
95
101
  draggedIndex.value = undefined;
96
102
  }
97
103
 
98
- function onResizeStart(event) {
104
+ function onResizeStart(event: MouseEvent): void {
99
105
  const startWidth = treeviewStore.panelWidth;
100
106
  const startX = event.clientX;
101
- function resize(move_event) {
107
+ function resize(move_event: MouseEvent): void {
102
108
  const deltaX = move_event.clientX - startX;
103
109
  let newWidth = startWidth + deltaX;
104
110
  const hasAdditional = additionalViews.value.length > 0;
@@ -117,7 +123,7 @@ function onResizeStart(event) {
117
123
  treeviewStore.setPanelWidth(Math.max(WIDTH_MIN, newWidth));
118
124
  document.body.style.userSelect = "none";
119
125
  }
120
- function stopResize() {
126
+ function stopResize(): void {
121
127
  document.removeEventListener("mousemove", resize);
122
128
  document.removeEventListener("mouseup", stopResize);
123
129
  document.body.style.userSelect = "";
@@ -126,22 +132,25 @@ function onResizeStart(event) {
126
132
  document.addEventListener("mouseup", stopResize);
127
133
  }
128
134
 
129
- function onAdditionalResizeStart(event) {
135
+ function onAdditionalResizeStart(event: MouseEvent): void {
130
136
  const startWidth = treeviewStore.additionalPanelWidth;
131
137
  const startX = event.clientX;
132
- function resize(move_event) {
138
+ function resize(move_event: MouseEvent): void {
133
139
  const deltaX = move_event.clientX - startX;
134
140
  const newWidth = startWidth + deltaX;
135
141
  const currentTotalWidth = treeviewStore.panelWidth + newWidth + GAP_WIDTH;
136
142
  if (newWidth < AUTO_CLOSE_THRESHOLD) {
137
- treeviewStore.closeView(additionalViews.value.at(-1).id);
143
+ const lastAdditionalView = additionalViews.value.at(-1);
144
+ if (lastAdditionalView) {
145
+ treeviewStore.closeView(lastAdditionalView.id);
146
+ }
138
147
  return;
139
148
  }
140
149
 
141
150
  treeviewStore.setAdditionalPanelWidth(Math.max(WIDTH_MIN, newWidth));
142
151
  document.body.style.userSelect = "none";
143
152
  }
144
- function stopResize() {
153
+ function stopResize(): void {
145
154
  document.removeEventListener("mousemove", resize);
146
155
  document.removeEventListener("mouseup", stopResize);
147
156
  document.body.style.userSelect = "";
@@ -150,13 +159,13 @@ function onAdditionalResizeStart(event) {
150
159
  document.addEventListener("mouseup", stopResize);
151
160
  }
152
161
 
153
- function onVerticalResizeStart(event, index) {
162
+ function onVerticalResizeStart(event: MouseEvent, index: number): void {
154
163
  const startY = event.clientY;
155
- const startHeight1 = rowHeights.value[index];
156
- const startHeight2 = rowHeights.value[index + 1];
157
- const containerHeight = event.currentTarget.parentElement.offsetHeight;
164
+ const startHeight1 = rowHeights.value[index] ?? 0;
165
+ const startHeight2 = rowHeights.value[index + 1] ?? 0;
166
+ const containerHeight = (event.currentTarget as HTMLElement).parentElement?.offsetHeight ?? 0;
158
167
 
159
- function resize(move_event) {
168
+ function resize(move_event: MouseEvent): void {
160
169
  const deltaY = move_event.clientY - startY;
161
170
  const deltaPercent = (deltaY / containerHeight) * PERCENT_100;
162
171
  const minHeightPercent = (HEIGHT_MIN / containerHeight) * PERCENT_100;
@@ -181,7 +190,7 @@ function onVerticalResizeStart(event, index) {
181
190
  document.body.style.cursor = "ns-resize";
182
191
  }
183
192
 
184
- function stopResize() {
193
+ function stopResize(): void {
185
194
  document.removeEventListener("mousemove", resize);
186
195
  document.removeEventListener("mouseup", stopResize);
187
196
  document.body.style.userSelect = "";
@@ -202,6 +211,7 @@ function onVerticalResizeStart(event, index) {
202
211
  <div
203
212
  ref="activity-bar"
204
213
  class="activity-bar d-flex flex-column align-center py-2"
214
+ :class="{ 'is-closed': treeviewStore.opened_views.length === 0 }"
205
215
  :style="activityBarAdaptiveStyles"
206
216
  >
207
217
  <v-btn
@@ -262,7 +272,7 @@ function onVerticalResizeStart(event, index) {
262
272
  >
263
273
  <ViewerObjectTreeBox
264
274
  :title="view.title"
265
- :icon="geode_objects[view.geode_object_type]?.image"
275
+ :icon="geode_objects[view.geode_object_type ?? '']?.image"
266
276
  :scroll-top="view.scrollTop"
267
277
  closable
268
278
  :border-radius="`0 ${index === 0 ? '16px' : '0'} ${index === additionalViews.length - 1 ? '16px' : '0'} 0`"
@@ -271,11 +281,11 @@ function onVerticalResizeStart(event, index) {
271
281
  @dragstart="onDragStart(index + 1)"
272
282
  @update:scroll-top="treeviewStore.setScrollTop(view.id, $event)"
273
283
  >
274
- <component
275
- :is="view.viewType === 'model_collections' ? ModelCollections : ModelComponents"
284
+ <ModelTree
276
285
  data-testid="modelComponentsObjectTree"
277
286
  :id="view.modelId || view.id"
278
287
  :view-id="view.id"
288
+ :view-type="view.viewType"
279
289
  @show-menu="emit('show-menu', $event)"
280
290
  />
281
291
  </ViewerObjectTreeBox>
@@ -307,9 +317,8 @@ function onVerticalResizeStart(event, index) {
307
317
  position: absolute;
308
318
  z-index: 1;
309
319
  left: 0;
310
- top: 0;
311
- height: calc(100vh - 100px);
312
- margin-top: 8px;
320
+ top: 8px;
321
+ height: calc(100% - 16px);
313
322
  pointer-events: auto;
314
323
  }
315
324
 
@@ -318,9 +327,20 @@ function onVerticalResizeStart(event, index) {
318
327
  height: 100%;
319
328
  border-radius: 16px 0 0 16px;
320
329
  margin-left: 10px;
330
+ border: 1px solid rgba(255, 255, 255, 0.2);
331
+ border-right: none;
321
332
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
322
333
  position: relative;
323
334
  overflow: hidden;
335
+ transition:
336
+ background-color 0.3s ease,
337
+ backdrop-filter 0.3s ease,
338
+ border-radius 0.2s ease;
339
+ }
340
+
341
+ .activity-bar.is-closed {
342
+ border-radius: 16px;
343
+ border-right: 1px solid rgba(255, 255, 255, 0.2);
324
344
  }
325
345
 
326
346
  .activity-bar::before {
@@ -1,5 +1,6 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
2
  import CommonTreeView from "@ogw_front/components/Viewer/ObjectTree/Base/CommonTreeView.vue";
3
+ import type { DisplayItem } from "@ogw_front/composables/virtual_tree";
3
4
  import ObjectTreeControls from "@ogw_front/components/Viewer/ObjectTree/Base/Controls.vue";
4
5
  import ObjectTreeItemLabel from "@ogw_front/components/Viewer/ObjectTree/Base/ItemLabel.vue";
5
6
  import { compareSelections } from "@ogw_front/utils/treeview";
@@ -16,12 +17,25 @@ const dataStyleStore = useDataStyleStore();
16
17
  const hybridViewerStore = useHybridViewerStore();
17
18
  const { onHoverEnter, onHoverLeave } = useHoverhighlight();
18
19
 
19
- const emit = defineEmits(["show-menu"]);
20
+ interface Emits {
21
+ "show-menu": [payload: { event: MouseEvent; itemId: string }];
22
+ }
23
+
24
+ const emit = defineEmits<Emits>();
20
25
 
21
- const mainView = computed(() => treeviewStore.opened_views[0]);
22
- const opened = computed({
26
+ interface TreeGroupItem {
27
+ raw?: TreeGroupItem;
28
+ id: string;
29
+ title?: string;
30
+ viewer_type?: string;
31
+ geode_object_type?: string;
32
+ children?: TreeGroupItem[];
33
+ }
34
+
35
+ const mainView = computed<TreeGroupItem>(() => treeviewStore.opened_views[0]);
36
+ const opened = computed<string[]>({
23
37
  get: () => mainView.value?.opened || [],
24
- set: (val) => treeviewStore.setOpened(mainView.value.id, val),
38
+ set: (val) => treeviewStore.setOpened(mainView.value?.id ?? "", val),
25
39
  });
26
40
 
27
41
  const {
@@ -35,11 +49,11 @@ const {
35
49
  applySearchFilter,
36
50
  } = useTreeFilter(() => treeviewStore.items, { recursiveSort: true });
37
51
 
38
- function onUpdateSelection(val) {
39
- treeviewStore.selection = applySearchFilter(val, treeviewStore.selection);
52
+ function onUpdateSelection(val: string[]): void {
53
+ treeviewStore.selection = applySearchFilter(val, treeviewStore.selection) as string[];
40
54
  }
41
55
 
42
- const visibleSelection = computed(() => applySearchFilter(treeviewStore.selection, []));
56
+ const visibleSelection = computed<string[]>(() => applySearchFilter(treeviewStore.selection, []));
43
57
 
44
58
  watch(
45
59
  () => treeviewStore.selection,
@@ -68,14 +82,15 @@ watch(
68
82
  },
69
83
  );
70
84
 
71
- function isModel(item) {
85
+ function isModel(item: TreeGroupItem): boolean {
72
86
  const actualItem = item.raw || item;
73
87
  return (
74
- actualItem.viewer_type === "model" || ["BRep", "Section"].includes(actualItem.geode_object_type)
88
+ actualItem.viewer_type === "model" ||
89
+ ["BRep", "Section"].includes(actualItem.geode_object_type ?? "")
75
90
  );
76
91
  }
77
92
 
78
- const hasCollectionsMap = reactive({});
93
+ const hasCollectionsMap = reactive<Record<string, boolean>>({});
79
94
 
80
95
  watch(
81
96
  () => treeviewStore.items,
@@ -100,7 +115,13 @@ watch(
100
115
  { immediate: true, deep: true },
101
116
  );
102
117
 
103
- function handleHoverEnter({ item, immediate = false }) {
118
+ function handleHoverEnter({
119
+ item,
120
+ immediate = false,
121
+ }: {
122
+ item: TreeGroupItem;
123
+ immediate?: boolean;
124
+ }): void {
104
125
  const actualItem = item.raw || item;
105
126
 
106
127
  if (!actualItem.viewer_type) {
@@ -117,7 +138,7 @@ function handleHoverEnter({ item, immediate = false }) {
117
138
  );
118
139
  }
119
140
 
120
- function handleHoverLeave({ item }) {
141
+ function handleHoverLeave({ item }: { item: TreeGroupItem }): void {
121
142
  const actualItem = item.raw || item;
122
143
  if (!actualItem.viewer_type) {
123
144
  return;
@@ -125,9 +146,9 @@ function handleHoverLeave({ item }) {
125
146
  onHoverLeave(actualItem.id);
126
147
  }
127
148
 
128
- function expandAll() {
129
- const allIds = [];
130
- function traverse(itemsList) {
149
+ function expandAll(): void {
150
+ const allIds: string[] = [];
151
+ function traverse(itemsList: TreeGroupItem[]): void {
131
152
  for (const item of itemsList) {
132
153
  if (item.children && item.children.length > 0) {
133
154
  allIds.push(item.id);
@@ -165,17 +186,22 @@ function expandAll() {
165
186
  }"
166
187
  :scroll-top="mainView?.scrollTop || 0"
167
188
  class="transparent-treeview virtual-tree-height"
168
- @update:selected="onUpdateSelection"
169
- @update:scroll-top="treeviewStore.setScrollTop(mainView.id, $event)"
170
- @hover:enter="handleHoverEnter"
171
- @hover:leave="handleHoverLeave"
172
- @contextmenu="emit('show-menu', { event: $event.event, itemId: $event.item.id })"
189
+ @update:selected="(val) => onUpdateSelection(val as string[])"
190
+ @update:scroll-top="treeviewStore.setScrollTop(mainView?.id ?? '', $event)"
191
+ @hover:enter="({ item }) => handleHoverEnter({ item: item as unknown as TreeGroupItem })"
192
+ @hover:leave="({ item }) => handleHoverLeave({ item: item as unknown as TreeGroupItem })"
193
+ @contextmenu="
194
+ emit('show-menu', {
195
+ event: $event.event,
196
+ itemId: $event.item.id as string,
197
+ })
198
+ "
173
199
  >
174
200
  <template #title="{ item, isLeaf }">
175
201
  <ObjectTreeItemLabel
176
- :item="item"
202
+ :item="item as unknown as DisplayItem"
177
203
  :is-leaf="isLeaf"
178
- @contextmenu="emit('show-menu', { event: $event, itemId: item.id })"
204
+ @contextmenu="emit('show-menu', { event: $event, itemId: item.id as string })"
179
205
  />
180
206
  </template>
181
207
 
@@ -188,27 +214,30 @@ function expandAll() {
188
214
  size="medium"
189
215
  variant="text"
190
216
  v-tooltip="'Focus camera on object'"
191
- @click.stop="hybridViewerStore.focusCameraOnObject(item.id)"
217
+ @click.stop="hybridViewerStore.focusCameraOnObject(item.id as string)"
192
218
  />
193
219
  <v-btn
194
- v-if="isModel(item)"
220
+ v-if="isModel(item as unknown as TreeGroupItem)"
195
221
  data-testid="expandModelComponentsButton"
196
- icon="mdi-magnify-expand"
222
+ icon
197
223
  size="medium"
224
+ style="height: 23px; width: 23px"
198
225
  class="ml-2"
199
226
  variant="text"
200
227
  v-tooltip="'Model\'s mesh components'"
201
228
  @click.stop="
202
229
  treeviewStore.displayAdditionalTree(
203
- item.id,
204
- item.title,
205
- item.geode_object_type,
230
+ item.id as string,
231
+ item.title as string | undefined,
232
+ item.geode_object_type as string,
206
233
  'model_components',
207
234
  )
208
235
  "
209
- />
236
+ >
237
+ <v-icon size="18">mdi-magnify-expand</v-icon>
238
+ </v-btn>
210
239
  <v-btn
211
- v-if="isModel(item) && hasCollectionsMap[item.id]"
240
+ v-if="isModel(item as unknown as TreeGroupItem) && hasCollectionsMap[item.id as string]"
212
241
  data-testid="expandModelCollectionsButton"
213
242
  icon="mdi-format-list-group"
214
243
  size="medium"
@@ -217,9 +246,9 @@ function expandAll() {
217
246
  v-tooltip="'Model\'s collections'"
218
247
  @click.stop="
219
248
  treeviewStore.displayAdditionalTree(
220
- item.id,
221
- item.title,
222
- item.geode_object_type,
249
+ item.id as string,
250
+ item.title as string | undefined,
251
+ item.geode_object_type as string,
223
252
  'model_collections',
224
253
  )
225
254
  "