@geode/opengeodeweb-front 10.33.4-rc.2 → 10.34.0-rc.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 (64) hide show
  1. package/app/assets/css/main.css +24 -0
  2. package/app/components/ClippingPlanes.vue +1 -1
  3. package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +20 -0
  4. package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +20 -0
  5. package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +20 -0
  6. package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +10 -0
  7. package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +20 -0
  8. package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +20 -0
  9. package/app/components/Viewer/Generic/Model/BlocksOptions.vue +44 -0
  10. package/app/components/Viewer/Generic/Model/CornersOptions.vue +22 -0
  11. package/app/components/Viewer/Generic/Model/LinesOptions.vue +36 -0
  12. package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +12 -12
  13. package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +48 -0
  14. package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +3 -1
  15. package/app/components/Viewer/ObjectTree/Box.vue +2 -0
  16. package/app/components/Viewer/Options/AttributeSelector.vue +53 -0
  17. package/app/components/Viewer/Options/ColorPicker.vue +9 -1
  18. package/app/components/Viewer/Options/ColoringTypeSelector.vue +16 -0
  19. package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +10 -0
  20. package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +20 -0
  21. package/app/components/Viewer/Surface/PolygonsOptions.vue +20 -0
  22. package/app/composables/clipping_planes_widget.js +4 -8
  23. package/app/composables/tree_keyboard_nav.js +2 -1
  24. package/app/stores/data.js +5 -0
  25. package/app/utils/default_styles/constants.js +3 -0
  26. package/app/utils/default_styles/index.js +1 -0
  27. package/app/utils/extension.js +21 -14
  28. package/app/utils/import_workflow.js +4 -3
  29. package/internal/database/database.js +1 -0
  30. package/internal/stores/data_style/mesh/cells/cell.js +31 -1
  31. package/internal/stores/data_style/mesh/cells/vertex.js +27 -1
  32. package/internal/stores/data_style/mesh/edges/edge.js +27 -1
  33. package/internal/stores/data_style/mesh/edges/vertex.js +27 -1
  34. package/internal/stores/data_style/mesh/points/vertex.js +27 -1
  35. package/internal/stores/data_style/mesh/polygons/polygon.js +27 -1
  36. package/internal/stores/data_style/mesh/polygons/vertex.js +27 -1
  37. package/internal/stores/data_style/mesh/polyhedra/polyhedron.js +27 -1
  38. package/internal/stores/data_style/mesh/polyhedra/vertex.js +27 -1
  39. package/internal/stores/data_style/model/blocks/polyhedron.js +29 -1
  40. package/internal/stores/data_style/model/blocks/vertex.js +24 -1
  41. package/internal/stores/data_style/model/corners/vertex.js +24 -1
  42. package/internal/stores/data_style/model/lines/edge.js +24 -1
  43. package/internal/stores/data_style/model/lines/vertex.js +24 -1
  44. package/internal/stores/data_style/model/surfaces/polygon.js +29 -1
  45. package/internal/stores/data_style/model/surfaces/vertex.js +29 -1
  46. package/internal/stores/hybrid_viewer/camera.js +5 -4
  47. package/internal/stores/hybrid_viewer/highlight.js +5 -0
  48. package/internal/stores/hybrid_viewer/viewport.js +2 -0
  49. package/nuxt.config.js +10 -2
  50. package/package.json +3 -3
  51. package/server/utils/app_config.js +3 -0
  52. package/server/utils/cleanup.js +2 -0
  53. package/server/utils/microservices.js +4 -0
  54. package/server/utils/path.js +9 -6
  55. package/tests/integration/stores/data_style/mesh/cells.nuxt.test.js +2 -0
  56. package/tests/integration/stores/data_style/mesh/edges.nuxt.test.js +3 -0
  57. package/tests/integration/stores/data_style/mesh/points.nuxt.test.js +2 -0
  58. package/tests/integration/stores/data_style/mesh/polygons.nuxt.test.js +3 -0
  59. package/tests/integration/stores/data_style/mesh/polyhedra.nuxt.test.js +3 -0
  60. package/tests/integration/stores/data_style/model/blocks.nuxt.test.js +3 -0
  61. package/tests/integration/stores/data_style/model/corners.nuxt.test.js +2 -0
  62. package/tests/integration/stores/data_style/model/lines.nuxt.test.js +3 -0
  63. package/tests/integration/stores/data_style/model/surfaces.nuxt.test.js +3 -0
  64. package/tests/unit/components/Step.nuxt.test.js +14 -5
