@geode/opengeodeweb-front 10.28.1-rc.4 → 10.29.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 (57) hide show
  1. package/app/components/Viewer/ContextMenu/InfoCard.vue +56 -21
  2. package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +21 -0
  3. package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +21 -0
  4. package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +80 -0
  5. package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +10 -0
  6. package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +81 -0
  7. package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +20 -0
  8. package/app/components/Viewer/Generic/Model/BlocksOptions.vue +36 -0
  9. package/app/components/Viewer/Generic/Model/CornersOptions.vue +18 -0
  10. package/app/components/Viewer/Generic/Model/LinesOptions.vue +36 -0
  11. package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +36 -0
  12. package/app/components/Viewer/Options/AttributeSelector.vue +47 -38
  13. package/app/components/Viewer/Options/ColoringTypeSelector.vue +26 -22
  14. package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +10 -0
  15. package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +20 -0
  16. package/app/components/Viewer/Surface/PolygonsOptions.vue +20 -0
  17. package/internal/stores/data_style/mesh/cells/cell.js +94 -60
  18. package/internal/stores/data_style/mesh/cells/index.js +21 -22
  19. package/internal/stores/data_style/mesh/cells/vertex.js +83 -64
  20. package/internal/stores/data_style/mesh/edges/edge.js +83 -67
  21. package/internal/stores/data_style/mesh/edges/index.js +22 -19
  22. package/internal/stores/data_style/mesh/edges/vertex.js +87 -65
  23. package/internal/stores/data_style/mesh/points/index.js +9 -9
  24. package/internal/stores/data_style/mesh/points/vertex.js +96 -99
  25. package/internal/stores/data_style/mesh/polygons/index.js +26 -16
  26. package/internal/stores/data_style/mesh/polygons/polygon.js +88 -66
  27. package/internal/stores/data_style/mesh/polygons/vertex.js +88 -66
  28. package/internal/stores/data_style/mesh/polyhedra/index.js +33 -22
  29. package/internal/stores/data_style/mesh/polyhedra/polyhedron.js +101 -103
  30. package/internal/stores/data_style/mesh/polyhedra/vertex.js +101 -103
  31. package/internal/stores/data_style/model/blocks/color.js +27 -28
  32. package/internal/stores/data_style/model/blocks/index.js +140 -72
  33. package/internal/stores/data_style/model/blocks/polyhedron.js +114 -58
  34. package/internal/stores/data_style/model/blocks/vertex.js +107 -57
  35. package/internal/stores/data_style/model/common.js +6 -6
  36. package/internal/stores/data_style/model/corners/color.js +12 -16
  37. package/internal/stores/data_style/model/corners/index.js +95 -63
  38. package/internal/stores/data_style/model/corners/vertex.js +108 -58
  39. package/internal/stores/data_style/model/lines/color.js +18 -23
  40. package/internal/stores/data_style/model/lines/edge.js +106 -54
  41. package/internal/stores/data_style/model/lines/index.js +132 -71
  42. package/internal/stores/data_style/model/lines/vertex.js +107 -54
  43. package/internal/stores/data_style/model/surfaces/color.js +24 -32
  44. package/internal/stores/data_style/model/surfaces/index.js +142 -74
  45. package/internal/stores/data_style/model/surfaces/polygon.js +114 -58
  46. package/internal/stores/data_style/model/surfaces/vertex.js +114 -58
  47. package/internal/stores/data_style/state.js +105 -94
  48. package/package.json +1 -1
  49. package/tests/integration/stores/data_style/mesh/cells.nuxt.test.js +200 -24
  50. package/tests/integration/stores/data_style/mesh/edges.nuxt.test.js +132 -34
  51. package/tests/integration/stores/data_style/mesh/points.nuxt.test.js +60 -11
  52. package/tests/integration/stores/data_style/mesh/polygons.nuxt.test.js +116 -22
  53. package/tests/integration/stores/data_style/mesh/polyhedra.nuxt.test.js +145 -34
  54. package/tests/integration/stores/data_style/model/blocks.nuxt.test.js +206 -33
  55. package/tests/integration/stores/data_style/model/corners.nuxt.test.js +94 -15
  56. package/tests/integration/stores/data_style/model/lines.nuxt.test.js +187 -30
  57. package/tests/integration/stores/data_style/model/surfaces.nuxt.test.js +379 -31
@@ -23,28 +23,24 @@ const menuStore = useMenuStore();
23
23
  const dataStore = useDataStore();
