@geode/opengeodeweb-front 9.9.0 → 9.10.0-rc.1

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 (85) hide show
  1. package/assets/viewer_svgs/edged_curve_edges.svg +67 -0
  2. package/assets/viewer_svgs/edged_curve_points.svg +95 -0
  3. package/assets/viewer_svgs/grid_2d_cells.svg +78 -0
  4. package/assets/viewer_svgs/grid_2d_edges.svg +71 -0
  5. package/assets/viewer_svgs/grid_2d_points.svg +108 -0
  6. package/assets/viewer_svgs/grid_3d_cells.svg +76 -0
  7. package/assets/viewer_svgs/grid_3d_edges.svg +72 -0
  8. package/assets/viewer_svgs/grid_3d_facets.svg +102 -0
  9. package/assets/viewer_svgs/grid_3d_points.svg +172 -0
  10. package/assets/viewer_svgs/point_set_points.svg +86 -0
  11. package/assets/viewer_svgs/solid_edges.svg +96 -0
  12. package/assets/viewer_svgs/solid_facets.svg +119 -0
  13. package/assets/viewer_svgs/solid_points.svg +134 -0
  14. package/assets/viewer_svgs/solid_polyhedra.svg +103 -0
  15. package/assets/viewer_svgs/surface_edges.svg +73 -0
  16. package/assets/viewer_svgs/surface_points.svg +115 -0
  17. package/assets/viewer_svgs/surface_triangles.svg +92 -0
  18. package/components/ContextMenu.vue +123 -0
  19. package/components/ContextMenuItem.vue +90 -0
  20. package/components/EdgedCurve/EdgesOptions.vue +14 -0
  21. package/components/EdgedCurve/PointsOptions.vue +14 -0
  22. package/components/Generic/Mesh/EdgesOptions.vue +48 -0
  23. package/components/Generic/Mesh/PointsOptions.vue +73 -0
  24. package/components/Generic/Mesh/PolygonsOptions.vue +65 -0
  25. package/components/Generic/Mesh/PolyhedraOptions.vue +58 -0
  26. package/components/Generic/Model/EdgesOptions.vue +29 -0
  27. package/components/Generic/Model/PointsOptions.vue +53 -0
  28. package/components/Grid/2D/CellsOptions.vue +15 -0
  29. package/components/Grid/2D/EdgesOptions.vue +14 -0
  30. package/components/Grid/2D/PointsOptions.vue +14 -0
  31. package/components/Grid/3D/CellsOptions.vue +15 -0
  32. package/components/Grid/3D/EdgesOptions.vue +14 -0
  33. package/components/Grid/3D/FacetsOptions.vue +15 -0
  34. package/components/Grid/3D/PointsOptions.vue +14 -0
  35. package/components/HybridRenderingView.vue +41 -0
  36. package/components/HybridSolid/EdgesOptions.vue +14 -0
  37. package/components/HybridSolid/PointsOptions.vue +14 -0
  38. package/components/HybridSolid/PolygonsOptions.vue +14 -0
  39. package/components/HybridSolid/PolyhedraOptions.vue +14 -0
  40. package/components/Options/ColorPicker.vue +25 -0
  41. package/components/Options/ColoringTypeSelector.vue +125 -0
  42. package/components/Options/PolygonAttributeSelector.vue +59 -0
  43. package/components/Options/PolyhedronAttributeSelector.vue +63 -0
  44. package/components/Options/TextureItem.vue +116 -0
  45. package/components/Options/TexturesSelector.vue +67 -0
  46. package/components/Options/VertexAttributeSelector.vue +60 -0
  47. package/components/Options/VisibilitySwitch.vue +14 -0
  48. package/components/PointSet/PointsOptions.vue +14 -0
  49. package/components/PointSet/SpecificPointsOptions.vue +74 -0
  50. package/components/PolygonalSurface/EdgesOptions.vue +14 -0
  51. package/components/PolygonalSurface/PointsOptions.vue +14 -0
  52. package/components/PolygonalSurface/PolygonsOptions.vue +14 -0
  53. package/components/Solid/EdgesOptions.vue +14 -0
  54. package/components/Solid/PointsOptions.vue +14 -0
  55. package/components/Solid/PolygonsOptions.vue +14 -0
  56. package/components/Solid/PolyhedraOptions.vue +14 -0
  57. package/components/TetrahedralSolid/TetrahedraOptions.vue +15 -0
  58. package/components/TetrahedralSolid/TrianglesOptions.vue +15 -0
  59. package/components/TriangulatedSurface/EdgesOptions.vue +14 -0
  60. package/components/TriangulatedSurface/PointsOptions.vue +14 -0
  61. package/components/TriangulatedSurface/TrianglesOptions.vue +15 -0
  62. package/components/VeaseViewToolbar.vue +107 -0
  63. package/components/Viewer/BreadCrumb.vue +61 -0
  64. package/components/Viewer/Tree/ObjectTree.vue +170 -0
  65. package/components/Viewer/TreeComponent.vue +93 -0
  66. package/components/Viewer/TreeObject.vue +100 -0
  67. package/internal_stores/data_style_state.js +18 -0
  68. package/internal_stores/mesh/edges.js +106 -0
  69. package/internal_stores/mesh/index.js +50 -0
  70. package/internal_stores/mesh/points.js +131 -0
  71. package/internal_stores/mesh/polygons.js +159 -0
  72. package/internal_stores/mesh/polyhedra.js +136 -0
  73. package/internal_stores/model/blocks.js +60 -0
  74. package/internal_stores/model/corners.js +63 -0
  75. package/internal_stores/model/edges.js +47 -0
  76. package/internal_stores/model/index.js +154 -0
  77. package/internal_stores/model/lines.js +81 -0
  78. package/internal_stores/model/points.js +61 -0
  79. package/internal_stores/model/surfaces.js +60 -0
  80. package/package.json +1 -1
  81. package/stores/data_base.js +148 -0
  82. package/stores/data_style.js +57 -0
  83. package/stores/hybrid_viewer.js +193 -0
  84. package/stores/menu.js +182 -0
  85. package/stores/treeview.js +64 -0
