@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,13 +1,13 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import ActionButton from "@ogw_front/components/ActionButton";
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import ActionButton from "@ogw_front/components/ActionButton.vue";
|
|
3
3
|
import CameraBookmarkIcon from "@ogw_front/assets/viewer_svgs/camera-bookmark.svg";
|
|
4
|
-
import CameraManager from "@ogw_front/components/CameraManager";
|
|
5
|
-
import CameraOrientation from "@ogw_front/components/CameraOrientation";
|
|
6
|
-
import ClippingPlanes from "@ogw_front/components/ClippingPlanes";
|
|
7
|
-
import Ruler from "@ogw_front/components/Ruler";
|
|
8
|
-
import Screenshot from "@ogw_front/components/Screenshot";
|
|
9
|
-
import ShrinkFilter from "@ogw_front/components/ShrinkFilter";
|
|
10
|
-
import ZScaling from "@ogw_front/components/ZScaling";
|
|
4
|
+
import CameraManager from "@ogw_front/components/CameraManager.vue";
|
|
5
|
+
import CameraOrientation from "@ogw_front/components/CameraOrientation.vue";
|
|
6
|
+
import ClippingPlanes from "@ogw_front/components/ClippingPlanes.vue";
|
|
7
|
+
import Ruler from "@ogw_front/components/Ruler.vue";
|
|
8
|
+
import Screenshot from "@ogw_front/components/Screenshot.vue";
|
|
9
|
+
import ShrinkFilter from "@ogw_front/components/ShrinkFilter.vue";
|
|
10
|
+
import ZScaling from "@ogw_front/components/ZScaling.vue";
|
|
11
11
|
import { onKeyStroke } from "@vueuse/core";
|
|
12
12
|
import schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
13
13
|
import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer";
|
|
@@ -15,16 +15,27 @@ import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
|
15
15
|
|
|
16
16
|
const hybridViewerStore = useHybridViewerStore();
|
|
17
17
|
const viewerStore = useViewerStore();
|
|
18
|
-
const showScreenshot = ref(false);
|
|
19
|
-
const showCameraManager = ref(false);
|
|
20
|
-
const showCameraOrientation = ref(false);
|
|
21
|
-
const showZScaling = ref(false);
|
|
22
|
-
const showClippingPlanes = ref(false);
|
|
23
|
-
const showShrinkFilter = ref(false);
|
|
24
|
-
const showRuler = ref(false);
|
|
25
|
-
const gridScale = ref(false);
|
|
26
|
-
const zScale = ref(hybridViewerStore.zScale);
|
|
27
|
-
const openSubMenus = ref({});
|
|
18
|
+
const showScreenshot = ref<boolean>(false);
|
|
19
|
+
const showCameraManager = ref<boolean>(false);
|
|
20
|
+
const showCameraOrientation = ref<boolean>(false);
|
|
21
|
+
const showZScaling = ref<boolean>(false);
|
|
22
|
+
const showClippingPlanes = ref<boolean>(false);
|
|
23
|
+
const showShrinkFilter = ref<boolean>(false);
|
|
24
|
+
const showRuler = ref<boolean>(false);
|
|
25
|
+
const gridScale = ref<boolean>(false);
|
|
26
|
+
const zScale = ref<number>(hybridViewerStore.zScale);
|
|
27
|
+
const openSubMenus = ref<Record<string, boolean>>({});
|
|
28
|
+
|
|
29
|
+
interface CameraOptionAction {
|
|
30
|
+
title?: string;
|
|
31
|
+
testId: string;
|
|
32
|
+
tooltip?: string;
|
|
33
|
+
icon: string;
|
|
34
|
+
iconSize?: number;
|
|
35
|
+
color?: string;
|
|
36
|
+
action?: () => void;
|
|
37
|
+
menu?: CameraOptionAction[];
|
|
38
|
+
}
|
|
28
39
|
|
|
29
40
|
watch(
|
|
30
41
|
() => hybridViewerStore.zScale,
|
|
@@ -33,7 +44,7 @@ watch(
|
|
|
33
44
|
},
|
|
34
45
|
);
|
|
35
46
|
|
|
36
|
-
async function handleZScalingClose() {
|
|
47
|
+
async function handleZScalingClose(): Promise<void> {
|
|
37
48
|
await hybridViewerStore.setZScaling(zScale.value);
|
|
38
49
|
showZScaling.value = false;
|
|
39
50
|
}
|
|
@@ -47,7 +58,7 @@ onKeyStroke("Escape", () => {
|
|
|
47
58
|
}
|
|
48
59
|
});
|
|
49
60
|
|
|
50
|
-
function closeAllToolsExcept(toolRef) {
|
|
61
|
+
function closeAllToolsExcept(toolRef: Ref<boolean>): void {
|
|
51
62
|
const tools = [
|
|
52
63
|
showCameraOrientation,
|
|
53
64
|
showCameraManager,
|
|
@@ -64,17 +75,17 @@ function closeAllToolsExcept(toolRef) {
|
|
|
64
75
|
}
|
|
65
76
|
}
|
|
66
77
|
|
|
67
|
-
function toggleTool(toolRef) {
|
|
78
|
+
function toggleTool(toolRef: Ref<boolean>): void {
|
|
68
79
|
closeAllToolsExcept(toolRef);
|
|
69
80
|
toolRef.value = !toolRef.value;
|
|
70
81
|
}
|
|
71
82
|
|
|
72
|
-
const camera_options = computed(() => [
|
|
83
|
+
const camera_options = computed<CameraOptionAction[]>(() => [
|
|
73
84
|
{
|
|
74
85
|
testId: "resetCameraButton",
|
|
75
86
|
tooltip: "Reset camera",
|
|
76
87
|
icon: "mdi-cube-scan",
|
|
77
|
-
action: () => {
|
|
88
|
+
action: (): void => {
|
|
78
89
|
hybridViewerStore.resetCamera();
|
|
79
90
|
},
|
|
80
91
|
},
|
|
@@ -83,7 +94,7 @@ const camera_options = computed(() => [
|
|
|
83
94
|
tooltip: "Center on click",
|
|
84
95
|
icon: "mdi-crosshairs-question",
|
|
85
96
|
color: hybridViewerStore.is_picking ? "primary" : undefined,
|
|
86
|
-
action: () => {
|
|
97
|
+
action: (): void => {
|
|
87
98
|
hybridViewerStore.is_picking = !hybridViewerStore.is_picking;
|
|
88
99
|
},
|
|
89
100
|
},
|
|
@@ -93,7 +104,7 @@ const camera_options = computed(() => [
|
|
|
93
104
|
icon: "mdi-cursor-default-click",
|
|
94
105
|
color: hybridViewerStore.is_hover_highlight ? "primary" : undefined,
|
|
95
106
|
action: hybridViewerStore.is_hover_highlight
|
|
96
|
-
? () => {
|
|
107
|
+
? (): void => {
|
|
97
108
|
hybridViewerStore.is_hover_highlight = false;
|
|
98
109
|
hybridViewerStore.clearHoverHighlight();
|
|
99
110
|
}
|
|
@@ -103,7 +114,7 @@ const camera_options = computed(() => [
|
|
|
103
114
|
title: "Cells",
|
|
104
115
|
testId: "highlightOnHoverCellsButton",
|
|
105
116
|
icon: "mdi-select-all",
|
|
106
|
-
action: () => {
|
|
117
|
+
action: (): void => {
|
|
107
118
|
if (
|
|
108
119
|
hybridViewerStore.is_hover_highlight &&
|
|
109
120
|
hybridViewerStore.hover_highlight_field_type === "CELL"
|
|
@@ -120,7 +131,7 @@ const camera_options = computed(() => [
|
|
|
120
131
|
title: "Points",
|
|
121
132
|
testId: "highlightOnHoverPointsButton",
|
|
122
133
|
icon: "mdi-select-drag",
|
|
123
|
-
action: () => {
|
|
134
|
+
action: (): void => {
|
|
124
135
|
if (
|
|
125
136
|
hybridViewerStore.is_hover_highlight &&
|
|
126
137
|
hybridViewerStore.hover_highlight_field_type === "POINT"
|
|
@@ -139,7 +150,7 @@ const camera_options = computed(() => [
|
|
|
139
150
|
testId: "cameraOrientationButton",
|
|
140
151
|
tooltip: "Camera orientation",
|
|
141
152
|
icon: "mdi-rotate-3d",
|
|
142
|
-
action: () => {
|
|
153
|
+
action: (): void => {
|
|
143
154
|
toggleTool(showCameraOrientation);
|
|
144
155
|
},
|
|
145
156
|
},
|
|
@@ -148,7 +159,7 @@ const camera_options = computed(() => [
|
|
|
148
159
|
tooltip: "Manage camera positions",
|
|
149
160
|
icon: CameraBookmarkIcon,
|
|
150
161
|
iconSize: 34,
|
|
151
|
-
action: () => {
|
|
162
|
+
action: (): void => {
|
|
152
163
|
toggleTool(showCameraManager);
|
|
153
164
|
},
|
|
154
165
|
},
|
|
@@ -156,7 +167,7 @@ const camera_options = computed(() => [
|
|
|
156
167
|
testId: "screenshotButton",
|
|
157
168
|
tooltip: "Take a screenshot",
|
|
158
169
|
icon: "mdi-camera",
|
|
159
|
-
action: () => {
|
|
170
|
+
action: (): void => {
|
|
160
171
|
toggleTool(showScreenshot);
|
|
161
172
|
},
|
|
162
173
|
},
|
|
@@ -165,7 +176,7 @@ const camera_options = computed(() => [
|
|
|
165
176
|
tooltip: "Toggle grid scale",
|
|
166
177
|
icon: "mdi-ruler-square",
|
|
167
178
|
color: gridScale.value ? "primary" : undefined,
|
|
168
|
-
action: () => {
|
|
179
|
+
action: (): void => {
|
|
169
180
|
const schema = schemas.opengeodeweb_viewer.viewer.grid_scale;
|
|
170
181
|
const params = { visibility: !gridScale.value };
|
|
171
182
|
viewerStore.request(
|
|
@@ -186,7 +197,7 @@ const camera_options = computed(() => [
|
|
|
186
197
|
testId: "zScalingButton",
|
|
187
198
|
tooltip: "Z Scaling Control",
|
|
188
199
|
icon: "mdi-sort",
|
|
189
|
-
action: () => {
|
|
200
|
+
action: (): void => {
|
|
190
201
|
toggleTool(showZScaling);
|
|
191
202
|
},
|
|
192
203
|
},
|
|
@@ -195,7 +206,7 @@ const camera_options = computed(() => [
|
|
|
195
206
|
tooltip: "Clipping Planes",
|
|
196
207
|
icon: "mdi-content-cut",
|
|
197
208
|
color: showClippingPlanes.value ? "primary" : undefined,
|
|
198
|
-
action: () => {
|
|
209
|
+
action: (): void => {
|
|
199
210
|
toggleTool(showClippingPlanes);
|
|
200
211
|
},
|
|
201
212
|
},
|
|
@@ -204,7 +215,7 @@ const camera_options = computed(() => [
|
|
|
204
215
|
tooltip: "Shrink Filter",
|
|
205
216
|
icon: "mdi-arrow-collapse-all",
|
|
206
217
|
color: showShrinkFilter.value ? "primary" : undefined,
|
|
207
|
-
action: () => {
|
|
218
|
+
action: (): void => {
|
|
208
219
|
toggleTool(showShrinkFilter);
|
|
209
220
|
},
|
|
210
221
|
},
|
|
@@ -213,7 +224,7 @@ const camera_options = computed(() => [
|
|
|
213
224
|
tooltip: "Ruler",
|
|
214
225
|
icon: "mdi-ruler",
|
|
215
226
|
color: showRuler.value ? "primary" : undefined,
|
|
216
|
-
action: () => {
|
|
227
|
+
action: (): void => {
|
|
217
228
|
toggleTool(showRuler);
|
|
218
229
|
},
|
|
219
230
|
},
|
|
@@ -234,10 +245,8 @@ const camera_options = computed(() => [
|
|
|
234
245
|
<ActionButton
|
|
235
246
|
v-bind="props"
|
|
236
247
|
:data-testid="camera_option.testId"
|
|
237
|
-
:icon="
|
|
238
|
-
|
|
239
|
-
"
|
|
240
|
-
:tooltip="camera_option.tooltip"
|
|
248
|
+
:icon="camera_option.icon"
|
|
249
|
+
:tooltip="camera_option.tooltip ?? ''"
|
|
241
250
|
:color="camera_option.color"
|
|
242
251
|
:icon-size="camera_option.iconSize"
|
|
243
252
|
tooltip-location="left"
|
|
@@ -249,16 +258,16 @@ const camera_options = computed(() => [
|
|
|
249
258
|
<ActionButton
|
|
250
259
|
:data-testid="item.testId"
|
|
251
260
|
:icon="item.icon"
|
|
252
|
-
:tooltip="item.title"
|
|
261
|
+
:tooltip="item.title ?? ''"
|
|
253
262
|
:color="
|
|
254
263
|
hybridViewerStore.is_hover_highlight &&
|
|
255
264
|
hybridViewerStore.hover_highlight_field_type ===
|
|
256
|
-
item.title
|
|
265
|
+
item.title?.toUpperCase().slice(0, -1)
|
|
257
266
|
? 'primary'
|
|
258
267
|
: undefined
|
|
259
268
|
"
|
|
260
269
|
tooltip-location="top"
|
|
261
|
-
@click="item.action"
|
|
270
|
+
@click="item.action?.()"
|
|
262
271
|
/>
|
|
263
272
|
</v-col>
|
|
264
273
|
</v-row>
|
|
@@ -268,7 +277,7 @@ const camera_options = computed(() => [
|
|
|
268
277
|
v-else
|
|
269
278
|
:data-testid="camera_option.testId"
|
|
270
279
|
:icon="camera_option.icon"
|
|
271
|
-
:tooltip="camera_option.tooltip"
|
|
280
|
+
:tooltip="camera_option.tooltip ?? ''"
|
|
272
281
|
:color="camera_option.color"
|
|
273
282
|
:icon-size="camera_option.iconSize"
|
|
274
283
|
tooltip-location="left"
|
|
@@ -1,13 +1,20 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
2
|
import { useAdaptiveStyles } from "@ogw_front/composables/use_adaptive_styles";
|
|
3
3
|
import { useMenuStore } from "@ogw_front/stores/menu";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
isOverTreeview:
|
|
7
|
-
isOverToolbar
|
|
8
|
-
}
|
|
5
|
+
interface Props {
|
|
6
|
+
isOverTreeview: boolean;
|
|
7
|
+
isOverToolbar?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { isOverTreeview, isOverToolbar = false } = defineProps<Props>();
|
|
11
|
+
|
|
12
|
+
interface Emits {
|
|
13
|
+
drag: [event: MouseEvent];
|
|
14
|
+
click: [event: MouseEvent];
|
|
15
|
+
}
|
|
9
16
|
|
|
10
|
-
const emit = defineEmits(
|
|
17
|
+
const emit = defineEmits<Emits>();
|
|
11
18
|
|
|
12
19
|
const ADAPTIVE_BLUR_VAL = "15px";
|
|
13
20
|
const ADAPTIVE_OPACITY_VAL = 0.85;
|
|
@@ -46,14 +53,14 @@ let dragMoved = false;
|
|
|
46
53
|
let dragStartClientX = 0;
|
|
47
54
|
let dragStartClientY = 0;
|
|
48
55
|
|
|
49
|
-
function onMouseDown(event) {
|
|
56
|
+
function onMouseDown(event: MouseEvent): void {
|
|
50
57
|
dragMoved = false;
|
|
51
58
|
dragStartClientX = event.clientX;
|
|
52
59
|
dragStartClientY = event.clientY;
|
|
53
60
|
emit("drag", event);
|
|
54
61
|
}
|
|
55
62
|
|
|
56
|
-
function onMouseUp(event) {
|
|
63
|
+
function onMouseUp(event: MouseEvent): void {
|
|
57
64
|
const deltaX = event.clientX - dragStartClientX;
|
|
58
65
|
const deltaY = event.clientY - dragStartClientY;
|
|
59
66
|
if (Math.hypot(deltaX, deltaY) > dragThreshold) {
|
|
@@ -61,7 +68,7 @@ function onMouseUp(event) {
|
|
|
61
68
|
}
|
|
62
69
|
}
|
|
63
70
|
|
|
64
|
-
function onCenterClick(event) {
|
|
71
|
+
function onCenterClick(event: MouseEvent): void {
|
|
65
72
|
event.stopPropagation();
|
|
66
73
|
if (!dragMoved) {
|
|
67
74
|
emit("click", event);
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
<script setup>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { Component } from "vue";
|
|
2
3
|
import { useMenuStore } from "@ogw_front/stores/menu";
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
menuItems:
|
|
6
|
-
id:
|
|
7
|
-
metaData:
|
|
8
|
-
menuItemCount:
|
|
9
|
-
}
|
|
5
|
+
interface Props {
|
|
6
|
+
menuItems: Component[];
|
|
7
|
+
id: string;
|
|
8
|
+
metaData: Record<string, unknown>;
|
|
9
|
+
menuItemCount: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const { menuItems, id, metaData, menuItemCount } = defineProps<Props>();
|
|
10
13
|
|
|
11
14
|
const RADIUS = 80;
|
|
12
15
|
const Z_INDEX_ACTIVE_ITEM = 10;
|
|
@@ -19,7 +22,7 @@ const ANGLE_315 = 315;
|
|
|
19
22
|
|
|
20
23
|
const menuStore = useMenuStore();
|
|
21
24
|
|
|
22
|
-
function getItemStyle(index) {
|
|
25
|
+
function getItemStyle(index: number): Record<string, string> {
|
|
23
26
|
const angle = (index / menuItemCount) * 2 * Math.PI;
|
|
24
27
|
return {
|
|
25
28
|
transform: `translate(${Math.cos(angle) * RADIUS}px, ${Math.sin(angle) * RADIUS}px)`,
|
|
@@ -29,7 +32,7 @@ function getItemStyle(index) {
|
|
|
29
32
|
};
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
function getTooltipLocation(index) {
|
|
35
|
+
function getTooltipLocation(index: number): string {
|
|
33
36
|
const angle = (index / menuItemCount) * FULL_ANGLE;
|
|
34
37
|
if (angle < ANGLE_45 || angle >= ANGLE_315) {
|
|
35
38
|
return "right";
|
|
@@ -43,7 +46,7 @@ function getTooltipLocation(index) {
|
|
|
43
46
|
return "bottom";
|
|
44
47
|
}
|
|
45
48
|
|
|
46
|
-
function getTooltipOrigin(index) {
|
|
49
|
+
function getTooltipOrigin(index: number): string {
|
|
47
50
|
const angle = (index / menuItemCount) * FULL_ANGLE;
|
|
48
51
|
if (angle < ANGLE_45 || angle >= ANGLE_315) {
|
|
49
52
|
return "left";
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import CenterButton from "@ogw_front/components/Viewer/ContextMenu/CenterButton";
|
|
3
|
-
import CircularItems from "@ogw_front/components/Viewer/ContextMenu/CircularItems";
|
|
4
|
-
import
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import CenterButton from "@ogw_front/components/Viewer/ContextMenu/CenterButton.vue";
|
|
3
|
+
import CircularItems from "@ogw_front/components/Viewer/ContextMenu/CircularItems.vue";
|
|
4
|
+
import type { Component } from "vue";
|
|
5
|
+
import InfoCard from "@ogw_front/components/Viewer/ContextMenu/InfoCard.vue";
|
|
5
6
|
import { useEventListener } from "@vueuse/core";
|
|
6
7
|
import { useMenuStore } from "@ogw_front/stores/menu";
|
|
7
8
|
import { useTreeviewStore } from "@ogw_front/stores/treeview";
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
id:
|
|
11
|
-
x:
|
|
12
|
-
y:
|
|
13
|
-
containerWidth:
|
|
14
|
-
containerHeight:
|
|
15
|
-
}
|
|
10
|
+
interface Props {
|
|
11
|
+
id: string;
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
containerWidth: number;
|
|
15
|
+
containerHeight: number;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const { id, x, y, containerWidth, containerHeight } = defineProps<Props>();
|
|
16
19
|
|
|
17
20
|
const RADIUS = 80;
|
|
18
21
|
const MARGIN_OFFSET = 40;
|
|
@@ -28,15 +31,20 @@ const treeviewStore = useTreeviewStore();
|
|
|
28
31
|
|
|
29
32
|
const meta_data = computed(() => menuStore.current_meta_data || {});
|
|
30
33
|
|
|
31
|
-
const show_menu = ref(true);
|
|
32
|
-
const showName = ref(false);
|
|
33
|
-
const isDragging = ref(false);
|
|
34
|
-
const dragStartX = ref(0);
|
|
35
|
-
const dragStartY = ref(0);
|
|
36
|
-
const menuX = ref(x);
|
|
37
|
-
const menuY = ref(y);
|
|
34
|
+
const show_menu = ref<boolean>(true);
|
|
35
|
+
const showName = ref<boolean>(false);
|
|
36
|
+
const isDragging = ref<boolean>(false);
|
|
37
|
+
const dragStartX = ref<number>(0);
|
|
38
|
+
const dragStartY = ref<number>(0);
|
|
39
|
+
const menuX = ref<number>(x);
|
|
40
|
+
const menuY = ref<number>(y);
|
|
41
|
+
|
|
42
|
+
interface Position {
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
}
|
|
38
46
|
|
|
39
|
-
function clampPosition(posX, posY) {
|
|
47
|
+
function clampPosition(posX: number, posY: number): Position {
|
|
40
48
|
const margin = RADIUS + MARGIN_OFFSET;
|
|
41
49
|
return {
|
|
42
50
|
x: Math.min(Math.max(posX, margin), containerWidth - margin),
|
|
@@ -44,13 +52,13 @@ function clampPosition(posX, posY) {
|
|
|
44
52
|
};
|
|
45
53
|
}
|
|
46
54
|
|
|
47
|
-
function startDrag(event) {
|
|
55
|
+
function startDrag(event: MouseEvent): void {
|
|
48
56
|
isDragging.value = true;
|
|
49
57
|
dragStartX.value = event.clientX - menuX.value;
|
|
50
58
|
dragStartY.value = event.clientY - menuY.value;
|
|
51
59
|
}
|
|
52
60
|
|
|
53
|
-
function handleDrag(event) {
|
|
61
|
+
function handleDrag(event: MouseEvent): void {
|
|
54
62
|
const { x: clampedX, y: clampedY } = clampPosition(
|
|
55
63
|
event.clientX - dragStartX.value,
|
|
56
64
|
event.clientY - dragStartY.value,
|
|
@@ -60,7 +68,7 @@ function handleDrag(event) {
|
|
|
60
68
|
menuStore.setMenuPosition(clampedX, clampedY);
|
|
61
69
|
}
|
|
62
70
|
|
|
63
|
-
function stopDrag(event) {
|
|
71
|
+
function stopDrag(event: MouseEvent): void {
|
|
64
72
|
isDragging.value = false;
|
|
65
73
|
event.stopPropagation();
|
|
66
74
|
menuStore.setMenuPosition(menuX.value, menuY.value);
|
|
@@ -73,7 +81,7 @@ watch(show_menu, (newVal) => {
|
|
|
73
81
|
});
|
|
74
82
|
|
|
75
83
|
watch(
|
|
76
|
-
() => [x, y, containerWidth, containerHeight],
|
|
84
|
+
() => [x, y, containerWidth, containerHeight] as const,
|
|
77
85
|
([newX, newY]) => {
|
|
78
86
|
const { x: clampedX, y: clampedY } = clampPosition(newX, newY);
|
|
79
87
|
menuX.value = clampedX;
|
|
@@ -86,7 +94,7 @@ watch(
|
|
|
86
94
|
useEventListener(
|
|
87
95
|
globalThis,
|
|
88
96
|
"mousemove",
|
|
89
|
-
(event) => {
|
|
97
|
+
(event: MouseEvent) => {
|
|
90
98
|
if (!isDragging.value) {
|
|
91
99
|
return;
|
|
92
100
|
}
|
|
@@ -95,14 +103,14 @@ useEventListener(
|
|
|
95
103
|
{ passive: true },
|
|
96
104
|
);
|
|
97
105
|
|
|
98
|
-
useEventListener(globalThis, "mouseup", (event) => {
|
|
106
|
+
useEventListener(globalThis, "mouseup", (event: MouseEvent) => {
|
|
99
107
|
if (!isDragging.value) {
|
|
100
108
|
return;
|
|
101
109
|
}
|
|
102
110
|
stopDrag(event);
|
|
103
111
|
});
|
|
104
112
|
|
|
105
|
-
const menu_items = shallowRef([]);
|
|
113
|
+
const menu_items = shallowRef<Component[]>([]);
|
|
106
114
|
watch(
|
|
107
115
|
() => [meta_data.value.viewer_type, meta_data.value.geode_object_type],
|
|
108
116
|
([viewer_type, geode_object_type]) => {
|
|
@@ -111,9 +119,9 @@ watch(
|
|
|
111
119
|
{ immediate: true },
|
|
112
120
|
);
|
|
113
121
|
|
|
114
|
-
const menuItemCount = computed(() => menu_items.value.length);
|
|
122
|
+
const menuItemCount = computed<number>(() => menu_items.value.length);
|
|
115
123
|
|
|
116
|
-
const isOverTreeview = computed(() => {
|
|
124
|
+
const isOverTreeview = computed<boolean>(() => {
|
|
117
125
|
const hasAdditional = treeviewStore.opened_views.some((view) => view.id !== "main");
|
|
118
126
|
const hasMain = treeviewStore.opened_views.some((view) => view.id === "main");
|
|
119
127
|
const firstColWidth = hasMain ? treeviewStore.panelWidth : 0;
|
|
@@ -127,7 +135,7 @@ const isOverTreeview = computed(() => {
|
|
|
127
135
|
return menuX.value < treeviewWidth;
|
|
128
136
|
});
|
|
129
137
|
|
|
130
|
-
const isOverToolbar = computed(() => {
|
|
138
|
+
const isOverToolbar = computed<boolean>(() => {
|
|
131
139
|
const toolbarEl = document.querySelector(".view-toolbar");
|
|
132
140
|
if (!toolbarEl) {
|
|
133
141
|
return false;
|
|
@@ -145,15 +153,15 @@ const isOverToolbar = computed(() => {
|
|
|
145
153
|
);
|
|
146
154
|
});
|
|
147
155
|
|
|
148
|
-
function getMenuStyle() {
|
|
156
|
+
function getMenuStyle(): Record<string, string> {
|
|
149
157
|
return {
|
|
150
|
-
position: "fixed",
|
|
158
|
+
position: "fixed" as const,
|
|
151
159
|
left: `${menuStore.containerLeft + menuX.value - RADIUS}px`,
|
|
152
160
|
top: `${menuStore.containerTop + menuY.value - RADIUS}px`,
|
|
153
161
|
};
|
|
154
162
|
}
|
|
155
163
|
|
|
156
|
-
function toggleShowName() {
|
|
164
|
+
function toggleShowName(): void {
|
|
157
165
|
showName.value = !showName.value;
|
|
158
166
|
}
|
|
159
167
|
</script>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import GlassCard from "@ogw_front/components/GlassCard";
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import GlassCard from "@ogw_front/components/GlassCard.vue";
|
|
3
3
|
import { useAdaptiveStyles } from "@ogw_front/composables/use_adaptive_styles";
|
|
4
4
|
import { useMenuStore } from "@ogw_front/stores/menu";
|
|
5
5
|
import { useTheme } from "vuetify";
|
|
@@ -15,12 +15,22 @@ const menuStore = useMenuStore();
|
|
|
15
15
|
const theme = useTheme();
|
|
16
16
|
const primaryColor = computed(() => theme.current.value.colors.primary);
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
interface ItemProps {
|
|
19
|
+
id: string;
|
|
20
|
+
meta_data: Record<string, unknown>;
|
|
21
|
+
tooltip_location: "right" | "top" | "left" | "bottom";
|
|
22
|
+
tooltip_origin: "right" | "top" | "left" | "bottom";
|
|
23
|
+
totalItems: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface Props {
|
|
27
|
+
index: number;
|
|
28
|
+
itemProps: ItemProps;
|
|
29
|
+
tooltip: string;
|
|
30
|
+
btnImage: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const { index, itemProps, tooltip, btnImage } = defineProps<Props>();
|
|
24
34
|
|
|
25
35
|
const buttonCoords = computed(() => {
|
|
26
36
|
const angle = (index / itemProps.totalItems) * 2 * Math.PI;
|
|
@@ -45,7 +55,7 @@ const TREEVIEW_MARGIN_RIGHT = 20;
|
|
|
45
55
|
const TREEVIEW_ICON_WIDTH = 48;
|
|
46
56
|
|
|
47
57
|
const treeviewStore = useTreeviewStore();
|
|
48
|
-
const isOverTreeview = computed(() => {
|
|
58
|
+
const isOverTreeview = computed<boolean>(() => {
|
|
49
59
|
const hasAdditional = treeviewStore.opened_views.some((view) => view.id !== "main");
|
|
50
60
|
const hasMain = treeviewStore.opened_views.some((view) => view.id === "main");
|
|
51
61
|
const firstColWidth = hasMain ? treeviewStore.panelWidth : 0;
|
|
@@ -59,7 +69,7 @@ const isOverTreeview = computed(() => {
|
|
|
59
69
|
return buttonCoords.value.x < treeviewWidth;
|
|
60
70
|
});
|
|
61
71
|
|
|
62
|
-
const isOverToolbar = computed(() => {
|
|
72
|
+
const isOverToolbar = computed<boolean>(() => {
|
|
63
73
|
const toolbarEl = document.querySelector(".view-toolbar");
|
|
64
74
|
if (!toolbarEl) {
|
|
65
75
|
return false;
|
|
@@ -74,7 +84,7 @@ const isOverToolbar = computed(() => {
|
|
|
74
84
|
);
|
|
75
85
|
});
|
|
76
86
|
|
|
77
|
-
const computedItemStyles = computed(() => {
|
|
87
|
+
const computedItemStyles = computed<Record<string, string>>(() => {
|
|
78
88
|
if (isOverTreeview.value || isOverToolbar.value) {
|
|
79
89
|
return {
|
|
80
90
|
"--adaptive-blur": "15px",
|
|
@@ -85,13 +95,15 @@ const computedItemStyles = computed(() => {
|
|
|
85
95
|
return adaptiveStyles.value;
|
|
86
96
|
});
|
|
87
97
|
|
|
88
|
-
const is_active = computed(() => menuStore.active_item_index === index);
|
|
89
|
-
const optionsRef = ref(undefined);
|
|
98
|
+
const is_active = computed<boolean>(() => menuStore.active_item_index === index);
|
|
99
|
+
const optionsRef = ref<HTMLElement | undefined>(undefined);
|
|
90
100
|
const { height: optionsHeight } = useElementSize(optionsRef);
|
|
91
101
|
|
|
92
|
-
const maxCardHeight = computed(() =>
|
|
102
|
+
const maxCardHeight = computed<number>(() =>
|
|
103
|
+
Math.min(CARD_HEIGHT, menuStore.containerHeight - OFFSET),
|
|
104
|
+
);
|
|
93
105
|
|
|
94
|
-
const optionsStyle = computed(() => {
|
|
106
|
+
const optionsStyle = computed<Record<string, string>>(() => {
|
|
95
107
|
if (!is_active.value || !optionsHeight.value) {
|
|
96
108
|
return {};
|
|
97
109
|
}
|
|
@@ -110,7 +122,7 @@ const optionsStyle = computed(() => {
|
|
|
110
122
|
return { top: `calc(50% + ${offsetY}px)` };
|
|
111
123
|
});
|
|
112
124
|
|
|
113
|
-
const optionsClass = computed(() => {
|
|
125
|
+
const optionsClass = computed<string>(() => {
|
|
114
126
|
const loc = itemProps.tooltip_location;
|
|
115
127
|
const margin = MARGIN;
|
|
116
128
|
const radius = RADIUS;
|
|
@@ -122,9 +134,11 @@ const optionsClass = computed(() => {
|
|
|
122
134
|
return menuStore.menuX - radius - margin - CARD_WIDTH < 0 ? "options-right" : "options-left";
|
|
123
135
|
});
|
|
124
136
|
|
|
125
|
-
function toggleOptions() {
|
|
137
|
+
function toggleOptions(): void {
|
|
126
138
|
menuStore.toggleItemOptions(index);
|
|
127
139
|
}
|
|
140
|
+
|
|
141
|
+
export type { ItemProps };
|
|
128
142
|
</script>
|
|
129
143
|
<template>
|
|
130
144
|
<v-sheet class="menu-item-container transition-swing" color="transparent">
|