@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
|
@@ -1,34 +1,72 @@
|
|
|
1
1
|
import { isModelCornersVertexAttributeValid, useModelCornersVertexAttribute } from "./vertex";
|
|
2
|
+
import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
|
|
3
|
+
import { useDataStore } from "@ogw_front/stores/data";
|
|
2
4
|
import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
|
|
3
5
|
import { useModelCornersCommonStyle } from "./common";
|
|
4
6
|
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
5
7
|
|
|
6
8
|
const schema = viewer_schemas.opengeodeweb_viewer.model.corners.color;
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
interface ModelCornersColorApi {
|
|
11
|
+
setModelCornersColor: (
|
|
12
|
+
modelId: string,
|
|
13
|
+
corners_ids: string[],
|
|
14
|
+
color: unknown,
|
|
15
|
+
activeColoring?: string,
|
|
16
|
+
) => Promise<unknown>;
|
|
17
|
+
modelCornerColoring: (id: string, corner_id?: string) => StyleValues;
|
|
18
|
+
modelCornerColor: (id: string, corner_id?: string) => unknown;
|
|
19
|
+
modelCornerActiveColoring: (id: string, corner_id?: string) => unknown;
|
|
20
|
+
setModelCornersActiveColoring: (
|
|
21
|
+
modelId: string,
|
|
22
|
+
corners_ids: string[],
|
|
23
|
+
activeColoring: string,
|
|
24
|
+
) => Promise<unknown>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function useModelCornersColor(): ModelCornersColorApi {
|
|
28
|
+
const dataStore = useDataStore();
|
|
9
29
|
const modelCommonStyle = useModelCommonStyle();
|
|
10
30
|
const modelCornersCommonStyle = useModelCornersCommonStyle();
|
|
11
31
|
const modelCornersVertexAttribute = useModelCornersVertexAttribute();
|
|
12
32
|
|
|
13
|
-
function modelCornerColoring(id, corner_id) {
|
|
14
|
-
|
|
33
|
+
function modelCornerColoring(id: string, corner_id?: string): StyleValues {
|
|
34
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring is a StyleValues sub-object stored under a StyleValues index signature.
|
|
35
|
+
return modelCornersCommonStyle.modelCornerStyle(id, corner_id).coloring as StyleValues;
|
|
15
36
|
}
|
|
16
37
|
|
|
17
|
-
function modelCornerColor(id, corner_id) {
|
|
38
|
+
function modelCornerColor(id: string, corner_id?: string): unknown {
|
|
18
39
|
return modelCornerColoring(id, corner_id).constant;
|
|
19
40
|
}
|
|
20
41
|
|
|
21
|
-
function setModelCornersColor(
|
|
22
|
-
|
|
42
|
+
async function setModelCornersColor(
|
|
43
|
+
modelId: string,
|
|
44
|
+
corners_ids: string[],
|
|
45
|
+
color: unknown,
|
|
46
|
+
activeColoring = "constant",
|
|
47
|
+
): Promise<unknown> {
|
|
48
|
+
const result = await modelCommonStyle.setModelTypeColor(
|
|
49
|
+
modelId,
|
|
50
|
+
corners_ids,
|
|
51
|
+
color,
|
|
52
|
+
schema,
|
|
53
|
+
activeColoring,
|
|
54
|
+
);
|
|
55
|
+
return result;
|
|
23
56
|
}
|
|
24
57
|
|
|
25
|
-
function modelCornerActiveColoring(id, corner_id) {
|
|
58
|
+
function modelCornerActiveColoring(id: string, corner_id?: string): unknown {
|
|
26
59
|
return modelCornerColoring(id, corner_id).active;
|
|
27
60
|
}
|
|
28
61
|
|
|
29
|
-
async function setModelCornersActiveColoring(
|
|
30
|
-
|
|
31
|
-
|
|
62
|
+
async function setModelCornersActiveColoring(
|
|
63
|
+
modelId: string,
|
|
64
|
+
corners_ids: string[],
|
|
65
|
+
activeColoring: string,
|
|
66
|
+
): Promise<unknown> {
|
|
67
|
+
const totalCornerIds = await dataStore.getCornersGeodeIds(modelId);
|
|
68
|
+
if (corners_ids.length === totalCornerIds.length) {
|
|
69
|
+
await modelCornersCommonStyle.mutateModelCornersTypeColoring(modelId, {
|
|
32
70
|
active: activeColoring,
|
|
33
71
|
});
|
|
34
72
|
}
|
|
@@ -66,6 +104,7 @@ export function useModelCornersColor() {
|
|
|
66
104
|
);
|
|
67
105
|
}
|
|
68
106
|
}
|
|
107
|
+
return undefined;
|
|
69
108
|
}
|
|
70
109
|
|
|
71
110
|
return {
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
|
|
2
|
+
import merge from "lodash/merge";
|
|
3
|
+
import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
|
|
4
|
+
import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
|
|
5
|
+
|
|
6
|
+
export function useModelCornersCommonStyle(): {
|
|
7
|
+
modelCornersStyle: (id: string) => StyleValues;
|
|
8
|
+
modelCornerStyle: (id: string, corner_id?: string) => StyleValues;
|
|
9
|
+
modelCornerColoring: (id: string, corner_id?: string) => StyleValues;
|
|
10
|
+
mutateModelCornersColoring: (
|
|
11
|
+
id: string,
|
|
12
|
+
corners_ids: string[],
|
|
13
|
+
values: StyleValues,
|
|
14
|
+
) => Promise<void>;
|
|
15
|
+
mutateModelCornersTypeColoring: (id: string, values: StyleValues) => Promise<void>;
|
|
16
|
+
} {
|
|
17
|
+
const dataStyleState = useDataStyleState();
|
|
18
|
+
const modelCommonStyle = useModelCommonStyle();
|
|
19
|
+
|
|
20
|
+
function modelCornersStyle(id: string): StyleValues {
|
|
21
|
+
const { corners } = dataStyleState.getStyle(id);
|
|
22
|
+
if (corners === undefined) {
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
return corners;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function modelComponentTypeCornersStyle(id: string): StyleValues {
|
|
29
|
+
const defaultStyle = modelCornersStyle(id);
|
|
30
|
+
const typeStyle = dataStyleState.getModelComponentTypeStyle(id, "Corner");
|
|
31
|
+
return merge({}, defaultStyle, typeStyle);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function modelCornerStyle(id: string, corner_id?: string): StyleValues {
|
|
35
|
+
if (corner_id === undefined) {
|
|
36
|
+
return modelComponentTypeCornersStyle(id);
|
|
37
|
+
}
|
|
38
|
+
const typeStyle = modelComponentTypeCornersStyle(id);
|
|
39
|
+
const individualStyle = dataStyleState.getComponentStyle(id, corner_id);
|
|
40
|
+
return merge({}, typeStyle, individualStyle);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function modelCornerColoring(id: string, corner_id?: string): StyleValues {
|
|
44
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring is a StyleValues sub-object stored under a StyleValues index signature.
|
|
45
|
+
return modelCornerStyle(id, corner_id).coloring as StyleValues;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function mutateModelCornersColoring(
|
|
49
|
+
id: string,
|
|
50
|
+
corners_ids: string[],
|
|
51
|
+
values: StyleValues,
|
|
52
|
+
): Promise<void> {
|
|
53
|
+
await modelCommonStyle.mutateComponentStyles(id, corners_ids, {
|
|
54
|
+
coloring: values,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function mutateModelCornersTypeColoring(id: string, values: StyleValues): Promise<void> {
|
|
59
|
+
await modelCommonStyle.mutateModelComponentTypeStyle(id, "Corner", {
|
|
60
|
+
coloring: values,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
modelCornersStyle,
|
|
66
|
+
modelCornerStyle,
|
|
67
|
+
modelCornerColoring,
|
|
68
|
+
mutateModelCornersColoring,
|
|
69
|
+
mutateModelCornersTypeColoring,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -4,68 +4,102 @@ import { useModelCornersColor } from "./color";
|
|
|
4
4
|
import { useModelCornersCommonStyle } from "./common";
|
|
5
5
|
import { useModelCornersVisibility } from "./visibility";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
interface ColorGroup {
|
|
8
|
+
color: unknown;
|
|
9
|
+
corners_ids: string[];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface AttributeGroup {
|
|
13
|
+
name: string | undefined;
|
|
14
|
+
item: number | undefined;
|
|
15
|
+
minimum: number | undefined;
|
|
16
|
+
maximum: number | undefined;
|
|
17
|
+
colorMap: string | undefined;
|
|
18
|
+
corners_ids: string[];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async function setModelCornersDefaultStyle(_id: string): Promise<void> {
|
|
8
22
|
// Placeholder
|
|
9
23
|
}
|
|
10
24
|
|
|
11
|
-
|
|
25
|
+
type ModelCornersStyleApi = ReturnType<typeof useModelCornersCommonStyle> &
|
|
26
|
+
ReturnType<typeof useModelCornersVisibility> &
|
|
27
|
+
ReturnType<typeof useModelCornersColor> &
|
|
28
|
+
ReturnType<typeof useModelCornersVertexAttribute> & {
|
|
29
|
+
applyModelCornersStyle: (modelId: string) => Promise<void>;
|
|
30
|
+
setModelCornersDefaultStyle: (id: string) => Promise<void>;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export function useModelCornersStyle(): ModelCornersStyleApi {
|
|
12
34
|
const dataStore = useDataStore();
|
|
13
35
|
const modelCommonStyle = useModelCornersCommonStyle();
|
|
14
36
|
const modelVisibilityStyle = useModelCornersVisibility();
|
|
15
37
|
const modelColorStyle = useModelCornersColor();
|
|
16
38
|
const modelCornersVertexAttribute = useModelCornersVertexAttribute();
|
|
17
39
|
|
|
18
|
-
function applyModelCornersVisibilityStyle(
|
|
19
|
-
|
|
40
|
+
async function applyModelCornersVisibilityStyle(
|
|
41
|
+
modelId: string,
|
|
42
|
+
corners_ids: string[],
|
|
43
|
+
): Promise<unknown[]> {
|
|
44
|
+
const visibilityGroups: Record<string, string[]> = {};
|
|
20
45
|
for (const corner_id of corners_ids) {
|
|
21
46
|
const style = modelCommonStyle.modelCornerStyle(modelId, corner_id);
|
|
22
47
|
const visibility = String(style.visibility);
|
|
23
|
-
|
|
24
|
-
visibilityGroups[visibility] = [];
|
|
25
|
-
}
|
|
48
|
+
visibilityGroups[visibility] ??= [];
|
|
26
49
|
visibilityGroups[visibility].push(corner_id);
|
|
27
50
|
}
|
|
28
|
-
|
|
29
|
-
Object.entries(visibilityGroups).map(([visibility, ids]) =>
|
|
30
|
-
modelVisibilityStyle.setModelCornersVisibility(
|
|
31
|
-
|
|
51
|
+
const results = await Promise.all(
|
|
52
|
+
Object.entries(visibilityGroups).map(async ([visibility, ids]) => {
|
|
53
|
+
const result = await modelVisibilityStyle.setModelCornersVisibility(
|
|
54
|
+
modelId,
|
|
55
|
+
ids,
|
|
56
|
+
visibility === "true",
|
|
57
|
+
);
|
|
58
|
+
return result;
|
|
59
|
+
}),
|
|
32
60
|
);
|
|
61
|
+
return results;
|
|
33
62
|
}
|
|
34
63
|
|
|
35
|
-
function applyModelCornersColoringStyle(
|
|
36
|
-
|
|
64
|
+
async function applyModelCornersColoringStyle(
|
|
65
|
+
modelId: string,
|
|
66
|
+
corners_ids: string[],
|
|
67
|
+
): Promise<unknown[]> {
|
|
68
|
+
const activeColoringGroups: Record<string, string[]> = {};
|
|
37
69
|
for (const corner_id of corners_ids) {
|
|
38
|
-
const activeColoring = modelColorStyle.modelCornerActiveColoring(modelId, corner_id);
|
|
39
|
-
|
|
40
|
-
activeColoringGroups[activeColoring] = [];
|
|
41
|
-
}
|
|
70
|
+
const activeColoring = String(modelColorStyle.modelCornerActiveColoring(modelId, corner_id));
|
|
71
|
+
activeColoringGroups[activeColoring] ??= [];
|
|
42
72
|
activeColoringGroups[activeColoring].push(corner_id);
|
|
43
73
|
}
|
|
44
74
|
|
|
45
|
-
const coloringPromises = [];
|
|
75
|
+
const coloringPromises: Promise<unknown>[] = [];
|
|
46
76
|
|
|
47
77
|
for (const [type, type_corners_ids] of Object.entries(activeColoringGroups)) {
|
|
48
78
|
if (type === "constant") {
|
|
49
|
-
const colorGroups = {};
|
|
79
|
+
const colorGroups: Record<string, ColorGroup> = {};
|
|
50
80
|
for (const corner_id of type_corners_ids) {
|
|
51
81
|
const color = modelColorStyle.modelCornerColor(modelId, corner_id);
|
|
52
82
|
const color_key = JSON.stringify(color);
|
|
53
|
-
|
|
54
|
-
colorGroups[color_key] = { color, corners_ids: [] };
|
|
55
|
-
}
|
|
83
|
+
colorGroups[color_key] ??= { color, corners_ids: [] };
|
|
56
84
|
colorGroups[color_key].corners_ids.push(corner_id);
|
|
57
85
|
}
|
|
58
86
|
coloringPromises.push(
|
|
59
|
-
...Object.values(colorGroups).map(({ color, corners_ids: ids }) =>
|
|
60
|
-
modelColorStyle.setModelCornersColor(
|
|
61
|
-
|
|
87
|
+
...Object.values(colorGroups).map(async ({ color, corners_ids: ids }) => {
|
|
88
|
+
const result = await modelColorStyle.setModelCornersColor(
|
|
89
|
+
modelId,
|
|
90
|
+
ids,
|
|
91
|
+
color,
|
|
92
|
+
"constant",
|
|
93
|
+
);
|
|
94
|
+
return result;
|
|
95
|
+
}),
|
|
62
96
|
);
|
|
63
97
|
} else if (type === "random") {
|
|
64
98
|
coloringPromises.push(
|
|
65
99
|
modelColorStyle.setModelCornersColor(modelId, type_corners_ids, undefined, "random"),
|
|
66
100
|
);
|
|
67
101
|
} else if (type === "vertex") {
|
|
68
|
-
const vertexGroups = {};
|
|
102
|
+
const vertexGroups: Record<string, AttributeGroup> = {};
|
|
69
103
|
for (const corner_id of type_corners_ids) {
|
|
70
104
|
const name = modelCornersVertexAttribute.modelCornersVertexAttributeName(
|
|
71
105
|
modelId,
|
|
@@ -88,43 +122,48 @@ export function useModelCornersStyle() {
|
|
|
88
122
|
continue;
|
|
89
123
|
}
|
|
90
124
|
const key = `${name}_${item}_${colorMap}_${minimum}_${maximum}`;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
};
|
|
100
|
-
}
|
|
125
|
+
vertexGroups[key] ??= {
|
|
126
|
+
name,
|
|
127
|
+
item,
|
|
128
|
+
minimum,
|
|
129
|
+
maximum,
|
|
130
|
+
colorMap,
|
|
131
|
+
corners_ids: [],
|
|
132
|
+
};
|
|
101
133
|
vertexGroups[key].corners_ids.push(corner_id);
|
|
102
134
|
}
|
|
103
135
|
coloringPromises.push(
|
|
104
136
|
...Object.values(vertexGroups).map(
|
|
105
|
-
({ name, item, minimum, maximum, colorMap, corners_ids: ids }) =>
|
|
106
|
-
modelCornersVertexAttribute.setModelCornersVertexAttribute(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
137
|
+
async ({ name, item, minimum, maximum, colorMap, corners_ids: ids }) => {
|
|
138
|
+
const result = await modelCornersVertexAttribute.setModelCornersVertexAttribute(
|
|
139
|
+
modelId,
|
|
140
|
+
ids,
|
|
141
|
+
{
|
|
142
|
+
name,
|
|
143
|
+
item,
|
|
144
|
+
minimum,
|
|
145
|
+
maximum,
|
|
146
|
+
colorMap,
|
|
147
|
+
},
|
|
148
|
+
);
|
|
149
|
+
return result;
|
|
150
|
+
},
|
|
113
151
|
),
|
|
114
152
|
);
|
|
115
153
|
}
|
|
116
154
|
}
|
|
117
155
|
|
|
118
|
-
|
|
156
|
+
const results = await Promise.all(coloringPromises);
|
|
157
|
+
return results;
|
|
119
158
|
}
|
|
120
159
|
|
|
121
|
-
async function applyModelCornersStyle(modelId) {
|
|
160
|
+
async function applyModelCornersStyle(modelId: string): Promise<void> {
|
|
122
161
|
const corners_ids = await dataStore.getCornersGeodeIds(modelId);
|
|
123
162
|
if (corners_ids.length === 0) {
|
|
124
163
|
return;
|
|
125
164
|
}
|
|
126
165
|
|
|
127
|
-
|
|
166
|
+
await Promise.all([
|
|
128
167
|
applyModelCornersVisibilityStyle(modelId, corners_ids),
|
|
129
168
|
applyModelCornersColoringStyle(modelId, corners_ids),
|
|
130
169
|
]);
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { DEFAULT_NO_DATA_COLOR } from "@ogw_front/utils/default_styles/constants";
|
|
2
|
+
// Third party imports
|
|
3
|
+
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
4
|
+
|
|
5
|
+
// Local imports
|
|
6
|
+
import { getRGBPointsFromPreset } from "@ogw_front/utils/colormap";
|
|
7
|
+
import { useDataStore } from "@ogw_front/stores/data";
|
|
8
|
+
import { useModelCornersCommonStyle } from "./common";
|
|
9
|
+
import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
10
|
+
|
|
11
|
+
// Local constants
|
|
12
|
+
const attributeSchema = viewer_schemas.opengeodeweb_viewer.model.corners.attribute.vertex.attribute;
|
|
13
|
+
|
|
14
|
+
interface AttributeStoredConfig {
|
|
15
|
+
minimum: number | undefined;
|
|
16
|
+
maximum: number | undefined;
|
|
17
|
+
colorMap: string | undefined;
|
|
18
|
+
no_data_color: unknown;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface AttributeState {
|
|
22
|
+
name?: string;
|
|
23
|
+
item?: number;
|
|
24
|
+
storedConfigs?: Record<string, { lastItem: number } & Record<string, AttributeStoredConfig>>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface AttributeInput {
|
|
28
|
+
name: string | undefined;
|
|
29
|
+
item: number | undefined;
|
|
30
|
+
minimum: number | undefined;
|
|
31
|
+
maximum: number | undefined;
|
|
32
|
+
colorMap: string | undefined;
|
|
33
|
+
no_data_color?: unknown;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type IdsFn<Value> = (modelId: string, cornerIds: string[], value: Value) => Promise<void>;
|
|
37
|
+
|
|
38
|
+
interface ModelCornersVertexAttributeApi {
|
|
39
|
+
modelCornersVertexAttributeName: (modelId: string, cornerId?: string) => string | undefined;
|
|
40
|
+
modelCornersVertexAttributeItem: (modelId: string, cornerId?: string) => number;
|
|
41
|
+
modelCornersVertexAttributeRange: (
|
|
42
|
+
modelId: string,
|
|
43
|
+
cornerId?: string,
|
|
44
|
+
) => [number | undefined, number | undefined];
|
|
45
|
+
modelCornersVertexAttributeColorMap: (modelId: string, cornerId?: string) => string | undefined;
|
|
46
|
+
modelCornersVertexAttributeStoredConfig: (
|
|
47
|
+
modelId: string,
|
|
48
|
+
cornerId: string | undefined,
|
|
49
|
+
name: string | undefined,
|
|
50
|
+
item: number | undefined,
|
|
51
|
+
) => AttributeStoredConfig;
|
|
52
|
+
setModelCornersVertexAttribute: (
|
|
53
|
+
modelId: string,
|
|
54
|
+
cornerIds: string[],
|
|
55
|
+
attribute: AttributeInput,
|
|
56
|
+
) => Promise<unknown>;
|
|
57
|
+
setModelCornersVertexAttributeName: IdsFn<string>;
|
|
58
|
+
setModelCornersVertexAttributeItem: IdsFn<number>;
|
|
59
|
+
setModelCornersVertexAttributeRange: (
|
|
60
|
+
modelId: string,
|
|
61
|
+
cornerIds: string[],
|
|
62
|
+
minimum: number,
|
|
63
|
+
maximum: number,
|
|
64
|
+
) => Promise<void>;
|
|
65
|
+
setModelCornersVertexAttributeColorMap: IdsFn<string | undefined>;
|
|
66
|
+
modelCornersVertexAttributeNoDataColor: (modelId: string, cornerId?: string) => unknown;
|
|
67
|
+
setModelCornersVertexAttributeNoDataColor: IdsFn<unknown>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function isModelCornersVertexAttributeValid({
|
|
71
|
+
name,
|
|
72
|
+
item,
|
|
73
|
+
minimum,
|
|
74
|
+
maximum,
|
|
75
|
+
colorMap,
|
|
76
|
+
}: AttributeInput): boolean {
|
|
77
|
+
return (
|
|
78
|
+
name !== undefined &&
|
|
79
|
+
item !== undefined &&
|
|
80
|
+
minimum !== undefined &&
|
|
81
|
+
maximum !== undefined &&
|
|
82
|
+
colorMap !== undefined
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// oxlint-disable-next-line max-lines-per-function
|
|
87
|
+
function useModelCornersVertexAttribute(): ModelCornersVertexAttributeApi {
|
|
88
|
+
const dataStore = useDataStore();
|
|
89
|
+
const modelCornersCommonStyle = useModelCornersCommonStyle();
|
|
90
|
+
const viewerStore = useViewerStore();
|
|
91
|
+
function modelCornersVertexAttribute(modelId: string, cornerId?: string): AttributeState {
|
|
92
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- vertex is a StyleValues sub-object stored under a StyleValues index signature.
|
|
93
|
+
return modelCornersCommonStyle.modelCornerColoring(modelId, cornerId).vertex as AttributeState;
|
|
94
|
+
}
|
|
95
|
+
function modelCornersVertexAttributeStoredConfig(
|
|
96
|
+
modelId: string,
|
|
97
|
+
cornerId: string | undefined,
|
|
98
|
+
name: string | undefined,
|
|
99
|
+
item: number | undefined,
|
|
100
|
+
): AttributeStoredConfig {
|
|
101
|
+
const storedConfig =
|
|
102
|
+
name !== undefined && item !== undefined
|
|
103
|
+
? modelCornersVertexAttribute(modelId, cornerId).storedConfigs?.[name]?.[item]
|
|
104
|
+
: undefined;
|
|
105
|
+
if (storedConfig !== undefined) {
|
|
106
|
+
return storedConfig;
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
minimum: undefined,
|
|
110
|
+
maximum: undefined,
|
|
111
|
+
colorMap: undefined,
|
|
112
|
+
no_data_color: DEFAULT_NO_DATA_COLOR,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
async function mutateModelCornersVertexStyle(
|
|
116
|
+
modelId: string,
|
|
117
|
+
cornerIds: string[],
|
|
118
|
+
values: Record<string, unknown>,
|
|
119
|
+
): Promise<void> {
|
|
120
|
+
const tasks: Promise<void>[] = [
|
|
121
|
+
modelCornersCommonStyle.mutateModelCornersColoring(modelId, cornerIds, {
|
|
122
|
+
vertex: values,
|
|
123
|
+
}),
|
|
124
|
+
];
|
|
125
|
+
const totalCornerIds = await dataStore.getCornersGeodeIds(modelId);
|
|
126
|
+
if (cornerIds.length === totalCornerIds.length) {
|
|
127
|
+
tasks.push(
|
|
128
|
+
modelCornersCommonStyle.mutateModelCornersTypeColoring(modelId, { vertex: values }),
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
await Promise.all(tasks);
|
|
132
|
+
}
|
|
133
|
+
async function setModelCornersVertexAttributeStoredConfig(
|
|
134
|
+
modelId: string,
|
|
135
|
+
cornerIds: string[],
|
|
136
|
+
name: string | undefined,
|
|
137
|
+
item: number | undefined,
|
|
138
|
+
config: Partial<AttributeStoredConfig>,
|
|
139
|
+
): Promise<void> {
|
|
140
|
+
if (name === undefined || item === undefined) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
await mutateModelCornersVertexStyle(modelId, cornerIds, {
|
|
144
|
+
storedConfigs: { [name]: { lastItem: item, [item]: config } },
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function modelCornersVertexAttributeName(modelId: string, cornerId?: string): string | undefined {
|
|
148
|
+
return modelCornersVertexAttribute(modelId, cornerId).name;
|
|
149
|
+
}
|
|
150
|
+
function modelCornersVertexAttributeLastItem(
|
|
151
|
+
modelId: string,
|
|
152
|
+
cornerId: string | undefined,
|
|
153
|
+
name: string | undefined,
|
|
154
|
+
): number {
|
|
155
|
+
if (name === undefined) {
|
|
156
|
+
return 0;
|
|
157
|
+
}
|
|
158
|
+
const { storedConfigs } = modelCornersVertexAttribute(modelId, cornerId);
|
|
159
|
+
return storedConfigs?.[name]?.lastItem ?? 0;
|
|
160
|
+
}
|
|
161
|
+
function modelCornersVertexAttributeItem(modelId: string, cornerId?: string): number {
|
|
162
|
+
const vertexAttribute = modelCornersVertexAttribute(modelId, cornerId);
|
|
163
|
+
return (
|
|
164
|
+
vertexAttribute.item ??
|
|
165
|
+
modelCornersVertexAttributeLastItem(modelId, cornerId, vertexAttribute.name)
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
function modelCornersVertexAttributeRange(
|
|
169
|
+
modelId: string,
|
|
170
|
+
cornerId?: string,
|
|
171
|
+
): [number | undefined, number | undefined] {
|
|
172
|
+
const name = modelCornersVertexAttributeName(modelId, cornerId);
|
|
173
|
+
const item = modelCornersVertexAttributeItem(modelId, cornerId);
|
|
174
|
+
const { minimum, maximum } = modelCornersVertexAttributeStoredConfig(
|
|
175
|
+
modelId,
|
|
176
|
+
cornerId,
|
|
177
|
+
name,
|
|
178
|
+
item,
|
|
179
|
+
);
|
|
180
|
+
return [minimum, maximum];
|
|
181
|
+
}
|
|
182
|
+
function modelCornersVertexAttributeColorMap(
|
|
183
|
+
modelId: string,
|
|
184
|
+
cornerId?: string,
|
|
185
|
+
): string | undefined {
|
|
186
|
+
const name = modelCornersVertexAttributeName(modelId, cornerId);
|
|
187
|
+
const item = modelCornersVertexAttributeItem(modelId, cornerId);
|
|
188
|
+
return modelCornersVertexAttributeStoredConfig(modelId, cornerId, name, item).colorMap;
|
|
189
|
+
}
|
|
190
|
+
async function setModelCornersVertexAttribute(
|
|
191
|
+
modelId: string,
|
|
192
|
+
cornerIds: string[],
|
|
193
|
+
{
|
|
194
|
+
name,
|
|
195
|
+
item,
|
|
196
|
+
minimum,
|
|
197
|
+
maximum,
|
|
198
|
+
colorMap,
|
|
199
|
+
no_data_color = DEFAULT_NO_DATA_COLOR,
|
|
200
|
+
}: AttributeInput,
|
|
201
|
+
): Promise<unknown> {
|
|
202
|
+
await mutateModelCornersVertexStyle(modelId, cornerIds, { name, item });
|
|
203
|
+
await setModelCornersVertexAttributeStoredConfig(modelId, cornerIds, name, item, {
|
|
204
|
+
minimum,
|
|
205
|
+
maximum,
|
|
206
|
+
colorMap,
|
|
207
|
+
no_data_color,
|
|
208
|
+
});
|
|
209
|
+
const points = getRGBPointsFromPreset(colorMap ?? "");
|
|
210
|
+
const corner_viewer_ids = await dataStore.getMeshComponentsViewerIds(modelId, cornerIds);
|
|
211
|
+
const params = {
|
|
212
|
+
id: modelId,
|
|
213
|
+
block_ids: corner_viewer_ids,
|
|
214
|
+
name,
|
|
215
|
+
item,
|
|
216
|
+
points,
|
|
217
|
+
minimum,
|
|
218
|
+
maximum,
|
|
219
|
+
no_data_color,
|
|
220
|
+
};
|
|
221
|
+
const result = await viewerStore.request({ schema: attributeSchema, params });
|
|
222
|
+
return result;
|
|
223
|
+
}
|
|
224
|
+
async function applyVertexAttribute(modelId: string, cornerIds: string[]): Promise<void> {
|
|
225
|
+
const name = modelCornersVertexAttributeName(modelId, cornerIds[0]);
|
|
226
|
+
const item = modelCornersVertexAttributeItem(modelId, cornerIds[0]);
|
|
227
|
+
const storedConfig = modelCornersVertexAttributeStoredConfig(modelId, cornerIds[0], name, item);
|
|
228
|
+
const attribute: AttributeInput = {
|
|
229
|
+
name,
|
|
230
|
+
item,
|
|
231
|
+
minimum: storedConfig.minimum,
|
|
232
|
+
maximum: storedConfig.maximum,
|
|
233
|
+
colorMap: storedConfig.colorMap,
|
|
234
|
+
no_data_color: storedConfig.no_data_color,
|
|
235
|
+
};
|
|
236
|
+
if (isModelCornersVertexAttributeValid(attribute)) {
|
|
237
|
+
await setModelCornersVertexAttribute(modelId, cornerIds, attribute);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
async function setModelCornersVertexAttributeName(
|
|
241
|
+
modelId: string,
|
|
242
|
+
cornerIds: string[],
|
|
243
|
+
name: string,
|
|
244
|
+
): Promise<void> {
|
|
245
|
+
const item = modelCornersVertexAttributeLastItem(modelId, cornerIds[0], name);
|
|
246
|
+
await mutateModelCornersVertexStyle(modelId, cornerIds, { name, item });
|
|
247
|
+
await applyVertexAttribute(modelId, cornerIds);
|
|
248
|
+
}
|
|
249
|
+
async function setModelCornersVertexAttributeItem(
|
|
250
|
+
modelId: string,
|
|
251
|
+
cornerIds: string[],
|
|
252
|
+
item: number,
|
|
253
|
+
): Promise<void> {
|
|
254
|
+
await mutateModelCornersVertexStyle(modelId, cornerIds, { item });
|
|
255
|
+
await applyVertexAttribute(modelId, cornerIds);
|
|
256
|
+
}
|
|
257
|
+
async function setModelCornersVertexAttributeRange(
|
|
258
|
+
modelId: string,
|
|
259
|
+
cornerIds: string[],
|
|
260
|
+
minimum: number,
|
|
261
|
+
maximum: number,
|
|
262
|
+
): Promise<void> {
|
|
263
|
+
const name = modelCornersVertexAttributeName(modelId, cornerIds[0]);
|
|
264
|
+
const item = modelCornersVertexAttributeItem(modelId, cornerIds[0]);
|
|
265
|
+
await setModelCornersVertexAttributeStoredConfig(modelId, cornerIds, name, item, {
|
|
266
|
+
minimum,
|
|
267
|
+
maximum,
|
|
268
|
+
});
|
|
269
|
+
await applyVertexAttribute(modelId, cornerIds);
|
|
270
|
+
}
|
|
271
|
+
async function setModelCornersVertexAttributeColorMap(
|
|
272
|
+
modelId: string,
|
|
273
|
+
cornerIds: string[],
|
|
274
|
+
colorMap: string | undefined,
|
|
275
|
+
): Promise<void> {
|
|
276
|
+
const name = modelCornersVertexAttributeName(modelId, cornerIds[0]);
|
|
277
|
+
const item = modelCornersVertexAttributeItem(modelId, cornerIds[0]);
|
|
278
|
+
await setModelCornersVertexAttributeStoredConfig(modelId, cornerIds, name, item, { colorMap });
|
|
279
|
+
await applyVertexAttribute(modelId, cornerIds);
|
|
280
|
+
}
|
|
281
|
+
function modelCornersVertexAttributeNoDataColor(modelId: string, cornerId?: string): unknown {
|
|
282
|
+
const name = modelCornersVertexAttributeName(modelId, cornerId);
|
|
283
|
+
const item = modelCornersVertexAttributeItem(modelId, cornerId);
|
|
284
|
+
return modelCornersVertexAttributeStoredConfig(modelId, cornerId, name, item).no_data_color;
|
|
285
|
+
}
|
|
286
|
+
async function setModelCornersVertexAttributeNoDataColor(
|
|
287
|
+
modelId: string,
|
|
288
|
+
cornerIds: string[],
|
|
289
|
+
no_data_color: unknown,
|
|
290
|
+
): Promise<void> {
|
|
291
|
+
const name = modelCornersVertexAttributeName(modelId, cornerIds[0]);
|
|
292
|
+
const item = modelCornersVertexAttributeItem(modelId, cornerIds[0]);
|
|
293
|
+
const storedConfig = modelCornersVertexAttributeStoredConfig(modelId, cornerIds[0], name, item);
|
|
294
|
+
await setModelCornersVertexAttributeStoredConfig(modelId, cornerIds, name, item, {
|
|
295
|
+
...storedConfig,
|
|
296
|
+
no_data_color,
|
|
297
|
+
});
|
|
298
|
+
await applyVertexAttribute(modelId, cornerIds);
|
|
299
|
+
}
|
|
300
|
+
return {
|
|
301
|
+
modelCornersVertexAttributeName,
|
|
302
|
+
modelCornersVertexAttributeItem,
|
|
303
|
+
modelCornersVertexAttributeRange,
|
|
304
|
+
modelCornersVertexAttributeColorMap,
|
|
305
|
+
modelCornersVertexAttributeStoredConfig,
|
|
306
|
+
setModelCornersVertexAttribute,
|
|
307
|
+
setModelCornersVertexAttributeName,
|
|
308
|
+
setModelCornersVertexAttributeItem,
|
|
309
|
+
setModelCornersVertexAttributeRange,
|
|
310
|
+
setModelCornersVertexAttributeColorMap,
|
|
311
|
+
modelCornersVertexAttributeNoDataColor,
|
|
312
|
+
setModelCornersVertexAttributeNoDataColor,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
export { isModelCornersVertexAttributeValid, useModelCornersVertexAttribute };
|