@geode/opengeodeweb-front 9.9.0-rc.3 → 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.
- package/assets/viewer_svgs/edged_curve_edges.svg +67 -0
- package/assets/viewer_svgs/edged_curve_points.svg +95 -0
- package/assets/viewer_svgs/grid_2d_cells.svg +78 -0
- package/assets/viewer_svgs/grid_2d_edges.svg +71 -0
- package/assets/viewer_svgs/grid_2d_points.svg +108 -0
- package/assets/viewer_svgs/grid_3d_cells.svg +76 -0
- package/assets/viewer_svgs/grid_3d_edges.svg +72 -0
- package/assets/viewer_svgs/grid_3d_facets.svg +102 -0
- package/assets/viewer_svgs/grid_3d_points.svg +172 -0
- package/assets/viewer_svgs/point_set_points.svg +86 -0
- package/assets/viewer_svgs/solid_edges.svg +96 -0
- package/assets/viewer_svgs/solid_facets.svg +119 -0
- package/assets/viewer_svgs/solid_points.svg +134 -0
- package/assets/viewer_svgs/solid_polyhedra.svg +103 -0
- package/assets/viewer_svgs/surface_edges.svg +73 -0
- package/assets/viewer_svgs/surface_points.svg +115 -0
- package/assets/viewer_svgs/surface_triangles.svg +92 -0
- package/components/ContextMenu.vue +123 -0
- package/components/ContextMenuItem.vue +90 -0
- package/components/EdgedCurve/EdgesOptions.vue +14 -0
- package/components/EdgedCurve/PointsOptions.vue +14 -0
- package/components/Generic/Mesh/EdgesOptions.vue +48 -0
- package/components/Generic/Mesh/PointsOptions.vue +73 -0
- package/components/Generic/Mesh/PolygonsOptions.vue +65 -0
- package/components/Generic/Mesh/PolyhedraOptions.vue +58 -0
- package/components/Generic/Model/EdgesOptions.vue +29 -0
- package/components/Generic/Model/PointsOptions.vue +53 -0
- package/components/Grid/2D/CellsOptions.vue +15 -0
- package/components/Grid/2D/EdgesOptions.vue +14 -0
- package/components/Grid/2D/PointsOptions.vue +14 -0
- package/components/Grid/3D/CellsOptions.vue +15 -0
- package/components/Grid/3D/EdgesOptions.vue +14 -0
- package/components/Grid/3D/FacetsOptions.vue +15 -0
- package/components/Grid/3D/PointsOptions.vue +14 -0
- package/components/HybridRenderingView.vue +41 -0
- package/components/HybridSolid/EdgesOptions.vue +14 -0
- package/components/HybridSolid/PointsOptions.vue +14 -0
- package/components/HybridSolid/PolygonsOptions.vue +14 -0
- package/components/HybridSolid/PolyhedraOptions.vue +14 -0
- package/components/Options/ColorPicker.vue +25 -0
- package/components/Options/ColoringTypeSelector.vue +125 -0
- package/components/Options/PolygonAttributeSelector.vue +59 -0
- package/components/Options/PolyhedronAttributeSelector.vue +63 -0
- package/components/Options/TextureItem.vue +116 -0
- package/components/Options/TexturesSelector.vue +67 -0
- package/components/Options/VertexAttributeSelector.vue +60 -0
- package/components/Options/VisibilitySwitch.vue +14 -0
- package/components/PointSet/PointsOptions.vue +14 -0
- package/components/PointSet/SpecificPointsOptions.vue +74 -0
- package/components/PolygonalSurface/EdgesOptions.vue +14 -0
- package/components/PolygonalSurface/PointsOptions.vue +14 -0
- package/components/PolygonalSurface/PolygonsOptions.vue +14 -0
- package/components/Solid/EdgesOptions.vue +14 -0
- package/components/Solid/PointsOptions.vue +14 -0
- package/components/Solid/PolygonsOptions.vue +14 -0
- package/components/Solid/PolyhedraOptions.vue +14 -0
- package/components/TetrahedralSolid/TetrahedraOptions.vue +15 -0
- package/components/TetrahedralSolid/TrianglesOptions.vue +15 -0
- package/components/TriangulatedSurface/EdgesOptions.vue +14 -0
- package/components/TriangulatedSurface/PointsOptions.vue +14 -0
- package/components/TriangulatedSurface/TrianglesOptions.vue +15 -0
- package/components/VeaseViewToolbar.vue +107 -0
- package/components/Viewer/BreadCrumb.vue +61 -0
- package/components/Viewer/Tree/ObjectTree.vue +170 -0
- package/components/Viewer/TreeComponent.vue +93 -0
- package/components/Viewer/TreeObject.vue +100 -0
- package/internal_stores/data_style_state.js +18 -0
- package/internal_stores/mesh/edges.js +106 -0
- package/internal_stores/mesh/index.js +50 -0
- package/internal_stores/mesh/points.js +131 -0
- package/internal_stores/mesh/polygons.js +159 -0
- package/internal_stores/mesh/polyhedra.js +136 -0
- package/internal_stores/model/blocks.js +60 -0
- package/internal_stores/model/corners.js +63 -0
- package/internal_stores/model/edges.js +47 -0
- package/internal_stores/model/index.js +154 -0
- package/internal_stores/model/lines.js +81 -0
- package/internal_stores/model/points.js +61 -0
- package/internal_stores/model/surfaces.js +60 -0
- package/package.json +1 -1
- package/stores/data_base.js +148 -0
- package/stores/data_style.js +57 -0
- package/stores/hybrid_viewer.js +193 -0
- package/stores/menu.js +182 -0
- package/stores/treeview.js +64 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<template class="menu-item" :style="itemStyle">
|
|
3
|
+
<v-tooltip
|
|
4
|
+
:location="props.itemProps.tooltip_location"
|
|
5
|
+
:origin="props.itemProps.tooltip_origin"
|
|
6
|
+
>
|
|
7
|
+
<template v-slot:activator="{ props }">
|
|
8
|
+
<v-btn
|
|
9
|
+
icon
|
|
10
|
+
:active="display_options"
|
|
11
|
+
@click.stop="toggleOptions"
|
|
12
|
+
v-bind="props"
|
|
13
|
+
>
|
|
14
|
+
<v-img :src="btn_image" height="35" width="35" />
|
|
15
|
+
</v-btn>
|
|
16
|
+
</template>
|
|
17
|
+
<span>{{ props.tooltip }}</span>
|
|
18
|
+
</v-tooltip>
|
|
19
|
+
<div v-if="display_options" class="menu-options pa-0" @click.stop>
|
|
20
|
+
<v-card
|
|
21
|
+
@click.stop
|
|
22
|
+
:title="props.tooltip"
|
|
23
|
+
class="bg-primary"
|
|
24
|
+
width="320"
|
|
25
|
+
max-height="500"
|
|
26
|
+
:ripple="false"
|
|
27
|
+
>
|
|
28
|
+
<v-card-text class="bg-primary">
|
|
29
|
+
<slot name="options" />
|
|
30
|
+
</v-card-text>
|
|
31
|
+
</v-card>
|
|
32
|
+
</div>
|
|
33
|
+
</template>
|
|
34
|
+
</template>
|
|
35
|
+
|
|
36
|
+
<script setup>
|
|
37
|
+
const props = defineProps({
|
|
38
|
+
itemProps: { type: Object, required: true },
|
|
39
|
+
tooltip: { type: String, required: true },
|
|
40
|
+
btn_image: { type: String, required: true },
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
const display_options = ref(false)
|
|
44
|
+
|
|
45
|
+
function toggleOptions() {
|
|
46
|
+
display_options.value = !display_options.value
|
|
47
|
+
}
|
|
48
|
+
</script>
|
|
49
|
+
|
|
50
|
+
<style scoped>
|
|
51
|
+
.menu-item {
|
|
52
|
+
position: absolute;
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
align-items: center;
|
|
56
|
+
justify-content: center;
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
transition:
|
|
59
|
+
transform 0.3s ease,
|
|
60
|
+
opacity 0.3s ease;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.menu-options {
|
|
64
|
+
position: absolute;
|
|
65
|
+
top: 50%;
|
|
66
|
+
left: 430%;
|
|
67
|
+
transform: translateX(-50%);
|
|
68
|
+
display: flex;
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
background-color: white;
|
|
71
|
+
border: 1px solid #ccc;
|
|
72
|
+
border-radius: 8px;
|
|
73
|
+
z-index: 10;
|
|
74
|
+
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);
|
|
75
|
+
min-width: 150px;
|
|
76
|
+
max-width: 320px;
|
|
77
|
+
padding: 8px 0;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.menu-options ::v-deep(v-list-item) {
|
|
82
|
+
padding: 10px 16px;
|
|
83
|
+
white-space: nowrap; /* Empêche les retours à la ligne */
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.menu-options ::v-deep(v-list-item:hover) {
|
|
87
|
+
background-color: #f5f5f5;
|
|
88
|
+
cursor: pointer;
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshEdgesOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="EdgedCurveEdges"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import EdgedCurveEdges from "@ogw_f/assets/viewer_svgs/edged_curve_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="EdgedCurvePoints"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import EdgedCurvePoints from "@ogw_f/assets/viewer_svgs/edged_curve_points.svg"
|
|
10
|
+
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
itemProps: { type: Object, required: true },
|
|
13
|
+
})
|
|
14
|
+
</script>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ContextMenuItem
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
tooltip="Edges options"
|
|
5
|
+
:btn_image="props.btn_image"
|
|
6
|
+
>
|
|
7
|
+
<template #options>
|
|
8
|
+
<ViewerOptionsVisibilitySwitch v-model="visibility" />
|
|
9
|
+
<template v-if="visibility">
|
|
10
|
+
<ViewerOptionsColoringTypeSelector
|
|
11
|
+
:id="id"
|
|
12
|
+
v-model:coloring_style_key="coloring_style_key"
|
|
13
|
+
v-model:color="color"
|
|
14
|
+
/>
|
|
15
|
+
</template>
|
|
16
|
+
</template>
|
|
17
|
+
</ContextMenuItem>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script setup>
|
|
21
|
+
const props = defineProps({
|
|
22
|
+
itemProps: { type: Object, required: true },
|
|
23
|
+
btn_image: { type: String, required: true },
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
const id = toRef(() => props.itemProps.id)
|
|
27
|
+
|
|
28
|
+
const dataStyleStore = useDataStyleStore()
|
|
29
|
+
|
|
30
|
+
const visibility = computed({
|
|
31
|
+
get: () => dataStyleStore.edgesVisibility(id.value),
|
|
32
|
+
set: (newValue) => dataStyleStore.setEdgesVisibility(id.value, newValue),
|
|
33
|
+
})
|
|
34
|
+
const size = computed({
|
|
35
|
+
get: () => dataStyleStore.edgesSize(id.value),
|
|
36
|
+
set: (newValue) => dataStyleStore.setEdgesSize(id.value, newValue),
|
|
37
|
+
})
|
|
38
|
+
const coloring_style_key = computed({
|
|
39
|
+
get: () => dataStyleStore.edgesActiveColoring(id.value),
|
|
40
|
+
set: (newValue) => {
|
|
41
|
+
dataStyleStore.setEdgesActiveColoring(id.value, newValue)
|
|
42
|
+
},
|
|
43
|
+
})
|
|
44
|
+
const color = computed({
|
|
45
|
+
get: () => dataStyleStore.edgesColor(id.value),
|
|
46
|
+
set: (newValue) => dataStyleStore.setEdgesColor(id.value, newValue),
|
|
47
|
+
})
|
|
48
|
+
</script>
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerContextMenuItem
|
|
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
|
+
/>
|
|
34
|
+
</v-col>
|
|
35
|
+
</v-row>
|
|
36
|
+
</template>
|
|
37
|
+
</template>
|
|
38
|
+
</ViewerContextMenuItem>
|
|
39
|
+
</template>
|
|
40
|
+
|
|
41
|
+
<script setup>
|
|
42
|
+
const dataStyleStore = useDataStyleStore()
|
|
43
|
+
|
|
44
|
+
const props = defineProps({
|
|
45
|
+
itemProps: { type: Object, required: true },
|
|
46
|
+
btn_image: { type: String, required: true },
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
const id = toRef(() => props.itemProps.id)
|
|
50
|
+
|
|
51
|
+
const visibility = computed({
|
|
52
|
+
get: () => dataStyleStore.pointsVisibility(id.value),
|
|
53
|
+
set: (newValue) => dataStyleStore.setPointsVisibility(id.value, newValue),
|
|
54
|
+
})
|
|
55
|
+
const size = computed({
|
|
56
|
+
get: () => dataStyleStore.pointsSize(id.value),
|
|
57
|
+
set: (newValue) => dataStyleStore.setPointsSize(id.value, newValue),
|
|
58
|
+
})
|
|
59
|
+
const coloring_style_key = computed({
|
|
60
|
+
get: () => dataStyleStore.pointsActiveColoring(id.value),
|
|
61
|
+
set: (newValue) =>
|
|
62
|
+
dataStyleStore.setPointsActiveColoring(id.value, newValue),
|
|
63
|
+
})
|
|
64
|
+
const color = computed({
|
|
65
|
+
get: () => dataStyleStore.pointsColor(id.value),
|
|
66
|
+
set: (newValue) => dataStyleStore.setPointsColor(id.value, newValue),
|
|
67
|
+
})
|
|
68
|
+
const vertex_attribute = computed({
|
|
69
|
+
get: () => dataStyleStore.pointsVertexAttribute(id.value),
|
|
70
|
+
set: (newValue) =>
|
|
71
|
+
dataStyleStore.setPointsVertexAttribute(id.value, newValue),
|
|
72
|
+
})
|
|
73
|
+
</script>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ContextMenuItem
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:tooltip="props.tooltip"
|
|
5
|
+
:btn_image="props.btn_image"
|
|
6
|
+
>
|
|
7
|
+
<template #options>
|
|
8
|
+
<ViewerOptionsVisibilitySwitch v-model="visibility" />
|
|
9
|
+
<template v-if="visibility">
|
|
10
|
+
<ViewerOptionsColoringTypeSelector
|
|
11
|
+
:id="id"
|
|
12
|
+
v-model:coloring_style_key="coloring_style_key"
|
|
13
|
+
v-model:color="color"
|
|
14
|
+
v-model:textures="textures"
|
|
15
|
+
v-model:vertex_attribute="vertex_attribute"
|
|
16
|
+
v-model:polygon_attribute="polygon_attribute"
|
|
17
|
+
/>
|
|
18
|
+
</template>
|
|
19
|
+
</template>
|
|
20
|
+
</ContextMenuItem>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script setup>
|
|
24
|
+
const dataStyleStore = useDataStyleStore()
|
|
25
|
+
|
|
26
|
+
const props = defineProps({
|
|
27
|
+
itemProps: { type: Object, required: true },
|
|
28
|
+
btn_image: { type: String, required: true },
|
|
29
|
+
tooltip: { type: String, required: false, default: "Polygons options" },
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
const id = toRef(() => props.itemProps.id)
|
|
33
|
+
|
|
34
|
+
const visibility = computed({
|
|
35
|
+
get: () => dataStyleStore.polygonsVisibility(id.value),
|
|
36
|
+
set: (newValue) => dataStyleStore.setPolygonsVisibility(id.value, newValue),
|
|
37
|
+
})
|
|
38
|
+
const coloring_style_key = computed({
|
|
39
|
+
get: () => dataStyleStore.polygonsActiveColoring(id.value),
|
|
40
|
+
set: (newValue) =>
|
|
41
|
+
dataStyleStore.setPolygonsActiveColoring(id.value, newValue),
|
|
42
|
+
})
|
|
43
|
+
const color = computed({
|
|
44
|
+
get: () => dataStyleStore.polygonsColor(id.value),
|
|
45
|
+
set: (newValue) => dataStyleStore.setPolygonsColor(id.value, newValue),
|
|
46
|
+
})
|
|
47
|
+
const textures = computed({
|
|
48
|
+
get: () => dataStyleStore.polygonsTextures(id.value),
|
|
49
|
+
set: (newValue) => dataStyleStore.setPolygonsTextures(id.value, newValue),
|
|
50
|
+
})
|
|
51
|
+
const vertex_attribute = computed({
|
|
52
|
+
get: () => dataStyleStore.polygonsVertexAttribute(id.value),
|
|
53
|
+
set: (newValue) => {
|
|
54
|
+
console.log("setPolygonsVertexAttribute", id.value, newValue)
|
|
55
|
+
dataStyleStore.setPolygonsVertexAttribute(id.value, newValue)
|
|
56
|
+
},
|
|
57
|
+
})
|
|
58
|
+
const polygon_attribute = computed({
|
|
59
|
+
get: () => dataStyleStore.polygonsPolygonAttribute(id.value),
|
|
60
|
+
set: (newValue) => {
|
|
61
|
+
console.log("setPolygonsPolygonAttribute", id.value, newValue)
|
|
62
|
+
dataStyleStore.setPolygonsPolygonAttribute(id.value, newValue)
|
|
63
|
+
},
|
|
64
|
+
})
|
|
65
|
+
</script>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ContextMenuItem
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:tooltip="props.tooltip"
|
|
5
|
+
:btn_image="props.btn_image"
|
|
6
|
+
>
|
|
7
|
+
<template #options>
|
|
8
|
+
<ViewerOptionsVisibilitySwitch v-model="visibility" />
|
|
9
|
+
|
|
10
|
+
<template v-if="visibility">
|
|
11
|
+
<ViewerOptionsColoringTypeSelector
|
|
12
|
+
:id="id"
|
|
13
|
+
v-model:coloring_style_key="coloring_style_key"
|
|
14
|
+
v-model:color="color"
|
|
15
|
+
v-model:vertex_attribute="vertex_attribute"
|
|
16
|
+
v-model:polyhedron_attribute="polyhedron_attribute"
|
|
17
|
+
/>
|
|
18
|
+
</template>
|
|
19
|
+
</template>
|
|
20
|
+
</ContextMenuItem>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script setup>
|
|
24
|
+
const dataStyleStore = useDataStyleStore()
|
|
25
|
+
|
|
26
|
+
const props = defineProps({
|
|
27
|
+
itemProps: { type: Object, required: true },
|
|
28
|
+
btn_image: { type: String, required: true },
|
|
29
|
+
tooltip: { type: String, required: false, default: "Polyhedra options" },
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
const id = toRef(() => props.itemProps.id)
|
|
33
|
+
|
|
34
|
+
const visibility = computed({
|
|
35
|
+
get: () => dataStyleStore.polyhedraVisibility(id.value),
|
|
36
|
+
set: (newValue) =>
|
|
37
|
+
dataStyleStore.setPolyhedraVisibility(id.value, newValue),
|
|
38
|
+
})
|
|
39
|
+
const coloring_style_key = computed({
|
|
40
|
+
get: () => dataStyleStore.polyhedraActiveColoring(id.value),
|
|
41
|
+
set: (newValue) =>
|
|
42
|
+
dataStyleStore.setPolyhedraActiveColoring(id.value, newValue),
|
|
43
|
+
})
|
|
44
|
+
const color = computed({
|
|
45
|
+
get: () => dataStyleStore.polyhedraColor(id.value),
|
|
46
|
+
set: (newValue) => dataStyleStore.setPolyhedraColor(id.value, newValue),
|
|
47
|
+
})
|
|
48
|
+
const vertex_attribute = computed({
|
|
49
|
+
get: () => dataStyleStore.polyhedraVertexAttribute(id.value),
|
|
50
|
+
set: (newValue) =>
|
|
51
|
+
dataStyleStore.setPolyhedraVertexAttribute(id.value, newValue),
|
|
52
|
+
})
|
|
53
|
+
const polyhedron_attribute = computed({
|
|
54
|
+
get: () => dataStyleStore.polyhedraPolyhedronAttribute(id.value),
|
|
55
|
+
set: (newValue) =>
|
|
56
|
+
dataStyleStore.setPolyhedraPolyhedronAttribute(id.value, newValue),
|
|
57
|
+
})
|
|
58
|
+
</script>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ContextMenuItem
|
|
3
|
+
:itemProps="itemProps"
|
|
4
|
+
tooltip="Edges options"
|
|
5
|
+
:btn_image="SurfaceEdges"
|
|
6
|
+
>
|
|
7
|
+
<template #options>
|
|
8
|
+
<ViewerOptionsVisibilitySwitch v-model="visibility" />
|
|
9
|
+
</template>
|
|
10
|
+
</ContextMenuItem>
|
|
11
|
+
</template>
|
|
12
|
+
|
|
13
|
+
<script setup>
|
|
14
|
+
import SurfaceEdges from "@ogw_f/assets/viewer_svgs/surface_edges.svg"
|
|
15
|
+
|
|
16
|
+
const props = defineProps({
|
|
17
|
+
itemProps: { type: Object, required: true },
|
|
18
|
+
btn_image: { type: String, required: true },
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
const id = toRef(() => props.itemProps.id)
|
|
22
|
+
const dataStyleStore = useDataStyleStore()
|
|
23
|
+
|
|
24
|
+
const visibility = computed({
|
|
25
|
+
get: () => dataStyleStore.modelEdgesVisibility(id.value),
|
|
26
|
+
set: (newValue) =>
|
|
27
|
+
dataStyleStore.setModelEdgesVisibility(id.value, newValue),
|
|
28
|
+
})
|
|
29
|
+
</script>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ContextMenuItem
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
tooltip="Points options"
|
|
5
|
+
:btn_image="SurfacePoints"
|
|
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
|
+
</template>
|
|
28
|
+
</template>
|
|
29
|
+
</ContextMenuItem>
|
|
30
|
+
</template>
|
|
31
|
+
|
|
32
|
+
<script setup>
|
|
33
|
+
import SurfacePoints from "@ogw_f/assets/viewer_svgs/surface_points.svg"
|
|
34
|
+
|
|
35
|
+
const dataStyleStore = useDataStyleStore()
|
|
36
|
+
|
|
37
|
+
const props = defineProps({
|
|
38
|
+
itemProps: { type: Object, required: true },
|
|
39
|
+
btn_image: { type: String, required: true },
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
const id = toRef(() => props.itemProps.id)
|
|
43
|
+
|
|
44
|
+
const visibility = computed({
|
|
45
|
+
get: () => dataStyleStore.modelPointsVisibility(id.value),
|
|
46
|
+
set: (newValue) =>
|
|
47
|
+
dataStyleStore.setModelPointsVisibility(id.value, newValue),
|
|
48
|
+
})
|
|
49
|
+
const size = computed({
|
|
50
|
+
get: () => dataStyleStore.modelPointsSize(id.value),
|
|
51
|
+
set: (newValue) => dataStyleStore.setModelPointsSize(id.value, newValue),
|
|
52
|
+
})
|
|
53
|
+
</script>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshPolygonsOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="Grid2D_Cells"
|
|
5
|
+
tooltip="Cells options"
|
|
6
|
+
/>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup>
|
|
10
|
+
import Grid2D_Cells from "@ogw_f/assets/viewer_svgs/grid_2d_cells.svg"
|
|
11
|
+
|
|
12
|
+
const props = defineProps({
|
|
13
|
+
itemProps: { type: Object, required: true },
|
|
14
|
+
})
|
|
15
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshEdgesOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="Grid2D_Edges"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import Grid2D_Edges from "@ogw_f/assets/viewer_svgs/grid_2d_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="Grid2D_Points"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import Grid2D_Points from "@ogw_f/assets/viewer_svgs/grid_2d_points.svg"
|
|
10
|
+
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
itemProps: { type: Object, required: true },
|
|
13
|
+
})
|
|
14
|
+
</script>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshPolyhedraOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="Grid3DCells"
|
|
5
|
+
tooltip="Cells options"
|
|
6
|
+
/>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup>
|
|
10
|
+
import Grid3DCells from "@ogw_f/assets/viewer_svgs/grid_3d_cells.svg"
|
|
11
|
+
|
|
12
|
+
const props = defineProps({
|
|
13
|
+
itemProps: { type: Object, required: true },
|
|
14
|
+
})
|
|
15
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshEdgesOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="Grid3D_Edges"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import Grid3D_Edges from "@ogw_f/assets/viewer_svgs/grid_3d_edges.svg"
|
|
10
|
+
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
itemProps: { type: Object, required: true },
|
|
13
|
+
})
|
|
14
|
+
</script>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshPolygonsOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="Grid3D_Facets"
|
|
5
|
+
tooltip="Facets options"
|
|
6
|
+
/>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup>
|
|
10
|
+
import Grid3D_Facets from "@ogw_f/assets/viewer_svgs/grid_3d_facets.svg"
|
|
11
|
+
|
|
12
|
+
const props = defineProps({
|
|
13
|
+
itemProps: { type: Object, required: true },
|
|
14
|
+
})
|
|
15
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshPointsOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="Grid3D_Points"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import Grid3D_Points from "@ogw_f/assets/viewer_svgs/grid_3d_points.svg"
|
|
10
|
+
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
itemProps: { type: Object, required: true },
|
|
13
|
+
})
|
|
14
|
+
</script>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ClientOnly>
|
|
3
|
+
<div style="position: relative; width: 100%; height: calc(100vh - 75px)">
|
|
4
|
+
<VeaseViewToolbar />
|
|
5
|
+
<slot name="ui"></slot>
|
|
6
|
+
<v-col
|
|
7
|
+
ref="viewer"
|
|
8
|
+
style="
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
position: relative;
|
|
11
|
+
z-index: 0;
|
|
12
|
+
height: 100%;
|
|
13
|
+
width: 100%;
|
|
14
|
+
"
|
|
15
|
+
class="pa-0"
|
|
16
|
+
@click="get_x_y"
|
|
17
|
+
@keydown.esc="viewer_store.toggle_picking_mode(false)"
|
|
18
|
+
/>
|
|
19
|
+
</div>
|
|
20
|
+
</ClientOnly>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script setup>
|
|
24
|
+
const container = useTemplateRef("viewer")
|
|
25
|
+
const hybridViewerStore = useHybridViewerStore()
|
|
26
|
+
|
|
27
|
+
const { windowWidth, windowHeight } = useWindowSize()
|
|
28
|
+
const { width, height } = useElementSize(container)
|
|
29
|
+
|
|
30
|
+
watch([windowWidth, windowHeight, height, width], () => {
|
|
31
|
+
hybridViewerStore.resize(width.value, height.value)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
onMounted(async () => {
|
|
35
|
+
if (import.meta.client) {
|
|
36
|
+
await hybridViewerStore.initHybridViewer()
|
|
37
|
+
await nextTick()
|
|
38
|
+
hybridViewerStore.setContainer(container)
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshEdgesOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="HybridSolidEdges"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import HybridSolidEdges from "@ogw_f/assets/viewer_svgs/solid_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="HybridSolidPoints"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import HybridSolidPoints from "@ogw_f/assets/viewer_svgs/solid_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="HybridSolidPolygons"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import HybridSolidPolygons from "@ogw_f/assets/viewer_svgs/solid_facets.svg"
|
|
10
|
+
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
itemProps: { type: Object, required: true },
|
|
13
|
+
})
|
|
14
|
+
</script>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<ViewerGenericMeshPolyhedraOptions
|
|
3
|
+
:itemProps="props.itemProps"
|
|
4
|
+
:btn_image="HybridSolidPolyhedra"
|
|
5
|
+
/>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup>
|
|
9
|
+
import HybridSolidPolyhedra from "@ogw_f/assets/viewer_svgs/solid_polyhedra.svg"
|
|
10
|
+
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
itemProps: { type: Object, required: true },
|
|
13
|
+
})
|
|
14
|
+
</script>
|