@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.
- package/.build/opengeodeweb_front_schemas.js +175 -0
- package/.build/server/utils/app_config.js +57 -0
- package/.build/server/utils/cleanup.js +135 -0
- package/.build/server/utils/cloud.js +156 -0
- package/.build/server/utils/microservices.js +153 -0
- package/.build/server/utils/path.js +108 -0
- package/.build/server/utils/scripts.js +134 -0
- package/.build/server/utils/server.js +44 -0
- package/.build/server/utils/server_config.js +51 -0
- package/.build/server/utils/stream.js +6 -0
- package/.build/server/utils/ws_client.js +100 -0
- package/.build/shared/app_mode.js +8 -0
- package/.build/shared/scripts.js +49 -0
- package/.build/shared/utils/call_raw.js +31 -0
- package/.build/shared/utils/call_schema.js +28 -0
- package/.build/shared/utils/fetch_raw.js +52 -0
- package/.build/shared/utils/fetch_schema.js +32 -0
- package/.build/shared/utils/file.js +14 -0
- package/.build/shared/utils/parse_boolean.js +23 -0
- package/.build/shared/utils/response_handlers/load.js +50 -0
- package/.build/shared/utils/types.js +1 -0
- package/.build/shared/utils/validate_schema.js +17 -0
- package/README.md +8 -0
- package/app/assets/{geode_objects.js → geode_objects.ts} +8 -1
- package/app/components/ActionButton.vue +28 -12
- package/app/components/Basic/Slider.vue +2 -2
- package/app/components/Basic/Switch.vue +2 -2
- package/app/components/CameraManager/List.vue +11 -11
- package/app/components/CameraManager/Saver.vue +8 -4
- package/app/components/CameraManager.vue +24 -12
- package/app/components/CameraOrientation.vue +31 -17
- package/app/components/ClippingPlaneCard.vue +13 -12
- package/app/components/ClippingPlanes.vue +31 -21
- package/app/components/CrsSelector.vue +26 -18
- package/app/components/DeleteDialog.vue +18 -16
- package/app/components/DragAndDrop.vue +55 -37
- package/app/components/DragAndDropInternal/DragAndDropInline.vue +31 -16
- package/app/components/DragAndDropInternal/DragAndDropOverlay.vue +32 -19
- package/app/components/ExtensionSelector.vue +34 -18
- package/app/components/FeedBack/ErrorBanner.vue +4 -3
- package/app/components/FeedBack/Snackers.vue +6 -5
- package/app/components/FetchingData.vue +8 -12
- package/app/components/FileSelector.vue +27 -17
- package/app/components/FileUploader.vue +51 -30
- package/app/components/GlassCard.vue +17 -13
- package/app/components/HybridRenderingView.vue +25 -12
- package/app/components/HybridViewerTooltip.vue +28 -26
- package/app/components/InfraConnected.vue +1 -1
- package/app/components/Launcher.vue +12 -10
- package/app/components/Loading/EcoMessages.vue +24 -13
- package/app/components/Loading/Header.vue +6 -7
- package/app/components/Loading/Progress.vue +6 -7
- package/app/components/Loading.vue +10 -14
- package/app/components/MissingFilesSelector.vue +35 -19
- package/app/components/ObjectSelector.vue +37 -21
- package/app/components/PackagesVersions.vue +16 -8
- package/app/components/Recaptcha.vue +17 -23
- package/app/components/RemoteRenderingView.vue +21 -15
- package/app/components/Ruler.vue +11 -9
- package/app/components/Screenshot.vue +25 -19
- package/app/components/SearchBar.vue +12 -6
- package/app/components/ShrinkFilter.vue +19 -14
- package/app/components/Step.vue +32 -12
- package/app/components/Stepper.vue +19 -7
- package/app/components/ToolPanel.vue +29 -13
- package/app/components/ViewToolbar.vue +53 -44
- package/app/components/Viewer/ContextMenu/CenterButton.vue +16 -9
- package/app/components/Viewer/ContextMenu/CircularItems.vue +13 -10
- package/app/components/Viewer/ContextMenu/ContextMenu.vue +40 -32
- package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +31 -17
- package/app/components/Viewer/ContextMenu/InfoCard.vue +38 -22
- package/app/components/Viewer/EdgedCurve/PointsOptions.vue +8 -5
- package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +67 -48
- package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +74 -50
- package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +69 -50
- package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +47 -35
- package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +91 -51
- package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +74 -49
- package/app/components/Viewer/Generic/Model/BlocksOptions.vue +115 -53
- package/app/components/Viewer/Generic/Model/CornersOptions.vue +75 -37
- package/app/components/Viewer/Generic/Model/EdgesOptions.vue +13 -9
- package/app/components/Viewer/Generic/Model/LinesOptions.vue +110 -61
- package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +32 -21
- package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +9 -5
- package/app/components/Viewer/Generic/Model/PointsOptions.vue +19 -13
- package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +119 -49
- package/app/components/Viewer/Grid/2D/CellsOptions.vue +8 -5
- package/app/components/Viewer/Grid/2D/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Grid/2D/PointsOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/CellsOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/FacetsOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/PointsOptions.vue +8 -5
- package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +120 -76
- package/app/components/Viewer/ObjectTree/Base/Controls.vue +25 -10
- package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +42 -17
- package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +22 -9
- package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +29 -14
- package/app/components/Viewer/ObjectTree/Box.vue +32 -15
- package/app/components/Viewer/ObjectTree/Layout.vue +55 -35
- package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +63 -34
- package/app/components/Viewer/ObjectTree/Views/{ModelCollections.vue → ModelTree.vue} +101 -39
- package/app/components/Viewer/Options/AttributeColorBar.vue +14 -6
- package/app/components/Viewer/Options/AttributeRangeSelector.vue +8 -4
- package/app/components/Viewer/Options/AttributeSelector.vue +64 -33
- package/app/components/Viewer/Options/ColorMapList.vue +52 -24
- package/app/components/Viewer/Options/ColorMapPicker.vue +15 -11
- package/app/components/Viewer/Options/ColorPicker.vue +239 -50
- package/app/components/Viewer/Options/ColoringTypeSelector.vue +87 -67
- package/app/components/Viewer/Options/ColormapQuickPicker.vue +16 -12
- package/app/components/Viewer/Options/OptionsSection.vue +7 -5
- package/app/components/Viewer/Options/Sliders/Size.vue +3 -3
- package/app/components/Viewer/Options/Sliders/Slider.vue +9 -6
- package/app/components/Viewer/Options/Sliders/Width.vue +3 -3
- package/app/components/Viewer/Options/TextureItem.vue +29 -22
- package/app/components/Viewer/Options/TexturesSelector.vue +23 -12
- package/app/components/Viewer/Options/VisibilitySwitch.vue +3 -3
- package/app/components/Viewer/OverlappingObjectsPicker.vue +27 -12
- package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +38 -26
- package/app/components/Viewer/Solid/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Solid/PointsOptions.vue +8 -5
- package/app/components/Viewer/Solid/PolygonsOptions.vue +8 -5
- package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +73 -48
- package/app/components/Viewer/Surface/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Surface/PointsOptions.vue +8 -5
- package/app/components/Viewer/Surface/PolygonsOptions.vue +79 -49
- package/app/components/Viewer/Surface/Triangulated/TrianglesOptions.vue +8 -5
- package/app/components/Viewer/TetrahedralSolid/TetrahedraOptions.vue +8 -5
- package/app/components/Viewer/TetrahedralSolid/TrianglesOptions.vue +8 -5
- package/app/components/Viewer/Ui.vue +19 -14
- package/app/components/Wrapper.vue +16 -10
- package/app/components/ZScaling.vue +18 -10
- package/app/components/csv-preview/CsvPreviewer.vue +72 -50
- package/app/components/csv-preview/CsvSettings.vue +30 -50
- package/app/components/csv-preview/CsvTable.vue +34 -14
- package/app/composables/{batch_style.js → batch_style.ts} +9 -7
- package/app/composables/clipping_planes_widget.ts +204 -0
- package/app/composables/clipping_planes_widget_entries.ts +189 -0
- package/app/composables/copy_to_clipboard.ts +7 -0
- package/app/composables/global_attribute_style.ts +303 -0
- package/app/composables/hover_highlight.ts +127 -0
- package/app/composables/{model_collections.js → model_collections.ts} +28 -9
- package/app/composables/{model_components.js → model_components.ts} +28 -9
- package/app/composables/{project_manager.js → project_manager.ts} +77 -20
- package/app/composables/responsive_middle_truncate.ts +48 -0
- package/app/composables/{run_function_when_microservices_connected.js → run_function_when_microservices_connected.ts} +1 -1
- package/app/composables/stepper_tree.ts +79 -0
- package/app/composables/tree_filter.ts +194 -0
- package/app/composables/{tree_keyboard_nav.js → tree_keyboard_nav.ts} +62 -20
- package/app/composables/{tree_scroll.js → tree_scroll.ts} +61 -12
- package/app/composables/use_adaptive_styles.ts +186 -0
- package/app/composables/use_overlapping_picker.ts +263 -0
- package/app/composables/use_quick_colormap.ts +55 -0
- package/app/composables/virtual_tree.ts +271 -0
- package/app/composables/vtk_implicit_plane_widget.d.ts +2 -0
- package/app/plugins/{auto_store_register.js → auto_store_register.ts} +3 -5
- package/app/plugins/click_outside_ignore_snackbars.client.ts +36 -0
- package/app/stores/app.ts +252 -0
- package/app/stores/app_helpers/extension.ts +179 -0
- package/app/stores/{back.js → back.ts} +54 -28
- package/app/stores/camera_manager.ts +80 -0
- package/app/stores/{cloud.js → cloud.ts} +18 -13
- package/app/stores/data.ts +392 -0
- package/app/stores/data_helpers/collections.ts +138 -0
- package/app/stores/data_helpers/mesh.ts +169 -0
- package/app/stores/data_style.ts +167 -0
- package/app/stores/{feedback.js → feedback.ts} +19 -8
- package/app/stores/{hybrid_viewer.js → hybrid_viewer.ts} +49 -45
- package/app/stores/infra.ts +106 -0
- package/app/stores/{menu.js → menu.ts} +67 -36
- package/app/stores/treeview.ts +383 -0
- package/app/stores/{viewer.js → viewer.ts} +75 -42
- package/app/utils/attributes.ts +40 -0
- package/app/utils/clipping_planes.ts +222 -0
- package/app/utils/color_picker.js +54 -0
- package/app/utils/colormap.ts +102 -0
- package/app/utils/default_styles/{constants.js → constants.ts} +25 -12
- package/app/utils/default_styles/{index.js → index.ts} +4 -3
- package/app/utils/default_styles/meshes.ts +264 -0
- package/app/utils/default_styles/{models.js → models.ts} +106 -52
- package/app/utils/{extension.js → extension.ts} +63 -19
- package/app/utils/{import_workflow.js → import_workflow.ts} +39 -22
- package/app/utils/{log.js → log.ts} +12 -2
- package/app/utils/{name_cleaner.js → name_cleaner.ts} +6 -6
- package/app/utils/status.ts +19 -0
- package/app/utils/{stores.js → stores.ts} +5 -5
- package/app/utils/{string.js → string.ts} +6 -6
- package/app/utils/{treeview.js → treeview.ts} +4 -1
- package/internal/database/{base_database.js → base_database.ts} +7 -3
- package/internal/database/database.ts +102 -0
- package/internal/database/{extended_database.js → extended_database.ts} +5 -1
- package/internal/database/tables/camera_positions.ts +6 -0
- package/internal/database/tables/{data.js → data.ts} +3 -1
- package/internal/database/tables/data_style.ts +6 -0
- package/internal/database/tables/model_component_datastyle.ts +6 -0
- package/internal/database/tables/model_component_type_datastyle.ts +6 -0
- package/internal/database/tables/model_components.ts +6 -0
- package/internal/database/tables/model_components_relation.ts +6 -0
- package/internal/database/tables/table_definition.ts +5 -0
- package/internal/stores/data_style/mesh/cells/cell.ts +279 -0
- package/internal/stores/data_style/mesh/cells/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/cells/common.ts +50 -0
- package/internal/stores/data_style/mesh/cells/index.ts +161 -0
- package/internal/stores/data_style/mesh/cells/{textures.js → textures.ts} +14 -8
- package/internal/stores/data_style/mesh/cells/vertex.ts +285 -0
- package/internal/stores/data_style/mesh/cells/visibility.ts +46 -0
- package/internal/stores/data_style/mesh/edges/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/edges/common.ts +41 -0
- package/internal/stores/data_style/mesh/edges/edge.ts +279 -0
- package/internal/stores/data_style/mesh/edges/index.ts +155 -0
- package/internal/stores/data_style/mesh/edges/vertex.ts +285 -0
- package/internal/stores/data_style/mesh/edges/visibility.ts +45 -0
- package/internal/stores/data_style/mesh/edges/width.ts +42 -0
- package/internal/stores/data_style/mesh/{index.js → index.ts} +34 -14
- package/internal/stores/data_style/mesh/points/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/points/common.ts +51 -0
- package/internal/stores/data_style/mesh/points/index.ts +133 -0
- package/internal/stores/data_style/mesh/points/size.ts +43 -0
- package/internal/stores/data_style/mesh/points/vertex.ts +285 -0
- package/internal/stores/data_style/mesh/points/visibility.ts +49 -0
- package/internal/stores/data_style/mesh/polygons/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/polygons/common.ts +50 -0
- package/internal/stores/data_style/mesh/polygons/index.ts +167 -0
- package/internal/stores/data_style/mesh/polygons/polygon.ts +282 -0
- package/internal/stores/data_style/mesh/polygons/{textures.js → textures.ts} +14 -8
- package/internal/stores/data_style/mesh/polygons/vertex.ts +288 -0
- package/internal/stores/data_style/mesh/polygons/visibility.ts +48 -0
- package/internal/stores/data_style/mesh/polyhedra/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/polyhedra/common.ts +41 -0
- package/internal/stores/data_style/mesh/polyhedra/index.ts +157 -0
- package/internal/stores/data_style/mesh/polyhedra/polyhedron.ts +294 -0
- package/internal/stores/data_style/mesh/polyhedra/vertex.ts +288 -0
- package/internal/stores/data_style/mesh/polyhedra/visibility.ts +48 -0
- package/internal/stores/data_style/model/blocks/{color.js → color.ts} +50 -13
- package/internal/stores/data_style/model/blocks/common.ts +67 -0
- package/internal/stores/data_style/model/blocks/{index.js → index.ts} +111 -66
- package/internal/stores/data_style/model/blocks/polyhedron.ts +363 -0
- package/internal/stores/data_style/model/blocks/vertex.ts +349 -0
- package/internal/stores/data_style/model/blocks/visibility.ts +37 -0
- package/internal/stores/data_style/model/color.ts +348 -0
- package/internal/stores/data_style/model/common.ts +262 -0
- package/internal/stores/data_style/model/corners/{color.js → color.ts} +49 -10
- package/internal/stores/data_style/model/corners/common.ts +71 -0
- package/internal/stores/data_style/model/corners/{index.js → index.ts} +86 -47
- package/internal/stores/data_style/model/corners/vertex.ts +315 -0
- package/internal/stores/data_style/model/corners/visibility.ts +39 -0
- package/internal/stores/data_style/model/edges/common.ts +29 -0
- package/internal/stores/data_style/model/edges/{index.js → index.ts} +2 -7
- package/internal/stores/data_style/model/edges/visibility.ts +55 -0
- package/internal/stores/data_style/model/{index.js → index.ts} +24 -11
- package/internal/stores/data_style/model/lines/{color.js → color.ts} +47 -10
- package/internal/stores/data_style/model/lines/common.ts +63 -0
- package/internal/stores/data_style/model/lines/edge.ts +343 -0
- package/internal/stores/data_style/model/lines/{index.js → index.ts} +108 -66
- package/internal/stores/data_style/model/lines/vertex.ts +344 -0
- package/internal/stores/data_style/model/lines/visibility.ts +37 -0
- package/internal/stores/data_style/model/points/common.ts +25 -0
- package/internal/stores/data_style/model/points/index.ts +35 -0
- package/internal/stores/data_style/model/points/size.ts +44 -0
- package/internal/stores/data_style/model/points/visibility.ts +46 -0
- package/internal/stores/data_style/model/selection.ts +138 -0
- package/internal/stores/data_style/model/surfaces/{color.js → color.ts} +47 -10
- package/internal/stores/data_style/model/surfaces/common.ts +69 -0
- package/internal/stores/data_style/model/surfaces/{index.js → index.ts} +113 -66
- package/internal/stores/data_style/model/surfaces/polygon.ts +347 -0
- package/internal/stores/data_style/model/surfaces/vertex.ts +351 -0
- package/internal/stores/data_style/model/surfaces/visibility.ts +37 -0
- package/internal/stores/data_style/model/{visibility.js → visibility.ts} +112 -32
- package/internal/stores/data_style/state.ts +281 -0
- package/internal/stores/data_style/types.ts +30 -0
- package/internal/stores/hybrid_viewer/brightness.ts +124 -0
- package/internal/stores/hybrid_viewer/camera.ts +326 -0
- package/internal/stores/hybrid_viewer/{camera_animation.js → camera_animation.ts} +30 -12
- package/internal/stores/hybrid_viewer/{constants.js → constants.ts} +2 -2
- package/internal/stores/hybrid_viewer/core.ts +64 -0
- package/internal/stores/hybrid_viewer/{filters.js → filters.ts} +10 -13
- package/internal/stores/hybrid_viewer/highlight.ts +183 -0
- package/internal/stores/hybrid_viewer/{ruler.js → ruler.ts} +50 -22
- package/internal/stores/hybrid_viewer/scene.ts +125 -0
- package/internal/stores/hybrid_viewer/viewport.ts +177 -0
- package/internal/stores/hybrid_viewer/vtk_types.ts +58 -0
- package/internal/utils/api_fetch.ts +133 -0
- package/internal/utils/upload_file.ts +115 -0
- package/internal/utils/viewer_call.ts +99 -0
- package/internal/utils/ws_client.ts +54 -0
- package/nuxt.config.ts +168 -0
- package/opengeodeweb_front_schemas.json +2 -2
- package/package.json +49 -13
- package/server/api/cloud/extensions/{run.post.js → run.post.ts} +16 -12
- package/server/api/local/app/project_folder_path.post.ts +33 -0
- package/server/api/local/app/run_back.post.ts +39 -0
- package/server/api/local/app/run_viewer.post.ts +39 -0
- package/server/api/local/extensions/{kill.post.js → kill.post.ts} +15 -8
- package/server/api/local/extensions/{run.post.js → run.post.ts} +17 -12
- package/server/api/local/extensions/upload.put.ts +71 -0
- package/server/api/microservice/app/{get_is_app_ready.get.js → get_is_app_ready.get.ts} +5 -5
- package/server/api/microservice/app/schemas/get_is_app_ready.json +1 -1
- package/server/api/microservice/app/set_app_base_url.post.ts +29 -0
- package/server/api/microservice/app/set_back_base_url.post.ts +26 -0
- package/server/api/microservice/app/set_is_app_ready.post.ts +29 -0
- package/server/api/microservice/app/set_viewer_base_url.post.ts +26 -0
- package/server/api/microservice/extensions/{download.post.js → download.post.ts} +13 -6
- package/server/api/serverless/run_cloud.post.ts +92 -0
- package/server/utils/{app_config.js → app_config.ts} +40 -18
- package/server/utils/{cleanup.js → cleanup.ts} +76 -29
- package/server/utils/{cloud.js → cloud.ts} +33 -17
- package/server/utils/{extension.js → extension.ts} +31 -4
- package/server/utils/{microservices.js → microservices.ts} +68 -27
- package/server/utils/{path.js → path.ts} +36 -17
- package/server/utils/{scripts.js → scripts.ts} +49 -33
- package/server/utils/{server.js → server.ts} +13 -6
- package/server/utils/server_config.ts +74 -0
- package/server/utils/stream.ts +6 -0
- package/server/utils/ws_client.ts +165 -0
- package/shared/{scripts.js → scripts.ts} +15 -10
- package/shared/utils/call_raw.ts +73 -0
- package/shared/utils/{call_schema.js → call_schema.ts} +15 -6
- package/shared/utils/fetch_raw.ts +125 -0
- package/shared/utils/{fetch_schema.js → fetch_schema.ts} +16 -7
- package/shared/utils/file.ts +22 -0
- package/shared/utils/{parse_boolean.js → parse_boolean.ts} +1 -1
- package/shared/utils/response_handlers/load.ts +109 -0
- package/shared/utils/types.ts +27 -0
- package/shared/utils/{validate_schema.js → validate_schema.ts} +3 -1
- package/.github/workflows/config.json +0 -5
- package/.github/workflows/deploy.yml +0 -15
- package/.github/workflows/manual_release.yml +0 -11
- package/.github/workflows/merge_request.yml +0 -9
- package/.github/workflows/pr_update.yml +0 -11
- package/.github/workflows/prepare_deploy.yml +0 -9
- package/.github/workflows/schedule.yml +0 -18
- package/.github/workflows/test.yml +0 -14
- package/.github/workflows/test_pr.yml +0 -12
- package/.oxlintrc.json +0 -150
- package/.releaserc +0 -11
- package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +0 -224
- package/app/composables/clipping_planes_widget.js +0 -249
- package/app/composables/global_attribute_style.js +0 -181
- package/app/composables/hover_highlight.js +0 -91
- package/app/composables/responsive_middle_truncate.js +0 -34
- package/app/composables/stepper_tree.js +0 -56
- package/app/composables/tree_filter.js +0 -138
- package/app/composables/use_adaptive_styles.js +0 -120
- package/app/composables/use_overlapping_picker.js +0 -169
- package/app/composables/use_quick_colormap.js +0 -32
- package/app/composables/virtual_tree.js +0 -191
- package/app/stores/app.js +0 -326
- package/app/stores/camera_manager.js +0 -57
- package/app/stores/data.js +0 -278
- package/app/stores/data_helpers/collections.js +0 -96
- package/app/stores/data_helpers/mesh.js +0 -122
- package/app/stores/data_style.js +0 -116
- package/app/stores/infra.js +0 -95
- package/app/stores/treeview.js +0 -290
- package/app/utils/attributes.js +0 -23
- package/app/utils/clipping_planes.js +0 -110
- package/app/utils/colormap.js +0 -64
- package/app/utils/default_styles/meshes.js +0 -191
- package/app/utils/status.js +0 -10
- package/commitlint.config.js +0 -20
- package/internal/database/database.js +0 -80
- package/internal/database/tables/camera_positions.js +0 -4
- package/internal/database/tables/data_style.js +0 -4
- package/internal/database/tables/model_component_datastyle.js +0 -4
- package/internal/database/tables/model_component_type_datastyle.js +0 -4
- package/internal/database/tables/model_components.js +0 -4
- package/internal/database/tables/model_components_relation.js +0 -4
- package/internal/stores/data_style/mesh/cells/cell.js +0 -196
- package/internal/stores/data_style/mesh/cells/common.js +0 -39
- package/internal/stores/data_style/mesh/cells/index.js +0 -81
- package/internal/stores/data_style/mesh/cells/vertex.js +0 -193
- package/internal/stores/data_style/mesh/cells/visibility.js +0 -35
- package/internal/stores/data_style/mesh/edges/common.js +0 -32
- package/internal/stores/data_style/mesh/edges/edge.js +0 -195
- package/internal/stores/data_style/mesh/edges/index.js +0 -81
- package/internal/stores/data_style/mesh/edges/vertex.js +0 -196
- package/internal/stores/data_style/mesh/edges/visibility.js +0 -34
- package/internal/stores/data_style/mesh/edges/width.js +0 -34
- package/internal/stores/data_style/mesh/points/common.js +0 -37
- package/internal/stores/data_style/mesh/points/index.js +0 -82
- package/internal/stores/data_style/mesh/points/size.js +0 -35
- package/internal/stores/data_style/mesh/points/vertex.js +0 -193
- package/internal/stores/data_style/mesh/points/visibility.js +0 -37
- package/internal/stores/data_style/mesh/polygons/common.js +0 -32
- package/internal/stores/data_style/mesh/polygons/index.js +0 -107
- package/internal/stores/data_style/mesh/polygons/polygon.js +0 -196
- package/internal/stores/data_style/mesh/polygons/vertex.js +0 -196
- package/internal/stores/data_style/mesh/polygons/visibility.js +0 -38
- package/internal/stores/data_style/mesh/polyhedra/common.js +0 -32
- package/internal/stores/data_style/mesh/polyhedra/index.js +0 -98
- package/internal/stores/data_style/mesh/polyhedra/polyhedron.js +0 -196
- package/internal/stores/data_style/mesh/polyhedra/vertex.js +0 -196
- package/internal/stores/data_style/mesh/polyhedra/visibility.js +0 -38
- package/internal/stores/data_style/model/blocks/common.js +0 -51
- package/internal/stores/data_style/model/blocks/polyhedron.js +0 -215
- package/internal/stores/data_style/model/blocks/vertex.js +0 -204
- package/internal/stores/data_style/model/blocks/visibility.js +0 -20
- package/internal/stores/data_style/model/color.js +0 -218
- package/internal/stores/data_style/model/common.js +0 -141
- package/internal/stores/data_style/model/corners/common.js +0 -51
- package/internal/stores/data_style/model/corners/vertex.js +0 -204
- package/internal/stores/data_style/model/corners/visibility.js +0 -20
- package/internal/stores/data_style/model/edges/common.js +0 -20
- package/internal/stores/data_style/model/edges/visibility.js +0 -38
- package/internal/stores/data_style/model/lines/common.js +0 -51
- package/internal/stores/data_style/model/lines/edge.js +0 -203
- package/internal/stores/data_style/model/lines/vertex.js +0 -204
- package/internal/stores/data_style/model/lines/visibility.js +0 -20
- package/internal/stores/data_style/model/points/common.js +0 -20
- package/internal/stores/data_style/model/points/index.js +0 -25
- package/internal/stores/data_style/model/points/size.js +0 -36
- package/internal/stores/data_style/model/points/visibility.js +0 -36
- package/internal/stores/data_style/model/selection.js +0 -89
- package/internal/stores/data_style/model/surfaces/common.js +0 -51
- package/internal/stores/data_style/model/surfaces/polygon.js +0 -215
- package/internal/stores/data_style/model/surfaces/vertex.js +0 -215
- package/internal/stores/data_style/model/surfaces/visibility.js +0 -20
- package/internal/stores/data_style/state.js +0 -197
- package/internal/stores/hybrid_viewer/brightness.js +0 -82
- package/internal/stores/hybrid_viewer/camera.js +0 -274
- package/internal/stores/hybrid_viewer/highlight.js +0 -170
- package/internal/stores/hybrid_viewer/scene.js +0 -136
- package/internal/stores/hybrid_viewer/viewport.js +0 -140
- package/internal/utils/api_fetch.js +0 -52
- package/internal/utils/upload_file.js +0 -57
- package/internal/utils/viewer_call.js +0 -49
- package/internal/utils/ws_client.js +0 -29
- package/nuxt.config.js +0 -106
- package/scripts/generate_geode_objects.js +0 -24
- package/server/api/local/app/project_folder_path.post.js +0 -29
- package/server/api/local/app/run_back.post.js +0 -33
- package/server/api/local/app/run_viewer.post.js +0 -33
- package/server/api/local/extensions/upload.put.js +0 -72
- package/server/api/microservice/app/set_app_base_url.post.js +0 -25
- package/server/api/microservice/app/set_back_base_url.post.js +0 -22
- package/server/api/microservice/app/set_is_app_ready.post.js +0 -25
- package/server/api/microservice/app/set_viewer_base_url.post.js +0 -22
- package/server/api/serverless/run_cloud.post.js +0 -44
- package/server/utils/server_config.js +0 -58
- package/server/utils/ws_client.js +0 -112
- package/shared/utils/call_raw.js +0 -46
- package/shared/utils/fetch_raw.js +0 -61
- package/shared/utils/file.js +0 -16
- package/shared/utils/response_handlers/load.js +0 -74
- package/tests/integration/data/uploads/test.og_brep +0 -0
- package/tests/integration/data/uploads/test.og_edc2d +0 -0
- package/tests/integration/data/uploads/test.og_edc3d +0 -0
- package/tests/integration/data/uploads/test.og_psf3d +0 -0
- package/tests/integration/data/uploads/test.og_rgd2d +0 -0
- package/tests/integration/data/uploads/test.og_rgd3d +0 -0
- package/tests/integration/data/uploads/test.vtu +0 -22
- package/tests/integration/setup.js +0 -92
- package/tests/integration/stores/data_style/mesh/cells.nuxt.test.js +0 -343
- package/tests/integration/stores/data_style/mesh/edges.nuxt.test.js +0 -254
- package/tests/integration/stores/data_style/mesh/index.nuxt.test.js +0 -62
- package/tests/integration/stores/data_style/mesh/points.nuxt.test.js +0 -201
- package/tests/integration/stores/data_style/mesh/polygons.nuxt.test.js +0 -260
- package/tests/integration/stores/data_style/mesh/polyhedra.nuxt.test.js +0 -267
- package/tests/integration/stores/data_style/model/blocks.nuxt.test.js +0 -397
- package/tests/integration/stores/data_style/model/corners.nuxt.test.js +0 -264
- package/tests/integration/stores/data_style/model/edges.nuxt.test.js +0 -71
- package/tests/integration/stores/data_style/model/index.nuxt.test.js +0 -92
- package/tests/integration/stores/data_style/model/lines.nuxt.test.js +0 -379
- package/tests/integration/stores/data_style/model/points.nuxt.test.js +0 -95
- package/tests/integration/stores/data_style/model/surfaces.nuxt.test.js +0 -574
- package/tests/integration/stores/viewer.nuxt.test.js +0 -69
- package/tests/setup_indexeddb.js +0 -4
- package/tests/unit/components/CrsSelector.nuxt.test.js +0 -55
- package/tests/unit/components/DragAndDrop.nuxt.test.js +0 -89
- package/tests/unit/components/ExtensionSelector.nuxt.test.js +0 -65
- package/tests/unit/components/FeedBack/ErrorsBanner.nuxt.test.js +0 -41
- package/tests/unit/components/FeedBack/Snackers.nuxt.test.js +0 -49
- package/tests/unit/components/FileSelector.nuxt.test.js +0 -124
- package/tests/unit/components/FileUploader.nuxt.test.js +0 -69
- package/tests/unit/components/MissingFilesSelector.nuxt.test.js +0 -77
- package/tests/unit/components/ObjectSelector.nuxt.test.js +0 -118
- package/tests/unit/components/PackagesVersions.nuxt.test.js +0 -42
- package/tests/unit/components/Step.nuxt.test.js +0 -51
- package/tests/unit/components/Stepper.nuxt.test.js +0 -41
- package/tests/unit/components/ToolPanel.nuxt.test.js +0 -66
- package/tests/unit/composables/api_fetch.nuxt.test.js +0 -75
- package/tests/unit/composables/project_manager.nuxt.test.js +0 -299
- package/tests/unit/composables/run_function_when_microservices_connected.nuxt.test.js +0 -57
- package/tests/unit/composables/upload_file.nuxt.test.js +0 -45
- package/tests/unit/composables/virtual_tree.nuxt.test.js +0 -63
- package/tests/unit/plugins/project_load.nuxt.test.js +0 -98
- package/tests/unit/stores/app.nuxt.test.js +0 -189
- package/tests/unit/stores/back.nuxt.test.js +0 -147
- package/tests/unit/stores/cloud.nuxt.test.js +0 -90
- package/tests/unit/stores/data.nuxt.test.js +0 -162
- package/tests/unit/stores/feedback.nuxt.test.js +0 -90
- package/tests/unit/stores/infra.nuxt.test.js +0 -313
- package/tests/unit/stores/treeview.nuxt.test.js +0 -63
- package/tests/unit/stores/viewer.nuxt.test.js +0 -161
- package/tests/unit/utils/validate_schema.nuxt.test.js +0 -38
- package/tests/utils.js +0 -20
- package/tests/vitest.config.js +0 -67
- /package/server/api/local/app/{kill.post.js → kill.post.ts} +0 -0
- /package/shared/{app_mode.js → app_mode.ts} +0 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
// oxlint-disable eslint/max-lines
|
|
2
|
+
import { DEFAULT_NO_DATA_COLOR } from "@ogw_front/utils/default_styles/constants";
|
|
3
|
+
// Third party imports
|
|
4
|
+
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
5
|
+
|
|
6
|
+
// Local imports
|
|
7
|
+
import { getRGBPointsFromPreset } from "@ogw_front/utils/colormap";
|
|
8
|
+
import { useDataStore } from "@ogw_front/stores/data";
|
|
9
|
+
import { useModelLinesCommonStyle } from "./common";
|
|
10
|
+
import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
11
|
+
|
|
12
|
+
// Local constants
|
|
13
|
+
const attributeSchema = viewer_schemas.opengeodeweb_viewer.model.lines.attribute.vertex.attribute;
|
|
14
|
+
|
|
15
|
+
interface AttributeStoredConfig {
|
|
16
|
+
minimum: number | undefined;
|
|
17
|
+
maximum: number | undefined;
|
|
18
|
+
colorMap: string | undefined;
|
|
19
|
+
no_data_color: unknown;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface AttributeState {
|
|
23
|
+
name?: string;
|
|
24
|
+
item?: number;
|
|
25
|
+
storedConfigs?: Record<string, { lastItem: number } & Record<string, AttributeStoredConfig>>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface AttributeInput {
|
|
29
|
+
name: string | undefined;
|
|
30
|
+
item: number | undefined;
|
|
31
|
+
minimum: number | undefined;
|
|
32
|
+
maximum: number | undefined;
|
|
33
|
+
colorMap: string | undefined;
|
|
34
|
+
no_data_color?: unknown;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function isModelLinesVertexAttributeValid({
|
|
38
|
+
name,
|
|
39
|
+
item,
|
|
40
|
+
minimum,
|
|
41
|
+
maximum,
|
|
42
|
+
colorMap,
|
|
43
|
+
}: AttributeInput): boolean {
|
|
44
|
+
return (
|
|
45
|
+
name !== undefined &&
|
|
46
|
+
item !== undefined &&
|
|
47
|
+
minimum !== undefined &&
|
|
48
|
+
maximum !== undefined &&
|
|
49
|
+
colorMap !== undefined
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface UseModelLinesVertexAttributeReturn {
|
|
54
|
+
modelLinesVertexAttributeName: (modelId: string, lineId?: string) => string | undefined;
|
|
55
|
+
modelLinesVertexAttributeItem: (modelId: string, lineId?: string) => number;
|
|
56
|
+
modelLinesVertexAttributeRange: (
|
|
57
|
+
modelId: string,
|
|
58
|
+
lineId?: string,
|
|
59
|
+
) => [number | undefined, number | undefined];
|
|
60
|
+
modelLinesVertexAttributeColorMap: (modelId: string, lineId?: string) => string | undefined;
|
|
61
|
+
modelLinesVertexAttributeStoredConfig: (
|
|
62
|
+
modelId: string,
|
|
63
|
+
lineId: string | undefined,
|
|
64
|
+
name: string | undefined,
|
|
65
|
+
item: number | undefined,
|
|
66
|
+
) => AttributeStoredConfig;
|
|
67
|
+
setModelLinesVertexAttribute: (
|
|
68
|
+
modelId: string,
|
|
69
|
+
lineIds: string[],
|
|
70
|
+
input: AttributeInput,
|
|
71
|
+
) => Promise<unknown>;
|
|
72
|
+
setModelLinesVertexAttributeName: (
|
|
73
|
+
modelId: string,
|
|
74
|
+
lineIds: string[],
|
|
75
|
+
name: string,
|
|
76
|
+
) => Promise<unknown>;
|
|
77
|
+
setModelLinesVertexAttributeItem: (
|
|
78
|
+
modelId: string,
|
|
79
|
+
lineIds: string[],
|
|
80
|
+
item: number,
|
|
81
|
+
) => Promise<unknown>;
|
|
82
|
+
setModelLinesVertexAttributeRange: (
|
|
83
|
+
modelId: string,
|
|
84
|
+
lineIds: string[],
|
|
85
|
+
minimum: number,
|
|
86
|
+
maximum: number,
|
|
87
|
+
) => Promise<unknown>;
|
|
88
|
+
setModelLinesVertexAttributeColorMap: (
|
|
89
|
+
modelId: string,
|
|
90
|
+
lineIds: string[],
|
|
91
|
+
colorMap: string | undefined,
|
|
92
|
+
) => Promise<unknown>;
|
|
93
|
+
modelLinesVertexAttributeNoDataColor: (modelId: string, lineId?: string) => unknown;
|
|
94
|
+
setModelLinesVertexAttributeNoDataColor: (
|
|
95
|
+
modelId: string,
|
|
96
|
+
lineIds: string[],
|
|
97
|
+
no_data_color: unknown,
|
|
98
|
+
) => Promise<unknown>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// oxlint-disable-next-line max-lines-per-function
|
|
102
|
+
function useModelLinesVertexAttribute(): UseModelLinesVertexAttributeReturn {
|
|
103
|
+
const dataStore = useDataStore();
|
|
104
|
+
const modelLinesCommonStyle = useModelLinesCommonStyle();
|
|
105
|
+
const viewerStore = useViewerStore();
|
|
106
|
+
function modelLinesVertexAttribute(modelId: string, lineId?: string): AttributeState {
|
|
107
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring.vertex shape is defined by the data style schema.
|
|
108
|
+
return modelLinesCommonStyle.modelLineColoring(modelId, lineId).vertex as AttributeState;
|
|
109
|
+
}
|
|
110
|
+
function modelLinesVertexAttributeStoredConfig(
|
|
111
|
+
modelId: string,
|
|
112
|
+
lineId: string | undefined,
|
|
113
|
+
name: string | undefined,
|
|
114
|
+
item: number | undefined,
|
|
115
|
+
): AttributeStoredConfig {
|
|
116
|
+
const { storedConfigs } = modelLinesVertexAttribute(modelId, lineId);
|
|
117
|
+
const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
|
|
118
|
+
const itemConfig = item === undefined ? undefined : nameConfig?.[item];
|
|
119
|
+
if (itemConfig !== undefined) {
|
|
120
|
+
return itemConfig;
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
minimum: undefined,
|
|
124
|
+
maximum: undefined,
|
|
125
|
+
colorMap: undefined,
|
|
126
|
+
no_data_color: DEFAULT_NO_DATA_COLOR,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async function mutateModelLinesVertexStyle(
|
|
130
|
+
modelId: string,
|
|
131
|
+
lineIds: string[],
|
|
132
|
+
values: Record<string, unknown>,
|
|
133
|
+
): Promise<void> {
|
|
134
|
+
const tasks: Promise<void>[] = [
|
|
135
|
+
modelLinesCommonStyle.mutateModelLinesColoring(modelId, lineIds, {
|
|
136
|
+
vertex: values,
|
|
137
|
+
}),
|
|
138
|
+
];
|
|
139
|
+
const totalLineIds = await dataStore.getLinesGeodeIds(modelId);
|
|
140
|
+
if (lineIds.length === totalLineIds.length) {
|
|
141
|
+
tasks.push(
|
|
142
|
+
modelLinesCommonStyle.mutateModelLinesTypeColoring(modelId, {
|
|
143
|
+
vertex: values,
|
|
144
|
+
}),
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
await Promise.all(tasks);
|
|
148
|
+
}
|
|
149
|
+
async function setModelLinesVertexAttributeStoredConfig(
|
|
150
|
+
modelId: string,
|
|
151
|
+
lineIds: string[],
|
|
152
|
+
name: string | undefined,
|
|
153
|
+
item: number | undefined,
|
|
154
|
+
config: Partial<AttributeStoredConfig>,
|
|
155
|
+
): Promise<void> {
|
|
156
|
+
if (name === undefined || item === undefined) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
await mutateModelLinesVertexStyle(modelId, lineIds, {
|
|
160
|
+
storedConfigs: {
|
|
161
|
+
[name]: {
|
|
162
|
+
lastItem: item,
|
|
163
|
+
[item]: config,
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function modelLinesVertexAttributeName(modelId: string, lineId?: string): string | undefined {
|
|
169
|
+
return modelLinesVertexAttribute(modelId, lineId).name;
|
|
170
|
+
}
|
|
171
|
+
function modelLinesVertexAttributeLastItem(
|
|
172
|
+
modelId: string,
|
|
173
|
+
lineId: string | undefined,
|
|
174
|
+
name: string | undefined,
|
|
175
|
+
): number {
|
|
176
|
+
const { storedConfigs } = modelLinesVertexAttribute(modelId, lineId);
|
|
177
|
+
const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
|
|
178
|
+
if (nameConfig !== undefined) {
|
|
179
|
+
return nameConfig.lastItem;
|
|
180
|
+
}
|
|
181
|
+
return 0;
|
|
182
|
+
}
|
|
183
|
+
function modelLinesVertexAttributeItem(modelId: string, lineId?: string): number {
|
|
184
|
+
const vertexAttribute = modelLinesVertexAttribute(modelId, lineId);
|
|
185
|
+
return (
|
|
186
|
+
vertexAttribute.item ??
|
|
187
|
+
modelLinesVertexAttributeLastItem(modelId, lineId, vertexAttribute.name)
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
function modelLinesVertexAttributeRange(
|
|
191
|
+
modelId: string,
|
|
192
|
+
lineId?: string,
|
|
193
|
+
): [number | undefined, number | undefined] {
|
|
194
|
+
const name = modelLinesVertexAttributeName(modelId, lineId);
|
|
195
|
+
const item = modelLinesVertexAttributeItem(modelId, lineId);
|
|
196
|
+
const storedConfig = modelLinesVertexAttributeStoredConfig(modelId, lineId, name, item);
|
|
197
|
+
const { minimum, maximum } = storedConfig;
|
|
198
|
+
return [minimum, maximum];
|
|
199
|
+
}
|
|
200
|
+
function modelLinesVertexAttributeColorMap(modelId: string, lineId?: string): string | undefined {
|
|
201
|
+
const name = modelLinesVertexAttributeName(modelId, lineId);
|
|
202
|
+
const item = modelLinesVertexAttributeItem(modelId, lineId);
|
|
203
|
+
const storedConfig = modelLinesVertexAttributeStoredConfig(modelId, lineId, name, item);
|
|
204
|
+
return storedConfig.colorMap;
|
|
205
|
+
}
|
|
206
|
+
async function setModelLinesVertexAttribute(
|
|
207
|
+
modelId: string,
|
|
208
|
+
lineIds: string[],
|
|
209
|
+
{
|
|
210
|
+
name,
|
|
211
|
+
item,
|
|
212
|
+
minimum,
|
|
213
|
+
maximum,
|
|
214
|
+
colorMap,
|
|
215
|
+
no_data_color = DEFAULT_NO_DATA_COLOR,
|
|
216
|
+
}: AttributeInput,
|
|
217
|
+
): Promise<unknown> {
|
|
218
|
+
await mutateModelLinesVertexStyle(modelId, lineIds, {
|
|
219
|
+
name,
|
|
220
|
+
item,
|
|
221
|
+
});
|
|
222
|
+
await setModelLinesVertexAttributeStoredConfig(modelId, lineIds, name, item, {
|
|
223
|
+
minimum,
|
|
224
|
+
maximum,
|
|
225
|
+
colorMap,
|
|
226
|
+
no_data_color,
|
|
227
|
+
});
|
|
228
|
+
const points = getRGBPointsFromPreset(colorMap ?? "");
|
|
229
|
+
const line_viewer_ids = await dataStore.getMeshComponentsViewerIds(modelId, lineIds);
|
|
230
|
+
const params = {
|
|
231
|
+
id: modelId,
|
|
232
|
+
block_ids: line_viewer_ids,
|
|
233
|
+
name,
|
|
234
|
+
item,
|
|
235
|
+
points,
|
|
236
|
+
minimum,
|
|
237
|
+
maximum,
|
|
238
|
+
no_data_color,
|
|
239
|
+
};
|
|
240
|
+
return viewerStore.request({
|
|
241
|
+
schema: attributeSchema,
|
|
242
|
+
params,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
async function applyVertexAttribute(modelId: string, lineIds: string[]): Promise<void> {
|
|
246
|
+
const name = modelLinesVertexAttributeName(modelId, lineIds[0]);
|
|
247
|
+
const item = modelLinesVertexAttributeItem(modelId, lineIds[0]);
|
|
248
|
+
const storedConfig = modelLinesVertexAttributeStoredConfig(modelId, lineIds[0], name, item);
|
|
249
|
+
const attribute: AttributeInput = {
|
|
250
|
+
name,
|
|
251
|
+
item,
|
|
252
|
+
minimum: storedConfig.minimum,
|
|
253
|
+
maximum: storedConfig.maximum,
|
|
254
|
+
colorMap: storedConfig.colorMap,
|
|
255
|
+
no_data_color: storedConfig.no_data_color,
|
|
256
|
+
};
|
|
257
|
+
if (isModelLinesVertexAttributeValid(attribute)) {
|
|
258
|
+
await setModelLinesVertexAttribute(modelId, lineIds, attribute);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async function setModelLinesVertexAttributeName(
|
|
262
|
+
modelId: string,
|
|
263
|
+
lineIds: string[],
|
|
264
|
+
name: string,
|
|
265
|
+
): Promise<unknown> {
|
|
266
|
+
const item = modelLinesVertexAttributeLastItem(modelId, lineIds[0], name);
|
|
267
|
+
await mutateModelLinesVertexStyle(modelId, lineIds, {
|
|
268
|
+
name,
|
|
269
|
+
item,
|
|
270
|
+
});
|
|
271
|
+
return applyVertexAttribute(modelId, lineIds);
|
|
272
|
+
}
|
|
273
|
+
async function setModelLinesVertexAttributeItem(
|
|
274
|
+
modelId: string,
|
|
275
|
+
lineIds: string[],
|
|
276
|
+
item: number,
|
|
277
|
+
): Promise<unknown> {
|
|
278
|
+
await mutateModelLinesVertexStyle(modelId, lineIds, {
|
|
279
|
+
item,
|
|
280
|
+
});
|
|
281
|
+
return applyVertexAttribute(modelId, lineIds);
|
|
282
|
+
}
|
|
283
|
+
async function setModelLinesVertexAttributeRange(
|
|
284
|
+
modelId: string,
|
|
285
|
+
lineIds: string[],
|
|
286
|
+
minimum: number,
|
|
287
|
+
maximum: number,
|
|
288
|
+
): Promise<unknown> {
|
|
289
|
+
const name = modelLinesVertexAttributeName(modelId, lineIds[0]);
|
|
290
|
+
const item = modelLinesVertexAttributeItem(modelId, lineIds[0]);
|
|
291
|
+
await setModelLinesVertexAttributeStoredConfig(modelId, lineIds, name, item, {
|
|
292
|
+
minimum,
|
|
293
|
+
maximum,
|
|
294
|
+
});
|
|
295
|
+
return applyVertexAttribute(modelId, lineIds);
|
|
296
|
+
}
|
|
297
|
+
async function setModelLinesVertexAttributeColorMap(
|
|
298
|
+
modelId: string,
|
|
299
|
+
lineIds: string[],
|
|
300
|
+
colorMap: string | undefined,
|
|
301
|
+
): Promise<unknown> {
|
|
302
|
+
const name = modelLinesVertexAttributeName(modelId, lineIds[0]);
|
|
303
|
+
const item = modelLinesVertexAttributeItem(modelId, lineIds[0]);
|
|
304
|
+
await setModelLinesVertexAttributeStoredConfig(modelId, lineIds, name, item, {
|
|
305
|
+
colorMap,
|
|
306
|
+
});
|
|
307
|
+
return applyVertexAttribute(modelId, lineIds);
|
|
308
|
+
}
|
|
309
|
+
function modelLinesVertexAttributeNoDataColor(modelId: string, lineId?: string): unknown {
|
|
310
|
+
const name = modelLinesVertexAttributeName(modelId, lineId);
|
|
311
|
+
const item = modelLinesVertexAttributeItem(modelId, lineId);
|
|
312
|
+
const storedConfig = modelLinesVertexAttributeStoredConfig(modelId, lineId, name, item);
|
|
313
|
+
return storedConfig.no_data_color;
|
|
314
|
+
}
|
|
315
|
+
async function setModelLinesVertexAttributeNoDataColor(
|
|
316
|
+
modelId: string,
|
|
317
|
+
lineIds: string[],
|
|
318
|
+
no_data_color: unknown,
|
|
319
|
+
): Promise<unknown> {
|
|
320
|
+
const name = modelLinesVertexAttributeName(modelId, lineIds[0]);
|
|
321
|
+
const item = modelLinesVertexAttributeItem(modelId, lineIds[0]);
|
|
322
|
+
const storedConfig = modelLinesVertexAttributeStoredConfig(modelId, lineIds[0], name, item);
|
|
323
|
+
await setModelLinesVertexAttributeStoredConfig(modelId, lineIds, name, item, {
|
|
324
|
+
...storedConfig,
|
|
325
|
+
no_data_color,
|
|
326
|
+
});
|
|
327
|
+
return applyVertexAttribute(modelId, lineIds);
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
modelLinesVertexAttributeName,
|
|
331
|
+
modelLinesVertexAttributeItem,
|
|
332
|
+
modelLinesVertexAttributeRange,
|
|
333
|
+
modelLinesVertexAttributeColorMap,
|
|
334
|
+
modelLinesVertexAttributeStoredConfig,
|
|
335
|
+
setModelLinesVertexAttribute,
|
|
336
|
+
setModelLinesVertexAttributeName,
|
|
337
|
+
setModelLinesVertexAttributeItem,
|
|
338
|
+
setModelLinesVertexAttributeRange,
|
|
339
|
+
setModelLinesVertexAttributeColorMap,
|
|
340
|
+
modelLinesVertexAttributeNoDataColor,
|
|
341
|
+
setModelLinesVertexAttributeNoDataColor,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
export { isModelLinesVertexAttributeValid, useModelLinesVertexAttribute };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
|
|
2
|
+
import { useModelLinesCommonStyle } from "./common";
|
|
3
|
+
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
4
|
+
|
|
5
|
+
const schema = viewer_schemas.opengeodeweb_viewer.model.lines.visibility;
|
|
6
|
+
|
|
7
|
+
export function useModelLinesVisibility(): {
|
|
8
|
+
setModelLinesVisibility: (
|
|
9
|
+
modelId: string,
|
|
10
|
+
lines_ids: string[],
|
|
11
|
+
visibility: boolean | undefined,
|
|
12
|
+
) => Promise<unknown>;
|
|
13
|
+
modelLineVisibility: (id: string, line_id?: string) => unknown;
|
|
14
|
+
} {
|
|
15
|
+
const modelCommonStyle = useModelCommonStyle();
|
|
16
|
+
const modelLinesCommonStyle = useModelLinesCommonStyle();
|
|
17
|
+
|
|
18
|
+
function modelLineVisibility(id: string, line_id?: string): unknown {
|
|
19
|
+
return modelLinesCommonStyle.modelLineStyle(id, line_id).visibility;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async function setModelLinesVisibility(
|
|
23
|
+
modelId: string,
|
|
24
|
+
lines_ids: string[],
|
|
25
|
+
visibility: boolean | undefined,
|
|
26
|
+
): Promise<unknown> {
|
|
27
|
+
const result = await modelCommonStyle.setModelTypeVisibility(
|
|
28
|
+
modelId,
|
|
29
|
+
lines_ids,
|
|
30
|
+
visibility,
|
|
31
|
+
schema,
|
|
32
|
+
);
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return { setModelLinesVisibility, modelLineVisibility };
|
|
37
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
|
|
2
|
+
import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
|
|
3
|
+
|
|
4
|
+
export function useModelPointsCommonStyle(): {
|
|
5
|
+
modelPointsStyle: (id: string) => StyleValues;
|
|
6
|
+
mutateModelPointsStyle: (id: string, values: StyleValues) => Promise<unknown>;
|
|
7
|
+
} {
|
|
8
|
+
const dataStyleState = useDataStyleState();
|
|
9
|
+
|
|
10
|
+
async function mutateModelPointsStyle(id: string, values: StyleValues): Promise<unknown> {
|
|
11
|
+
const result = await dataStyleState.mutateStyle(id, {
|
|
12
|
+
points: values,
|
|
13
|
+
});
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function modelPointsStyle(id: string): StyleValues {
|
|
18
|
+
return dataStyleState.getStyle(id).points ?? {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return {
|
|
22
|
+
modelPointsStyle,
|
|
23
|
+
mutateModelPointsStyle,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Local imports
|
|
2
|
+
import { useModelPointsCommonStyle } from "./common";
|
|
3
|
+
import { useModelPointsSizeStyle } from "./size";
|
|
4
|
+
import { useModelPointsVisibilityStyle } from "./visibility";
|
|
5
|
+
|
|
6
|
+
export function useModelPointsStyle(): {
|
|
7
|
+
applyModelPointsStyle: (id: string) => Promise<unknown[]>;
|
|
8
|
+
} & ReturnType<typeof useModelPointsCommonStyle> &
|
|
9
|
+
ReturnType<typeof useModelPointsVisibilityStyle> &
|
|
10
|
+
ReturnType<typeof useModelPointsSizeStyle> {
|
|
11
|
+
const modelPointsCommonStyle = useModelPointsCommonStyle();
|
|
12
|
+
const modelPointsVisibilityStyle = useModelPointsVisibilityStyle();
|
|
13
|
+
const modelPointsSizeStyle = useModelPointsSizeStyle();
|
|
14
|
+
|
|
15
|
+
async function applyModelPointsStyle(id: string): Promise<unknown[]> {
|
|
16
|
+
const style = modelPointsCommonStyle.modelPointsStyle(id);
|
|
17
|
+
const result = await Promise.all([
|
|
18
|
+
modelPointsVisibilityStyle.setModelPointsVisibility(
|
|
19
|
+
id,
|
|
20
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- points style values are dynamically typed at runtime.
|
|
21
|
+
style.visibility as boolean | undefined,
|
|
22
|
+
),
|
|
23
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- points style values are dynamically typed at runtime.
|
|
24
|
+
modelPointsSizeStyle.setModelPointsSize(id, style.size as number | undefined),
|
|
25
|
+
]);
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
applyModelPointsStyle,
|
|
31
|
+
...modelPointsCommonStyle,
|
|
32
|
+
...modelPointsVisibilityStyle,
|
|
33
|
+
...modelPointsSizeStyle,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Third party imports
|
|
2
|
+
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
3
|
+
|
|
4
|
+
// Local imports
|
|
5
|
+
import { useModelPointsCommonStyle } from "./common";
|
|
6
|
+
import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
7
|
+
|
|
8
|
+
// Local constants
|
|
9
|
+
const schema = viewer_schemas.opengeodeweb_viewer.model.points.size;
|
|
10
|
+
|
|
11
|
+
export function useModelPointsSizeStyle(): {
|
|
12
|
+
modelPointsSize: (id: string) => number | undefined;
|
|
13
|
+
setModelPointsSize: (id: string, size: number | undefined) => Promise<unknown>;
|
|
14
|
+
} {
|
|
15
|
+
const viewerStore = useViewerStore();
|
|
16
|
+
const modelPointsCommonStyle = useModelPointsCommonStyle();
|
|
17
|
+
|
|
18
|
+
function modelPointsSize(id: string): number | undefined {
|
|
19
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- points style values are dynamically typed at runtime.
|
|
20
|
+
return modelPointsCommonStyle.modelPointsStyle(id).size as number | undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function setModelPointsSize(id: string, size: number | undefined): Promise<unknown> {
|
|
24
|
+
const params = { id, size };
|
|
25
|
+
const result = await viewerStore.request(
|
|
26
|
+
{
|
|
27
|
+
schema,
|
|
28
|
+
params,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
response_function: async () => {
|
|
32
|
+
const mutateResult = await modelPointsCommonStyle.mutateModelPointsStyle(id, { size });
|
|
33
|
+
return mutateResult;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
);
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
modelPointsSize,
|
|
42
|
+
setModelPointsSize,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Third party imports
|
|
2
|
+
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
3
|
+
|
|
4
|
+
// Local imports
|
|
5
|
+
import { useModelPointsCommonStyle } from "./common";
|
|
6
|
+
import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
7
|
+
|
|
8
|
+
// Local constants
|
|
9
|
+
const schema = viewer_schemas.opengeodeweb_viewer.model.points.visibility;
|
|
10
|
+
|
|
11
|
+
export function useModelPointsVisibilityStyle(): {
|
|
12
|
+
modelPointsVisibility: (id: string) => boolean | undefined;
|
|
13
|
+
setModelPointsVisibility: (id: string, visibility: boolean | undefined) => Promise<unknown>;
|
|
14
|
+
} {
|
|
15
|
+
const viewerStore = useViewerStore();
|
|
16
|
+
const modelPointsCommonStyle = useModelPointsCommonStyle();
|
|
17
|
+
|
|
18
|
+
function modelPointsVisibility(id: string): boolean | undefined {
|
|
19
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- points style values are dynamically typed at runtime.
|
|
20
|
+
return modelPointsCommonStyle.modelPointsStyle(id).visibility as boolean | undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function setModelPointsVisibility(
|
|
24
|
+
id: string,
|
|
25
|
+
visibility: boolean | undefined,
|
|
26
|
+
): Promise<unknown> {
|
|
27
|
+
const params = { id, visibility };
|
|
28
|
+
const result = await viewerStore.request(
|
|
29
|
+
{ schema, params },
|
|
30
|
+
{
|
|
31
|
+
response_function: async () => {
|
|
32
|
+
const mutateResult = await modelPointsCommonStyle.mutateModelPointsStyle(id, {
|
|
33
|
+
visibility,
|
|
34
|
+
});
|
|
35
|
+
return mutateResult;
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
modelPointsVisibility,
|
|
44
|
+
setModelPointsVisibility,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { MESH_COMPONENT_TYPES } from "@ogw_front/utils/default_styles";
|
|
2
|
+
import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
|
|
3
|
+
import type { Table } from "dexie";
|
|
4
|
+
import { database } from "@ogw_internal/database/database";
|
|
5
|
+
import type { useDataStyleState } from "@ogw_internal/stores/data_style/state";
|
|
6
|
+
|
|
7
|
+
interface ModelComponentRecord {
|
|
8
|
+
id: string;
|
|
9
|
+
geode_id: string;
|
|
10
|
+
type: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type DataStyleState = ReturnType<typeof useDataStyleState>;
|
|
14
|
+
|
|
15
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- trusted Dexie table boundary; see other database table casts in this codebase.
|
|
16
|
+
const model_components_db = database.model_components as unknown as Table<
|
|
17
|
+
ModelComponentRecord,
|
|
18
|
+
string
|
|
19
|
+
>;
|
|
20
|
+
|
|
21
|
+
function groupComponentsByType(
|
|
22
|
+
components: readonly ModelComponentRecord[],
|
|
23
|
+
): Record<string, ModelComponentRecord[]> {
|
|
24
|
+
const componentsByType: Record<string, ModelComponentRecord[]> = Object.fromEntries(
|
|
25
|
+
MESH_COMPONENT_TYPES.map((componentType) => [componentType, []]),
|
|
26
|
+
);
|
|
27
|
+
for (const component of components) {
|
|
28
|
+
const list = componentsByType[component.type];
|
|
29
|
+
if (list !== undefined) {
|
|
30
|
+
list.push(component);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return componentsByType;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface TypeSelectionContext {
|
|
37
|
+
readonly modelId: string;
|
|
38
|
+
readonly groupStyles: ReturnType<DataStyleState["getStyle"]>;
|
|
39
|
+
readonly dataStyleState: DataStyleState;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function computeTypeSelection(
|
|
43
|
+
componentType: string,
|
|
44
|
+
typeComponents: readonly ModelComponentRecord[],
|
|
45
|
+
context: TypeSelectionContext,
|
|
46
|
+
): string[] {
|
|
47
|
+
const { modelId, groupStyles, dataStyleState } = context;
|
|
48
|
+
const typeKey = `${componentType.toLowerCase()}s`;
|
|
49
|
+
const typeStyleKey = `${modelId}_${componentType}`;
|
|
50
|
+
const typeStyle = dataStyleState.modelComponentTypeStyles.value[typeStyleKey];
|
|
51
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- dynamically-keyed lookup into StyleValues; see other database/style casts in this codebase.
|
|
52
|
+
const groupTypeStyle = (groupStyles as unknown as Record<string, StyleValues | undefined>)[
|
|
53
|
+
typeKey
|
|
54
|
+
];
|
|
55
|
+
const defaultVisibility =
|
|
56
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- visibility field is defined by the data style schema.
|
|
57
|
+
(typeStyle?.visibility as boolean | undefined) ??
|
|
58
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- visibility field is defined by the data style schema.
|
|
59
|
+
(groupTypeStyle?.visibility as boolean | undefined) ??
|
|
60
|
+
true;
|
|
61
|
+
|
|
62
|
+
const selection: string[] = [];
|
|
63
|
+
let allVisible = true;
|
|
64
|
+
for (const component of typeComponents) {
|
|
65
|
+
const styleKey = `${modelId}_${component.geode_id}`;
|
|
66
|
+
const componentStyle = dataStyleState.componentStyles.value[styleKey];
|
|
67
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- visibility field is defined by the data style schema.
|
|
68
|
+
const isVisible = (componentStyle?.visibility as boolean | undefined) ?? defaultVisibility;
|
|
69
|
+
if (isVisible) {
|
|
70
|
+
selection.push(component.geode_id);
|
|
71
|
+
} else {
|
|
72
|
+
allVisible = false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (allVisible) {
|
|
76
|
+
selection.push(componentType);
|
|
77
|
+
}
|
|
78
|
+
return selection;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function buildSelection(
|
|
82
|
+
modelId: string,
|
|
83
|
+
components: readonly ModelComponentRecord[],
|
|
84
|
+
dataStyleState: DataStyleState,
|
|
85
|
+
): string[] {
|
|
86
|
+
const componentsByType = groupComponentsByType(components);
|
|
87
|
+
const groupStyles = dataStyleState.getStyle(modelId);
|
|
88
|
+
const context: TypeSelectionContext = { modelId, groupStyles, dataStyleState };
|
|
89
|
+
|
|
90
|
+
const selection: string[] = [];
|
|
91
|
+
for (const componentType of MESH_COMPONENT_TYPES) {
|
|
92
|
+
const typeComponents = componentsByType[componentType] ?? [];
|
|
93
|
+
if (typeComponents.length === 0) {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
selection.push(...computeTypeSelection(componentType, typeComponents, context));
|
|
97
|
+
}
|
|
98
|
+
return selection;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const selectionCache = new Map<string, ComputedRef<string[]>>();
|
|
102
|
+
|
|
103
|
+
function useModelSelection(
|
|
104
|
+
modelId: string | undefined,
|
|
105
|
+
dataStyleState: DataStyleState,
|
|
106
|
+
): ComputedRef<string[]> {
|
|
107
|
+
if (modelId === undefined || modelId === "") {
|
|
108
|
+
return computed<string[]>(() => []);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const cacheKey = modelId;
|
|
112
|
+
const cachedSelection = selectionCache.get(cacheKey);
|
|
113
|
+
if (cachedSelection !== undefined) {
|
|
114
|
+
return cachedSelection;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const allComponents = ref<ModelComponentRecord[]>([]);
|
|
118
|
+
|
|
119
|
+
void (async (): Promise<void> => {
|
|
120
|
+
try {
|
|
121
|
+
allComponents.value = await model_components_db.where("id").equals(modelId).toArray();
|
|
122
|
+
} catch {
|
|
123
|
+
allComponents.value = [];
|
|
124
|
+
}
|
|
125
|
+
})();
|
|
126
|
+
|
|
127
|
+
const computedSelection = computed(() => {
|
|
128
|
+
if (allComponents.value.length === 0) {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
return buildSelection(modelId, allComponents.value, dataStyleState);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
selectionCache.set(cacheKey, computedSelection);
|
|
135
|
+
return computedSelection;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export { buildSelection, useModelSelection };
|