24
24
 
25
25
  const componentName = ref("");
26
+ const componentItem = ref(undefined);
26
27
 
27
28
  watch(
28
29
  () => menuStore.current_meta_data,
29
30
  async (newMeta) => {
30
31
  componentName.value = "";
32
+ componentItem.value = undefined;
31
33
  if (!newMeta) {
32
34
  return;
33
35
  }
34
36
 
35
- if (newMeta.viewer_type === "model_component" && newMeta.modelId && newMeta.pickedComponentId) {
36
- try {
37
- const comp = await dataStore.getComponentByViewerId(
38
- newMeta.modelId,
39
- newMeta.pickedComponentId,
40
- );
41
- if (comp && comp.name) {
42
- componentName.value = comp.name;
43
- } else {
44
- componentName.value = newMeta.pickedComponentId;
45
- }
46
- } catch {
47
- componentName.value = newMeta.pickedComponentId;
37
+ const modelId = newMeta.modelId || newMeta.id;
38
+ if (newMeta.pickedComponentId && modelId) {
39
+ const components = await dataStore.getAllMeshComponents(modelId);
40
+ const comp = components.find((component) => component.id === newMeta.pickedComponentId);
41
+ if (comp) {
42
+ componentName.value = comp.title;
43
+ componentItem.value = comp;
48
44
  }
49
45
  }
50
46
  },
@@ -56,7 +52,7 @@ const cleanName = computed(() => {
56
52
  if (!meta) {
57
53
  return "Unnamed Object";
58
54
  }
59
- if (componentName.value) {
55
+ if (componentName.value && meta.viewer_type === "model_component") {
60
56
  return componentName.value;
61
57
  }
62
58
  return meta.name || "Unnamed Object";
@@ -70,6 +66,18 @@ const displayTitle = computed(() => {
70
66
  return middleTruncate(name, TRUNCATE_MAX_LENGTH, TRUNCATE_START_CHARS, TRUNCATE_END_CHARS);
71
67
  });
72
68
 
69
+ const displayComponentTitle = computed(() => {
70
+ if (!componentItem.value) {
71
+ return "";
72
+ }
73
+ return middleTruncate(
74
+ componentItem.value.title,
75
+ TRUNCATE_MAX_LENGTH,
76
+ TRUNCATE_START_CHARS,
77
+ TRUNCATE_END_CHARS,
78
+ );
79
+ });
80
+
73
81
  const copied = ref(false);
74
82
  async function copyId(targetId) {
75
83
  if (!targetId) {
@@ -86,16 +94,17 @@ async function copyId(targetId) {
86
94
  }
87
95
  }
88
96
 
89
- const formattedId = computed(() => {
90
- const metaId = metaData?.id;
91
- if (!metaId) {
97
+ function formatId(id) {
98
+ if (!id) {
92
99
  return "";
93
100
  }
94
- if (metaId.length <= MAX_SHORT_ID_LENGTH) {
95
- return metaId;
101
+ if (id.length <= MAX_SHORT_ID_LENGTH) {
102
+ return id;
96
103
  }
97
- return `${metaId.slice(0, ID_SLICE_START)}...${metaId.slice(metaId.length - ID_SLICE_END_OFFSET)}`;
98
- });
104
+ return `${id.slice(0, ID_SLICE_START)}...${id.slice(id.length - ID_SLICE_END_OFFSET)}`;
105
+ }
106
+
107
+ const formattedId = computed(() => formatId(metaData?.id));
99
108
  </script>
100
109
 
101
110
  <template>
@@ -138,6 +147,32 @@ const formattedId = computed(() => {
138
147
  class="ml-1"
139
148
  />
140
149
  </v-col>
150
+
151
+ <template v-if="componentItem">
152
+ <v-divider class="w-100 my-2" opacity="0.2" />
153
+ <v-col
154
+ class="text-subtitle-2 font-weight-bold text-truncate text-white w-100 pa-0"
155
+ cols="auto"
156
+ style="line-height: 1.3"
157
+ >
158
+ {{ displayComponentTitle }}
159
+ </v-col>
160
+ <v-col
161
+ class="text-caption font-weight-black text-uppercase text-secondary pa-0"
162
+ style="font-size: 0.68rem; line-height: 1.2"
163
+ >
164
+ {{ componentItem.category }}
165
+ </v-col>
166
+ <v-col
167
+ class="id-badge-container mt-1 d-inline-flex align-center px-2 py-0.5"
168
+ @click.stop="copyId(componentItem.id)"
169
+ >
170
+ <span class="id-text">
171
+ {{ formatId(componentItem.id) }}
172
+ </span>
173
+ <v-icon icon="mdi-content-copy" size="10" color="white" class="ml-1" />
174
+ </v-col>
175
+ </template>
141
176
  </v-row>
142
177
  </GlassCard>
143
178
  </v-sheet>
@@ -64,6 +64,15 @@ const vertex_attribute_name = computed({
64
64
  hybridViewerStore.remoteRender();
65
65
  },
66
66
  });
67
+ const vertex_attribute_item = computed({
68
+ get: () => dataStyleStore.meshEdgesVertexAttributeItem(id.value),
69
+ set: async (newValue) => {
70
+ await applyBatchStyle(id.value, (targetId) =>
71
+ dataStyleStore.setMeshEdgesVertexAttributeItem(targetId, newValue),
72
+ );
73
+ hybridViewerStore.remoteRender();
74
+ },
75
+ });
67
76
  const vertex_attribute_range = computed({
68
77
  get: () => dataStyleStore.meshEdgesVertexAttributeRange(id.value),
69
78
  set: async (newValue) => {
@@ -91,6 +100,15 @@ const edge_attribute_name = computed({
91
100
  hybridViewerStore.remoteRender();
92
101
  },
93
102
  });
103
+ const edge_attribute_item = computed({
104
+ get: () => dataStyleStore.meshEdgesEdgeAttributeItem(id.value),
105
+ set: async (newValue) => {
106
+ await applyBatchStyle(id.value, (targetId) =>
107
+ dataStyleStore.setMeshEdgesEdgeAttributeItem(targetId, newValue),
108
+ );
109
+ hybridViewerStore.remoteRender();
110
+ },
111
+ });
94
112
  const edge_attribute_range = computed({
95
113
  get: () => dataStyleStore.meshEdgesEdgeAttributeRange(id.value),
96
114
  set: async (newValue) => {
@@ -110,6 +128,7 @@ const edge_attribute_color_map = computed({
110
128
  },
111
129
  });
112
130
  </script>
131
+
113
132
  <template>
114
133
  <ViewerContextMenuItem
115
134
  data-testid="meshEdgesMenu"
@@ -127,9 +146,11 @@ const edge_attribute_color_map = computed({
127
146
  v-model:coloring_style_key="coloring_style_key"
128
147
  v-model:color="color"
129
148
  v-model:vertex_attribute_name="vertex_attribute_name"
149
+ v-model:vertex_attribute_item="vertex_attribute_item"
130
150
  v-model:vertex_attribute_range="vertex_attribute_range"
131
151
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
132
152
  v-model:edge_attribute_name="edge_attribute_name"
153
+ v-model:edge_attribute_item="edge_attribute_item"
133
154
  v-model:edge_attribute_range="edge_attribute_range"
134
155
  v-model:edge_attribute_color_map="edge_attribute_color_map"
135
156
  />
@@ -55,6 +55,7 @@ const textures = computed({
55
55
  hybridViewerStore.remoteRender();
56
56
  },
57
57
  });
58
+
58
59
  const vertex_attribute_name = computed({
59
60
  get: () => dataStyleStore.meshCellsVertexAttributeName(id.value),
60
61
  set: async (newValue) => {
@@ -64,6 +65,15 @@ const vertex_attribute_name = computed({
64
65
  hybridViewerStore.remoteRender();
65
66
  },
66
67
  });
68
+ const vertex_attribute_item = computed({
69
+ get: () => dataStyleStore.meshCellsVertexAttributeItem(id.value),
70
+ set: async (newValue) => {
71
+ await applyBatchStyle(id.value, (targetId) =>
72
+ dataStyleStore.setMeshCellsVertexAttributeItem(targetId, newValue),
73
+ );
74
+ hybridViewerStore.remoteRender();
75
+ },
76
+ });
67
77
  const vertex_attribute_range = computed({
68
78
  get: () => dataStyleStore.meshCellsVertexAttributeRange(id.value),
69
79
  set: async (newValue) => {
@@ -91,6 +101,15 @@ const cell_attribute_name = computed({
91
101
  hybridViewerStore.remoteRender();
92
102
  },
93
103
  });
104
+ const cell_attribute_item = computed({
105
+ get: () => dataStyleStore.meshCellsCellAttributeItem(id.value),
106
+ set: async (newValue) => {
107
+ await applyBatchStyle(id.value, (targetId) =>
108
+ dataStyleStore.setMeshCellsCellAttributeItem(targetId, newValue),
109
+ );
110
+ hybridViewerStore.remoteRender();
111
+ },
112
+ });
94
113
  const cell_attribute_range = computed({
95
114
  get: () => dataStyleStore.meshCellsCellAttributeRange(id.value),
96
115
  set: async (newValue) => {
@@ -128,9 +147,11 @@ const cell_attribute_color_map = computed({
128
147
  v-model:color="color"
129
148
  v-model:textures="textures"
130
149
  v-model:vertex_attribute_name="vertex_attribute_name"
150
+ v-model:vertex_attribute_item="vertex_attribute_item"
131
151
  v-model:vertex_attribute_range="vertex_attribute_range"
132
152
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
133
153
  v-model:cell_attribute_name="cell_attribute_name"
154
+ v-model:cell_attribute_item="cell_attribute_item"
134
155
  v-model:cell_attribute_range="cell_attribute_range"
135
156
  v-model:cell_attribute_color_map="cell_attribute_color_map"
136
157
  />
@@ -56,6 +56,78 @@ const color = computed({
56
56
  hybridViewerStore.remoteRender();
57
57
  },
58
58
  });
59
+ const vertex_attribute_name = computed({
60
+ get: () => dataStyleStore.meshEdgesVertexAttributeName(id.value),
61
+ set: async (newValue) => {
62
+ await applyBatchStyle(id.value, (targetId) =>
63
+ dataStyleStore.setMeshEdgesVertexAttributeName(targetId, newValue),
64
+ );
65
+ hybridViewerStore.remoteRender();
66
+ },
67
+ });
68
+ const vertex_attribute_item = computed({
69
+ get: () => dataStyleStore.meshEdgesVertexAttributeItem(id.value),
70
+ set: async (newValue) => {
71
+ await applyBatchStyle(id.value, (targetId) =>
72
+ dataStyleStore.setMeshEdgesVertexAttributeItem(targetId, newValue),
73
+ );
74
+ hybridViewerStore.remoteRender();
75
+ },
76
+ });
77
+ const vertex_attribute_range = computed({
78
+ get: () => dataStyleStore.meshEdgesVertexAttributeRange(id.value),
79
+ set: async (newValue) => {
80
+ await applyBatchStyle(id.value, (targetId) =>
81
+ dataStyleStore.setMeshEdgesVertexAttributeRange(targetId, newValue[0], newValue[1]),
82
+ );
83
+ hybridViewerStore.remoteRender();
84
+ },
85
+ });
86
+ const vertex_attribute_color_map = computed({
87
+ get: () => dataStyleStore.meshEdgesVertexAttributeColorMap(id.value),
88
+ set: async (newValue) => {
89
+ await applyBatchStyle(id.value, (targetId) =>
90
+ dataStyleStore.setMeshEdgesVertexAttributeColorMap(targetId, newValue),
91
+ );
92
+ hybridViewerStore.remoteRender();
93
+ },
94
+ });
95
+ const edge_attribute_name = computed({
96
+ get: () => dataStyleStore.meshEdgesEdgeAttributeName(id.value),
97
+ set: async (newValue) => {
98
+ await applyBatchStyle(id.value, (targetId) =>
99
+ dataStyleStore.setMeshEdgesEdgeAttributeName(targetId, newValue),
100
+ );
101
+ hybridViewerStore.remoteRender();
102
+ },
103
+ });
104
+ const edge_attribute_item = computed({
105
+ get: () => dataStyleStore.meshEdgesEdgeAttributeItem(id.value),
106
+ set: async (newValue) => {
107
+ await applyBatchStyle(id.value, (targetId) =>
108
+ dataStyleStore.setMeshEdgesEdgeAttributeItem(targetId, newValue),
109
+ );
110
+ hybridViewerStore.remoteRender();
111
+ },
112
+ });
113
+ const edge_attribute_range = computed({
114
+ get: () => dataStyleStore.meshEdgesEdgeAttributeRange(id.value),
115
+ set: async (newValue) => {
116
+ await applyBatchStyle(id.value, (targetId) =>
117
+ dataStyleStore.setMeshEdgesEdgeAttributeRange(targetId, newValue[0], newValue[1]),
118
+ );
119
+ hybridViewerStore.remoteRender();
120
+ },
121
+ });
122
+ const edge_attribute_color_map = computed({
123
+ get: () => dataStyleStore.meshEdgesEdgeAttributeColorMap(id.value),
124
+ set: async (newValue) => {
125
+ await applyBatchStyle(id.value, (targetId) =>
126
+ dataStyleStore.setMeshEdgesEdgeAttributeColorMap(targetId, newValue),
127
+ );
128
+ hybridViewerStore.remoteRender();
129
+ },
130
+ });
59
131
  </script>
60
132
 
61
133
  <template>
@@ -81,6 +153,14 @@ const color = computed({
81
153
  :id="id"
82
154
  v-model:coloring_style_key="coloring_style_key"
83
155
  v-model:color="color"
156
+ v-model:vertex_attribute_name="vertex_attribute_name"
157
+ v-model:vertex_attribute_item="vertex_attribute_item"
158
+ v-model:vertex_attribute_range="vertex_attribute_range"
159
+ v-model:vertex_attribute_color_map="vertex_attribute_color_map"
160
+ v-model:edge_attribute_name="edge_attribute_name"
161
+ v-model:edge_attribute_item="edge_attribute_item"
162
+ v-model:edge_attribute_range="edge_attribute_range"
163
+ v-model:edge_attribute_color_map="edge_attribute_color_map"
84
164
  />
85
165
  </template>
86
166
  </template>
@@ -65,6 +65,15 @@ const vertex_attribute_name = computed({
65
65
  hybridViewerStore.remoteRender();
66
66
  },
67
67
  });
68
+ const vertex_attribute_item = computed({
69
+ get: () => dataStyleStore.meshPointsVertexAttributeItem(id.value),
70
+ set: async (newValue) => {
71
+ await applyBatchStyle(id.value, (targetId) =>
72
+ dataStyleStore.setMeshPointsVertexAttributeItem(targetId, newValue),
73
+ );
74
+ hybridViewerStore.remoteRender();
75
+ },
76
+ });
68
77
  const vertex_attribute_range = computed({
69
78
  get: () => dataStyleStore.meshPointsVertexAttributeRange(id.value),
70
79
  set: async (newValue) => {
@@ -109,6 +118,7 @@ const vertex_attribute_color_map = computed({
109
118
  v-model:coloring_style_key="coloring_style_key"
110
119
  v-model:color="color"
111
120
  v-model:vertex_attribute_name="vertex_attribute_name"
121
+ v-model:vertex_attribute_item="vertex_attribute_item"
112
122
  v-model:vertex_attribute_range="vertex_attribute_range"
113
123
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
114
124
  :capabilities="{ vertex: { available: false } }"
@@ -56,6 +56,79 @@ const textures = computed({
56
56
  hybridViewerStore.remoteRender();
57
57
  },
58
58
  });
59
+
60
+ const vertex_attribute_name = computed({
61
+ get: () => dataStyleStore.meshPolygonsVertexAttributeName(id.value),
62
+ set: async (newValue) => {
63
+ await applyBatchStyle(id.value, (targetId) =>
64
+ dataStyleStore.setMeshPolygonsVertexAttributeName(targetId, newValue),
65
+ );
66
+ hybridViewerStore.remoteRender();
67
+ },
68
+ });
69
+ const vertex_attribute_item = computed({
70
+ get: () => dataStyleStore.meshPolygonsVertexAttributeItem(id.value),
71
+ set: async (newValue) => {
72
+ await applyBatchStyle(id.value, (targetId) =>
73
+ dataStyleStore.setMeshPolygonsVertexAttributeItem(targetId, newValue),
74
+ );
75
+ hybridViewerStore.remoteRender();
76
+ },
77
+ });
78
+ const vertex_attribute_range = computed({
79
+ get: () => dataStyleStore.meshPolygonsVertexAttributeRange(id.value),
80
+ set: async (newValue) => {
81
+ await applyBatchStyle(id.value, (targetId) =>
82
+ dataStyleStore.setMeshPolygonsVertexAttributeRange(targetId, newValue[0], newValue[1]),
83
+ );
84
+ hybridViewerStore.remoteRender();
85
+ },
86
+ });
87
+ const vertex_attribute_color_map = computed({
88
+ get: () => dataStyleStore.meshPolygonsVertexAttributeColorMap(id.value),
89
+ set: async (newValue) => {
90
+ await applyBatchStyle(id.value, (targetId) =>
91
+ dataStyleStore.setMeshPolygonsVertexAttributeColorMap(targetId, newValue),
92
+ );
93
+ hybridViewerStore.remoteRender();
94
+ },
95
+ });
96
+ const polygon_attribute_name = computed({
97
+ get: () => dataStyleStore.meshPolygonsPolygonAttributeName(id.value),
98
+ set: async (newValue) => {
99
+ await applyBatchStyle(id.value, (targetId) =>
100
+ dataStyleStore.setMeshPolygonsPolygonAttributeName(targetId, newValue),
101
+ );
102
+ hybridViewerStore.remoteRender();
103
+ },
104
+ });
105
+ const polygon_attribute_item = computed({
106
+ get: () => dataStyleStore.meshPolygonsPolygonAttributeItem(id.value),
107
+ set: async (newValue) => {
108
+ await applyBatchStyle(id.value, (targetId) =>
109
+ dataStyleStore.setMeshPolygonsPolygonAttributeItem(targetId, newValue),
110
+ );
111
+ hybridViewerStore.remoteRender();
112
+ },
113
+ });
114
+ const polygon_attribute_range = computed({
115
+ get: () => dataStyleStore.meshPolygonsPolygonAttributeRange(id.value),
116
+ set: async (newValue) => {
117
+ await applyBatchStyle(id.value, (targetId) =>
118
+ dataStyleStore.setMeshPolygonsPolygonAttributeRange(targetId, newValue[0], newValue[1]),
119
+ );
120
+ hybridViewerStore.remoteRender();
121
+ },
122
+ });
123
+ const polygon_attribute_color_map = computed({
124
+ get: () => dataStyleStore.meshPolygonsPolygonAttributeColorMap(id.value),
125
+ set: async (newValue) => {
126
+ await applyBatchStyle(id.value, (targetId) =>
127
+ dataStyleStore.setMeshPolygonsPolygonAttributeColorMap(targetId, newValue),
128
+ );
129
+ hybridViewerStore.remoteRender();
130
+ },
131
+ });
59
132
  </script>
60
133
 
61
134
  <template>
@@ -77,6 +150,14 @@ const textures = computed({
77
150
  v-model:coloring_style_key="coloring_style_key"
78
151
  v-model:color="color"
79
152
  v-model:textures="textures"
153
+ v-model:vertex_attribute_name="vertex_attribute_name"
154
+ v-model:vertex_attribute_item="vertex_attribute_item"
155
+ v-model:vertex_attribute_range="vertex_attribute_range"
156
+ v-model:vertex_attribute_color_map="vertex_attribute_color_map"
157
+ v-model:polygon_attribute_name="polygon_attribute_name"
158
+ v-model:polygon_attribute_item="polygon_attribute_item"
159
+ v-model:polygon_attribute_range="polygon_attribute_range"
160
+ v-model:polygon_attribute_color_map="polygon_attribute_color_map"
80
161
  :capabilities="capabilities"
81
162
  />
82
163
  </template>
@@ -55,6 +55,15 @@ const vertex_attribute_name = computed({
55
55
  hybridViewerStore.remoteRender();
56
56
  },
57
57
  });
58
+ const vertex_attribute_item = computed({
59
+ get: () => dataStyleStore.meshPolyhedraVertexAttributeItem(id.value),
60
+ set: async (newValue) => {
61
+ await applyBatchStyle(id.value, (targetId) =>
62
+ dataStyleStore.setMeshPolyhedraVertexAttributeItem(targetId, newValue),
63
+ );
64
+ hybridViewerStore.remoteRender();
65
+ },
66
+ });
58
67
  const vertex_attribute_range = computed({
59
68
  get: () => dataStyleStore.meshPolyhedraVertexAttributeRange(id.value),
60
69
  set: async (newValue) => {
@@ -82,6 +91,15 @@ const polyhedron_attribute_name = computed({
82
91
  hybridViewerStore.remoteRender();
83
92
  },
84
93
  });
94
+ const polyhedron_attribute_item = computed({
95
+ get: () => dataStyleStore.meshPolyhedraPolyhedronAttributeItem(id.value),
96
+ set: async (newValue) => {
97
+ await applyBatchStyle(id.value, (targetId) =>
98
+ dataStyleStore.setMeshPolyhedraPolyhedronAttributeItem(targetId, newValue),
99
+ );
100
+ hybridViewerStore.remoteRender();
101
+ },
102
+ });
85
103
  const polyhedron_attribute_range = computed({
86
104
  get: () => dataStyleStore.meshPolyhedraPolyhedronAttributeRange(id.value),
87
105
  set: async (newValue) => {
@@ -123,9 +141,11 @@ const polyhedron_attribute_color_map = computed({
123
141
  v-model:coloring_style_key="coloring_style_key"
124
142
  v-model:color="color"
125
143
  v-model:vertex_attribute_name="vertex_attribute_name"
144
+ v-model:vertex_attribute_item="vertex_attribute_item"
126
145
  v-model:vertex_attribute_range="vertex_attribute_range"
127
146
  v-model:vertex_attribute_color_map="vertex_attribute_color_map"
128
147
  v-model:polyhedron_attribute_name="polyhedron_attribute_name"
148
+ v-model:polyhedron_attribute_item="polyhedron_attribute_item"
129
149
  v-model:polyhedron_attribute_range="polyhedron_attribute_range"
130
150
  v-model:polyhedron_attribute_color_map="polyhedron_attribute_color_map"
131
151
  :capabilities="{
@@ -74,6 +74,14 @@ const blocksVertexAttributeName = computed({
74
74
  },
75
75
  });
76
76
 
77
+ const blocksVertexAttributeItem = computed({
78
+ get: () => dataStyleStore.modelBlocksVertexAttributeItem(modelId, targetBlockIds[0]),
79
+ set: async (newValue) => {
80
+ await dataStyleStore.setModelBlocksVertexAttributeItem(modelId, targetBlockIds, newValue);
81
+ hybridViewerStore.remoteRender();
82
+ },
83
+ });
84
+
77
85
  const blocksVertexAttributeRange = computed({
78
86
  get: () => dataStyleStore.modelBlocksVertexAttributeRange(modelId, targetBlockIds[0]),
79
87
  set: async (newValue) => {
@@ -103,6 +111,14 @@ const blocksPolyhedronAttributeName = computed({
103
111
  },
104
112
  });
105
113
 
114
+ const blocksPolyhedronAttributeItem = computed({
115
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeItem(modelId, targetBlockIds[0]),
116
+ set: async (newValue) => {
117
+ await dataStyleStore.setModelBlocksPolyhedronAttributeItem(modelId, targetBlockIds, newValue);
118
+ hybridViewerStore.remoteRender();
119
+ },
120
+ });
121
+
106
122
  const blocksPolyhedronAttributeRange = computed({
107
123
  get: () => dataStyleStore.modelBlocksPolyhedronAttributeRange(modelId, targetBlockIds[0]),
108
124
  set: async (newValue) => {
@@ -137,6 +153,14 @@ const vertexAttributeName = computed({
137
153
  },
138
154
  });
139
155
 
156
+ const vertexAttributeItem = computed({
157
+ get: () => dataStyleStore.modelBlocksVertexAttributeItem(modelId, blockId),
158
+ set: async (newValue) => {
159
+ await dataStyleStore.setModelBlocksVertexAttributeItem(modelId, [blockId], newValue);
160
+ hybridViewerStore.remoteRender();
161
+ },
162
+ });
163
+
140
164
  const vertexAttributeRange = computed({
141
165
  get: () => dataStyleStore.modelBlocksVertexAttributeRange(modelId, blockId),
142
166
  set: async (newValue) => {
@@ -166,6 +190,14 @@ const polyhedronAttributeName = computed({
166
190
  },
167
191
  });
168
192
 
193
+ const polyhedronAttributeItem = computed({
194
+ get: () => dataStyleStore.modelBlocksPolyhedronAttributeItem(modelId, blockId),
195
+ set: async (newValue) => {
196
+ await dataStyleStore.setModelBlocksPolyhedronAttributeItem(modelId, [blockId], newValue);
197
+ hybridViewerStore.remoteRender();
198
+ },
199
+ });
200
+
169
201
  const polyhedronAttributeRange = computed({
170
202
  get: () => dataStyleStore.modelBlocksPolyhedronAttributeRange(modelId, blockId),
171
203
  set: async (newValue) => {
@@ -210,9 +242,11 @@ const polyhedronSchema = back_schemas.opengeodeweb_back.model_component_polyhedr
210
242
  v-model:coloring_style_key="blocksActiveColoring"
211
243
  v-model:color="blocksColor"
212
244
  v-model:vertex_attribute_name="blocksVertexAttributeName"
245
+ v-model:vertex_attribute_item="blocksVertexAttributeItem"
213
246
  v-model:vertex_attribute_range="blocksVertexAttributeRange"
214
247
  v-model:vertex_attribute_color_map="blocksVertexAttributeColorMap"
215
248
  v-model:polyhedron_attribute_name="blocksPolyhedronAttributeName"
249
+ v-model:polyhedron_attribute_item="blocksPolyhedronAttributeItem"
216
250
  v-model:polyhedron_attribute_range="blocksPolyhedronAttributeRange"
217
251
  v-model:polyhedron_attribute_color_map="blocksPolyhedronAttributeColorMap"
218
252
  :capabilities="capabilities"
@@ -229,9 +263,11 @@ const polyhedronSchema = back_schemas.opengeodeweb_back.model_component_polyhedr
229
263
  v-model:coloring_style_key="blockActiveColoring"
230
264
  v-model:color="blockColor"
231
265
  v-model:vertex_attribute_name="vertexAttributeName"
266
+ v-model:vertex_attribute_item="vertexAttributeItem"
232
267
  v-model:vertex_attribute_range="vertexAttributeRange"
233
268
  v-model:vertex_attribute_color_map="vertexAttributeColorMap"
234
269
  v-model:polyhedron_attribute_name="polyhedronAttributeName"
270
+ v-model:polyhedron_attribute_item="polyhedronAttributeItem"
235
271
  v-model:polyhedron_attribute_range="polyhedronAttributeRange"
236
272
  v-model:polyhedron_attribute_color_map="polyhedronAttributeColorMap"
237
273
  :capabilities="capabilities"
@@ -75,6 +75,14 @@ const cornersVertexAttributeName = computed({
75
75
  },
76
76
  });
77
77
 
78
+ const cornersVertexAttributeItem = computed({
79
+ get: () => dataStyleStore.modelCornersVertexAttributeItem(modelId, targetCornerIds[0]),
80
+ set: async (newValue) => {
81
+ await dataStyleStore.setModelCornersVertexAttributeItem(modelId, targetCornerIds, newValue);
82
+ hybridViewerStore.remoteRender();
83
+ },
84
+ });
85
+
78
86
  const cornersVertexAttributeRange = computed({
79
87
  get: () => dataStyleStore.modelCornersVertexAttributeRange(modelId, targetCornerIds[0]),
80
88
  set: async (newValue) => {
@@ -105,6 +113,14 @@ const vertexAttributeName = computed({
105
113
  },
106
114
  });
107
115
 
116
+ const vertexAttributeItem = computed({
117
+ get: () => dataStyleStore.modelCornersVertexAttributeItem(modelId, cornerId),
118
+ set: async (newValue) => {
119
+ await dataStyleStore.setModelCornersVertexAttributeItem(modelId, [cornerId], newValue);
120
+ hybridViewerStore.remoteRender();
121
+ },
122
+ });
123
+
108
124
  const vertexAttributeRange = computed({
109
125
  get: () => dataStyleStore.modelCornersVertexAttributeRange(modelId, cornerId),
110
126
  set: async (newValue) => {
@@ -148,6 +164,7 @@ const vertexSchema = back_schemas.opengeodeweb_back.model_component_vertex_attri
148
164
  v-model:coloring_style_key="cornersActiveColoring"
149
165
  v-model:color="cornersColor"
150
166
  v-model:vertex_attribute_name="cornersVertexAttributeName"
167
+ v-model:vertex_attribute_item="cornersVertexAttributeItem"
151
168
  v-model:vertex_attribute_range="cornersVertexAttributeRange"
152
169
  v-model:vertex_attribute_color_map="cornersVertexAttributeColorMap"
153
170
  :capabilities="capabilities"
@@ -164,6 +181,7 @@ const vertexSchema = back_schemas.opengeodeweb_back.model_component_vertex_attri
164
181
  v-model:coloring_style_key="cornerActiveColoring"
165
182
  v-model:color="cornerColor"
166
183
  v-model:vertex_attribute_name="vertexAttributeName"
184
+ v-model:vertex_attribute_item="vertexAttributeItem"
167
185
  v-model:vertex_attribute_range="vertexAttributeRange"
168
186
  v-model:vertex_attribute_color_map="vertexAttributeColorMap"
169
187
  :capabilities="capabilities"