@@ -0,0 +1,25 @@
1
+ <template>
2
+ <v-color-picker
3
+ ref="el"
4
+ v-model="color"
5
+ flat
6
+ canvas-height="100"
7
+ hide-inputs
8
+ width="100%"
9
+ mode="rgb"
10
+ />
11
+ </template>
12
+
13
+ <script setup>
14
+ const el = useTemplateRef("el")
15
+ const model = defineModel()
16
+ const { pressed } = useMousePressed({ target: el })
17
+
18
+ const color = ref(model)
19
+
20
+ watch(pressed, (value) => {
21
+ if (!value) {
22
+ model.value = color.value
23
+ }
24
+ })
25
+ </script>
@@ -0,0 +1,125 @@
1
+ <template>
2
+ <v-row justify="center" align="center">
3
+ <v-divider />
4
+
5
+ <v-col>
6
+ <v-row justify="center" align="center">
7
+ <v-col cols="auto">
8
+ <v-icon
9
+ size="30"
10
+ icon="mdi-format-color-fill"
11
+ v-tooltip:left="'Coloring'"
12
+ />
13
+ </v-col>
14
+ <v-col>
15
+ <v-select
16
+ v-model="coloring_style_label"
17
+ :items="coloring_styles.labels"
18
+ label="Select a coloring style"
19
+ density="compact"
20
+ />
21
+ </v-col>
22
+ </v-row>
23
+ <v-row>
24
+ <v-spacer />
25
+ <v-col cols="10">
26
+ <template v-if="coloring_style_key === color_dict['value']">
27
+ <ViewerOptionsColorPicker v-model="color" />
28
+ </template>
29
+ <template v-if="coloring_style_key === textures_dict['value']">
30
+ <ViewerOptionsTexturesSelector v-model="textures" :id="id" />
31
+ </template>
32
+ <template v-if="coloring_style_key === vertex_dict['value']">
33
+ <ViewerOptionsVertexAttributeSelector
34
+ v-model="vertex_attribute"
35
+ :id="id"
36
+ />
37
+ </template>
38
+ <!-- <template v-if="coloring_style_key === edge_dict['value']">
39
+ <ViewerOptionsEdgeAttributeSelector v-model="edge_attribute" :id="id" />
40
+ </template> -->
41
+ <template v-if="coloring_style_key === polygon_dict['value']">
42
+ <ViewerOptionsPolygonAttributeSelector
43
+ v-model="polygon_attribute"
44
+ :id="id"
45
+ />
46
+ </template>
47
+ <template v-if="coloring_style_key === polyhedron_dict['value']">
48
+ <ViewerOptionsPolyhedronAttributeSelector
49
+ v-model="polyhedron_attribute"
50
+ :id="id"
51
+ />
52
+ </template>
53
+ </v-col>
54
+ </v-row>
55
+ </v-col>
56
+ </v-row>
57
+ </template>
58
+
59
+ <script setup>
60
+ const coloring_style_key = defineModel("coloring_style_key")
61
+
62
+ const color = defineModel("color")
63
+ const textures = defineModel("textures")
64
+ const vertex_attribute = defineModel("vertex_attribute")
65
+ // const edge_attribute = defineModel("edge_attribute");
66
+ const polygon_attribute = defineModel("polygon_attribute")
67
+ const polyhedron_attribute = defineModel("polyhedron_attribute")
68
+
69
+ const props = defineProps({
70
+ id: { type: String, required: true },
71
+ })
72
+
73
+ const has_color = computed(() => (color.value !== undefined ? true : false))
74
+ const has_textures = computed(() =>
75
+ textures.value !== undefined ? true : false,
76
+ )
77
+ const has_vertex = computed(() =>
78
+ vertex_attribute.value !== undefined ? true : false,
79
+ )
80
+ const has_polygons = computed(() =>
81
+ polygon_attribute.value !== undefined ? true : false,
82
+ )
83
+ const has_polyhedra = computed(() =>
84
+ polyhedron_attribute.value !== undefined ? true : false,
85
+ )
86
+
87
+ const color_dict = { name: "Color", value: "color" }
88
+ const textures_dict = { name: "Textures", value: "textures" }
89
+ const vertex_dict = { name: "Vertex attribute", value: "vertex" }
90
+ // const edge_dict = { name: "Edge attribute", value: "edge" };
91
+ const polygon_dict = { name: "Polygon attribute", value: "polygon" }
92
+ const polyhedron_dict = {
93
+ name: "Polyhedron attribute",
94
+ value: "polyhedron",
95
+ }
96
+ const coloring_styles = computed(() => {
97
+ let array = []
98
+ if (has_color.value) array.push(color_dict)
99
+ if (has_textures.value) array.push(textures_dict)
100
+ if (has_vertex.value) array.push(vertex_dict)
101
+ // if (has_edges.value) array.push(edge_dict);
102
+ if (has_polygons.value) array.push(polygon_dict)
103
+ if (has_polyhedra.value) array.push(polyhedron_dict)
104
+
105
+ const labels = array.map((coloring) => {
106
+ return coloring.name
107
+ })
108
+ const values = array.map((coloring) => {
109
+ return coloring.value
110
+ })
111
+
112
+ return { labels, values }
113
+ })
114
+
115
+ const coloring_style_label = ref(
116
+ coloring_styles.value.labels[
117
+ coloring_styles.value.values.indexOf(coloring_style_key.value)
118
+ ],
119
+ )
120
+
121
+ watch(coloring_style_label, (value) => {
122
+ coloring_style_key.value =
123
+ coloring_styles.value.values[coloring_styles.value.labels.indexOf(value)]
124
+ })
125
+ </script>
@@ -0,0 +1,59 @@
1
+ <template>
2
+ <v-select
3
+ v-model="polygon_attribute_name"
4
+ :items="polygon_attribute_names"
5
+ label="Select an attribute"
6
+ density="compact"
7
+ />
8
+ </template>
9
+
10
+ <script setup>
11
+ import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json"
12
+
13
+ const dataBaseStore = useDataBaseStore()
14
+
15
+ const props = defineProps({
16
+ id: { type: String, required: true },
17
+ })
18
+
19
+ const model = defineModel()
20
+ const polygon_attribute_name = ref("")
21
+ const polygon_attribute_names = ref([])
22
+ const polygon_attribute = reactive({ name: polygon_attribute_name.value })
23
+
24
+ const meta_data = computed(() => {
25
+ return dataBaseStore.itemMetaDatas(props.id)
26
+ })
27
+
28
+ onMounted(() => {
29
+ if (model.value != null) {
30
+ polygon_attribute_name.value = model.value.name
31
+ }
32
+ })
33
+
34
+ watch(polygon_attribute_name, (value) => {
35
+ polygon_attribute.name = value
36
+ model.value = polygon_attribute
37
+ })
38
+
39
+ onMounted(() => {
40
+ getVertexAttributes()
41
+ })
42
+
43
+ function getVertexAttributes() {
44
+ api_fetch(
45
+ {
46
+ schema: back_schemas.opengeodeweb_back.polygon_attribute_names,
47
+ params: {
48
+ input_geode_object: meta_data.value.geode_object,
49
+ filename: meta_data.value.native_filename,
50
+ },
51
+ },
52
+ {
53
+ response_function: (response) => {
54
+ polygon_attribute_names.value = response._data.polygon_attribute_names
55
+ },
56
+ },
57
+ )
58
+ }
59
+ </script>
@@ -0,0 +1,63 @@
1
+ <template>
2
+ <v-select
3
+ v-model="polyhedron_attribute_name"
4
+ :items="polyhedron_attribute_names"
5
+ label="Select an attribute"
6
+ density="compact"
7
+ />
8
+ </template>
9
+
10
+ <script setup>
11
+ import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json"
12
+
13
+ const model = defineModel()
14
+
15
+ const polyhedron_attribute_name = ref("")
16
+
17
+ onMounted(() => {
18
+ if (model.value != null) {
19
+ polyhedron_attribute_name.value = model.value.name
20
+ }
21
+ })
22
+ const polyhedron_attribute = reactive({
23
+ name: polyhedron_attribute_name.value,
24
+ })
25
+
26
+ watch(polyhedron_attribute_name, (value) => {
27
+ polyhedron_attribute.name = value
28
+ model.value = polyhedron_attribute
29
+ })
30
+
31
+ const props = defineProps({
32
+ id: { type: String, required: true },
33
+ })
34
+
35
+ const dataBaseStore = useDataBaseStore()
36
+
37
+ const polyhedron_attribute_names = ref([])
38
+ const meta_data = computed(() => {
39
+ return dataBaseStore.itemMetaDatas(props.id)
40
+ })
41
+
42
+ onMounted(() => {
43
+ getVertexAttributes()
44
+ })
45
+
46
+ function getVertexAttributes() {
47
+ api_fetch(
48
+ {
49
+ schema: back_schemas.opengeodeweb_back.polyhedron_attribute_names,
50
+ params: {
51
+ input_geode_object: meta_data.value.geode_object,
52
+ filename: meta_data.value.native_filename,
53
+ },
54
+ },
55
+ {
56
+ response_function: (response) => {
57
+ polyhedron_attribute_names.value =
58
+ response._data.polyhedron_attribute_names
59
+ },
60
+ },
61
+ )
62
+ }
63
+ </script>
@@ -0,0 +1,116 @@
1
+ <template>
2
+ <v-col cols="7" class="pa-1 ml-3">
3
+ <v-select
4
+ v-model="texture_name"
5
+ :items="texture_coordinates"
6
+ label="Select a texture"
7
+ density="compact"
8
+ />
9
+ </v-col>
10
+ <v-badge
11
+ :model-value="texture_file_name != ''"
12
+ color="white"
13
+ floating
14
+ dot
15
+ offset-x="10"
16
+ offset-y="10"
17
+ >
18
+ <v-col cols="1" class="ma-1" justify="center" align="center">
19
+ <FileUploader
20
+ @files_uploaded="files_uploaded_event($event, index)"
21
+ :accept="['image/png', 'image/jpeg', 'image/bmp']"
22
+ :auto_upload="true"
23
+ :multiple="true"
24
+ :mini="true"
25
+ class="mt-2"
26
+ />
27
+ </v-col>
28
+ </v-badge>
29
+ <v-col v-if="texture_name == '' || texture_file_name == ''" cols="1">
30
+ <v-icon
31
+ size="20"
32
+ icon="mdi-close-circle"
33
+ v-tooltip:bottom="'Invalid texture'"
34
+ />
35
+ </v-col>
36
+ </template>
37
+
38
+ <script setup>
39
+ import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json"
40
+
41
+ const dataBaseStore = useDataBaseStore()
42
+
43
+ const emit = defineEmits(["update_value"])
44
+
45
+ const props = defineProps({
46
+ id: { type: String, required: true },
47
+ texture_name: { type: String, required: true },
48
+ texture_file_name: { type: String, required: true },
49
+ })
50
+
51
+ const texture_name = ref("")
52
+ texture_name.value = props.texture_name
53
+
54
+ const texture_file_name = ref("")
55
+ texture_file_name.value = props.texture_file_name
56
+
57
+ const texture_coordinates = ref([])
58
+
59
+ const meta_data = computed(() => {
60
+ return dataBaseStore.itemMetaDatas(props.id)
61
+ })
62
+
63
+ onMounted(() => {
64
+ getTextureCoordinates()
65
+ })
66
+
67
+ function getTextureCoordinates() {
68
+ api_fetch(
69
+ {
70
+ schema: back_schemas.opengeodeweb_back.texture_coordinates,
71
+ params: {
72
+ input_geode_object: meta_data.value.geode_object,
73
+ filename: meta_data.value.native_filename,
74
+ },
75
+ },
76
+ {
77
+ response_function: (response) => {
78
+ texture_coordinates.value = response._data.texture_coordinates
79
+ },
80
+ },
81
+ )
82
+ }
83
+
84
+ async function files_uploaded_event(value) {
85
+ if (value.length) {
86
+ await api_fetch(
87
+ {
88
+ schema: back_schemas.opengeodeweb_back.save_viewable_file,
89
+ params: {
90
+ input_geode_object: "RasterImage2D",
91
+ filename: value[0].name,
92
+ },
93
+ },
94
+ {
95
+ response_function: async (response) => {
96
+ texture_file_name.value = response._data.viewable_file_name
97
+ },
98
+ },
99
+ )
100
+ }
101
+ }
102
+
103
+ watch(texture_name, (value) => {
104
+ emit("update_value", { key: "texture_name", value })
105
+ })
106
+
107
+ watch(texture_file_name, (value) => {
108
+ emit("update_value", { key: "texture_file_name", value })
109
+ })
110
+ </script>
111
+
112
+ <style>
113
+ .v-input__details {
114
+ display: none;
115
+ }
116
+ </style>
@@ -0,0 +1,67 @@
1
+ <template>
2
+ <v-row
3
+ v-for="(texture, index) in internal_textures"
4
+ :key="texture"
5
+ align="center"
6
+ >
7
+ <br />
8
+
9
+ <v-col cols="1" class="pa-0">
10
+ <v-icon
11
+ v-if="internal_textures.length > 1"
12
+ icon="mdi-minus"
13
+ size="20"
14
+ v-tooltip:bottom="'Remove texture'"
15
+ @click="internal_textures.splice(index, 1)"
16
+ />
17
+ </v-col>
18
+ <ViewerOptionsTextureItem
19
+ :id="id"
20
+ :texture_name="internal_textures[index].texture_name"
21
+ :texture_file_name="internal_textures[index].texture_file_name"
22
+ @update_value="update_value_event($event, index)"
23
+ />
24
+ </v-row>
25
+ <v-row>
26
+ <v-spacer />
27
+ <v-col cols="3">
28
+ <v-icon
29
+ v-if="internal_textures.length < 4"
30
+ icon="mdi-plus"
31
+ v-tooltip:bottom="'Add a texture'"
32
+ size="20"
33
+ @click="
34
+ internal_textures.push({ texture_name: '', texture_file_name: '' })
35
+ "
36
+ />
37
+ </v-col>
38
+ </v-row>
39
+ </template>
40
+
41
+ <script setup>
42
+ const textures = defineModel()
43
+
44
+ const internal_textures = ref([])
45
+
46
+ const props = defineProps({
47
+ id: { type: String, required: true },
48
+ })
49
+
50
+ onMounted(() => {
51
+ if (textures.value != null) {
52
+ internal_textures.value = textures.value
53
+ } else {
54
+ internal_textures.value = [{ texture_name: "", texture_file_name: "" }]
55
+ }
56
+ })
57
+
58
+ function update_value_event($event, index) {
59
+ internal_textures.value[index][$event.key] = $event.value
60
+ const filtered = internal_textures.value.filter((texture) => {
61
+ return texture.texture_name != "" && texture.texture_file_name != ""
62
+ })
63
+ if (filtered.length != 0) {
64
+ textures.value = filtered
65
+ }
66
+ }
67
+ </script>
@@ -0,0 +1,60 @@
1
+ <template>
2
+ <v-select
3
+ v-model="vertex_attribute_name"
4
+ :items="vertex_attribute_names"
5
+ label="Select an attribute"
6
+ density="compact"
7
+ />
8
+ </template>
9
+
10
+ <script setup>
11
+ import back_schemas from "@geode/opengeodeweb-back/opengeodeweb_back_schemas.json"
12
+
13
+ const model = defineModel()
14
+
15
+ const vertex_attribute_name = ref("")
16
+
17
+ onMounted(() => {
18
+ if (model.value != null) {
19
+ vertex_attribute_name.value = model.value.name
20
+ }
21
+ })
22
+ const vertex_attribute = reactive({ name: vertex_attribute_name.value })
23
+
24
+ watch(vertex_attribute_name, (value) => {
25
+ vertex_attribute.name = value
26
+ model.value = vertex_attribute
27
+ })
28
+
29
+ const props = defineProps({
30
+ id: { type: String, required: true },
31
+ })
32
+
33
+ const dataBaseStore = useDataBaseStore()
34
+
35
+ const vertex_attribute_names = ref([])
36
+ const meta_data = computed(() => {
37
+ return dataBaseStore.itemMetaDatas(props.id)
38
+ })
39
+
40
+ onMounted(() => {
41
+ getVertexAttributes()
42
+ })
43
+
44
+ function getVertexAttributes() {
45
+ api_fetch(
46
+ {
47
+ schema: back_schemas.opengeodeweb_back.vertex_attribute_names,
48
+ params: {
49
+ input_geode_object: meta_data.value.geode_object,
50
+ filename: meta_data.value.native_filename,
51
+ },
52
+ },
53
+ {
54
+ response_function: (response) => {
55
+ vertex_attribute_names.value = response._data.vertex_attribute_names
56
+ },
57
+ },
58
+ )
59
+ }
60
+ </script>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <v-row class="pa-0" align="center">
3
+ <v-col cols="auto" justify="center">
4
+ <v-icon size="30" icon="mdi-eye" v-tooltip:left="'Visibility'" />
5
+ </v-col>
6
+ <v-col cols="auto" justify="center">
7
+ <v-switch v-model="visibility" inset hide-details />
8
+ </v-col>
9
+ </v-row>
10
+ </template>
11
+
12
+ <script setup>
13
+ const visibility = defineModel()
14
+ </script>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <ViewerPointSetSpecificPointsOptions
3
+ :itemProps="props.itemProps"
4
+ :btn_image="PointSetPoints"
5
+ />
6
+ </template>
7
+
8
+ <script setup>
9
+ import PointSetPoints from "@ogw_f/assets/viewer_svgs/point_set_points.svg"
10
+
11
+ const props = defineProps({
12
+ itemProps: { type: Object, required: true },
13
+ })
14
+ </script>
@@ -0,0 +1,74 @@
1
+ <template>
2
+ <ContextMenuItem
3
+ :itemProps="props.itemProps"
4
+ tooltip="Points options"
5
+ :btn_image="props.btn_image"
6
+ >
7
+ <template #options>
8
+ <ViewerOptionsVisibilitySwitch v-model="visibility" />
9
+ <template v-if="visibility">
10
+ <v-row class="pa-0" align="center">
11
+ <v-divider />
12
+ <v-col cols="auto" justify="center">
13
+ <v-icon size="30" icon="mdi-ruler" v-tooltip:left="'Size'" />
14
+ </v-col>
15
+ <v-col justify="center">
16
+ <v-slider
17
+ v-model="size"
18
+ hide-details
19
+ min="0"
20
+ max="20"
21
+ step="2"
22
+ thumb-color="black"
23
+ ticks
24
+ />
25
+ </v-col>
26
+ </v-row>
27
+ <v-row>
28
+ <v-col>
29
+ <ViewerOptionsColoringTypeSelector
30
+ :id="id"
31
+ v-model:coloring_style_key="coloring_style_key"
32
+ v-model:color="color"
33
+ v-model:vertex_attribute="vertex_attribute"
34
+ />
35
+ </v-col>
36
+ </v-row>
37
+ </template>
38
+ </template>
39
+ </ContextMenuItem>
40
+ </template>
41
+
42
+ <script setup>
43
+ const dataStyleStore = useDataStyleStore()
44
+
45
+ const props = defineProps({
46
+ itemProps: { type: Object, required: true },
47
+ btn_image: { type: String, required: true },
48
+ })
49
+
50
+ const id = toRef(() => props.itemProps.id)
51
+
52
+ const visibility = computed({
53
+ get: () => dataStyleStore.pointsVisibility(id.value),
54
+ set: (newValue) => dataStyleStore.setPointsVisibility(id.value, newValue),
55
+ })
56
+ const size = computed({
57
+ get: () => dataStyleStore.pointsSize(id.value),
58
+ set: (newValue) => dataStyleStore.setPointsSize(id.value, newValue),
59
+ })
60
+ const coloring_style_key = computed({
61
+ get: () => dataStyleStore.pointsActiveColoring(id.value),
62
+ set: (newValue) =>
63
+ dataStyleStore.setPointsActiveColoring(id.value, newValue),
64
+ })
65
+ const color = computed({
66
+ get: () => dataStyleStore.pointsColor(id.value),
67
+ set: (newValue) => dataStyleStore.setPointsColor(id.value, newValue),
68
+ })
69
+ const vertex_attribute = computed({
70
+ get: () => dataStyleStore.pointsVertexAttribute(id.value),
71
+ set: (newValue) =>
72
+ dataStyleStore.setPointsVertexAttribute(id.value, newValue),
73
+ })
74
+ </script>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <ViewerGenericMeshEdgesOptions
3
+ :itemProps="props.itemProps"
4
+ :btn_image="PolygonalSurfaceEdges"
5
+ />
6
+ </template>
7
+
8
+ <script setup>
9
+ import PolygonalSurfaceEdges from "@ogw_f/assets/viewer_svgs/surface_edges.svg"
10
+
11
+ const props = defineProps({
12
+ itemProps: { type: Object, required: true },
13
+ })
14
+ </script>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <ViewerGenericMeshPointsOptions
3
+ :itemProps="props.itemProps"
4
+ :btn_image="PolygonalSurfacePoints"
5
+ />
6
+ </template>
7
+
8
+ <script setup>
9
+ import PolygonalSurfacePoints from "@ogw_f/assets/viewer_svgs/surface_points.svg"
10
+
11
+ const props = defineProps({
12
+ itemProps: { type: Object, required: true },
13
+ })
14
+ </script>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <ViewerGenericMeshPolygonsOptions
3
+ :itemProps="props.itemProps"
4
+ :btn_image="PolygonalSurfacePolygons"
5
+ />
6
+ </template>
7
+
8
+ <script setup>
9
+ import PolygonalSurfacePolygons from "@ogw_f/assets/viewer_svgs/surface_triangles.svg"
10
+
11
+ const props = defineProps({
12
+ itemProps: { type: Object, required: true },
13
+ })
14
+ </script>
@@ -0,0 +1,14 @@
1
+ <template>
2
+ <ViewerGenericMeshEdgesOptions
3
+ :itemProps="props.itemProps"
4
+ :btn_image="SolidEdges"
5
+ />
6
+ </template>
7
+
8
+ <script setup>
9
+ import SolidEdges from "@ogw_f/assets/viewer_svgs/solid_edges.svg"
10
+
11
+ const props = defineProps({
12
+ itemProps: { type: Object, required: true },
13
+ })
14
+ </script>