@geode/opengeodeweb-front 10.34.0-rc.8 → 10.34.0
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/{server → .build/server}/utils/app_config.js +10 -9
- package/{server → .build/server}/utils/cleanup.js +31 -17
- package/{server → .build/server}/utils/cloud.js +1 -4
- package/{server → .build/server}/utils/microservices.js +21 -9
- package/{server → .build/server}/utils/path.js +4 -4
- package/{server → .build/server}/utils/scripts.js +9 -9
- package/.build/server/utils/server_config.js +51 -0
- package/.build/server/utils/stream.js +6 -0
- package/{server → .build/server}/utils/ws_client.js +18 -3
- package/{shared → .build/shared}/scripts.js +10 -10
- package/.build/shared/utils/call_raw.js +31 -0
- package/{shared → .build/shared}/utils/call_schema.js +2 -2
- package/.build/shared/utils/fetch_raw.js +52 -0
- package/{shared → .build/shared}/utils/fetch_schema.js +2 -2
- package/{shared → .build/shared}/utils/file.js +3 -1
- package/{shared → .build/shared}/utils/response_handlers/load.js +10 -7
- package/{shared → .build/shared}/utils/validate_schema.js +1 -1
- package/app/components/ActionButton.vue +6 -6
- package/app/components/CameraManager/List.vue +5 -5
- package/app/components/CameraManager/Saver.vue +3 -5
- package/app/components/CameraManager.vue +6 -4
- package/app/components/CameraOrientation.vue +12 -12
- package/app/components/ClippingPlaneCard.vue +4 -2
- package/app/components/ClippingPlanes.vue +8 -8
- package/app/components/CrsSelector.vue +9 -10
- package/app/components/DeleteDialog.vue +4 -2
- package/app/components/DragAndDrop.vue +10 -12
- package/app/components/DragAndDropInternal/DragAndDropInline.vue +4 -2
- package/app/components/ExtensionSelector.vue +4 -4
- package/app/components/FeedBack/ErrorBanner.vue +3 -1
- package/app/components/FeedBack/Snackers.vue +4 -3
- package/app/components/FileSelector.vue +10 -8
- package/app/components/FileUploader.vue +11 -11
- package/app/components/GlassCard.vue +1 -1
- package/app/components/HybridRenderingView.vue +7 -5
- package/app/components/HybridViewerTooltip.vue +7 -7
- package/app/components/Launcher.vue +1 -1
- package/app/components/Loading/EcoMessages.vue +9 -3
- package/app/components/Loading.vue +2 -2
- package/app/components/MissingFilesSelector.vue +12 -10
- package/app/components/ObjectSelector.vue +10 -9
- package/app/components/PackagesVersions.vue +6 -5
- package/app/components/Recaptcha.vue +3 -3
- package/app/components/RemoteRenderingView.vue +6 -7
- package/app/components/Ruler.vue +3 -3
- package/app/components/Screenshot.vue +6 -6
- package/app/components/SearchBar.vue +4 -2
- package/app/components/ShrinkFilter.vue +7 -7
- package/app/components/Step.vue +6 -5
- package/app/components/Stepper.vue +4 -3
- package/app/components/ToolPanel.vue +6 -3
- package/app/components/ViewToolbar.vue +25 -28
- package/app/components/Viewer/ContextMenu/CenterButton.vue +7 -5
- package/app/components/Viewer/ContextMenu/CircularItems.vue +3 -3
- package/app/components/Viewer/ContextMenu/ContextMenu.vue +22 -19
- package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +10 -8
- package/app/components/Viewer/ContextMenu/InfoCard.vue +11 -12
- package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +13 -17
- package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +11 -15
- package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +12 -16
- package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +8 -12
- package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +11 -15
- package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +11 -15
- package/app/components/Viewer/Generic/Model/BlocksOptions.vue +67 -38
- package/app/components/Viewer/Generic/Model/CornersOptions.vue +53 -23
- package/app/components/Viewer/Generic/Model/EdgesOptions.vue +1 -3
- package/app/components/Viewer/Generic/Model/LinesOptions.vue +67 -38
- package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +31 -15
- package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +2 -3
- package/app/components/Viewer/Generic/Model/PointsOptions.vue +6 -6
- package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +69 -38
- package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +64 -46
- package/app/components/Viewer/ObjectTree/Base/Controls.vue +5 -5
- package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +13 -9
- package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +5 -5
- package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +10 -10
- package/app/components/Viewer/ObjectTree/Box.vue +6 -4
- package/app/components/Viewer/ObjectTree/Layout.vue +23 -21
- package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +14 -14
- package/app/components/Viewer/ObjectTree/Views/{ModelCollections.vue → ModelTree.vue} +59 -24
- package/app/components/Viewer/Options/AttributeColorBar.vue +4 -2
- package/app/components/Viewer/Options/AttributeRangeSelector.vue +4 -2
- package/app/components/Viewer/Options/AttributeSelector.vue +7 -9
- package/app/components/Viewer/Options/ColorMapList.vue +15 -13
- package/app/components/Viewer/Options/ColorMapPicker.vue +4 -4
- package/app/components/Viewer/Options/ColorPicker.vue +223 -41
- package/app/components/Viewer/Options/ColoringTypeSelector.vue +16 -16
- package/app/components/Viewer/Options/ColormapQuickPicker.vue +7 -5
- package/app/components/Viewer/Options/OptionsSection.vue +1 -1
- package/app/components/Viewer/Options/TextureItem.vue +8 -6
- package/app/components/Viewer/Options/TexturesSelector.vue +1 -1
- package/app/components/Viewer/OverlappingObjectsPicker.vue +8 -9
- package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +2 -6
- package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +12 -16
- package/app/components/Viewer/Surface/PolygonsOptions.vue +12 -16
- package/app/components/Viewer/Ui.vue +2 -2
- package/app/components/Wrapper.vue +1 -4
- package/app/components/ZScaling.vue +5 -3
- package/app/components/csv-preview/CsvPreviewer.vue +38 -37
- package/app/components/csv-preview/CsvSettings.vue +6 -4
- package/app/components/csv-preview/CsvTable.vue +1 -1
- package/app/composables/batch_style.ts +5 -6
- package/app/composables/clipping_planes_widget.ts +73 -181
- 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 +163 -83
- package/app/composables/hover_highlight.ts +46 -14
- package/app/composables/model_collections.ts +26 -13
- package/app/composables/model_components.ts +26 -13
- package/app/composables/project_manager.ts +76 -19
- package/app/composables/responsive_middle_truncate.ts +13 -13
- package/app/composables/stepper_tree.ts +34 -11
- package/app/composables/tree_filter.ts +66 -44
- package/app/composables/tree_keyboard_nav.ts +25 -11
- package/app/composables/tree_scroll.ts +44 -14
- package/app/composables/use_adaptive_styles.ts +66 -23
- package/app/composables/use_overlapping_picker.ts +66 -16
- package/app/composables/use_quick_colormap.ts +16 -5
- package/app/composables/virtual_tree.ts +75 -43
- package/app/composables/vtk_implicit_plane_widget.d.ts +2 -0
- package/app/plugins/auto_store_register.ts +2 -7
- package/app/plugins/click_outside_ignore_snackbars.client.ts +39 -0
- package/app/stores/app.ts +57 -192
- package/app/stores/app_helpers/extension.ts +179 -0
- package/app/stores/back.ts +37 -21
- package/app/stores/camera_manager.ts +22 -20
- package/app/stores/cloud.ts +17 -13
- package/app/stores/data.ts +88 -47
- package/app/stores/data_helpers/collections.ts +36 -38
- package/app/stores/data_helpers/mesh.ts +45 -36
- package/app/stores/data_style.ts +50 -28
- package/app/stores/feedback.ts +6 -6
- package/app/stores/hybrid_viewer.ts +41 -52
- package/app/stores/infra.ts +39 -37
- package/app/stores/menu.ts +23 -14
- package/app/stores/treeview.ts +72 -42
- package/app/stores/viewer.ts +39 -27
- package/app/utils/attributes.ts +3 -3
- package/app/utils/clipping_planes.ts +111 -14
- package/app/utils/color_picker.ts +57 -0
- package/app/utils/colormap.ts +58 -35
- package/app/utils/default_styles/index.ts +2 -2
- package/app/utils/default_styles/meshes.ts +107 -13
- package/app/utils/default_styles/models.ts +83 -14
- package/app/utils/extension.ts +47 -20
- package/app/utils/import_workflow.ts +21 -13
- package/app/utils/name_cleaner.ts +1 -1
- package/app/utils/string.ts +1 -1
- package/app/utils/treeview.ts +2 -2
- package/internal/database/base_database.ts +7 -3
- package/internal/database/database.ts +36 -26
- package/internal/database/extended_database.ts +1 -1
- package/internal/stores/data_style/mesh/cells/cell.ts +70 -34
- package/internal/stores/data_style/mesh/cells/color.ts +12 -6
- package/internal/stores/data_style/mesh/cells/common.ts +18 -8
- package/internal/stores/data_style/mesh/cells/index.ts +122 -42
- package/internal/stores/data_style/mesh/cells/textures.ts +12 -6
- package/internal/stores/data_style/mesh/cells/vertex.ts +75 -34
- package/internal/stores/data_style/mesh/cells/visibility.ts +15 -4
- package/internal/stores/data_style/mesh/edges/color.ts +12 -6
- package/internal/stores/data_style/mesh/edges/common.ts +14 -6
- package/internal/stores/data_style/mesh/edges/edge.ts +71 -39
- package/internal/stores/data_style/mesh/edges/index.ts +117 -42
- package/internal/stores/data_style/mesh/edges/vertex.ts +76 -39
- package/internal/stores/data_style/mesh/edges/visibility.ts +15 -4
- package/internal/stores/data_style/mesh/edges/width.ts +12 -4
- package/internal/stores/data_style/mesh/index.ts +30 -11
- package/internal/stores/data_style/mesh/points/color.ts +12 -6
- package/internal/stores/data_style/mesh/points/common.ts +21 -8
- package/internal/stores/data_style/mesh/points/index.ts +101 -50
- package/internal/stores/data_style/mesh/points/size.ts +12 -4
- package/internal/stores/data_style/mesh/points/vertex.ts +75 -34
- package/internal/stores/data_style/mesh/points/visibility.ts +17 -7
- package/internal/stores/data_style/mesh/polygons/color.ts +12 -6
- package/internal/stores/data_style/mesh/polygons/common.ts +23 -6
- package/internal/stores/data_style/mesh/polygons/index.ts +130 -70
- package/internal/stores/data_style/mesh/polygons/polygon.ts +77 -43
- package/internal/stores/data_style/mesh/polygons/textures.ts +12 -6
- package/internal/stores/data_style/mesh/polygons/vertex.ts +79 -39
- package/internal/stores/data_style/mesh/polygons/visibility.ts +16 -6
- package/internal/stores/data_style/mesh/polyhedra/color.ts +12 -6
- package/internal/stores/data_style/mesh/polyhedra/common.ts +14 -6
- package/internal/stores/data_style/mesh/polyhedra/index.ts +115 -56
- package/internal/stores/data_style/mesh/polyhedra/polyhedron.ts +80 -39
- package/internal/stores/data_style/mesh/polyhedra/vertex.ts +79 -39
- package/internal/stores/data_style/mesh/polyhedra/visibility.ts +16 -6
- package/internal/stores/data_style/model/blocks/color.ts +43 -13
- package/internal/stores/data_style/model/blocks/common.ts +21 -6
- package/internal/stores/data_style/model/blocks/index.ts +89 -59
- package/internal/stores/data_style/model/blocks/polyhedron.ts +101 -44
- package/internal/stores/data_style/model/blocks/vertex.ts +107 -42
- package/internal/stores/data_style/model/blocks/visibility.ts +17 -4
- package/internal/stores/data_style/model/color.ts +171 -83
- package/internal/stores/data_style/model/common.ts +70 -21
- package/internal/stores/data_style/model/corners/color.ts +43 -11
- package/internal/stores/data_style/model/corners/common.ts +25 -6
- package/internal/stores/data_style/model/corners/index.ts +66 -41
- package/internal/stores/data_style/model/corners/vertex.ts +105 -74
- package/internal/stores/data_style/model/corners/visibility.ts +19 -4
- package/internal/stores/data_style/model/edges/common.ts +12 -4
- package/internal/stores/data_style/model/edges/index.ts +2 -1
- package/internal/stores/data_style/model/edges/visibility.ts +24 -7
- package/internal/stores/data_style/model/index.ts +24 -11
- package/internal/stores/data_style/model/lines/color.ts +41 -11
- package/internal/stores/data_style/model/lines/common.ts +17 -6
- package/internal/stores/data_style/model/lines/edge.ts +105 -42
- package/internal/stores/data_style/model/lines/index.ts +86 -59
- package/internal/stores/data_style/model/lines/vertex.ts +105 -42
- package/internal/stores/data_style/model/lines/visibility.ts +17 -4
- package/internal/stores/data_style/model/points/common.ts +8 -4
- package/internal/stores/data_style/model/points/index.ts +10 -3
- package/internal/stores/data_style/model/points/size.ts +12 -4
- package/internal/stores/data_style/model/points/visibility.ts +16 -6
- package/internal/stores/data_style/model/selection.ts +80 -58
- package/internal/stores/data_style/model/surfaces/color.ts +41 -11
- package/internal/stores/data_style/model/surfaces/common.ts +23 -6
- package/internal/stores/data_style/model/surfaces/index.ts +89 -59
- package/internal/stores/data_style/model/surfaces/polygon.ts +107 -67
- package/internal/stores/data_style/model/surfaces/vertex.ts +111 -67
- package/internal/stores/data_style/model/surfaces/visibility.ts +18 -5
- package/internal/stores/data_style/model/visibility.ts +82 -20
- package/internal/stores/data_style/state.ts +77 -65
- package/internal/stores/hybrid_viewer/brightness.ts +49 -31
- package/internal/stores/hybrid_viewer/camera.ts +191 -177
- package/internal/stores/hybrid_viewer/camera_animation.ts +11 -10
- package/internal/stores/hybrid_viewer/core.ts +64 -0
- package/internal/stores/hybrid_viewer/filters.ts +10 -16
- package/internal/stores/hybrid_viewer/highlight.ts +91 -130
- package/internal/stores/hybrid_viewer/ruler.ts +24 -15
- package/internal/stores/hybrid_viewer/scene.ts +96 -117
- package/internal/stores/hybrid_viewer/viewport.ts +74 -65
- package/internal/stores/hybrid_viewer/vtk_types.ts +13 -29
- package/internal/utils/api_fetch.ts +54 -23
- package/internal/utils/upload_file.ts +74 -53
- package/internal/utils/viewer_call.ts +22 -13
- package/internal/utils/ws_client.ts +24 -13
- package/nuxt.config.ts +58 -1
- package/package.json +20 -8
- package/server/api/cloud/extensions/run.post.ts +6 -10
- package/server/api/local/app/project_folder_path.post.ts +4 -4
- package/server/api/local/app/run_back.post.ts +5 -7
- package/server/api/local/app/run_viewer.post.ts +5 -7
- package/server/api/local/extensions/kill.post.ts +4 -3
- package/server/api/local/extensions/run.post.ts +7 -10
- package/server/api/local/extensions/upload.put.ts +44 -54
- package/server/api/microservice/app/get_is_app_ready.get.ts +4 -5
- package/server/api/microservice/app/set_app_base_url.post.ts +5 -6
- package/server/api/microservice/app/set_back_base_url.post.ts +5 -6
- package/server/api/microservice/app/set_is_app_ready.post.ts +5 -6
- package/server/api/microservice/app/set_viewer_base_url.post.ts +5 -6
- package/server/api/microservice/extensions/download.post.ts +5 -4
- package/server/api/serverless/run_cloud.post.ts +53 -11
- package/server/utils/app_config.ts +29 -22
- package/server/utils/cleanup.ts +60 -30
- package/server/utils/cloud.ts +9 -8
- package/server/utils/extension.ts +23 -9
- package/server/utils/microservices.ts +33 -24
- package/server/utils/path.ts +4 -4
- package/server/utils/scripts.ts +26 -23
- package/server/utils/server.ts +2 -2
- package/server/utils/server_config.ts +41 -27
- package/server/utils/stream.ts +6 -0
- package/server/utils/ws_client.ts +42 -8
- package/shared/scripts.ts +15 -10
- package/shared/utils/call_raw.ts +23 -16
- package/shared/utils/call_schema.ts +5 -8
- package/shared/utils/fetch_raw.ts +87 -47
- package/shared/utils/fetch_schema.ts +6 -9
- package/shared/utils/file.ts +8 -2
- package/shared/utils/response_handlers/load.ts +26 -11
- package/shared/utils/types.ts +9 -9
- package/shared/utils/validate_schema.ts +1 -1
- package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +0 -276
- package/server/types/vendor.d.ts +0 -64
- package/server/utils/server_config.js +0 -43
- package/shared/utils/call_raw.js +0 -30
- package/shared/utils/fetch_raw.js +0 -40
- /package/{opengeodeweb_front_schemas.js → .build/opengeodeweb_front_schemas.js} +0 -0
- /package/{server → .build/server}/utils/server.js +0 -0
- /package/{shared → .build/shared}/app_mode.js +0 -0
- /package/{shared → .build/shared}/utils/parse_boolean.js +0 -0
- /package/{shared → .build/shared}/utils/types.js +0 -0
|
@@ -8,27 +8,37 @@ import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
|
8
8
|
// Local constants
|
|
9
9
|
const schema = viewer_schemas.opengeodeweb_viewer.mesh.polyhedra.visibility;
|
|
10
10
|
|
|
11
|
-
export function useMeshPolyhedraVisibilityStyle() {
|
|
11
|
+
export function useMeshPolyhedraVisibilityStyle(): {
|
|
12
|
+
meshPolyhedraVisibility: (id: string) => boolean | undefined;
|
|
13
|
+
setMeshPolyhedraVisibility: (id: string, visibility: boolean | undefined) => Promise<unknown>;
|
|
14
|
+
} {
|
|
12
15
|
const viewerStore = useViewerStore();
|
|
13
16
|
const meshPolyhedraCommonStyle = useMeshPolyhedraCommonStyle();
|
|
14
17
|
|
|
15
18
|
function meshPolyhedraVisibility(id: string): boolean | undefined {
|
|
19
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- visibility is defined as boolean in the data style schema.
|
|
16
20
|
return meshPolyhedraCommonStyle.meshPolyhedraStyle(id).visibility as boolean | undefined;
|
|
17
21
|
}
|
|
18
|
-
function setMeshPolyhedraVisibility(
|
|
22
|
+
async function setMeshPolyhedraVisibility(
|
|
23
|
+
id: string,
|
|
24
|
+
visibility: boolean | undefined,
|
|
25
|
+
): Promise<unknown> {
|
|
19
26
|
const params = { id, visibility };
|
|
20
|
-
|
|
27
|
+
const result = await viewerStore.request(
|
|
21
28
|
{
|
|
22
29
|
schema,
|
|
23
30
|
params,
|
|
24
31
|
},
|
|
25
32
|
{
|
|
26
|
-
response_function: () =>
|
|
27
|
-
meshPolyhedraCommonStyle.mutateMeshPolyhedraStyle(id, {
|
|
33
|
+
response_function: async () => {
|
|
34
|
+
const mutation_result = await meshPolyhedraCommonStyle.mutateMeshPolyhedraStyle(id, {
|
|
28
35
|
visibility,
|
|
29
|
-
})
|
|
36
|
+
});
|
|
37
|
+
return mutation_result;
|
|
38
|
+
},
|
|
30
39
|
},
|
|
31
40
|
);
|
|
41
|
+
return result;
|
|
32
42
|
}
|
|
33
43
|
|
|
34
44
|
return {
|
|
@@ -1,24 +1,42 @@
|
|
|
1
|
-
// 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.
|
|
2
|
-
// oxlint-disable eslint/sort-imports
|
|
3
|
-
import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
|
|
4
1
|
import {
|
|
5
2
|
isModelBlocksPolyhedronAttributeValid,
|
|
6
3
|
useModelBlocksPolyhedronAttribute,
|
|
7
4
|
} from "./polyhedron";
|
|
8
5
|
import { isModelBlocksVertexAttributeValid, useModelBlocksVertexAttribute } from "./vertex";
|
|
6
|
+
import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
|
|
7
|
+
import { useDataStore } from "@ogw_front/stores/data";
|
|
9
8
|
import { useModelBlocksCommonStyle } from "./common";
|
|
10
9
|
import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
|
|
11
10
|
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
12
11
|
|
|
13
12
|
const schema = viewer_schemas.opengeodeweb_viewer.model.blocks.color;
|
|
14
13
|
|
|
15
|
-
export function useModelBlocksColor() {
|
|
14
|
+
export function useModelBlocksColor(): {
|
|
15
|
+
modelBlockColoring: (id: string, block_id?: string) => StyleValues;
|
|
16
|
+
modelBlockColor: (id: string, block_id?: string) => unknown;
|
|
17
|
+
setModelBlocksColor: (
|
|
18
|
+
modelId: string,
|
|
19
|
+
blocks_ids: string[],
|
|
20
|
+
color: unknown,
|
|
21
|
+
activeColoring?: string,
|
|
22
|
+
collectionId?: string,
|
|
23
|
+
) => Promise<unknown>;
|
|
24
|
+
modelBlockActiveColoring: (id: string, block_id?: string) => unknown;
|
|
25
|
+
setModelBlocksActiveColoring: (
|
|
26
|
+
modelId: string,
|
|
27
|
+
blocks_ids: string[],
|
|
28
|
+
activeColoring: string,
|
|
29
|
+
collectionId?: string,
|
|
30
|
+
) => Promise<void>;
|
|
31
|
+
} {
|
|
32
|
+
const dataStore = useDataStore();
|
|
16
33
|
const modelCommonStyle = useModelCommonStyle();
|
|
17
34
|
const modelBlocksCommonStyle = useModelBlocksCommonStyle();
|
|
18
35
|
const modelBlocksVertexAttribute = useModelBlocksVertexAttribute();
|
|
19
36
|
const modelBlocksPolyhedronAttribute = useModelBlocksPolyhedronAttribute();
|
|
20
37
|
|
|
21
38
|
function modelBlockColoring(id: string, block_id?: string): StyleValues {
|
|
39
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
22
40
|
return modelBlocksCommonStyle.modelBlockStyle(id, block_id).coloring as StyleValues;
|
|
23
41
|
}
|
|
24
42
|
|
|
@@ -26,13 +44,22 @@ export function useModelBlocksColor() {
|
|
|
26
44
|
return modelBlockColoring(id, block_id).constant;
|
|
27
45
|
}
|
|
28
46
|
|
|
29
|
-
function setModelBlocksColor(
|
|
47
|
+
async function setModelBlocksColor(
|
|
30
48
|
modelId: string,
|
|
31
49
|
blocks_ids: string[],
|
|
32
50
|
color: unknown,
|
|
33
51
|
activeColoring = "constant",
|
|
34
|
-
|
|
35
|
-
|
|
52
|
+
collectionId?: string,
|
|
53
|
+
): Promise<unknown> {
|
|
54
|
+
const result = await modelCommonStyle.setModelTypeColor(
|
|
55
|
+
modelId,
|
|
56
|
+
blocks_ids,
|
|
57
|
+
color,
|
|
58
|
+
schema,
|
|
59
|
+
activeColoring,
|
|
60
|
+
collectionId,
|
|
61
|
+
);
|
|
62
|
+
return result;
|
|
36
63
|
}
|
|
37
64
|
|
|
38
65
|
function modelBlockActiveColoring(id: string, block_id?: string): unknown {
|
|
@@ -43,9 +70,11 @@ export function useModelBlocksColor() {
|
|
|
43
70
|
modelId: string,
|
|
44
71
|
blocks_ids: string[],
|
|
45
72
|
activeColoring: string,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
73
|
+
collectionId?: string,
|
|
74
|
+
): Promise<void> {
|
|
75
|
+
const totalBlockIds = await dataStore.getBlocksGeodeIds(modelId);
|
|
76
|
+
if (blocks_ids.length === totalBlockIds.length) {
|
|
77
|
+
await modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
|
|
49
78
|
active: activeColoring,
|
|
50
79
|
});
|
|
51
80
|
}
|
|
@@ -54,7 +83,8 @@ export function useModelBlocksColor() {
|
|
|
54
83
|
});
|
|
55
84
|
if (activeColoring === "constant" || activeColoring === "random") {
|
|
56
85
|
const color = modelBlockColor(modelId, blocks_ids[0]);
|
|
57
|
-
|
|
86
|
+
await setModelBlocksColor(modelId, blocks_ids, color, activeColoring, collectionId);
|
|
87
|
+
return;
|
|
58
88
|
}
|
|
59
89
|
|
|
60
90
|
if (activeColoring === "vertex") {
|
|
@@ -76,7 +106,7 @@ export function useModelBlocksColor() {
|
|
|
76
106
|
);
|
|
77
107
|
const attribute = { name, item, minimum, maximum, colorMap };
|
|
78
108
|
if (isModelBlocksVertexAttributeValid(attribute)) {
|
|
79
|
-
|
|
109
|
+
await modelBlocksVertexAttribute.setModelBlocksVertexAttribute(
|
|
80
110
|
modelId,
|
|
81
111
|
blocks_ids,
|
|
82
112
|
attribute,
|
|
@@ -101,7 +131,7 @@ export function useModelBlocksColor() {
|
|
|
101
131
|
);
|
|
102
132
|
const attribute = { name, item, minimum, maximum, colorMap };
|
|
103
133
|
if (isModelBlocksPolyhedronAttributeValid(attribute)) {
|
|
104
|
-
|
|
134
|
+
await modelBlocksPolyhedronAttribute.setModelBlocksPolyhedronAttribute(
|
|
105
135
|
modelId,
|
|
106
136
|
blocks_ids,
|
|
107
137
|
attribute,
|
|
@@ -3,12 +3,22 @@ import merge from "lodash/merge";
|
|
|
3
3
|
import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
|
|
4
4
|
import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
|
|
5
5
|
|
|
6
|
-
export function useModelBlocksCommonStyle() {
|
|
6
|
+
export function useModelBlocksCommonStyle(): {
|
|
7
|
+
modelBlocksStyle: (id: string) => StyleValues;
|
|
8
|
+
modelBlockStyle: (id: string, block_id?: string) => StyleValues;
|
|
9
|
+
modelBlockColoring: (id: string, block_id?: string) => StyleValues;
|
|
10
|
+
mutateModelBlocksColoring: (
|
|
11
|
+
id: string,
|
|
12
|
+
blocks_ids: string[],
|
|
13
|
+
values: StyleValues,
|
|
14
|
+
) => Promise<void>;
|
|
15
|
+
mutateModelBlocksTypeColoring: (id: string, values: StyleValues) => Promise<void>;
|
|
16
|
+
} {
|
|
7
17
|
const dataStyleState = useDataStyleState();
|
|
8
18
|
const modelCommonStyle = useModelCommonStyle();
|
|
9
19
|
|
|
10
20
|
function modelBlocksStyle(id: string): StyleValues {
|
|
11
|
-
return dataStyleState.getStyle(id).blocks
|
|
21
|
+
return dataStyleState.getStyle(id).blocks ?? {};
|
|
12
22
|
}
|
|
13
23
|
|
|
14
24
|
function modelComponentTypeBlocksStyle(id: string): StyleValues {
|
|
@@ -27,17 +37,22 @@ export function useModelBlocksCommonStyle() {
|
|
|
27
37
|
}
|
|
28
38
|
|
|
29
39
|
function modelBlockColoring(id: string, block_id?: string): StyleValues {
|
|
40
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
30
41
|
return modelBlockStyle(id, block_id).coloring as StyleValues;
|
|
31
42
|
}
|
|
32
43
|
|
|
33
|
-
function mutateModelBlocksColoring(
|
|
34
|
-
|
|
44
|
+
async function mutateModelBlocksColoring(
|
|
45
|
+
id: string,
|
|
46
|
+
blocks_ids: string[],
|
|
47
|
+
values: StyleValues,
|
|
48
|
+
): Promise<void> {
|
|
49
|
+
await modelCommonStyle.mutateComponentStyles(id, blocks_ids, {
|
|
35
50
|
coloring: values,
|
|
36
51
|
});
|
|
37
52
|
}
|
|
38
53
|
|
|
39
|
-
function mutateModelBlocksTypeColoring(id: string, values: StyleValues) {
|
|
40
|
-
|
|
54
|
+
async function mutateModelBlocksTypeColoring(id: string, values: StyleValues): Promise<void> {
|
|
55
|
+
await modelCommonStyle.mutateModelComponentTypeStyle(id, "Block", {
|
|
41
56
|
coloring: values,
|
|
42
57
|
});
|
|
43
58
|
}
|
|
@@ -22,12 +22,21 @@ interface AttributeGroup {
|
|
|
22
22
|
blocks_ids: string[];
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
async function setModelBlocksDefaultStyle(_id: string) {
|
|
25
|
+
async function setModelBlocksDefaultStyle(_id: string): Promise<void> {
|
|
26
26
|
// Placeholder
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
type UseModelBlocksStyleReturn = {
|
|
30
|
+
applyModelBlocksStyle: (modelId: string) => Promise<void>;
|
|
31
|
+
setModelBlocksDefaultStyle: (id: string) => Promise<void>;
|
|
32
|
+
} & ReturnType<typeof useModelBlocksCommonStyle> &
|
|
33
|
+
ReturnType<typeof useModelBlocksVisibility> &
|
|
34
|
+
ReturnType<typeof useModelBlocksColor> &
|
|
35
|
+
ReturnType<typeof useModelBlocksVertexAttribute> &
|
|
36
|
+
ReturnType<typeof useModelBlocksPolyhedronAttribute>;
|
|
37
|
+
|
|
29
38
|
// oxlint-disable-next-line max-lines-per-function
|
|
30
|
-
export function useModelBlocksStyle() {
|
|
39
|
+
export function useModelBlocksStyle(): UseModelBlocksStyleReturn {
|
|
31
40
|
const dataStore = useDataStore();
|
|
32
41
|
const modelCommonStyle = useModelBlocksCommonStyle();
|
|
33
42
|
const modelVisibilityStyle = useModelBlocksVisibility();
|
|
@@ -35,30 +44,38 @@ export function useModelBlocksStyle() {
|
|
|
35
44
|
const modelBlocksVertexAttribute = useModelBlocksVertexAttribute();
|
|
36
45
|
const modelBlocksPolyhedronAttribute = useModelBlocksPolyhedronAttribute();
|
|
37
46
|
|
|
38
|
-
function applyModelBlocksVisibilityStyle(
|
|
47
|
+
async function applyModelBlocksVisibilityStyle(
|
|
48
|
+
modelId: string,
|
|
49
|
+
blocks_ids: string[],
|
|
50
|
+
): Promise<unknown[]> {
|
|
39
51
|
const visibilityGroups: Record<string, string[]> = {};
|
|
40
52
|
for (const block_id of blocks_ids) {
|
|
41
53
|
const style = modelCommonStyle.modelBlockStyle(modelId, block_id);
|
|
42
54
|
const visibility = String(style.visibility);
|
|
43
|
-
|
|
44
|
-
visibilityGroups[visibility] = [];
|
|
45
|
-
}
|
|
55
|
+
visibilityGroups[visibility] ??= [];
|
|
46
56
|
visibilityGroups[visibility].push(block_id);
|
|
47
57
|
}
|
|
48
|
-
|
|
49
|
-
Object.entries(visibilityGroups).map(([visibility, ids]) =>
|
|
50
|
-
modelVisibilityStyle.setModelBlocksVisibility(
|
|
51
|
-
|
|
58
|
+
const result = await Promise.all(
|
|
59
|
+
Object.entries(visibilityGroups).map(async ([visibility, ids]) => {
|
|
60
|
+
const visibilityResult = await modelVisibilityStyle.setModelBlocksVisibility(
|
|
61
|
+
modelId,
|
|
62
|
+
ids,
|
|
63
|
+
visibility === "true",
|
|
64
|
+
);
|
|
65
|
+
return visibilityResult;
|
|
66
|
+
}),
|
|
52
67
|
);
|
|
68
|
+
return result;
|
|
53
69
|
}
|
|
54
70
|
|
|
55
|
-
function applyModelBlocksColoringStyle(
|
|
71
|
+
async function applyModelBlocksColoringStyle(
|
|
72
|
+
modelId: string,
|
|
73
|
+
blocks_ids: string[],
|
|
74
|
+
): Promise<unknown[]> {
|
|
56
75
|
const activeColoringGroups: Record<string, string[]> = {};
|
|
57
76
|
for (const block_id of blocks_ids) {
|
|
58
77
|
const activeColoring = String(modelColorStyle.modelBlockActiveColoring(modelId, block_id));
|
|
59
|
-
|
|
60
|
-
activeColoringGroups[activeColoring] = [];
|
|
61
|
-
}
|
|
78
|
+
activeColoringGroups[activeColoring] ??= [];
|
|
62
79
|
activeColoringGroups[activeColoring].push(block_id);
|
|
63
80
|
}
|
|
64
81
|
|
|
@@ -70,15 +87,19 @@ export function useModelBlocksStyle() {
|
|
|
70
87
|
for (const block_id of type_blocks_ids) {
|
|
71
88
|
const color = modelColorStyle.modelBlockColor(modelId, block_id);
|
|
72
89
|
const color_key = JSON.stringify(color);
|
|
73
|
-
|
|
74
|
-
colorGroups[color_key] = { color, blocks_ids: [] };
|
|
75
|
-
}
|
|
90
|
+
colorGroups[color_key] ??= { color, blocks_ids: [] };
|
|
76
91
|
colorGroups[color_key].blocks_ids.push(block_id);
|
|
77
92
|
}
|
|
78
93
|
coloringPromises.push(
|
|
79
|
-
...Object.values(colorGroups).map(({ color, blocks_ids: ids }) =>
|
|
80
|
-
modelColorStyle.setModelBlocksColor(
|
|
81
|
-
|
|
94
|
+
...Object.values(colorGroups).map(async ({ color, blocks_ids: ids }) => {
|
|
95
|
+
const result = await modelColorStyle.setModelBlocksColor(
|
|
96
|
+
modelId,
|
|
97
|
+
ids,
|
|
98
|
+
color,
|
|
99
|
+
"constant",
|
|
100
|
+
);
|
|
101
|
+
return result;
|
|
102
|
+
}),
|
|
82
103
|
);
|
|
83
104
|
} else if (type === "random") {
|
|
84
105
|
coloringPromises.push(
|
|
@@ -102,28 +123,32 @@ export function useModelBlocksStyle() {
|
|
|
102
123
|
continue;
|
|
103
124
|
}
|
|
104
125
|
const key = `${name}_${item}_${colorMap}_${minimum}_${maximum}`;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
};
|
|
114
|
-
}
|
|
126
|
+
vertexGroups[key] ??= {
|
|
127
|
+
name,
|
|
128
|
+
item,
|
|
129
|
+
minimum,
|
|
130
|
+
maximum,
|
|
131
|
+
colorMap,
|
|
132
|
+
blocks_ids: [],
|
|
133
|
+
};
|
|
115
134
|
vertexGroups[key].blocks_ids.push(block_id);
|
|
116
135
|
}
|
|
117
136
|
coloringPromises.push(
|
|
118
137
|
...Object.values(vertexGroups).map(
|
|
119
|
-
({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) =>
|
|
120
|
-
modelBlocksVertexAttribute.setModelBlocksVertexAttribute(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
138
|
+
async ({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) => {
|
|
139
|
+
const result = await modelBlocksVertexAttribute.setModelBlocksVertexAttribute(
|
|
140
|
+
modelId,
|
|
141
|
+
ids,
|
|
142
|
+
{
|
|
143
|
+
name,
|
|
144
|
+
item,
|
|
145
|
+
minimum,
|
|
146
|
+
maximum,
|
|
147
|
+
colorMap,
|
|
148
|
+
},
|
|
149
|
+
);
|
|
150
|
+
return result;
|
|
151
|
+
},
|
|
127
152
|
),
|
|
128
153
|
);
|
|
129
154
|
} else if (type === "polyhedron") {
|
|
@@ -148,43 +173,48 @@ export function useModelBlocksStyle() {
|
|
|
148
173
|
continue;
|
|
149
174
|
}
|
|
150
175
|
const key = `${name}_${item}_${colorMap}_${minimum}_${maximum}`;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
};
|
|
160
|
-
}
|
|
176
|
+
polyhedronGroups[key] ??= {
|
|
177
|
+
name,
|
|
178
|
+
item,
|
|
179
|
+
minimum,
|
|
180
|
+
maximum,
|
|
181
|
+
colorMap,
|
|
182
|
+
blocks_ids: [],
|
|
183
|
+
};
|
|
161
184
|
polyhedronGroups[key].blocks_ids.push(block_id);
|
|
162
185
|
}
|
|
163
186
|
coloringPromises.push(
|
|
164
187
|
...Object.values(polyhedronGroups).map(
|
|
165
|
-
({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) =>
|
|
166
|
-
modelBlocksPolyhedronAttribute.setModelBlocksPolyhedronAttribute(
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
188
|
+
async ({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) => {
|
|
189
|
+
const result = await modelBlocksPolyhedronAttribute.setModelBlocksPolyhedronAttribute(
|
|
190
|
+
modelId,
|
|
191
|
+
ids,
|
|
192
|
+
{
|
|
193
|
+
name,
|
|
194
|
+
item,
|
|
195
|
+
minimum,
|
|
196
|
+
maximum,
|
|
197
|
+
colorMap,
|
|
198
|
+
},
|
|
199
|
+
);
|
|
200
|
+
return result;
|
|
201
|
+
},
|
|
173
202
|
),
|
|
174
203
|
);
|
|
175
204
|
}
|
|
176
205
|
}
|
|
177
206
|
|
|
178
|
-
|
|
207
|
+
const result = await Promise.all(coloringPromises);
|
|
208
|
+
return result;
|
|
179
209
|
}
|
|
180
210
|
|
|
181
|
-
async function applyModelBlocksStyle(modelId: string) {
|
|
211
|
+
async function applyModelBlocksStyle(modelId: string): Promise<void> {
|
|
182
212
|
const blocks_ids = await dataStore.getBlocksGeodeIds(modelId);
|
|
183
213
|
if (blocks_ids.length === 0) {
|
|
184
214
|
return;
|
|
185
215
|
}
|
|
186
216
|
|
|
187
|
-
|
|
217
|
+
await Promise.all([
|
|
188
218
|
applyModelBlocksVisibilityStyle(modelId, blocks_ids),
|
|
189
219
|
applyModelBlocksColoringStyle(modelId, blocks_ids),
|
|
190
220
|
]);
|