@@ -0,0 +1,24 @@
1
+ .v-card-title.text-caption {
2
+ font-size: 0.75rem !important;
3
+ line-height: 1.25rem !important;
4
+ }
5
+
6
+ .v-card-title.text-subtitle-2 {
7
+ font-size: 0.875rem !important;
8
+ line-height: 1.375rem !important;
9
+ }
10
+
11
+ .v-card-title.text-subtitle-1 {
12
+ font-size: 1rem !important;
13
+ line-height: 1.5rem !important;
14
+ }
15
+
16
+ .v-card-title.text-body-2 {
17
+ font-size: 0.875rem !important;
18
+ line-height: 1.25rem !important;
19
+ }
20
+
21
+ .v-card-title.text-body-1 {
22
+ font-size: 1rem !important;
23
+ line-height: 1.5rem !important;
24
+ }
@@ -39,7 +39,7 @@ const {
39
39
  selectedDatasetIds,
40
40
  allItems,
41
41
  hybridViewerStore,
42
- debouncedApply: () => debouncedApply(),
42
+ debouncedApply: (...args) => debouncedApply?.(...args),
43
43
  });
44
44
 
45
45
  async function applyClippingPlanes() {
@@ -91,6 +91,15 @@ const vertex_attribute_color_map = computed({
91
91
  hybridViewerStore.remoteRender();
92
92
  },
93
93
  });
