@geode/opengeodeweb-front 10.30.2-rc.4 → 10.30.2

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.
Files changed (25) hide show
  1. package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +1 -0
  2. package/app/components/Viewer/Generic/Model/BlocksOptions.vue +9 -9
  3. package/app/components/Viewer/Generic/Model/CornersOptions.vue +5 -5
  4. package/app/components/Viewer/Generic/Model/LinesOptions.vue +9 -9
  5. package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +9 -9
  6. package/app/components/Viewer/Options/AttributeSelector.vue +1 -1
  7. package/app/components/Viewer/Options/ColorMapList.vue +16 -4
  8. package/internal/stores/data_style/model/blocks/color.js +5 -0
  9. package/internal/stores/data_style/model/blocks/common.js +14 -5
  10. package/internal/stores/data_style/model/blocks/polyhedron.js +5 -0
  11. package/internal/stores/data_style/model/blocks/vertex.js +5 -0
  12. package/internal/stores/data_style/model/corners/color.js +5 -0
  13. package/internal/stores/data_style/model/corners/common.js +14 -5
  14. package/internal/stores/data_style/model/corners/index.js +4 -2
  15. package/internal/stores/data_style/model/corners/vertex.js +5 -0
  16. package/internal/stores/data_style/model/lines/color.js +5 -0
  17. package/internal/stores/data_style/model/lines/common.js +14 -5
  18. package/internal/stores/data_style/model/lines/edge.js +5 -0
  19. package/internal/stores/data_style/model/lines/vertex.js +5 -0
  20. package/internal/stores/data_style/model/surfaces/color.js +5 -0
  21. package/internal/stores/data_style/model/surfaces/common.js +14 -5
  22. package/internal/stores/data_style/model/surfaces/polygon.js +5 -0
  23. package/internal/stores/data_style/model/surfaces/vertex.js +5 -0
  24. package/package.json +3 -3
  25. package/tests/integration/stores/data_style/model/corners.nuxt.test.js +12 -0
