@geode/opengeodeweb-front 10.34.0-rc.2 → 10.34.0-rc.4
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/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 +9 -9
- package/app/components/CameraManager/Saver.vue +8 -2
- package/app/components/CameraManager.vue +20 -10
- package/app/components/CameraOrientation.vue +29 -15
- package/app/components/ClippingPlaneCard.vue +11 -12
- package/app/components/ClippingPlanes.vue +25 -15
- package/app/components/CrsSelector.vue +24 -15
- package/app/components/DeleteDialog.vue +16 -16
- package/app/components/DragAndDrop.vue +53 -33
- package/app/components/DragAndDropInternal/DragAndDropInline.vue +29 -16
- package/app/components/DragAndDropInternal/DragAndDropOverlay.vue +32 -19
- package/app/components/ExtensionSelector.vue +32 -16
- package/app/components/FeedBack/ErrorBanner.vue +1 -2
- package/app/components/FeedBack/Snackers.vue +3 -3
- package/app/components/FetchingData.vue +8 -12
- package/app/components/FileSelector.vue +20 -12
- package/app/components/FileUploader.vue +45 -24
- package/app/components/GlassCard.vue +16 -12
- package/app/components/HybridRenderingView.vue +22 -11
- package/app/components/HybridViewerTooltip.vue +24 -22
- package/app/components/InfraConnected.vue +1 -1
- package/app/components/Launcher.vue +11 -9
- package/app/components/Loading/EcoMessages.vue +16 -11
- package/app/components/Loading/Header.vue +6 -7
- package/app/components/Loading/Progress.vue +6 -7
- package/app/components/Loading.vue +8 -12
- package/app/components/MissingFilesSelector.vue +29 -15
- package/app/components/ObjectSelector.vue +33 -18
- package/app/components/PackagesVersions.vue +14 -7
- package/app/components/Recaptcha.vue +16 -22
- package/app/components/RemoteRenderingView.vue +16 -9
- package/app/components/Ruler.vue +8 -6
- package/app/components/Screenshot.vue +19 -13
- package/app/components/SearchBar.vue +10 -6
- package/app/components/ShrinkFilter.vue +12 -7
- package/app/components/Step.vue +30 -11
- package/app/components/Stepper.vue +18 -7
- package/app/components/ToolPanel.vue +25 -12
- package/app/components/ViewToolbar.vue +33 -21
- package/app/components/Viewer/ContextMenu/CenterButton.vue +14 -9
- package/app/components/Viewer/ContextMenu/CircularItems.vue +13 -10
- package/app/components/Viewer/ContextMenu/ContextMenu.vue +25 -20
- package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +21 -9
- package/app/components/Viewer/ContextMenu/InfoCard.vue +31 -14
- package/app/components/Viewer/EdgedCurve/PointsOptions.vue +8 -5
- package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +59 -36
- package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +67 -39
- package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +61 -38
- package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +43 -27
- package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +84 -40
- package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +67 -38
- package/app/components/Viewer/Generic/Model/BlocksOptions.vue +101 -35
- package/app/components/Viewer/Generic/Model/CornersOptions.vue +67 -27
- package/app/components/Viewer/Generic/Model/EdgesOptions.vue +14 -8
- package/app/components/Viewer/Generic/Model/LinesOptions.vue +96 -43
- package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +24 -12
- package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +10 -5
- package/app/components/Viewer/Generic/Model/PointsOptions.vue +16 -10
- package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +105 -31
- 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 +63 -37
- package/app/components/Viewer/ObjectTree/Base/Controls.vue +24 -9
- package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +25 -8
- package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +22 -9
- package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +26 -11
- package/app/components/Viewer/ObjectTree/Box.vue +30 -15
- package/app/components/Viewer/ObjectTree/Layout.vue +29 -22
- package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +54 -28
- package/app/components/Viewer/ObjectTree/Views/ModelCollections.vue +76 -30
- package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +86 -34
- package/app/components/Viewer/Options/AttributeColorBar.vue +12 -6
- package/app/components/Viewer/Options/AttributeRangeSelector.vue +6 -4
- package/app/components/Viewer/Options/AttributeSelector.vue +61 -28
- package/app/components/Viewer/Options/ColorMapList.vue +44 -18
- package/app/components/Viewer/Options/ColorMapPicker.vue +12 -8
- package/app/components/Viewer/Options/ColorPicker.vue +20 -13
- package/app/components/Viewer/Options/ColoringTypeSelector.vue +77 -57
- package/app/components/Viewer/Options/ColormapQuickPicker.vue +10 -8
- package/app/components/Viewer/Options/OptionsSection.vue +6 -4
- 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 +24 -19
- package/app/components/Viewer/Options/TexturesSelector.vue +23 -12
- package/app/components/Viewer/Options/VisibilitySwitch.vue +3 -3
- package/app/components/Viewer/OverlappingObjectsPicker.vue +28 -12
- package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +41 -25
- 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 +66 -37
- 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 +72 -38
- 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 +18 -13
- package/app/components/Wrapper.vue +18 -9
- package/app/components/ZScaling.vue +15 -9
- package/app/components/csv-preview/CsvPreviewer.vue +38 -17
- package/app/components/csv-preview/CsvSettings.vue +26 -48
- package/app/components/csv-preview/CsvTable.vue +34 -14
- package/app/composables/{batch_style.js → batch_style.ts} +4 -1
- package/app/composables/{clipping_planes_widget.js → clipping_planes_widget.ts} +105 -42
- package/app/composables/{global_attribute_style.js → global_attribute_style.ts} +72 -30
- package/app/composables/{hover_highlight.js → hover_highlight.ts} +16 -12
- package/app/composables/{model_collections.js → model_collections.ts} +10 -4
- package/app/composables/{model_components.js → model_components.ts} +10 -4
- package/app/composables/{project_manager.js → project_manager.ts} +1 -1
- package/app/composables/{responsive_middle_truncate.js → responsive_middle_truncate.ts} +15 -1
- package/app/composables/{run_function_when_microservices_connected.js → run_function_when_microservices_connected.ts} +1 -1
- package/app/composables/{stepper_tree.js → stepper_tree.ts} +10 -10
- package/app/composables/{tree_filter.js → tree_filter.ts} +49 -15
- package/app/composables/{tree_keyboard_nav.js → tree_keyboard_nav.ts} +44 -16
- package/app/composables/{tree_scroll.js → tree_scroll.ts} +26 -7
- package/app/composables/{use_adaptive_styles.js → use_adaptive_styles.ts} +39 -15
- package/app/composables/{use_overlapping_picker.js → use_overlapping_picker.ts} +58 -14
- package/app/composables/{use_quick_colormap.js → use_quick_colormap.ts} +15 -3
- package/app/composables/{virtual_tree.js → virtual_tree.ts} +69 -21
- package/app/plugins/{auto_store_register.js → auto_store_register.ts} +4 -1
- package/app/stores/{app.js → app.ts} +98 -37
- package/app/stores/{back.js → back.ts} +26 -16
- package/app/stores/camera_manager.ts +78 -0
- package/app/stores/{cloud.js → cloud.ts} +5 -4
- package/app/stores/{data.js → data.ts} +110 -37
- package/app/stores/data_helpers/collections.ts +140 -0
- package/app/stores/data_helpers/mesh.ts +160 -0
- package/app/stores/{data_style.js → data_style.ts} +39 -10
- package/app/stores/{feedback.js → feedback.ts} +16 -5
- package/app/stores/{hybrid_viewer.js → hybrid_viewer.ts} +29 -14
- package/app/stores/{infra.js → infra.ts} +18 -9
- package/app/stores/{menu.js → menu.ts} +54 -32
- package/app/stores/{treeview.js → treeview.ts} +108 -45
- package/app/stores/{viewer.js → viewer.ts} +45 -24
- package/app/utils/attributes.ts +40 -0
- package/app/utils/{clipping_planes.js → clipping_planes.ts} +30 -15
- package/app/utils/{colormap.js → colormap.ts} +29 -14
- package/app/utils/default_styles/{constants.js → constants.ts} +25 -12
- package/app/utils/default_styles/{index.js → index.ts} +3 -2
- package/app/utils/default_styles/{meshes.js → meshes.ts} +27 -48
- package/app/utils/default_styles/{models.js → models.ts} +25 -40
- package/app/utils/{extension.js → extension.ts} +27 -10
- package/app/utils/{import_workflow.js → import_workflow.ts} +24 -17
- package/app/utils/{log.js → log.ts} +12 -2
- package/app/utils/{name_cleaner.js → name_cleaner.ts} +5 -5
- package/app/utils/status.ts +19 -0
- package/app/utils/{stores.js → stores.ts} +5 -5
- package/app/utils/{string.js → string.ts} +5 -5
- package/app/utils/{treeview.js → treeview.ts} +4 -1
- package/internal/database/{base_database.js → base_database.ts} +2 -2
- package/internal/database/{database.js → database.ts} +30 -18
- 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.js → cell.ts} +83 -36
- package/internal/stores/data_style/mesh/cells/{color.js → color.ts} +2 -2
- package/internal/stores/data_style/mesh/cells/{common.js → common.ts} +8 -7
- package/internal/stores/data_style/mesh/cells/{index.js → index.ts} +5 -5
- package/internal/stores/data_style/mesh/cells/{textures.js → textures.ts} +3 -3
- package/internal/stores/data_style/mesh/cells/{vertex.js → vertex.ts} +79 -28
- package/internal/stores/data_style/mesh/cells/{visibility.js → visibility.ts} +3 -3
- package/internal/stores/data_style/mesh/edges/{color.js → color.ts} +2 -2
- package/internal/stores/data_style/mesh/edges/{common.js → common.ts} +7 -6
- package/internal/stores/data_style/mesh/edges/{edge.js → edge.ts} +81 -29
- package/internal/stores/data_style/mesh/edges/{index.js → index.ts} +5 -6
- package/internal/stores/data_style/mesh/edges/{vertex.js → vertex.ts} +81 -29
- package/internal/stores/data_style/mesh/edges/{visibility.js → visibility.ts} +3 -3
- package/internal/stores/data_style/mesh/edges/{width.js → width.ts} +3 -3
- package/internal/stores/data_style/mesh/{index.js → index.ts} +9 -8
- package/internal/stores/data_style/mesh/points/{color.js → color.ts} +2 -2
- package/internal/stores/data_style/mesh/points/{common.js → common.ts} +8 -7
- package/internal/stores/data_style/mesh/points/{index.js → index.ts} +5 -5
- package/internal/stores/data_style/mesh/points/{size.js → size.ts} +3 -3
- package/internal/stores/data_style/mesh/points/{vertex.js → vertex.ts} +79 -28
- package/internal/stores/data_style/mesh/points/{visibility.js → visibility.ts} +7 -5
- package/internal/stores/data_style/mesh/polygons/{color.js → color.ts} +2 -2
- package/internal/stores/data_style/mesh/polygons/{common.js → common.ts} +7 -6
- package/internal/stores/data_style/mesh/polygons/{index.js → index.ts} +5 -5
- package/internal/stores/data_style/mesh/polygons/{polygon.js → polygon.ts} +81 -29
- package/internal/stores/data_style/mesh/polygons/{textures.js → textures.ts} +3 -3
- package/internal/stores/data_style/mesh/polygons/{vertex.js → vertex.ts} +81 -29
- package/internal/stores/data_style/mesh/polygons/{visibility.js → visibility.ts} +3 -3
- package/internal/stores/data_style/mesh/polyhedra/{color.js → color.ts} +2 -2
- package/internal/stores/data_style/mesh/polyhedra/{common.js → common.ts} +7 -6
- package/internal/stores/data_style/mesh/polyhedra/{index.js → index.ts} +5 -5
- package/internal/stores/data_style/mesh/polyhedra/{polyhedron.js → polyhedron.ts} +86 -29
- package/internal/stores/data_style/mesh/polyhedra/{vertex.js → vertex.ts} +81 -29
- package/internal/stores/data_style/mesh/polyhedra/{visibility.js → visibility.ts} +3 -3
- package/internal/stores/data_style/model/blocks/{color.js → color.ts} +18 -6
- package/internal/stores/data_style/model/blocks/{common.js → common.ts} +9 -8
- package/internal/stores/data_style/model/blocks/{index.js → index.ts} +26 -11
- package/internal/stores/data_style/model/blocks/{polyhedron.js → polyhedron.ts} +121 -30
- package/internal/stores/data_style/model/blocks/{vertex.js → vertex.ts} +110 -30
- package/internal/stores/data_style/model/blocks/{visibility.js → visibility.ts} +6 -2
- package/internal/stores/data_style/model/{color.js → color.ts} +70 -28
- package/internal/stores/data_style/model/common.ts +216 -0
- package/internal/stores/data_style/model/corners/{color.js → color.ts} +18 -6
- package/internal/stores/data_style/model/corners/{common.js → common.ts} +9 -8
- package/internal/stores/data_style/model/corners/{index.js → index.ts} +24 -10
- package/internal/stores/data_style/model/corners/{vertex.js → vertex.ts} +115 -35
- package/internal/stores/data_style/model/corners/{visibility.js → visibility.ts} +6 -2
- package/internal/stores/data_style/model/edges/{common.js → common.ts} +4 -3
- package/internal/stores/data_style/model/edges/{index.js → index.ts} +0 -6
- package/internal/stores/data_style/model/edges/{visibility.js → visibility.ts} +4 -4
- package/internal/stores/data_style/model/{index.js → index.ts} +4 -4
- package/internal/stores/data_style/model/lines/{color.js → color.ts} +18 -6
- package/internal/stores/data_style/model/lines/{common.js → common.ts} +9 -8
- package/internal/stores/data_style/model/lines/{edge.js → edge.ts} +107 -30
- package/internal/stores/data_style/model/lines/{index.js → index.ts} +26 -11
- package/internal/stores/data_style/model/lines/{vertex.js → vertex.ts} +107 -30
- package/internal/stores/data_style/model/lines/{visibility.js → visibility.ts} +6 -2
- package/internal/stores/data_style/model/points/{common.js → common.ts} +4 -3
- package/internal/stores/data_style/model/points/{index.js → index.ts} +6 -3
- package/internal/stores/data_style/model/points/{size.js → size.ts} +3 -3
- package/internal/stores/data_style/model/points/{visibility.js → visibility.ts} +3 -3
- package/internal/stores/data_style/model/selection.ts +116 -0
- package/internal/stores/data_style/model/surfaces/{color.js → color.ts} +18 -6
- package/internal/stores/data_style/model/surfaces/{common.js → common.ts} +9 -8
- package/internal/stores/data_style/model/surfaces/{index.js → index.ts} +28 -11
- package/internal/stores/data_style/model/surfaces/{polygon.js → polygon.ts} +122 -30
- package/internal/stores/data_style/model/surfaces/{vertex.js → vertex.ts} +122 -30
- package/internal/stores/data_style/model/surfaces/{visibility.js → visibility.ts} +6 -2
- package/internal/stores/data_style/model/{visibility.js → visibility.ts} +38 -20
- package/internal/stores/data_style/state.ts +269 -0
- package/internal/stores/data_style/types.ts +30 -0
- package/internal/stores/hybrid_viewer/{brightness.js → brightness.ts} +35 -11
- package/internal/stores/hybrid_viewer/{camera.js → camera.ts} +90 -52
- package/internal/stores/hybrid_viewer/{camera_animation.js → camera_animation.ts} +27 -10
- package/internal/stores/hybrid_viewer/{constants.js → constants.ts} +2 -2
- package/internal/stores/hybrid_viewer/{filters.js → filters.ts} +9 -6
- package/internal/stores/hybrid_viewer/{highlight.js → highlight.ts} +81 -29
- package/internal/stores/hybrid_viewer/{ruler.js → ruler.ts} +38 -19
- package/internal/stores/hybrid_viewer/{scene.js → scene.ts} +39 -29
- package/internal/stores/hybrid_viewer/viewport.ts +168 -0
- package/internal/stores/hybrid_viewer/vtk_types.ts +74 -0
- package/internal/utils/api_fetch.ts +102 -0
- package/internal/utils/upload_file.ts +94 -0
- package/internal/utils/viewer_call.ts +90 -0
- package/internal/utils/ws_client.ts +43 -0
- package/{nuxt.config.js → nuxt.config.ts} +6 -1
- package/opengeodeweb_front_schemas.js +175 -0
- package/package.json +32 -8
- package/server/api/cloud/extensions/{run.post.js → run.post.ts} +17 -9
- package/server/api/local/app/{project_folder_path.post.js → project_folder_path.post.ts} +7 -3
- package/server/api/local/app/{run_back.post.js → run_back.post.ts} +12 -4
- package/server/api/local/app/{run_viewer.post.js → run_viewer.post.ts} +12 -4
- package/server/api/local/extensions/{kill.post.js → kill.post.ts} +12 -6
- package/server/api/local/extensions/{run.post.js → run.post.ts} +17 -9
- package/server/api/local/extensions/{upload.put.js → upload.put.ts} +13 -4
- package/server/api/microservice/app/{get_is_app_ready.get.js → get_is_app_ready.get.ts} +4 -3
- package/server/api/microservice/app/{set_app_base_url.post.js → set_app_base_url.post.ts} +9 -4
- package/server/api/microservice/app/{set_back_base_url.post.js → set_back_base_url.post.ts} +9 -4
- package/server/api/microservice/app/{set_is_app_ready.post.js → set_is_app_ready.post.ts} +9 -4
- package/server/api/microservice/app/{set_viewer_base_url.post.js → set_viewer_base_url.post.ts} +9 -4
- package/server/api/microservice/extensions/{download.post.js → download.post.ts} +9 -3
- package/server/api/serverless/{run_cloud.post.js → run_cloud.post.ts} +13 -7
- package/server/types/vendor.d.ts +64 -0
- package/server/utils/app_config.js +34 -64
- package/server/utils/app_config.ts +96 -0
- package/server/utils/cleanup.js +97 -148
- package/server/utils/cleanup.ts +189 -0
- package/server/utils/cloud.js +103 -148
- package/server/utils/cloud.ts +219 -0
- package/server/utils/{extension.js → extension.ts} +17 -4
- package/server/utils/microservices.js +126 -159
- package/server/utils/microservices.ts +206 -0
- package/server/utils/path.js +88 -134
- package/server/utils/path.ts +173 -0
- package/server/utils/scripts.js +116 -164
- package/server/utils/scripts.ts +195 -0
- package/server/utils/server.js +34 -50
- package/server/utils/server.ts +67 -0
- package/server/utils/server_config.js +23 -38
- package/server/utils/server_config.ts +60 -0
- package/server/utils/ws_client.js +81 -106
- package/server/utils/ws_client.ts +134 -0
- package/shared/app_mode.js +5 -4
- package/shared/app_mode.ts +7 -0
- package/shared/scripts.js +37 -32
- package/shared/scripts.ts +44 -0
- package/shared/utils/call_raw.js +25 -41
- package/shared/utils/call_raw.ts +66 -0
- package/shared/utils/call_schema.js +24 -41
- package/shared/utils/call_schema.ts +57 -0
- package/shared/utils/fetch_raw.js +36 -57
- package/shared/utils/fetch_raw.ts +85 -0
- package/shared/utils/fetch_schema.js +27 -44
- package/shared/utils/fetch_schema.ts +61 -0
- package/shared/utils/file.js +6 -10
- package/shared/utils/file.ts +16 -0
- package/shared/utils/parse_boolean.js +20 -13
- package/shared/utils/parse_boolean.ts +16 -0
- package/shared/utils/response_handlers/load.js +39 -66
- package/shared/utils/response_handlers/load.ts +94 -0
- package/shared/utils/types.js +1 -0
- package/shared/utils/types.ts +27 -0
- package/shared/utils/validate_schema.js +13 -9
- package/shared/utils/validate_schema.ts +15 -0
- 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/stores/camera_manager.js +0 -57
- package/app/stores/data_helpers/collections.js +0 -96
- package/app/stores/data_helpers/mesh.js +0 -122
- package/app/utils/attributes.js +0 -23
- package/app/utils/status.js +0 -10
- package/commitlint.config.js +0 -20
- 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/model/common.js +0 -141
- package/internal/stores/data_style/model/selection.js +0 -89
- package/internal/stores/data_style/state.js +0 -197
- 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/scripts/generate_geode_objects.js +0 -24
- 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
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
|
|
3
|
-
appName:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
});
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
appName: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const { appName } = defineProps<Props>();
|
|
8
7
|
|
|
9
8
|
const ecoMessages = computed(() => [
|
|
10
9
|
{
|
|
@@ -26,7 +25,13 @@ const ecoMessages = computed(() => [
|
|
|
26
25
|
|
|
27
26
|
const MESSAGE_INTERVAL_MS = 5000;
|
|
28
27
|
const currentMessage = ref(0);
|
|
29
|
-
let interval = undefined;
|
|
28
|
+
let interval: ReturnType<typeof setInterval> | undefined = undefined;
|
|
29
|
+
|
|
30
|
+
// Fallback only guards against noUncheckedIndexedAccess; currentMessage is always kept in range by the modulo below, so it is never actually used.
|
|
31
|
+
const FALLBACK_ECO_MESSAGE = { icon: "", title: "", message: "" };
|
|
32
|
+
const currentEcoMessage = computed(
|
|
33
|
+
() => ecoMessages.value[currentMessage.value] ?? FALLBACK_ECO_MESSAGE,
|
|
34
|
+
);
|
|
30
35
|
|
|
31
36
|
onMounted(() => {
|
|
32
37
|
interval = setInterval(() => {
|
|
@@ -54,18 +59,18 @@ onUnmounted(() => {
|
|
|
54
59
|
class="d-flex align-center ga-3 pa-0 mb-2 mb-sm-3 text-body-1 text-sm-subtitle-1 font-weight-bold text-white text-wrap"
|
|
55
60
|
>
|
|
56
61
|
<v-icon
|
|
57
|
-
:icon="
|
|
62
|
+
:icon="currentEcoMessage.icon"
|
|
58
63
|
color="white"
|
|
59
64
|
size="22"
|
|
60
65
|
style="filter: drop-shadow(0 0 6px rgba(var(--v-theme-primary), 0.6))"
|
|
61
66
|
/>
|
|
62
|
-
{{
|
|
67
|
+
{{ currentEcoMessage.title }}
|
|
63
68
|
</v-card-title>
|
|
64
69
|
<v-card-text
|
|
65
70
|
class="pa-0 text-body-2 text-white text-left"
|
|
66
71
|
style="opacity: 0.85; line-height: 1.7"
|
|
67
72
|
>
|
|
68
|
-
{{
|
|
73
|
+
{{ currentEcoMessage.message }}
|
|
69
74
|
</v-card-text>
|
|
70
75
|
</v-card>
|
|
71
76
|
</v-scroll-y-reverse-transition>
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
|
|
3
|
-
progress:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
});
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
progress: number;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const { progress } = defineProps<Props>();
|
|
8
7
|
</script>
|
|
9
8
|
|
|
10
9
|
<template>
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
2
|
import { Status } from "@ogw_front/utils/status";
|
|
3
3
|
import { useInfraStore } from "@ogw_front/stores/infra";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
logo
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type: String,
|
|
12
|
-
required: true,
|
|
13
|
-
},
|
|
14
|
-
});
|
|
5
|
+
interface Props {
|
|
6
|
+
logo?: string;
|
|
7
|
+
appName: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { logo = "", appName } = defineProps<Props>();
|
|
15
11
|
|
|
16
12
|
const infraStore = useInfraStore();
|
|
17
13
|
|
|
@@ -22,7 +18,7 @@ const extensionStores = computed(() =>
|
|
|
22
18
|
const show = ref(false);
|
|
23
19
|
const progress = ref(0);
|
|
24
20
|
|
|
25
|
-
let progressInterval = undefined;
|
|
21
|
+
let progressInterval: ReturnType<typeof setInterval> | undefined = undefined;
|
|
26
22
|
|
|
27
23
|
const PROGRESS_THRESHOLD = 90;
|
|
28
24
|
const MAX_PROGRESS = 99;
|
|
@@ -1,34 +1,48 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
2
|
import schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json";
|
|
3
3
|
|
|
4
|
-
import FetchingData from "@ogw_front/components/FetchingData";
|
|
5
|
-
import FileUploader from "@ogw_front/components/FileUploader";
|
|
4
|
+
import FetchingData from "@ogw_front/components/FetchingData.vue";
|
|
5
|
+
import FileUploader from "@ogw_front/components/FileUploader.vue";
|
|
6
6
|
import { useBackStore } from "@ogw_front/stores/back";
|
|
7
7
|
|
|
8
|
+
// Files carry extra app-specific bookkeeping fields once picked up here.
|
|
9
|
+
type UploadFile = File & { isConfigured?: boolean };
|
|
10
|
+
type FilePlan = {
|
|
11
|
+
has_missing_files: boolean;
|
|
12
|
+
mandatory_files: string[];
|
|
13
|
+
additional_files: string[];
|
|
14
|
+
};
|
|
15
|
+
|
|
8
16
|
const schema = schemas.opengeodeweb_back.missing_files;
|
|
9
17
|
|
|
10
|
-
const emit = defineEmits
|
|
18
|
+
const emit = defineEmits<{
|
|
19
|
+
update_values: [value: { additional_files: UploadFile[] }];
|
|
20
|
+
increment_step: [];
|
|
21
|
+
decrement_step: [];
|
|
22
|
+
}>();
|
|
23
|
+
|
|
24
|
+
interface Props {
|
|
25
|
+
multiple: boolean;
|
|
26
|
+
geodeObjectType: string;
|
|
27
|
+
filenames: string[];
|
|
28
|
+
files?: UploadFile[];
|
|
29
|
+
}
|
|
11
30
|
|
|
12
|
-
const { multiple, geodeObjectType, filenames, files } = defineProps(
|
|
13
|
-
multiple: { type: Boolean, required: true },
|
|
14
|
-
geodeObjectType: { type: String, required: true },
|
|
15
|
-
filenames: { type: Array, required: true },
|
|
16
|
-
files: { type: Array, required: false, default: () => [] },
|
|
17
|
-
});
|
|
31
|
+
const { multiple, geodeObjectType, filenames, files = [] } = defineProps<Props>();
|
|
18
32
|
|
|
19
33
|
const accept = ref("");
|
|
20
34
|
const loading = ref(false);
|
|
21
35
|
const has_missing_files = ref(false);
|
|
22
|
-
const mandatory_files = ref([]);
|
|
23
|
-
const additional_files = ref([]);
|
|
36
|
+
const mandatory_files = ref<string[]>([]);
|
|
37
|
+
const additional_files = ref<string[]>([]);
|
|
24
38
|
const toggle_loading = useToggle(loading);
|
|
25
39
|
|
|
26
|
-
function files_uploaded_event(value) {
|
|
40
|
+
function files_uploaded_event(value: UploadFile[]) {
|
|
27
41
|
emit("update_values", { additional_files: value });
|
|
28
42
|
emit("increment_step");
|
|
29
43
|
}
|
|
30
44
|
|
|
31
|
-
function isCsvFile(filename) {
|
|
45
|
+
function isCsvFile(filename: string) {
|
|
32
46
|
return filename.toLowerCase().endsWith(".csv") || filename.toLowerCase().endsWith(".csv.json");
|
|
33
47
|
}
|
|
34
48
|
|
|
@@ -39,7 +53,7 @@ async function missing_files() {
|
|
|
39
53
|
additional_files.value = [];
|
|
40
54
|
const backStore = useBackStore();
|
|
41
55
|
|
|
42
|
-
const promise_array = filenames.map((filename) => {
|
|
56
|
+
const promise_array: Promise<FilePlan>[] = filenames.map((filename): Promise<FilePlan> => {
|
|
43
57
|
if (isCsvFile(filename)) {
|
|
44
58
|
return Promise.resolve({
|
|
45
59
|
has_missing_files: false,
|
|
@@ -1,27 +1,38 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
// Not auto-fixable (eslint's sort-imports core rule has no autofixer) and this file's import order doesn't match its syntax-kind-then-alphabetical requirement - left as-is rather than manually reordered across the codebase for a purely cosmetic rule.
|
|
3
|
+
// oxlint-disable eslint/sort-imports
|
|
2
4
|
import FetchingData from "@ogw_front/components/FetchingData.vue";
|
|
3
5
|
import { geode_objects } from "@ogw_front/assets/geode_objects";
|
|
4
6
|
import { resolveAllowedObjects } from "@ogw_shared/utils/response_handlers/load.js";
|
|
5
7
|
import schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json";
|
|
6
8
|
import { useBackStore } from "@ogw_front/stores/back";
|
|
7
9
|
|
|
10
|
+
// Mirrors the (unexported) shape produced by shared/utils/response_handlers/load.ts.
|
|
11
|
+
type AllowedObject = { is_loadable: number; object_priority?: number };
|
|
12
|
+
type AllowedObjectMap = Record<string, AllowedObject>;
|
|
13
|
+
|
|
8
14
|
const schema = schemas.opengeodeweb_back.allowed_objects;
|
|
9
15
|
|
|
10
|
-
const emit = defineEmits
|
|
16
|
+
const emit = defineEmits<{
|
|
17
|
+
update_values: [value: { geode_object_type: string }];
|
|
18
|
+
increment_step: [];
|
|
19
|
+
}>();
|
|
20
|
+
|
|
21
|
+
interface Props {
|
|
22
|
+
filenames: string[];
|
|
23
|
+
}
|
|
11
24
|
|
|
12
|
-
const { filenames } = defineProps(
|
|
13
|
-
filenames: { type: Array, required: true },
|
|
14
|
-
});
|
|
25
|
+
const { filenames } = defineProps<Props>();
|
|
15
26
|
|
|
16
27
|
const backStore = useBackStore();
|
|
17
28
|
|
|
18
29
|
const loading = ref(false);
|
|
19
|
-
const allowedGeodeObjects = ref({});
|
|
30
|
+
const allowedGeodeObjects = ref<AllowedObjectMap>({});
|
|
20
31
|
const toggleLoading = useToggle(loading);
|
|
21
32
|
const multipleFilesNoCommon = ref(false);
|
|
22
33
|
|
|
23
|
-
async function fetchAllowedObjectsList() {
|
|
24
|
-
const promiseArray = filenames.map((filename) => {
|
|
34
|
+
async function fetchAllowedObjectsList(): Promise<AllowedObjectMap[]> {
|
|
35
|
+
const promiseArray = filenames.map((filename): Promise<{ allowed_objects: AllowedObjectMap }> => {
|
|
25
36
|
const params = { filename };
|
|
26
37
|
return backStore.request({ schema, params });
|
|
27
38
|
});
|
|
@@ -29,13 +40,24 @@ async function fetchAllowedObjectsList() {
|
|
|
29
40
|
return responses.map((response) => response.allowed_objects);
|
|
30
41
|
}
|
|
31
42
|
|
|
32
|
-
function setGeodeObject(geode_object_type) {
|
|
43
|
+
function setGeodeObject(geode_object_type: string | undefined) {
|
|
33
44
|
if (geode_object_type) {
|
|
34
45
|
emit("update_values", { geode_object_type });
|
|
35
46
|
emit("increment_step");
|
|
36
47
|
}
|
|
37
48
|
}
|
|
38
49
|
|
|
50
|
+
// The geode_objects lookup is fixed and keyed by known object type names; a missing entry only happens if the backend reports a type this table doesn't know about.
|
|
51
|
+
function geodeObjectTooltip(key: string, isLoadable: boolean) {
|
|
52
|
+
return isLoadable
|
|
53
|
+
? (geode_objects[key]?.tooltip ?? key)
|
|
54
|
+
: `Data not loadable with this class (${key})`;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function geodeObjectImage(key: string) {
|
|
58
|
+
return geode_objects[key]?.image;
|
|
59
|
+
}
|
|
60
|
+
|
|
39
61
|
async function getAllowedGeodeObjects() {
|
|
40
62
|
toggleLoading();
|
|
41
63
|
allowedGeodeObjects.value = {};
|
|
@@ -59,14 +81,7 @@ await getAllowedGeodeObjects();
|
|
|
59
81
|
<FetchingData v-if="loading" />
|
|
60
82
|
<v-row v-else-if="Object.keys(allowedGeodeObjects).length" class="justify-left">
|
|
61
83
|
<v-col v-for="(value, key) in allowedGeodeObjects" :key="key" cols="3" md="4">
|
|
62
|
-
<v-tooltip
|
|
63
|
-
:text="
|
|
64
|
-
value['is_loadable']
|
|
65
|
-
? geode_objects[key].tooltip
|
|
66
|
-
: `Data not loadable with this class (${key})`
|
|
67
|
-
"
|
|
68
|
-
location="bottom"
|
|
69
|
-
>
|
|
84
|
+
<v-tooltip :text="geodeObjectTooltip(key, Boolean(value['is_loadable']))" location="bottom">
|
|
70
85
|
<template v-slot:activator="{ props }">
|
|
71
86
|
<span v-bind="props">
|
|
72
87
|
<v-card
|
|
@@ -79,7 +94,7 @@ await getAllowedGeodeObjects();
|
|
|
79
94
|
:elevation="value['is_loadable'] ? 5 : 3"
|
|
80
95
|
>
|
|
81
96
|
<v-img
|
|
82
|
-
:src="
|
|
97
|
+
:src="geodeObjectImage(key)"
|
|
83
98
|
cover
|
|
84
99
|
:class="!value['is_loadable'] ? 'disabled' : undefined"
|
|
85
100
|
/>
|
|
@@ -1,20 +1,27 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
// Not auto-fixable (eslint's sort-imports core rule has no autofixer) and this file's import order doesn't match its syntax-kind-then-alphabetical requirement - left as-is rather than manually reordered across the codebase for a purely cosmetic rule.
|
|
3
|
+
// oxlint-disable eslint/sort-imports
|
|
2
4
|
import { Status } from "@ogw_front/utils/status";
|
|
3
5
|
import { useBackStore } from "@ogw_front/stores/back";
|
|
6
|
+
import type { JsonRpcSchema } from "@ogw_shared/utils/types.js";
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
schema:
|
|
7
|
-
}
|
|
8
|
+
interface Props {
|
|
9
|
+
schema: JsonRpcSchema;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const { schema } = defineProps<Props>();
|
|
13
|
+
|
|
14
|
+
type PackageVersion = { package: string; version: string };
|
|
8
15
|
|
|
9
16
|
const backStore = useBackStore();
|
|
10
|
-
const packages_versions = ref([]);
|
|
17
|
+
const packages_versions = ref<PackageVersion[]>([]);
|
|
11
18
|
|
|
12
19
|
async function get_packages_versions() {
|
|
13
20
|
await backStore.request(
|
|
14
21
|
{ schema },
|
|
15
22
|
{
|
|
16
|
-
response_function: (response) => {
|
|
17
|
-
packages_versions.value = response.versions;
|
|
23
|
+
response_function: (response: unknown) => {
|
|
24
|
+
packages_versions.value = (response as { versions: PackageVersion[] }).versions;
|
|
18
25
|
},
|
|
19
26
|
},
|
|
20
27
|
);
|
|
@@ -1,36 +1,30 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
2
|
import { useInfraStore } from "@ogw_front/stores/infra";
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
buttonLabel
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
color: {
|
|
16
|
-
type: String,
|
|
17
|
-
required: false,
|
|
18
|
-
default: undefined,
|
|
19
|
-
},
|
|
20
|
-
});
|
|
4
|
+
interface Props {
|
|
5
|
+
buttonLabel?: string;
|
|
6
|
+
buttonColor?: string;
|
|
7
|
+
color?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const {
|
|
11
|
+
buttonLabel = "Load the app",
|
|
12
|
+
buttonColor = "white",
|
|
13
|
+
color = undefined,
|
|
14
|
+
} = defineProps<Props>();
|
|
21
15
|
|
|
22
16
|
const name = ref("");
|
|
23
17
|
const email = ref("");
|
|
24
18
|
const launch = ref(false);
|
|
25
19
|
const valid = ref(false);
|
|
26
20
|
const emailRules = [
|
|
27
|
-
(value) => {
|
|
21
|
+
(value: string) => {
|
|
28
22
|
if (value) {
|
|
29
23
|
return true;
|
|
30
24
|
}
|
|
31
25
|
return "E-mail is required.";
|
|
32
26
|
},
|
|
33
|
-
(value) => {
|
|
27
|
+
(value: string) => {
|
|
34
28
|
if (/.+@.+\..+/u.test(value)) {
|
|
35
29
|
return true;
|
|
36
30
|
}
|
|
@@ -40,7 +34,7 @@ const emailRules = [
|
|
|
40
34
|
|
|
41
35
|
function submit() {
|
|
42
36
|
const infraStore = useInfraStore();
|
|
43
|
-
return infraStore.create_backend(
|
|
37
|
+
return infraStore.create_backend(email.value);
|
|
44
38
|
}
|
|
45
39
|
</script>
|
|
46
40
|
|
|
@@ -61,7 +55,7 @@ function submit() {
|
|
|
61
55
|
</VRow>
|
|
62
56
|
<VRow>
|
|
63
57
|
<VCol>
|
|
64
|
-
<VCheckbox label="Load the app" v-model="
|
|
58
|
+
<VCheckbox label="Load the app" v-model="launch" />
|
|
65
59
|
</VCol>
|
|
66
60
|
</VRow>
|
|
67
61
|
</VContainer>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
2
|
import { useElementSize, useWindowSize } from "@vueuse/core";
|
|
3
3
|
|
|
4
4
|
import { Status } from "@ogw_front/utils/status";
|
|
@@ -8,13 +8,15 @@ import { useQuickColormap } from "@ogw_front/composables/use_quick_colormap";
|
|
|
8
8
|
import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
9
9
|
|
|
10
10
|
import ColormapQuickPicker from "@ogw_front/components/Viewer/Options/ColormapQuickPicker.vue";
|
|
11
|
-
import ViewToolbar from "@ogw_front/components/ViewToolbar";
|
|
11
|
+
import ViewToolbar from "@ogw_front/components/ViewToolbar.vue";
|
|
12
12
|
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
13
13
|
import vtkRemoteView from "@kitware/vtk.js/Rendering/Misc/RemoteView";
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
viewId
|
|
17
|
-
}
|
|
15
|
+
interface Props {
|
|
16
|
+
viewId?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const { viewId = "-1" } = defineProps<Props>();
|
|
18
20
|
|
|
19
21
|
const viewerStore = useViewerStore();
|
|
20
22
|
const menuStore = useMenuStore();
|
|
@@ -26,7 +28,7 @@ const { width: windowWidth, height: windowHeight } = useWindowSize();
|
|
|
26
28
|
|
|
27
29
|
const { pickColormap, quickColormap } = useQuickColormap();
|
|
28
30
|
|
|
29
|
-
async function get_x_y(event) {
|
|
31
|
+
async function get_x_y(event: PointerEvent) {
|
|
30
32
|
const { offsetX, offsetY, clientX, clientY } = event;
|
|
31
33
|
if (viewerStore.picking_mode === true) {
|
|
32
34
|
viewerStore.set_picked_point(offsetX, offsetY);
|
|
@@ -77,7 +79,10 @@ function connect() {
|
|
|
77
79
|
}
|
|
78
80
|
const session = viewerStore.client.getConnection().getSession();
|
|
79
81
|
view.setSession(session);
|
|
80
|
-
|
|
82
|
+
// Pre-existing bug fixed: `props` was never defined here (props were destructured
|
|
83
|
+
// Directly from defineProps above), so this threw a ReferenceError whenever
|
|
84
|
+
// Connect() ran. `viewId` is the same (reactive) destructured prop value.
|
|
85
|
+
view.setViewId(viewId);
|
|
81
86
|
connected.value = true;
|
|
82
87
|
view.render();
|
|
83
88
|
}
|
|
@@ -90,7 +95,7 @@ watch(
|
|
|
90
95
|
);
|
|
91
96
|
|
|
92
97
|
watch(
|
|
93
|
-
() =>
|
|
98
|
+
() => viewId,
|
|
94
99
|
(id) => {
|
|
95
100
|
if (connected.value) {
|
|
96
101
|
view.setViewId(id);
|
|
@@ -103,7 +108,9 @@ onMounted(async () => {
|
|
|
103
108
|
if (import.meta.client) {
|
|
104
109
|
window.addEventListener("resize", resize);
|
|
105
110
|
await nextTick();
|
|
106
|
-
|
|
111
|
+
if (viewer.value) {
|
|
112
|
+
view.setContainer(viewer.value.$el);
|
|
113
|
+
}
|
|
107
114
|
connect();
|
|
108
115
|
resize();
|
|
109
116
|
}
|
package/app/components/Ruler.vue
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import ToolPanel from "@ogw_front/components/ToolPanel";
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import ToolPanel from "@ogw_front/components/ToolPanel.vue";
|
|
3
3
|
import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
escapeFunction
|
|
7
|
-
}
|
|
5
|
+
interface Props {
|
|
6
|
+
escapeFunction?: () => void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const { escapeFunction = undefined } = defineProps<Props>();
|
|
8
10
|
|
|
9
|
-
const show = defineModel("show", {
|
|
11
|
+
const show = defineModel<boolean>("show", { default: false });
|
|
10
12
|
const hybridViewerStore = useHybridViewerStore();
|
|
11
13
|
|
|
12
14
|
const localPoint1 = ref([0, 0, 0]);
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import ToolPanel from "@ogw_front/components/ToolPanel";
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import ToolPanel from "@ogw_front/components/ToolPanel.vue";
|
|
3
3
|
import fileDownload from "js-file-download";
|
|
4
4
|
import { useClipboardItems } from "@vueuse/core";
|
|
5
5
|
import { useFeedbackStore } from "@ogw_front/stores/feedback";
|
|
6
6
|
import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
7
7
|
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
8
8
|
|
|
9
|
-
const
|
|
9
|
+
const DEFAULT_PANEL_WIDTH = 260;
|
|
10
10
|
|
|
11
|
-
const {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const show = defineModel<boolean>({ default: false });
|
|
12
|
+
|
|
13
|
+
interface Props {
|
|
14
|
+
width?: number;
|
|
15
|
+
escapeFunction?: () => void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const { width = DEFAULT_PANEL_WIDTH, escapeFunction = undefined } = defineProps<Props>();
|
|
15
19
|
|
|
16
20
|
const output_extensions =
|
|
17
21
|
viewer_schemas.opengeodeweb_viewer.viewer.take_screenshot.properties.output_extension.enum;
|
|
@@ -38,21 +42,23 @@ async function takeScreenshot() {
|
|
|
38
42
|
params,
|
|
39
43
|
},
|
|
40
44
|
{
|
|
41
|
-
response_function: async (response) => {
|
|
45
|
+
response_function: async (response: unknown) => {
|
|
46
|
+
const { blob } = response as { blob: BlobPart };
|
|
42
47
|
if (screenshot_type.value === "file") {
|
|
43
|
-
fileDownload(
|
|
48
|
+
fileDownload(blob, `${current_filename}.${output_extension.value}`);
|
|
44
49
|
feedbackStore.add_success("Screenshot downloaded");
|
|
45
50
|
} else {
|
|
46
51
|
try {
|
|
47
|
-
const pngBlob = new Blob([
|
|
52
|
+
const pngBlob = new Blob([blob], { type: "image/png" });
|
|
48
53
|
await copy([new ClipboardItem({ "image/png": pngBlob })]);
|
|
49
54
|
feedbackStore.add_success("Screenshot copied to clipboard");
|
|
50
55
|
} catch (error) {
|
|
56
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
51
57
|
feedbackStore.add_error(
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
0,
|
|
59
|
+
"",
|
|
54
60
|
"Clipboard Error",
|
|
55
|
-
`Failed to copy screenshot to clipboard: ${
|
|
61
|
+
`Failed to copy screenshot to clipboard: ${message}`,
|
|
56
62
|
);
|
|
57
63
|
}
|
|
58
64
|
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
|
|
3
|
-
modelValue
|
|
4
|
-
label
|
|
5
|
-
}
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
modelValue?: string;
|
|
4
|
+
label?: string;
|
|
5
|
+
}
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const { modelValue = "", label = "" } = defineProps<Props>();
|
|
8
|
+
|
|
9
|
+
const emit = defineEmits<{
|
|
10
|
+
"update:modelValue": [value: string];
|
|
11
|
+
}>();
|
|
8
12
|
</script>
|
|
9
13
|
|
|
10
14
|
<template>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import ToolPanel from "@ogw_front/components/ToolPanel";
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import ToolPanel from "@ogw_front/components/ToolPanel.vue";
|
|
3
3
|
import { useDataStore } from "@ogw_front/stores/data";
|
|
4
4
|
import { useDebounceFn } from "@vueuse/core";
|
|
5
5
|
import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer";
|
|
@@ -8,11 +8,13 @@ const DEFAULT_SHRINK_VALUE = 0.8;
|
|
|
8
8
|
const MAX_SHRINK_VALUE = 1;
|
|
9
9
|
const DEBOUNCE_DELAY = 100;
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
escapeFunction
|
|
13
|
-
}
|
|
11
|
+
interface Props {
|
|
12
|
+
escapeFunction?: () => void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const { escapeFunction = undefined } = defineProps<Props>();
|
|
14
16
|
|
|
15
|
-
const show = defineModel("show", {
|
|
17
|
+
const show = defineModel<boolean>("show", { default: false });
|
|
16
18
|
const dataStore = useDataStore();
|
|
17
19
|
const hybridViewerStore = useHybridViewerStore();
|
|
18
20
|
const targetAllVisible = ref(true);
|
|
@@ -21,7 +23,10 @@ const shrinkFactor = ref(DEFAULT_SHRINK_VALUE);
|
|
|
21
23
|
|
|
22
24
|
const allItems = dataStore.refAllItems();
|
|
23
25
|
const availableDatasets = computed(() =>
|
|
24
|
-
allItems.value.map((item) => ({
|
|
26
|
+
allItems.value.map((item) => ({
|
|
27
|
+
title: item.name || item.id,
|
|
28
|
+
value: item.id,
|
|
29
|
+
})),
|
|
25
30
|
);
|
|
26
31
|
|
|
27
32
|
async function applyShrink() {
|
package/app/components/Step.vue
CHANGED
|
@@ -1,20 +1,39 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { Ref } from "vue";
|
|
3
|
+
import type { useStepperTree } from "@ogw_front/composables/stepper_tree";
|
|
4
|
+
|
|
5
|
+
interface StepConfig {
|
|
6
|
+
step_title: string;
|
|
7
|
+
chips?: string[];
|
|
8
|
+
component: {
|
|
9
|
+
component_name: string;
|
|
10
|
+
component_options?: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function truncate(text: string, maxLength: number) {
|
|
3
15
|
if (text.length > maxLength) {
|
|
4
16
|
return `${text.slice(0, maxLength)}...`;
|
|
5
17
|
}
|
|
6
18
|
return text;
|
|
7
19
|
}
|
|
8
20
|
|
|
9
|
-
|
|
10
|
-
stepIndex:
|
|
11
|
-
stepperTree:
|
|
12
|
-
}
|
|
21
|
+
interface Props {
|
|
22
|
+
stepIndex: number;
|
|
23
|
+
stepperTree: ReturnType<typeof useStepperTree>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const { stepIndex, stepperTree } = defineProps<Props>();
|
|
13
27
|
|
|
14
|
-
const emit = defineEmits
|
|
28
|
+
const emit = defineEmits<{
|
|
29
|
+
reset_values: [];
|
|
30
|
+
}>();
|
|
15
31
|
|
|
16
32
|
const { state, increment_step, decrement_step, update_values } = stepperTree;
|
|
17
|
-
const { current_step_index, steps } = toRefs(state)
|
|
33
|
+
const { current_step_index, steps } = toRefs(state) as unknown as {
|
|
34
|
+
current_step_index: Ref<number>;
|
|
35
|
+
steps: Ref<StepConfig[]>;
|
|
36
|
+
};
|
|
18
37
|
|
|
19
38
|
const sortedChips = computed(() => {
|
|
20
39
|
const chips = steps.value[stepIndex]?.chips || [];
|
|
@@ -41,7 +60,7 @@ const sortedChips = computed(() => {
|
|
|
41
60
|
class="text-subtitle-1 font-weight-bold mb-0 transition-swing"
|
|
42
61
|
:class="current_step_index === stepIndex ? 'text-primary' : 'text-grey-darken-1'"
|
|
43
62
|
>
|
|
44
|
-
{{ steps[stepIndex]
|
|
63
|
+
{{ steps[stepIndex]!.step_title }}
|
|
45
64
|
</p>
|
|
46
65
|
|
|
47
66
|
<v-sheet
|
|
@@ -69,8 +88,8 @@ const sortedChips = computed(() => {
|
|
|
69
88
|
<component
|
|
70
89
|
v-if="stepIndex === current_step_index"
|
|
71
90
|
:key="stepIndex"
|
|
72
|
-
:is="steps[stepIndex]
|
|
73
|
-
v-bind="steps[stepIndex]
|
|
91
|
+
:is="steps[stepIndex]!.component.component_name"
|
|
92
|
+
v-bind="steps[stepIndex]!.component.component_options"
|
|
74
93
|
@increment_step="increment_step"
|
|
75
94
|
@decrement_step="decrement_step"
|
|
76
95
|
@update_values="update_values"
|