94
+ const vertex_attribute_no_data_color = computed({
95
+ get: () => dataStyleStore.meshEdgesVertexAttributeNoDataColor(id.value),
96
+ set: async (newValue) => {
97
+ await applyBatchStyle(id.value, (targetId) =>
98
+ dataStyleStore.setMeshEdgesVertexAttributeNoDataColor(targetId, newValue),
99
+ );
100
+ hybridViewerStore.remoteRender();
101
+ },
102
+ });
94
103
  const edge_attribute_name = computed({
95
104
  get: () => dataStyleStore.meshEdgesEdgeAttributeName(id.value),
96
105
  set: async (newValue) => {
@@ -127,6 +136,15 @@ const edge_attribute_color_map = computed({
127
136
  hybridViewerStore.remoteRender();
128
137
  },
129
138
  });
139
+ const edge_attribute_no_data_color = computed({
140
+ get: () => dataStyleStore.meshEdgesEdgeAttributeNoDataColor(id.value),
141
+ set: async (newValue) => {
142
+ await applyBatchStyle(id.value, (targetId) =>
143
+ dataStyleStore.setMeshEdgesEdgeAttributeNoDataColor(targetId, newValue),
144
+ );
145
+ hybridViewerStore.remoteRender();
146
+ },
147
+ });
130
148
  </script>
131
149
 
132
150
  <template>
@@ -149,10 +167,12 @@ const edge_attribute_color_map = computed({
149
167
  v-model:vertex_attribute_item="vertex_attribute_item"
150
168
  v-model:vertex_attribute_range="vertex_attribute_range"
151
169
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
170
+ v-model:vertex_attribute_no_data_color="vertex_attribute_no_data_color"
152
171
  v-model:edge_attribute_name="edge_attribute_name"
153
172
  v-model:edge_attribute_item="edge_attribute_item"
154
173
  v-model:edge_attribute_range="edge_attribute_range"
155
174
  v-model:edge_attribute_color_map="edge_attribute_color_map"
175
+ v-model:edge_attribute_no_data_color="edge_attribute_no_data_color"
156
176
  />
157
177
  </template>
158
178
  </template>
@@ -92,6 +92,15 @@ const vertex_attribute_color_map = computed({
92
92
  hybridViewerStore.remoteRender();
93
93
  },
94
94
  });
95
+ const vertex_attribute_no_data_color = computed({
96
+ get: () => dataStyleStore.meshCellsVertexAttributeNoDataColor(id.value),
97
+ set: async (newValue) => {
98
+ await applyBatchStyle(id.value, (targetId) =>
99
+ dataStyleStore.setMeshCellsVertexAttributeNoDataColor(targetId, newValue),
100
+ );
101
+ hybridViewerStore.remoteRender();
102
+ },
103
+ });
95
104
  const cell_attribute_name = computed({
96
105
  get: () => dataStyleStore.meshCellsCellAttributeName(id.value),
97
106
  set: async (newValue) => {
@@ -128,6 +137,15 @@ const cell_attribute_color_map = computed({
128
137
  hybridViewerStore.remoteRender();
129
138
  },
130
139
  });
140
+ const cell_attribute_no_data_color = computed({
141
+ get: () => dataStyleStore.meshCellsCellAttributeNoDataColor(id.value),
142
+ set: async (newValue) => {
143
+ await applyBatchStyle(id.value, (targetId) =>
144
+ dataStyleStore.setMeshCellsCellAttributeNoDataColor(targetId, newValue),
145
+ );
146
+ hybridViewerStore.remoteRender();
147
+ },
148
+ });
131
149
  </script>
132
150
 
133
151
  <template>
@@ -150,10 +168,12 @@ const cell_attribute_color_map = computed({
150
168
  v-model:vertex_attribute_item="vertex_attribute_item"
151
169
  v-model:vertex_attribute_range="vertex_attribute_range"
152
170
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
171
+ v-model:vertex_attribute_no_data_color="vertex_attribute_no_data_color"
153
172
  v-model:cell_attribute_name="cell_attribute_name"
154
173
  v-model:cell_attribute_item="cell_attribute_item"
155
174
  v-model:cell_attribute_range="cell_attribute_range"
156
175
  v-model:cell_attribute_color_map="cell_attribute_color_map"
176
+ v-model:cell_attribute_no_data_color="cell_attribute_no_data_color"
157
177
  />
158
178
  </template>
159
179
  </template>
@@ -92,6 +92,15 @@ const vertex_attribute_color_map = computed({
92
92
  hybridViewerStore.remoteRender();
93
93
  },
94
94
  });
95
+ const vertex_attribute_no_data_color = computed({
96
+ get: () => dataStyleStore.meshEdgesVertexAttributeNoDataColor(id.value),
97
+ set: async (newValue) => {
98
+ await applyBatchStyle(id.value, (targetId) =>
99
+ dataStyleStore.setMeshEdgesVertexAttributeNoDataColor(targetId, newValue),
100
+ );
101
+ hybridViewerStore.remoteRender();
102
+ },
103
+ });
95
104
  const edge_attribute_name = computed({
96
105
  get: () => dataStyleStore.meshEdgesEdgeAttributeName(id.value),
97
106
  set: async (newValue) => {
@@ -128,6 +137,15 @@ const edge_attribute_color_map = computed({
128
137
  hybridViewerStore.remoteRender();
129
138
  },
130
139
  });
140
+ const edge_attribute_no_data_color = computed({
141
+ get: () => dataStyleStore.meshEdgesEdgeAttributeNoDataColor(id.value),
142
+ set: async (newValue) => {
143
+ await applyBatchStyle(id.value, (targetId) =>
144
+ dataStyleStore.setMeshEdgesEdgeAttributeNoDataColor(targetId, newValue),
145
+ );
146
+ hybridViewerStore.remoteRender();
147
+ },
148
+ });
131
149
  </script>
132
150
 
133
151
  <template>
@@ -157,10 +175,12 @@ const edge_attribute_color_map = computed({
157
175
  v-model:vertex_attribute_item="vertex_attribute_item"
158
176
  v-model:vertex_attribute_range="vertex_attribute_range"
159
177
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
178
+ v-model:vertex_attribute_no_data_color="vertex_attribute_no_data_color"
160
179
  v-model:edge_attribute_name="edge_attribute_name"
161
180
  v-model:edge_attribute_item="edge_attribute_item"
162
181
  v-model:edge_attribute_range="edge_attribute_range"
163
182
  v-model:edge_attribute_color_map="edge_attribute_color_map"
183
+ v-model:edge_attribute_no_data_color="edge_attribute_no_data_color"
164
184
  />
165
185
  </template>
166
186
  </template>
@@ -92,6 +92,15 @@ const vertex_attribute_color_map = computed({
92
92
  hybridViewerStore.remoteRender();
93
93
  },
94
94
  });
95
+ const vertex_attribute_no_data_color = computed({
96
+ get: () => dataStyleStore.meshPointsVertexAttributeNoDataColor(id.value),
97
+ set: async (newValue) => {
98
+ await applyBatchStyle(id.value, (targetId) =>
99
+ dataStyleStore.setMeshPointsVertexAttributeNoDataColor(targetId, newValue),
100
+ );
101
+ hybridViewerStore.remoteRender();
102
+ },
103
+ });
95
104
  </script>
96
105
 
97
106
  <template>
@@ -121,6 +130,7 @@ const vertex_attribute_color_map = computed({
121
130
  v-model:vertex_attribute_item="vertex_attribute_item"
122
131
  v-model:vertex_attribute_range="vertex_attribute_range"
123
132
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
133
+ v-model:vertex_attribute_no_data_color="vertex_attribute_no_data_color"
124
134
  :capabilities="{ vertex: { available: false } }"
125
135
  />
126
136
  </template>
@@ -93,6 +93,15 @@ const vertex_attribute_color_map = computed({
93
93
  hybridViewerStore.remoteRender();
94
94
  },
95
95
  });
96
+ const vertex_attribute_no_data_color = computed({
97
+ get: () => dataStyleStore.meshPolygonsVertexAttributeNoDataColor(id.value),
98
+ set: async (newValue) => {
99
+ await applyBatchStyle(id.value, (targetId) =>
100
+ dataStyleStore.setMeshPolygonsVertexAttributeNoDataColor(targetId, newValue),
101
+ );
102
+ hybridViewerStore.remoteRender();
103
+ },
104
+ });
96
105
  const polygon_attribute_name = computed({
97
106
  get: () => dataStyleStore.meshPolygonsPolygonAttributeName(id.value),
98
107
  set: async (newValue) => {
@@ -129,6 +138,15 @@ const polygon_attribute_color_map = computed({
129
138
  hybridViewerStore.remoteRender();
130
139
  },
131
140
  });
141
+ const polygon_attribute_no_data_color = computed({
142
+ get: () => dataStyleStore.meshPolygonsPolygonAttributeNoDataColor(id.value),
143
+ set: async (newValue) => {
144
+ await applyBatchStyle(id.value, (targetId) =>
145
+ dataStyleStore.setMeshPolygonsPolygonAttributeNoDataColor(targetId, newValue),
146
+ );
147
+ hybridViewerStore.remoteRender();
148
+ },
149
+ });
132
150
  </script>
133
151
 
134
152
  <template>
@@ -154,10 +172,12 @@ const polygon_attribute_color_map = computed({
154
172
  v-model:vertex_attribute_item="vertex_attribute_item"
155
173
  v-model:vertex_attribute_range="vertex_attribute_range"
156
174
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
175
+ v-model:vertex_attribute_no_data_color="vertex_attribute_no_data_color"
157
176
  v-model:polygon_attribute_name="polygon_attribute_name"
158
177
  v-model:polygon_attribute_item="polygon_attribute_item"
159
178
  v-model:polygon_attribute_range="polygon_attribute_range"
160
179
  v-model:polygon_attribute_color_map="polygon_attribute_color_map"
180
+ v-model:polygon_attribute_no_data_color="polygon_attribute_no_data_color"
161
181
  :capabilities="capabilities"
162
182
  />
163
183
  </template>
@@ -82,6 +82,15 @@ const vertex_attribute_color_map = computed({
82
82
  hybridViewerStore.remoteRender();
83
83
  },
84
84
  });
85
+ const vertex_attribute_no_data_color = computed({
86
+ get: () => dataStyleStore.meshPolyhedraVertexAttributeNoDataColor(id.value),
87
+ set: async (newValue) => {
88
+ await applyBatchStyle(id.value, (targetId) =>
89
+ dataStyleStore.setMeshPolyhedraVertexAttributeNoDataColor(targetId, newValue),
90
+ );
91
+ hybridViewerStore.remoteRender();
92
+ },
93
+ });
85
94
  const polyhedron_attribute_name = computed({
86
95
  get: () => dataStyleStore.meshPolyhedraPolyhedronAttributeName(id.value),
87
96
  set: async (newValue) => {
@@ -120,6 +129,15 @@ const polyhedron_attribute_color_map = computed({
120
129
  hybridViewerStore.remoteRender();
121
130
  },
122
131
  });
132
+ const polyhedron_attribute_no_data_color = computed({
133
+ get: () => dataStyleStore.meshPolyhedraPolyhedronAttributeNoDataColor(id.value),
134
+ set: async (newValue) => {
135
+ await applyBatchStyle(id.value, (targetId) =>
136
+ dataStyleStore.setMeshPolyhedraPolyhedronAttributeNoDataColor(targetId, newValue),
137
+ );
138
+ hybridViewerStore.remoteRender();
139
+ },
140
+ });
123
141
  </script>
124
142
 
125
143
  <template>
@@ -144,10 +162,12 @@ const polyhedron_attribute_color_map = computed({
144
162
  v-model:vertex_attribute_item="vertex_attribute_item"
145
163
  v-model:vertex_attribute_range="vertex_attribute_range"
146
164
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
165
+ v-model:vertex_attribute_no_data_color="vertex_attribute_no_data_color"
147
166
  v-model:polyhedron_attribute_name="polyhedron_attribute_name"
148
167
  v-model:polyhedron_attribute_item="polyhedron_attribute_item"
149
168
  v-model:polyhedron_attribute_range="polyhedron_attribute_range"
150
169
  v-model:polyhedron_attribute_color_map="polyhedron_attribute_color_map"
170
+ v-model:polyhedron_attribute_no_data_color="polyhedron_attribute_no_data_color"
151
171
  :capabilities="{
152
172
  vertex: { available: true, hasColorMap: true },
153
173
  polyhedron: { available: true, hasColorMap: true },
@@ -103,6 +103,18 @@ const blocksVertexAttributeColorMap = computed({
103
103
  },
104
104
  });
105
105
 
106
+ const blocksVertexAttributeNoDataColor = computed({
107
+ get: () => dataStyleStore.modelBlocksVertexAttributeNoDataColor(modelId),
108
+ set: async (newValue) => {
109
+ await dataStyleStore.setModelBlocksVertexAttributeNoDataColor(
110
+ modelId,
111
+ targetBlockIds,
112
+ newValue,
113
+ );
114
+ hybridViewerStore.remoteRender();
115
+ },
116
+ });
117
+
106
118
  const blocksPolyhedronAttributeName = computed({
107
119
  get: () => dataStyleStore.modelBlocksPolyhedronAttributeName(modelId),
108
120
  set: async (newValue) => {
@@ -144,6 +156,18 @@ const blocksPolyhedronAttributeColorMap = computed({
144
156
  },
145
157
  });
146
158
 
159
+ const blocksPolyhedronAttributeNoDataColor = computed({
160
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeNoDataColor(modelId),
161
+ set: async (newValue) => {
162
+ await dataStyleStore.setModelBlocksPolyhedronAttributeNoDataColor(
163
+ modelId,
164
+ targetBlockIds,
165
+ newValue,
166
+ );
167
+ hybridViewerStore.remoteRender();
168
+ },
169
+ });
170
+
147
171
  // Individual Attributes
148
172
  const vertexAttributeName = computed({
149
173
  get: () => dataStyleStore.modelBlocksVertexAttributeName(modelId, blockId),
@@ -182,6 +206,14 @@ const vertexAttributeColorMap = computed({
182
206
  },
183
207
  });
184
208
 
209
+ const vertexAttributeNoDataColor = computed({
210
+ get: () => dataStyleStore.modelBlocksVertexAttributeNoDataColor(modelId, blockId),
211
+ set: async (newValue) => {
212
+ await dataStyleStore.setModelBlocksVertexAttributeNoDataColor(modelId, [blockId], newValue);
213
+ hybridViewerStore.remoteRender();
214
+ },
215
+ });
216
+
185
217
  const polyhedronAttributeName = computed({
186
218
  get: () => dataStyleStore.modelBlocksPolyhedronAttributeName(modelId, blockId),
187
219
  set: async (newValue) => {
@@ -219,6 +251,14 @@ const polyhedronAttributeColorMap = computed({
219
251
  },
220
252
  });
221
253
 
254
+ const polyhedronAttributeNoDataColor = computed({
255
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeNoDataColor(modelId, blockId),
256
+ set: async (newValue) => {
257
+ await dataStyleStore.setModelBlocksPolyhedronAttributeNoDataColor(modelId, [blockId], newValue);
258
+ hybridViewerStore.remoteRender();
259
+ },
260
+ });
261
+
222
262
  const capabilities = {
223
263
  color: { available: true },
224
264
  textures: { available: false },
@@ -245,10 +285,12 @@ const polyhedronSchema = back_schemas.opengeodeweb_back.model_component_polyhedr
245
285
  v-model:vertex_attribute_item="blocksVertexAttributeItem"
246
286
  v-model:vertex_attribute_range="blocksVertexAttributeRange"
247
287
  v-model:vertex_attribute_color_map="blocksVertexAttributeColorMap"
288
+ v-model:vertex_attribute_no_data_color="blocksVertexAttributeNoDataColor"
248
289
  v-model:polyhedron_attribute_name="blocksPolyhedronAttributeName"
249
290
  v-model:polyhedron_attribute_item="blocksPolyhedronAttributeItem"
250
291
  v-model:polyhedron_attribute_range="blocksPolyhedronAttributeRange"
251
292
  v-model:polyhedron_attribute_color_map="blocksPolyhedronAttributeColorMap"
293
+ v-model:polyhedron_attribute_no_data_color="blocksPolyhedronAttributeNoDataColor"
252
294
  :capabilities="capabilities"
253
295
  :schemas="{ vertex: vertexSchema, polyhedron: polyhedronSchema }"
254
296
  :allowRandom="true"
@@ -271,10 +313,12 @@ const polyhedronSchema = back_schemas.opengeodeweb_back.model_component_polyhedr
271
313
  v-model:vertex_attribute_item="vertexAttributeItem"
272
314
  v-model:vertex_attribute_range="vertexAttributeRange"
273
315
  v-model:vertex_attribute_color_map="vertexAttributeColorMap"
316
+ v-model:vertex_attribute_no_data_color="vertexAttributeNoDataColor"
274
317
  v-model:polyhedron_attribute_name="polyhedronAttributeName"
275
318
  v-model:polyhedron_attribute_item="polyhedronAttributeItem"
276
319
  v-model:polyhedron_attribute_range="polyhedronAttributeRange"
277
320
  v-model:polyhedron_attribute_color_map="polyhedronAttributeColorMap"
321
+ v-model:polyhedron_attribute_no_data_color="polyhedronAttributeNoDataColor"
278
322
  :capabilities="capabilities"
279
323
  :schemas="{ vertex: vertexSchema, polyhedron: polyhedronSchema }"
280
324
  :allowRandom="true"
@@ -103,6 +103,18 @@ const cornersVertexAttributeColorMap = computed({
103
103
  },
104
104
  });
105
105
 
106
+ const cornersVertexAttributeNoDataColor = computed({
107
+ get: () => dataStyleStore.modelCornersVertexAttributeNoDataColor(modelId),
108
+ set: async (newValue) => {
109
+ await dataStyleStore.setModelCornersVertexAttributeNoDataColor(
110
+ modelId,
111
+ targetCornerIds,
112
+ newValue,
113
+ );
114
+ hybridViewerStore.remoteRender();
115
+ },
116
+ });
117
+
106
118
  // Individual Attributes
107
119
  const vertexAttributeName = computed({
108
120
  get: () => dataStyleStore.modelCornersVertexAttributeName(modelId, cornerId),
@@ -141,6 +153,14 @@ const vertexAttributeColorMap = computed({
141
153
  },
142
154
  });
143
155
 
156
+ const vertexAttributeNoDataColor = computed({
157
+ get: () => dataStyleStore.modelCornersVertexAttributeNoDataColor(modelId, cornerId),
158
+ set: async (newValue) => {
159
+ await dataStyleStore.setModelCornersVertexAttributeNoDataColor(modelId, [cornerId], newValue);
160
+ hybridViewerStore.remoteRender();
161
+ },
162
+ });
163
+
144
164
  const capabilities = {
145
165
  color: { available: true },
146
166
  textures: { available: false },
@@ -166,6 +186,7 @@ const vertexSchema = back_schemas.opengeodeweb_back.model_component_vertex_attri
166
186
  v-model:vertex_attribute_item="cornersVertexAttributeItem"
167
187
  v-model:vertex_attribute_range="cornersVertexAttributeRange"
168
188
  v-model:vertex_attribute_color_map="cornersVertexAttributeColorMap"
189
+ v-model:vertex_attribute_no_data_color="cornersVertexAttributeNoDataColor"
169
190
  :capabilities="capabilities"
170
191
  :schemas="{ vertex: vertexSchema }"
171
192
  :allowRandom="true"
@@ -188,6 +209,7 @@ const vertexSchema = back_schemas.opengeodeweb_back.model_component_vertex_attri
188
209
  v-model:vertex_attribute_item="vertexAttributeItem"
189
210
  v-model:vertex_attribute_range="vertexAttributeRange"
190
211
  v-model:vertex_attribute_color_map="vertexAttributeColorMap"
212
+ v-model:vertex_attribute_no_data_color="vertexAttributeNoDataColor"
191
213
  :capabilities="capabilities"
192
214
  :schemas="{ vertex: vertexSchema }"
193
215
  :allowRandom="true"
@@ -103,6 +103,14 @@ const linesVertexAttributeColorMap = computed({
103
103
  },
104
104
  });
105
105
 
106
+ const linesVertexAttributeNoDataColor = computed({
107
+ get: () => dataStyleStore.modelLinesVertexAttributeNoDataColor(modelId),
108
+ set: async (newValue) => {
109
+ await dataStyleStore.setModelLinesVertexAttributeNoDataColor(modelId, targetLineIds, newValue);
110
+ hybridViewerStore.remoteRender();
111
+ },
112
+ });
113
+
106
114
  const linesEdgeAttributeName = computed({
107
115
  get: () => dataStyleStore.modelLinesEdgeAttributeName(modelId),
108
116
  set: async (newValue) => {
@@ -140,6 +148,14 @@ const linesEdgeAttributeColorMap = computed({
140
148
  },
141
149
  });
142
150
 
151
+ const linesEdgeAttributeNoDataColor = computed({
152
+ get: () => dataStyleStore.modelLinesEdgeAttributeNoDataColor(modelId),
153
+ set: async (newValue) => {
154
+ await dataStyleStore.setModelLinesEdgeAttributeNoDataColor(modelId, targetLineIds, newValue);
155
+ hybridViewerStore.remoteRender();
156
+ },
157
+ });
158
+
143
159
  // Individual Attributes
144
160
  const vertexAttributeName = computed({
145
161
  get: () => dataStyleStore.modelLinesVertexAttributeName(modelId, lineId),
@@ -178,6 +194,14 @@ const vertexAttributeColorMap = computed({
178
194
  },
179
195
  });
180
196
 
197
+ const vertexAttributeNoDataColor = computed({
198
+ get: () => dataStyleStore.modelLinesVertexAttributeNoDataColor(modelId, lineId),
199
+ set: async (newValue) => {
200
+ await dataStyleStore.setModelLinesVertexAttributeNoDataColor(modelId, [lineId], newValue);
201
+ hybridViewerStore.remoteRender();
202
+ },
203
+ });
204
+
181
205
  const edgeAttributeName = computed({
182
206
  get: () => dataStyleStore.modelLinesEdgeAttributeName(modelId, lineId),
183
207
  set: async (newValue) => {
@@ -215,6 +239,14 @@ const edgeAttributeColorMap = computed({
215
239
  },
216
240
  });
217
241
 
242
+ const edgeAttributeNoDataColor = computed({
243
+ get: () => dataStyleStore.modelLinesEdgeAttributeNoDataColor(modelId, lineId),
244
+ set: async (newValue) => {
245
+ await dataStyleStore.setModelLinesEdgeAttributeNoDataColor(modelId, [lineId], newValue);
246
+ hybridViewerStore.remoteRender();
247
+ },
248
+ });
249
+
218
250
  const capabilities = {
219
251
  color: { available: true },
220
252
  textures: { available: false },
@@ -241,10 +273,12 @@ const edgeSchema = back_schemas.opengeodeweb_back.model_component_edge_attribute
241
273
  v-model:vertex_attribute_item="linesVertexAttributeItem"
242
274
  v-model:vertex_attribute_range="linesVertexAttributeRange"
243
275
  v-model:vertex_attribute_color_map="linesVertexAttributeColorMap"
276
+ v-model:vertex_attribute_no_data_color="linesVertexAttributeNoDataColor"
244
277
  v-model:edge_attribute_name="linesEdgeAttributeName"
245
278
  v-model:edge_attribute_item="linesEdgeAttributeItem"
246
279
  v-model:edge_attribute_range="linesEdgeAttributeRange"
247
280
  v-model:edge_attribute_color_map="linesEdgeAttributeColorMap"
281
+ v-model:edge_attribute_no_data_color="linesEdgeAttributeNoDataColor"
248
282
  :capabilities="capabilities"
249
283
  :schemas="{ vertex: vertexSchema, edge: edgeSchema }"
250
284
  :allowRandom="true"
@@ -267,10 +301,12 @@ const edgeSchema = back_schemas.opengeodeweb_back.model_component_edge_attribute
267
301
  v-model:vertex_attribute_item="vertexAttributeItem"
268
302
  v-model:vertex_attribute_range="vertexAttributeRange"
269
303
  v-model:vertex_attribute_color_map="vertexAttributeColorMap"
304
+ v-model:vertex_attribute_no_data_color="vertexAttributeNoDataColor"
270
305
  v-model:edge_attribute_name="edgeAttributeName"
271
306
  v-model:edge_attribute_item="edgeAttributeItem"
272
307
  v-model:edge_attribute_range="edgeAttributeRange"
273
308
  v-model:edge_attribute_color_map="edgeAttributeColorMap"
309
+ v-model:edge_attribute_no_data_color="edgeAttributeNoDataColor"
274
310
  :capabilities="capabilities"
275
311
  :schemas="{ vertex: vertexSchema, edge: edgeSchema }"
276
312
  :allowRandom="true"
@@ -90,33 +90,33 @@ const modelVisibility = computed({
90
90
  },
91
91
  });
92
92
 
93
- const modelComponentsActiveColoring = computed({
94
- get: () => dataStyleStore.getModelActiveColoring(modelId.value),
95
- set: async (coloringType) => {
93
+ const modelComponentsColor = computed({
94
+ get: () => dataStyleStore.getModelColor(modelId.value),
95
+ set: async (color) => {
96
96
  await dataStyleStore.mutateStyle(modelId.value, {
97
- coloring: { active: coloringType },
97
+ coloring: { constant: color },
98
98
  });
99
99
  await dataStyleStore.setModelComponentsColor(
100
100
  modelId.value,
101
101
  selection.value,
102
- dataStyleStore.getModelColor(modelId.value),
103
- coloringType,
102
+ color,
103
+ dataStyleStore.getModelActiveColoring(modelId.value),
104
104
  );
105
105
  hybridViewerStore.remoteRender();
106
106
  },
107
107
  });
108
108
 
109
- const modelComponentsColor = computed({
110
- get: () => dataStyleStore.getModelColor(modelId.value),
111
- set: async (color) => {
109
+ const modelComponentsActiveColoring = computed({
110
+ get: () => dataStyleStore.getModelActiveColoring(modelId.value),
111
+ set: async (coloringType) => {
112
112
  await dataStyleStore.mutateStyle(modelId.value, {
113
- coloring: { constant: color },
113
+ coloring: { active: coloringType },
114
114
  });
115
115
  await dataStyleStore.setModelComponentsColor(
116
116
  modelId.value,
117
117
  selection.value,
118
- color,
119
- dataStyleStore.getModelActiveColoring(modelId.value),
118
+ dataStyleStore.getModelColor(modelId.value),
119
+ coloringType,
120
120
  );
121
121
  hybridViewerStore.remoteRender();
122
122
  },
@@ -107,6 +107,18 @@ const surfacesVertexAttributeColorMap = computed({
107
107
  },
108
108
  });
109
109
 
110
+ const surfacesVertexAttributeNoDataColor = computed({
111
+ get: () => dataStyleStore.modelSurfacesVertexAttributeNoDataColor(modelId),
112
+ set: async (newValue) => {
113
+ await dataStyleStore.setModelSurfacesVertexAttributeNoDataColor(
114
+ modelId,
115
+ targetSurfaceIds,
116
+ newValue,
117
+ );
118
+ hybridViewerStore.remoteRender();
119
+ },
120
+ });
121
+
110
122
  const surfacesPolygonAttributeName = computed({
111
123
  get: () => dataStyleStore.modelSurfacesPolygonAttributeName(modelId),
112
124
  set: async (newValue) => {
@@ -148,6 +160,18 @@ const surfacesPolygonAttributeColorMap = computed({
148
160
  },
149
161
  });
150
162
 
163
+ const surfacesPolygonAttributeNoDataColor = computed({
164
+ get: () => dataStyleStore.modelSurfacesPolygonAttributeNoDataColor(modelId),
165
+ set: async (newValue) => {
166
+ await dataStyleStore.setModelSurfacesPolygonAttributeNoDataColor(
167
+ modelId,
168
+ targetSurfaceIds,
169
+ newValue,
170
+ );
171
+ hybridViewerStore.remoteRender();
172
+ },
173
+ });
174
+
151
175
  // Individual Attributes
152
176
  const vertexAttributeName = computed({
153
177
  get: () => dataStyleStore.modelSurfacesVertexAttributeName(modelId, surfaceId),
@@ -186,6 +210,14 @@ const vertexAttributeColorMap = computed({
186
210
  },
187
211
  });
188
212
 
213
+ const vertexAttributeNoDataColor = computed({
214
+ get: () => dataStyleStore.modelSurfacesVertexAttributeNoDataColor(modelId, surfaceId),
215
+ set: async (newValue) => {
216
+ await dataStyleStore.setModelSurfacesVertexAttributeNoDataColor(modelId, [surfaceId], newValue);
217
+ hybridViewerStore.remoteRender();
218
+ },
219
+ });
220
+
189
221
  const polygonAttributeName = computed({
190
222
  get: () => dataStyleStore.modelSurfacesPolygonAttributeName(modelId, surfaceId),
191
223
  set: async (newValue) => {
@@ -223,6 +255,18 @@ const polygonAttributeColorMap = computed({
223
255
  },
224
256
  });
225
257
 
258
+ const polygonAttributeNoDataColor = computed({
259
+ get: () => dataStyleStore.modelSurfacesPolygonAttributeNoDataColor(modelId, surfaceId),
260
+ set: async (newValue) => {
261
+ await dataStyleStore.setModelSurfacesPolygonAttributeNoDataColor(
262
+ modelId,
263
+ [surfaceId],
264
+ newValue,
265
+ );
266
+ hybridViewerStore.remoteRender();
267
+ },
268
+ });
269
+
226
270
  const capabilities = {
227
271
  color: { available: true },
228
272
  textures: { available: false },
@@ -249,10 +293,12 @@ const polygonSchema = back_schemas.opengeodeweb_back.model_component_polygon_att
249
293
  v-model:vertex_attribute_item="surfacesVertexAttributeItem"
250
294
  v-model:vertex_attribute_range="surfacesVertexAttributeRange"
251
295
  v-model:vertex_attribute_color_map="surfacesVertexAttributeColorMap"
296
+ v-model:vertex_attribute_no_data_color="surfacesVertexAttributeNoDataColor"
252
297
  v-model:polygon_attribute_name="surfacesPolygonAttributeName"
253
298
  v-model:polygon_attribute_item="surfacesPolygonAttributeItem"
254
299
  v-model:polygon_attribute_range="surfacesPolygonAttributeRange"
255
300
  v-model:polygon_attribute_color_map="surfacesPolygonAttributeColorMap"
301
+ v-model:polygon_attribute_no_data_color="surfacesPolygonAttributeNoDataColor"
256
302
  :capabilities="capabilities"
257
303
  :schemas="{ vertex: vertexSchema, polygon: polygonSchema }"
258
304
  :allowRandom="true"
@@ -275,10 +321,12 @@ const polygonSchema = back_schemas.opengeodeweb_back.model_component_polygon_att
275
321
  v-model:vertex_attribute_item="vertexAttributeItem"
276
322
  v-model:vertex_attribute_range="vertexAttributeRange"
277
323
  v-model:vertex_attribute_color_map="vertexAttributeColorMap"
324
+ v-model:vertex_attribute_no_data_color="vertexAttributeNoDataColor"
278
325
  v-model:polygon_attribute_name="polygonAttributeName"
279
326
  v-model:polygon_attribute_item="polygonAttributeItem"
280
327
  v-model:polygon_attribute_range="polygonAttributeRange"
281
328
  v-model:polygon_attribute_color_map="polygonAttributeColorMap"
329
+ v-model:polygon_attribute_no_data_color="polygonAttributeNoDataColor"
282
330
  :capabilities="capabilities"
283
331
  :schemas="{ vertex: vertexSchema, polygon: polygonSchema }"
284
332
  :allowRandom="true"
@@ -54,8 +54,8 @@ const { virtualScrollRef, stickyHeader, handleScroll, scrollToIndex, getScrollIn
54
54
  actualItemProps,
55
55
  );
56
56
 
57
- const lastActiveIndex = ref(-1);
58
57
  const focusedIndex = ref(-1);
58
+ const lastActiveIndex = ref(-1);
59
59
 
60
60
  function handleItemClick(item, index, event) {
61
61
  if (index !== undefined) {
@@ -110,6 +110,8 @@ const { handleKeyDown } = useTreeKeyboardNav(
110
110
  scrollToIndex,
111
111
  toggleOpen,
112
112
  handleItemClick,
113
+ getScrollInfo,
114
+ focusedIndex,
113
115
  );
114
116
  </script>
115
117