@@ -137,6 +137,7 @@ function toggleOptions() {
137
137
  @click.stop="toggleOptions"
138
138
  v-bind="tooltipProps"
139
139
  class="menu-btn"
140
+ :data-testid="is_active ? 'activeCircularMenuItemButton' : 'circularMenuItemButton'"
140
141
  elevation="2"
141
142
  :style="computedItemStyles"
142
143
  >
@@ -67,7 +67,7 @@ const blockActiveColoring = computed({
67
67
 
68
68
  // Group Attributes
69
69
  const blocksVertexAttributeName = computed({
70
- get: () => dataStyleStore.modelBlocksVertexAttributeName(modelId, targetBlockIds[0]),
70
+ get: () => dataStyleStore.modelBlocksVertexAttributeName(modelId),
71
71
  set: async (newValue) => {
72
72
  await dataStyleStore.setModelBlocksVertexAttributeName(modelId, targetBlockIds, newValue);
73
73
  hybridViewerStore.remoteRender();
@@ -75,7 +75,7 @@ const blocksVertexAttributeName = computed({
75
75
  });
76
76
 
77
77
  const blocksVertexAttributeItem = computed({
78
- get: () => dataStyleStore.modelBlocksVertexAttributeItem(modelId, targetBlockIds[0]),
78
+ get: () => dataStyleStore.modelBlocksVertexAttributeItem(modelId),
79
79
  set: async (newValue) => {
80
80
  await dataStyleStore.setModelBlocksVertexAttributeItem(modelId, targetBlockIds, newValue);
81
81
  hybridViewerStore.remoteRender();
@@ -83,7 +83,7 @@ const blocksVertexAttributeItem = computed({
83
83
  });
84
84
 
85
85
  const blocksVertexAttributeRange = computed({
86
- get: () => dataStyleStore.modelBlocksVertexAttributeRange(modelId, targetBlockIds[0]),
86
+ get: () => dataStyleStore.modelBlocksVertexAttributeRange(modelId),
87
87
  set: async (newValue) => {
88
88
  await dataStyleStore.setModelBlocksVertexAttributeRange(
89
89
  modelId,
@@ -96,7 +96,7 @@ const blocksVertexAttributeRange = computed({
96
96
  });
97
97
 
98
98
  const blocksVertexAttributeColorMap = computed({
99
- get: () => dataStyleStore.modelBlocksVertexAttributeColorMap(modelId, targetBlockIds[0]),
99
+ get: () => dataStyleStore.modelBlocksVertexAttributeColorMap(modelId),
100
100
  set: async (newValue) => {
101
101
  await dataStyleStore.setModelBlocksVertexAttributeColorMap(modelId, targetBlockIds, newValue);
102
102
  hybridViewerStore.remoteRender();
@@ -104,7 +104,7 @@ const blocksVertexAttributeColorMap = computed({
104
104
  });
105
105
 
106
106
  const blocksPolyhedronAttributeName = computed({
107
- get: () => dataStyleStore.modelBlocksPolyhedronAttributeName(modelId, targetBlockIds[0]),
107
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeName(modelId),
108
108
  set: async (newValue) => {
109
109
  await dataStyleStore.setModelBlocksPolyhedronAttributeName(modelId, targetBlockIds, newValue);
110
110
  hybridViewerStore.remoteRender();
@@ -112,7 +112,7 @@ const blocksPolyhedronAttributeName = computed({
112
112
  });
113
113
 
114
114
  const blocksPolyhedronAttributeItem = computed({
115
- get: () => dataStyleStore.modelBlocksPolyhedronAttributeItem(modelId, targetBlockIds[0]),
115
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeItem(modelId),
116
116
  set: async (newValue) => {
117
117
  await dataStyleStore.setModelBlocksPolyhedronAttributeItem(modelId, targetBlockIds, newValue);
118
118
  hybridViewerStore.remoteRender();
@@ -120,7 +120,7 @@ const blocksPolyhedronAttributeItem = computed({
120
120
  });
121
121
 
122
122
  const blocksPolyhedronAttributeRange = computed({
123
- get: () => dataStyleStore.modelBlocksPolyhedronAttributeRange(modelId, targetBlockIds[0]),
123
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeRange(modelId),
124
124
  set: async (newValue) => {
125
125
  await dataStyleStore.setModelBlocksPolyhedronAttributeRange(
126
126
  modelId,
@@ -133,7 +133,7 @@ const blocksPolyhedronAttributeRange = computed({
133
133
  });
134
134
 
135
135
  const blocksPolyhedronAttributeColorMap = computed({
136
- get: () => dataStyleStore.modelBlocksPolyhedronAttributeColorMap(modelId, targetBlockIds[0]),
136
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeColorMap(modelId),
137
137
  set: async (newValue) => {
138
138
  await dataStyleStore.setModelBlocksPolyhedronAttributeColorMap(
139
139
  modelId,
@@ -234,7 +234,7 @@ const polyhedronSchema = back_schemas.opengeodeweb_back.model_component_polyhedr
234
234
  </script>
235
235
 
236
236
  <template>
237
- <OptionsSection title="Blocks Options" class="mt-4">
237
+ <OptionsSection title="Blocks Options" class="mt-4" data-testid="modelComponentTypeOptions">
238
238
  <VisibilitySwitch data-testid="modelBlocksVisibilitySwitch" v-model="blocksVisibility" />
239
239
  <ViewerOptionsColoringTypeSelector
240
240
  :id="modelId"
@@ -67,7 +67,7 @@ const cornerActiveColoring = computed({
67
67
 
68
68
  // Group Attributes
69
69
  const cornersVertexAttributeName = computed({
70
- get: () => dataStyleStore.modelCornersVertexAttributeName(modelId, targetCornerIds[0]),
70
+ get: () => dataStyleStore.modelCornersVertexAttributeName(modelId),
71
71
  set: async (newValue) => {
72
72
  await dataStyleStore.setModelCornersVertexAttributeName(modelId, targetCornerIds, newValue);
73
73
  hybridViewerStore.remoteRender();
@@ -75,7 +75,7 @@ const cornersVertexAttributeName = computed({
75
75
  });
76
76
 
77
77
  const cornersVertexAttributeItem = computed({
78
- get: () => dataStyleStore.modelCornersVertexAttributeItem(modelId, targetCornerIds[0]),
78
+ get: () => dataStyleStore.modelCornersVertexAttributeItem(modelId),
79
79
  set: async (newValue) => {
80
80
  await dataStyleStore.setModelCornersVertexAttributeItem(modelId, targetCornerIds, newValue);
81
81
  hybridViewerStore.remoteRender();
@@ -83,7 +83,7 @@ const cornersVertexAttributeItem = computed({
83
83
  });
84
84
 
85
85
  const cornersVertexAttributeRange = computed({
86
- get: () => dataStyleStore.modelCornersVertexAttributeRange(modelId, targetCornerIds[0]),
86
+ get: () => dataStyleStore.modelCornersVertexAttributeRange(modelId),
87
87
  set: async (newValue) => {
88
88
  await dataStyleStore.setModelCornersVertexAttributeRange(
89
89
  modelId,
@@ -96,7 +96,7 @@ const cornersVertexAttributeRange = computed({
96
96
  });
97
97
 
98
98
  const cornersVertexAttributeColorMap = computed({
99
- get: () => dataStyleStore.modelCornersVertexAttributeColorMap(modelId, targetCornerIds[0]),
99
+ get: () => dataStyleStore.modelCornersVertexAttributeColorMap(modelId),
100
100
  set: async (newValue) => {
101
101
  await dataStyleStore.setModelCornersVertexAttributeColorMap(modelId, targetCornerIds, newValue);
102
102
  hybridViewerStore.remoteRender();
@@ -155,7 +155,7 @@ const vertexSchema = back_schemas.opengeodeweb_back.model_component_vertex_attri
155
155
  </script>
156
156
 
157
157
  <template>
158
- <OptionsSection title="Corners Options" class="mt-4">
158
+ <OptionsSection title="Corners Options" class="mt-4" data-testid="modelComponentTypeOptions">
159
159
  <VisibilitySwitch data-testid="modelCornersVisibilitySwitch" v-model="cornersVisibility" />
160
160
  <ViewerOptionsColoringTypeSelector
161
161
  :id="modelId"
@@ -67,7 +67,7 @@ const lineActiveColoring = computed({
67
67
 
68
68
  // Group Attributes
69
69
  const linesVertexAttributeName = computed({
70
- get: () => dataStyleStore.modelLinesVertexAttributeName(modelId, targetLineIds[0]),
70
+ get: () => dataStyleStore.modelLinesVertexAttributeName(modelId),
71
71
  set: async (newValue) => {
72
72
  await dataStyleStore.setModelLinesVertexAttributeName(modelId, targetLineIds, newValue);
73
73
  hybridViewerStore.remoteRender();
@@ -75,7 +75,7 @@ const linesVertexAttributeName = computed({
75
75
  });
76
76
 
77
77
  const linesVertexAttributeItem = computed({
78
- get: () => dataStyleStore.modelLinesVertexAttributeItem(modelId, targetLineIds[0]),
78
+ get: () => dataStyleStore.modelLinesVertexAttributeItem(modelId),
79
79
  set: async (newValue) => {
80
80
  await dataStyleStore.setModelLinesVertexAttributeItem(modelId, targetLineIds, newValue);
81
81
  hybridViewerStore.remoteRender();
@@ -83,7 +83,7 @@ const linesVertexAttributeItem = computed({
83
83
  });
84
84
 
85
85
  const linesVertexAttributeRange = computed({
86
- get: () => dataStyleStore.modelLinesVertexAttributeRange(modelId, targetLineIds[0]),
86
+ get: () => dataStyleStore.modelLinesVertexAttributeRange(modelId),
87
87
  set: async (newValue) => {
88
88
  await dataStyleStore.setModelLinesVertexAttributeRange(
89
89
  modelId,
@@ -96,7 +96,7 @@ const linesVertexAttributeRange = computed({
96
96
  });
97
97
 
98
98
  const linesVertexAttributeColorMap = computed({
99
- get: () => dataStyleStore.modelLinesVertexAttributeColorMap(modelId, targetLineIds[0]),
99
+ get: () => dataStyleStore.modelLinesVertexAttributeColorMap(modelId),
100
100
  set: async (newValue) => {
101
101
  await dataStyleStore.setModelLinesVertexAttributeColorMap(modelId, targetLineIds, newValue);
102
102
  hybridViewerStore.remoteRender();
@@ -104,7 +104,7 @@ const linesVertexAttributeColorMap = computed({
104
104
  });
105
105
 
106
106
  const linesEdgeAttributeName = computed({
107
- get: () => dataStyleStore.modelLinesEdgeAttributeName(modelId, targetLineIds[0]),
107
+ get: () => dataStyleStore.modelLinesEdgeAttributeName(modelId),
108
108
  set: async (newValue) => {
109
109
  await dataStyleStore.setModelLinesEdgeAttributeName(modelId, targetLineIds, newValue);
110
110
  hybridViewerStore.remoteRender();
@@ -112,7 +112,7 @@ const linesEdgeAttributeName = computed({
112
112
  });
113
113
 
114
114
  const linesEdgeAttributeItem = computed({
115
- get: () => dataStyleStore.modelLinesEdgeAttributeItem(modelId, targetLineIds[0]),
115
+ get: () => dataStyleStore.modelLinesEdgeAttributeItem(modelId),
116
116
  set: async (newValue) => {
117
117
  await dataStyleStore.setModelLinesEdgeAttributeItem(modelId, targetLineIds, newValue);
118
118
  hybridViewerStore.remoteRender();
@@ -120,7 +120,7 @@ const linesEdgeAttributeItem = computed({
120
120
  });
121
121
 
122
122
  const linesEdgeAttributeRange = computed({
123
- get: () => dataStyleStore.modelLinesEdgeAttributeRange(modelId, targetLineIds[0]),
123
+ get: () => dataStyleStore.modelLinesEdgeAttributeRange(modelId),
124
124
  set: async (newValue) => {
125
125
  await dataStyleStore.setModelLinesEdgeAttributeRange(
126
126
  modelId,
@@ -133,7 +133,7 @@ const linesEdgeAttributeRange = computed({
133
133
  });
134
134
 
135
135
  const linesEdgeAttributeColorMap = computed({
136
- get: () => dataStyleStore.modelLinesEdgeAttributeColorMap(modelId, targetLineIds[0]),
136
+ get: () => dataStyleStore.modelLinesEdgeAttributeColorMap(modelId),
137
137
  set: async (newValue) => {
138
138
  await dataStyleStore.setModelLinesEdgeAttributeColorMap(modelId, targetLineIds, newValue);
139
139
  hybridViewerStore.remoteRender();
@@ -230,7 +230,7 @@ const edgeSchema = back_schemas.opengeodeweb_back.model_component_edge_attribute
230
230
  </script>
231
231
 
232
232
  <template>
233
- <OptionsSection title="Lines Options" class="mt-4">
233
+ <OptionsSection title="Lines Options" class="mt-4" data-testid="modelComponentTypeOptions">
234
234
  <VisibilitySwitch data-testid="modelLinesVisibilitySwitch" v-model="linesVisibility" />
235
235
  <ViewerOptionsColoringTypeSelector
236
236
  :id="modelId"
@@ -67,7 +67,7 @@ const surfaceActiveColoring = computed({
67
67
 
68
68
  // Group Attributes
69
69
  const surfacesVertexAttributeName = computed({
70
- get: () => dataStyleStore.modelSurfacesVertexAttributeName(modelId, targetSurfaceIds[0]),
70
+ get: () => dataStyleStore.modelSurfacesVertexAttributeName(modelId),
71
71
  set: async (newValue) => {
72
72
  await dataStyleStore.setModelSurfacesVertexAttributeName(modelId, targetSurfaceIds, newValue);
73
73
  hybridViewerStore.remoteRender();
@@ -75,7 +75,7 @@ const surfacesVertexAttributeName = computed({
75
75
  });
76
76
 
77
77
  const surfacesVertexAttributeItem = computed({
78
- get: () => dataStyleStore.modelSurfacesVertexAttributeItem(modelId, targetSurfaceIds[0]),
78
+ get: () => dataStyleStore.modelSurfacesVertexAttributeItem(modelId),
79
79
  set: async (newValue) => {
80
80
  await dataStyleStore.setModelSurfacesVertexAttributeItem(modelId, targetSurfaceIds, newValue);
81
81
  hybridViewerStore.remoteRender();
@@ -83,7 +83,7 @@ const surfacesVertexAttributeItem = computed({
83
83
  });
84
84
 
85
85
  const surfacesVertexAttributeRange = computed({
86
- get: () => dataStyleStore.modelSurfacesVertexAttributeRange(modelId, targetSurfaceIds[0]),
86
+ get: () => dataStyleStore.modelSurfacesVertexAttributeRange(modelId),
87
87
  set: async (newValue) => {
88
88
  await dataStyleStore.setModelSurfacesVertexAttributeRange(
89
89
  modelId,
@@ -96,7 +96,7 @@ const surfacesVertexAttributeRange = computed({
96
96
  });
97
97
 
98
98
  const surfacesVertexAttributeColorMap = computed({
99
- get: () => dataStyleStore.modelSurfacesVertexAttributeColorMap(modelId, targetSurfaceIds[0]),
99
+ get: () => dataStyleStore.modelSurfacesVertexAttributeColorMap(modelId),
100
100
  set: async (newValue) => {
101
101
  await dataStyleStore.setModelSurfacesVertexAttributeColorMap(
102
102
  modelId,
@@ -108,7 +108,7 @@ const surfacesVertexAttributeColorMap = computed({
108
108
  });
109
109
 
110
110
  const surfacesPolygonAttributeName = computed({
111
- get: () => dataStyleStore.modelSurfacesPolygonAttributeName(modelId, targetSurfaceIds[0]),
111
+ get: () => dataStyleStore.modelSurfacesPolygonAttributeName(modelId),
112
112
  set: async (newValue) => {
113
113
  await dataStyleStore.setModelSurfacesPolygonAttributeName(modelId, targetSurfaceIds, newValue);
114
114
  hybridViewerStore.remoteRender();
@@ -116,7 +116,7 @@ const surfacesPolygonAttributeName = computed({
116
116
  });
117
117
 
118
118
  const surfacesPolygonAttributeItem = computed({
119
- get: () => dataStyleStore.modelSurfacesPolygonAttributeItem(modelId, targetSurfaceIds[0]),
119
+ get: () => dataStyleStore.modelSurfacesPolygonAttributeItem(modelId),
120
120
  set: async (newValue) => {
121
121
  await dataStyleStore.setModelSurfacesPolygonAttributeItem(modelId, targetSurfaceIds, newValue);
122
122
  hybridViewerStore.remoteRender();
@@ -124,7 +124,7 @@ const surfacesPolygonAttributeItem = computed({
124
124
  });
125
125
 
126
126
  const surfacesPolygonAttributeRange = computed({
127
- get: () => dataStyleStore.modelSurfacesPolygonAttributeRange(modelId, targetSurfaceIds[0]),
127
+ get: () => dataStyleStore.modelSurfacesPolygonAttributeRange(modelId),
128
128
  set: async (newValue) => {
129
129
  await dataStyleStore.setModelSurfacesPolygonAttributeRange(
130
130
  modelId,
@@ -137,7 +137,7 @@ const surfacesPolygonAttributeRange = computed({
137
137
  });
138
138
 
139
139
  const surfacesPolygonAttributeColorMap = computed({
140
- get: () => dataStyleStore.modelSurfacesPolygonAttributeColorMap(modelId, targetSurfaceIds[0]),
140
+ get: () => dataStyleStore.modelSurfacesPolygonAttributeColorMap(modelId),
141
141
  set: async (newValue) => {
142
142
  await dataStyleStore.setModelSurfacesPolygonAttributeColorMap(
143
143
  modelId,
@@ -238,7 +238,7 @@ const polygonSchema = back_schemas.opengeodeweb_back.model_component_polygon_att
238
238
  </script>
239
239
 
240
240
  <template>
241
- <OptionsSection title="Surfaces Options" class="mt-4">
241
+ <OptionsSection title="Surfaces Options" class="mt-4" data-testid="modelComponentTypeOptions">
242
242
  <VisibilitySwitch data-testid="modelSurfacesVisibilitySwitch" v-model="surfacesVisibility" />
243
243
  <ViewerOptionsColoringTypeSelector
244
244
  :id="modelId"
@@ -100,7 +100,7 @@ watch(
100
100
  },
101
101
  );
102
102
 
103
- watch([attributeName, attributeItem], () => {
103
+ watch([attributeName, attributeItem, currentAttribute], () => {
104
104
  if (attributeColorMap.value === undefined) {
105
105
  attributeColorMap.value = "batlow";
106
106
  }
@@ -15,6 +15,7 @@ const filterText = ref("");
15
15
  const canvasRefs = ref({});
16
16
  const loading = ref(true);
17
17
  const renderJobId = ref(0);
18
+ const openedGroups = ref([]);
18
19
 
19
20
  function setCanvasRef(presetName, element, id) {
20
21
  if (element) {
@@ -44,6 +45,16 @@ const filteredPresets = computed(() => {
44
45
  return result;
45
46
  });
46
47
 
48
+ watch(filterText, (newFilterText) => {
49
+ if (newFilterText) {
50
+ openedGroups.value = filteredPresets.value
51
+ .filter((item) => item.Children)
52
+ .map((item) => item.Name);
53
+ } else {
54
+ openedGroups.value = [];
55
+ }
56
+ });
57
+
47
58
  function processChunk(entries, index, jobId) {
48
59
  if (jobId !== renderJobId.value || index >= entries.length) {
49
60
  if (jobId === renderJobId.value) {
@@ -103,6 +114,7 @@ watch(filteredPresets, drawAllCanvases);
103
114
  />
104
115
 
105
116
  <v-list
117
+ v-model:opened="openedGroups"
106
118
  data-testid="colorMapList"
107
119
  density="compact"
108
120
  max-height="350"
@@ -110,7 +122,7 @@ watch(filteredPresets, drawAllCanvases);
110
122
  class="pa-0"
111
123
  :style="{ opacity: loading ? '0.3' : '1', transition: 'opacity 0.2s' }"
112
124
  >
113
- <template v-for="(item, index) in filteredPresets" :key="index">
125
+ <template v-for="(item, itemIdx) in filteredPresets" :key="item.Name">
114
126
  <v-list-group v-if="item.Children" :value="item.Name">
115
127
  <template #activator="{ props: gProps }">
116
128
  <v-list-item v-bind="gProps" :title="item.Name" class="text-white font-weight-bold" />
@@ -118,7 +130,7 @@ watch(filteredPresets, drawAllCanvases);
118
130
 
119
131
  <v-list-item
120
132
  v-for="(child, childIdx) in item.Children"
121
- :key="childIdx"
133
+ :key="child.Name"
122
134
  :active="child.Name === selectedPresetName"
123
135
  @click="emit('select', child)"
124
136
  class="px-2 mb-1"
@@ -127,7 +139,7 @@ watch(filteredPresets, drawAllCanvases);
127
139
  <div class="d-flex flex-column py-1">
128
140
  <span class="text-caption text-grey-lighten-1 mb-1">{{ child.Name }}</span>
129
141
  <canvas
130
- :ref="(element) => setCanvasRef(child.Name, element, `g-${index}-${childIdx}`)"
142
+ :ref="(element) => setCanvasRef(child.Name, element, `g-${itemIdx}-${childIdx}`)"
131
143
  width="200"
132
144
  height="18"
133
145
  class="w-100 rounded-xs border-thin"
@@ -147,7 +159,7 @@ watch(filteredPresets, drawAllCanvases);
147
159
  <div class="d-flex flex-column py-1">
148
160
  <span class="text-caption text-grey-lighten-1 mb-1">{{ item.Name }}</span>
149
161
  <canvas
150
- :ref="(element) => setCanvasRef(item.Name, element, `s-${index}`)"
162
+ :ref="(element) => setCanvasRef(item.Name, element, `s-${itemIdx}`)"
151
163
  width="200"
152
164
  height="18"
153
165
  class="w-100 rounded-xs border-thin"
@@ -32,6 +32,11 @@ export function useModelBlocksColor() {
32
32
  }
33
33
 
34
34
  async function setModelBlocksActiveColoring(modelId, blocks_ids, activeColoring) {
35
+ if (blocks_ids.length > 1) {
36
+ modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
37
+ active: activeColoring,
38
+ });
39
+ }
35
40
  await modelCommonStyle.mutateComponentStyles(modelId, blocks_ids, {
36
41
  coloring: { active: activeColoring },
37
42
  });
@@ -10,10 +10,19 @@ export function useModelBlocksCommonStyle() {
10
10
  return dataStyleState.getStyle(id).blocks;
11
11
  }
12
12
 
13
+ function modelComponentTypeBlocksStyle(id) {
14
+ const defaultStyle = modelBlocksStyle(id);
15
+ const typeStyle = dataStyleState.getModelComponentTypeStyle(id, "Block");
16
+ return merge({}, defaultStyle, typeStyle);
17
+ }
18
+
13
19
  function modelBlockStyle(id, block_id) {
14
- const groupStyle = modelBlocksStyle(id);
20
+ if (block_id === undefined) {
21
+ return modelComponentTypeBlocksStyle(id);
22
+ }
23
+ const typeStyle = modelComponentTypeBlocksStyle(id);
15
24
  const individualStyle = dataStyleState.getComponentStyle(id, block_id);
16
- return merge({}, groupStyle, individualStyle);
25
+ return merge({}, typeStyle, individualStyle);
17
26
  }
18
27
 
19
28
  function modelBlockColoring(id, block_id) {
@@ -26,8 +35,8 @@ export function useModelBlocksCommonStyle() {
26
35
  });
27
36
  }
28
37
 
29
- function mutateModelBlockColoring(id, block_id, values) {
30
- return modelCommonStyle.mutateComponentStyle(id, block_id, {
38
+ function mutateModelBlocksTypeColoring(id, values) {
39
+ return modelCommonStyle.mutateModelComponentTypeStyle(id, "Block", {
31
40
  coloring: values,
32
41
  });
33
42
  }
@@ -37,6 +46,6 @@ export function useModelBlocksCommonStyle() {
37
46
  modelBlockStyle,
38
47
  modelBlockColoring,
39
48
  mutateModelBlocksColoring,
40
- mutateModelBlockColoring,
49
+ mutateModelBlocksTypeColoring,
41
50
  };
42
51
  }
@@ -44,6 +44,11 @@ function useModelBlocksPolyhedronAttribute() {
44
44
  }
45
45
 
46
46
  function mutateModelBlocksPolyhedronStyle(modelId, blockIds, values) {
47
+ if (blockIds.length > 1) {
48
+ modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
49
+ polyhedron: values,
50
+ });
51
+ }
47
52
  return modelBlocksCommonStyle.mutateModelBlocksColoring(modelId, blockIds, {
48
53
  polyhedron: values,
49
54
  });
@@ -43,6 +43,11 @@ function useModelBlocksVertexAttribute() {
43
43
  }
44
44
 
45
45
  function mutateModelBlocksVertexStyle(modelId, blockIds, values) {
46
+ if (blockIds.length > 1) {
47
+ modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
48
+ vertex: values,
49
+ });
50
+ }
46
51
  return modelBlocksCommonStyle.mutateModelBlocksColoring(modelId, blockIds, {
47
52
  vertex: values,
48
53
  });
@@ -27,6 +27,11 @@ export function useModelCornersColor() {
27
27
  }
28
28
 
29
29
  async function setModelCornersActiveColoring(modelId, corners_ids, activeColoring) {
30
+ if (corners_ids.length > 1) {
31
+ modelCornersCommonStyle.mutateModelCornersTypeColoring(modelId, {
32
+ active: activeColoring,
33
+ });
34
+ }
30
35
  await modelCommonStyle.mutateComponentStyles(modelId, corners_ids, {
31
36
  coloring: { active: activeColoring },
32
37
  });
@@ -10,10 +10,19 @@ export function useModelCornersCommonStyle() {
10
10
  return dataStyleState.getStyle(id).corners;
11
11
  }
12
12
 
13
+ function modelComponentTypeCornersStyle(id) {
14
+ const defaultStyle = modelCornersStyle(id);
15
+ const typeStyle = dataStyleState.getModelComponentTypeStyle(id, "Corner");
16
+ return merge({}, defaultStyle, typeStyle);
17
+ }
18
+
13
19
  function modelCornerStyle(id, corner_id) {
14
- const groupStyle = modelCornersStyle(id);
20
+ if (corner_id === undefined) {
21
+ return modelComponentTypeCornersStyle(id);
22
+ }
23
+ const typeStyle = modelComponentTypeCornersStyle(id);
15
24
  const individualStyle = dataStyleState.getComponentStyle(id, corner_id);
16
- return merge({}, groupStyle, individualStyle);
25
+ return merge({}, typeStyle, individualStyle);
17
26
  }
18
27
 
19
28
  function modelCornerColoring(id, corner_id) {
@@ -26,8 +35,8 @@ export function useModelCornersCommonStyle() {
26
35
  });
27
36
  }
28
37
 
29
- function mutateModelCornerColoring(id, corner_id, values) {
30
- return modelCommonStyle.mutateComponentStyle(id, corner_id, {
38
+ function mutateModelCornersTypeColoring(id, values) {
39
+ return modelCommonStyle.mutateModelComponentTypeStyle(id, "Corner", {
31
40
  coloring: values,
32
41
  });
33
42
  }
@@ -37,6 +46,6 @@ export function useModelCornersCommonStyle() {
37
46
  modelCornerStyle,
38
47
  modelCornerColoring,
39
48
  mutateModelCornersColoring,
40
- mutateModelCornerColoring,
49
+ mutateModelCornersTypeColoring,
41
50
  };
42
51
  }
@@ -25,8 +25,10 @@ export function useModelCornersStyle() {
25
25
  }
26
26
  visibilityGroups[visibility].push(corner_id);
27
27
  }
28
- return Object.entries(visibilityGroups).map(([visibility, ids]) =>
29
- modelVisibilityStyle.setModelCornersVisibility(modelId, ids, visibility === "true"),
28
+ return Promise.all(
29
+ Object.entries(visibilityGroups).map(([visibility, ids]) =>
30
+ modelVisibilityStyle.setModelCornersVisibility(modelId, ids, visibility === "true"),
31
+ ),
30
32
  );
31
33
  }
32
34
 
@@ -43,6 +43,11 @@ function useModelCornersVertexAttribute() {
43
43
  }
44
44
 
45
45
  function mutateModelCornersVertexStyle(modelId, cornerIds, values) {
46
+ if (cornerIds.length > 1) {
47
+ modelCornersCommonStyle.mutateModelCornersTypeColoring(modelId, {
48
+ vertex: values,
49
+ });
50
+ }
46
51
  return modelCornersCommonStyle.mutateModelCornersColoring(modelId, cornerIds, {
47
52
  vertex: values,
48
53
  });
@@ -29,6 +29,11 @@ export function useModelLinesColor() {
29
29
  }
30
30
 
31
31
  async function setModelLinesActiveColoring(modelId, lines_ids, activeColoring) {
32
+ if (lines_ids.length > 1) {
33
+ modelLinesCommonStyle.mutateModelLinesTypeColoring(modelId, {
34
+ active: activeColoring,
35
+ });
36
+ }
32
37
  await modelCommonStyle.mutateComponentStyles(modelId, lines_ids, {
33
38
  coloring: { active: activeColoring },
34
39
  });
@@ -10,10 +10,19 @@ export function useModelLinesCommonStyle() {
10
10
  return dataStyleState.getStyle(id).lines;
11
11
  }
12
12
 
13
+ function modelComponentTypeLinesStyle(id) {
14
+ const defaultStyle = modelLinesStyle(id);
15
+ const typeStyle = dataStyleState.getModelComponentTypeStyle(id, "Line");
16
+ return merge({}, defaultStyle, typeStyle);
17
+ }
18
+
13
19
  function modelLineStyle(id, line_id) {
14
- const groupStyle = modelLinesStyle(id);
20
+ if (line_id === undefined) {
21
+ return modelComponentTypeLinesStyle(id);
22
+ }
23
+ const typeStyle = modelComponentTypeLinesStyle(id);
15
24
  const individualStyle = dataStyleState.getComponentStyle(id, line_id);
16
- return merge({}, groupStyle, individualStyle);
25
+ return merge({}, typeStyle, individualStyle);
17
26
  }
18
27
 
19
28
  function modelLineColoring(id, line_id) {
@@ -26,8 +35,8 @@ export function useModelLinesCommonStyle() {
26
35
  });
27
36
  }
28
37
 
29
- function mutateModelLineColoring(id, line_id, values) {
30
- return modelCommonStyle.mutateComponentStyle(id, line_id, {
38
+ function mutateModelLinesTypeColoring(id, values) {
39
+ return modelCommonStyle.mutateModelComponentTypeStyle(id, "Line", {
31
40
  coloring: values,
32
41
  });
33
42
  }
@@ -37,6 +46,6 @@ export function useModelLinesCommonStyle() {
37
46
  modelLineStyle,
38
47
  modelLineColoring,
39
48
  mutateModelLinesColoring,
40
- mutateModelLineColoring,
49
+ mutateModelLinesTypeColoring,
41
50
  };
42
51
  }
@@ -43,6 +43,11 @@ function useModelLinesEdgeAttribute() {
43
43
  }
44
44
 
45
45
  function mutateModelLinesEdgeStyle(modelId, lineIds, values) {
46
+ if (lineIds.length > 1) {
47
+ modelLinesCommonStyle.mutateModelLinesTypeColoring(modelId, {
48
+ edge: values,
49
+ });
50
+ }
46
51
  return modelLinesCommonStyle.mutateModelLinesColoring(modelId, lineIds, {
47
52
  edge: values,
48
53
  });
@@ -43,6 +43,11 @@ function useModelLinesVertexAttribute() {
43
43
  }
44
44
 
45
45
  function mutateModelLinesVertexStyle(modelId, lineIds, values) {
46
+ if (lineIds.length > 1) {
47
+ modelLinesCommonStyle.mutateModelLinesTypeColoring(modelId, {
48
+ vertex: values,
49
+ });
50
+ }
46
51
  return modelLinesCommonStyle.mutateModelLinesColoring(modelId, lineIds, {
47
52
  vertex: values,
48
53
  });
@@ -29,6 +29,11 @@ export function useModelSurfacesColor() {
29
29
  }
30
30
 
31
31
  async function setModelSurfacesActiveColoring(modelId, surfaces_ids, activeColoring) {
32
+ if (surfaces_ids.length > 1) {
33
+ modelSurfacesCommonStyle.mutateModelSurfacesTypeColoring(modelId, {
34
+ active: activeColoring,
35
+ });
36
+ }
32
37
  await modelCommonStyle.mutateComponentStyles(modelId, surfaces_ids, {
33
38
  coloring: { active: activeColoring },
34
39
  });
@@ -10,10 +10,19 @@ export function useModelSurfacesCommonStyle() {
10
10
  return dataStyleState.getStyle(id).surfaces;
11
11
  }
12
12
 
13
+ function modelComponentTypeSurfacesStyle(id) {
14
+ const defaultStyle = modelSurfacesStyle(id);
15
+ const typeStyle = dataStyleState.getModelComponentTypeStyle(id, "Surface");
16
+ return merge({}, defaultStyle, typeStyle);
17
+ }
18
+
13
19
  function modelSurfaceStyle(id, surface_id) {
14
- const groupStyle = modelSurfacesStyle(id);
20
+ if (surface_id === undefined) {
21
+ return modelComponentTypeSurfacesStyle(id);
22
+ }
23
+ const typeStyle = modelComponentTypeSurfacesStyle(id);
15
24
  const individualStyle = dataStyleState.getComponentStyle(id, surface_id);
16
- return merge({}, groupStyle, individualStyle);
25
+ return merge({}, typeStyle, individualStyle);
17
26
  }
18
27
 
19
28
  function modelSurfaceColoring(id, surface_id) {
@@ -26,8 +35,8 @@ export function useModelSurfacesCommonStyle() {
26
35
  });
27
36
  }
28
37
 
29
- function mutateModelSurfaceColoring(id, surface_id, values) {
30
- return modelCommonStyle.mutateComponentStyle(id, surface_id, {
38
+ function mutateModelSurfacesTypeColoring(id, values) {
39
+ return modelCommonStyle.mutateModelComponentTypeStyle(id, "Surface", {
31
40
  coloring: values,
32
41
  });
33
42
  }
@@ -37,6 +46,6 @@ export function useModelSurfacesCommonStyle() {
37
46
  modelSurfaceStyle,
38
47
  modelSurfaceColoring,
39
48
  mutateModelSurfacesColoring,
40
- mutateModelSurfaceColoring,
49
+ mutateModelSurfacesTypeColoring,
41
50
  };
42
51
  }
@@ -44,6 +44,11 @@ function useModelSurfacesPolygonAttribute() {
44
44
  }
45
45
 
46
46
  function mutateModelSurfacesPolygonStyle(modelId, surfaceIds, values) {
47
+ if (surfaceIds.length > 1) {
48
+ modelSurfacesCommonStyle.mutateModelSurfacesTypeColoring(modelId, {
49
+ polygon: values,
50
+ });
51
+ }
47
52
  return modelSurfacesCommonStyle.mutateModelSurfacesColoring(modelId, surfaceIds, {
48
53
  polygon: values,
49
54
  });
@@ -44,6 +44,11 @@ function useModelSurfacesVertexAttribute() {
44
44
  }
45
45
 
46
46
  function mutateModelSurfacesVertexStyle(modelId, surfaceIds, values) {
47
+ if (surfaceIds.length > 1) {
48
+ modelSurfacesCommonStyle.mutateModelSurfacesTypeColoring(modelId, {
49
+ vertex: values,
50
+ });
51
+ }
47
52
  return modelSurfacesCommonStyle.mutateModelSurfacesColoring(modelId, surfaceIds, {
48
53
  vertex: values,
49
54
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geode/opengeodeweb-front",
3
- "version": "10.30.2-rc.4",
3
+ "version": "10.30.2",
4
4
  "description": "OpenSource Vue/Nuxt/Pinia/Vuetify framework for web applications",
5
5
  "homepage": "https://github.com/Geode-solutions/OpenGeodeWeb-Front",
6
6
  "bugs": {
@@ -34,8 +34,8 @@
34
34
  "build": ""
35
35
  },
36
36
  "dependencies": {
37
- "@geode/opengeodeweb-back": "next",
38
- "@geode/opengeodeweb-viewer": "next",
37
+ "@geode/opengeodeweb-back": "latest",
38
+ "@geode/opengeodeweb-viewer": "latest",
39
39
  "@google-cloud/run": "3.2.0",
40
40
  "@kitware/vtk.js": "33.3.0",
41
41
  "@mdi/font": "7.4.47",
@@ -6,6 +6,7 @@ import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schem
6
6
  import { beforeAllTimeout, setupIntegrationTests } from "@ogw_tests/integration/setup";
7
7
  import { Status } from "@ogw_front/utils/status";
8
8
  import { cleanupBackend } from "@ogw_server/utils/cleanup";
9
+ import { isModelCornersVertexAttributeValid } from "@ogw_internal/stores/data_style/model/corners/vertex";
9
10
  import { useDataStore } from "@ogw_front/stores/data";
10
11
  import { useDataStyleStore } from "@ogw_front/stores/data_style";
11
12
  import { useViewerStore } from "@ogw_front/stores/viewer";
@@ -97,6 +98,17 @@ describe("model corners", () => {
97
98
  });
98
99
 
99
100
  describe("corners vertex attribute", () => {
101
+ test("coloring vertex attribute", () => {
102
+ const attribute = {
103
+ name: undefined,
104
+ item: undefined,
105
+ minimum: undefined,
106
+ maximum: undefined,
107
+ colorMap: undefined,
108
+ };
109
+ expect(isModelCornersVertexAttributeValid(attribute)).toBe(false);
110
+ });
111
+
100
112
  test("coloring vertex attribute — no request until range+colormap set", async () => {
101
113
  const dataStyleStore = useDataStyleStore();
102
114
  const viewerStore = useViewerStore();