@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,134 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="16.103067mm"
6
+ height="16.671467mm"
7
+ viewBox="0 0 57.058112 59.072129"
8
+ id="svg2"
9
+ version="1.1"
10
+ inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
11
+ sodipodi:docname="solid_points.svg"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"
16
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
17
+ xmlns:cc="http://creativecommons.org/ns#"
18
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
19
+ <sodipodi:namedview
20
+ id="base"
21
+ pagecolor="#ffffff"
22
+ bordercolor="#666666"
23
+ borderopacity="1.0"
24
+ inkscape:pageopacity="0.0"
25
+ inkscape:pageshadow="2"
26
+ inkscape:zoom="8.0000002"
27
+ inkscape:cx="37.249999"
28
+ inkscape:cy="21.999999"
29
+ inkscape:document-units="px"
30
+ inkscape:current-layer="g6358"
31
+ showgrid="false"
32
+ inkscape:window-width="1920"
33
+ inkscape:window-height="1043"
34
+ inkscape:window-x="1920"
35
+ inkscape:window-y="0"
36
+ inkscape:window-maximized="1"
37
+ fit-margin-top="0"
38
+ fit-margin-left="0"
39
+ fit-margin-right="0"
40
+ fit-margin-bottom="0"
41
+ inkscape:pagecheckerboard="0"
42
+ width="14.56725mm"
43
+ inkscape:showpageshadow="0"
44
+ inkscape:deskcolor="#d1d1d1" />
45
+ <defs
46
+ id="defs4" />
47
+ <metadata
48
+ id="metadata7">
49
+ <rdf:RDF>
50
+ <cc:Work
51
+ rdf:about="">
52
+ <dc:format>image/svg+xml</dc:format>
53
+ <dc:type
54
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
55
+ </cc:Work>
56
+ </rdf:RDF>
57
+ </metadata>
58
+ <g
59
+ id="layer1"
60
+ inkscape:groupmode="layer"
61
+ inkscape:label="Calque 1"
62
+ transform="translate(-38.245882,-1039.2148)">
63
+ <g
64
+ id="g6358"
65
+ transform="matrix(0.97484501,0.22288385,-0.0558804,1.0130279,35.823527,161.82849)">
66
+ <ellipse
67
+ ry="4.9195733"
68
+ rx="5.33915"
69
+ cy="861.63928"
70
+ cx="24.216125"
71
+ id="ellipse3464-8"
72
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.21364;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
73
+ transform="matrix(0.97664088,-0.21487807,0.0572284,0.99836111,0,0)" />
74
+ <path
75
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.75, 3.75;stroke-dashoffset:0;stroke-opacity:1"
76
+ d="M 59.285714,893.93363 105,864.29077"
77
+ id="path3603"
78
+ inkscape:connector-curvature="0" />
79
+ <ellipse
80
+ ry="4.9195733"
81
+ rx="5.33915"
82
+ cy="877.24677"
83
+ cx="56.357399"
84
+ id="ellipse5469"
85
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.21364;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
86
+ transform="matrix(0.97664088,-0.21487807,0.0572284,0.99836111,0,0)" />
87
+ <ellipse
88
+ ry="4.9195733"
89
+ rx="5.33915"
90
+ cy="909.48083"
91
+ cx="42.713058"
92
+ id="ellipse5471"
93
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.21364;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
94
+ transform="matrix(0.97664088,-0.21487807,0.0572284,0.99836111,0,0)" />
95
+ <ellipse
96
+ ry="4.9195733"
97
+ rx="5.33915"
98
+ cy="897.68372"
99
+ cx="7.8517537"
100
+ id="ellipse5473"
101
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.21364;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
102
+ transform="matrix(0.97664088,-0.21487807,0.0572284,0.99836111,0,0)" />
103
+ <path
104
+ style="fill:none;stroke:#000000;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
105
+ d="M 70.913669,862.0973 60.718292,887.74886"
106
+ id="path6618" />
107
+ <path
108
+ style="fill:none;stroke:#000000;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
109
+ d="m 65.382584,895.34952 21.720948,2.46949"
110
+ id="path6620" />
111
+ <path
112
+ style="fill:none;stroke:#000000;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
113
+ d="m 80.399095,857.39046 17.75,4.9787"
114
+ id="path6622" />
115
+ <path
116
+ style="fill:none;stroke:#000000;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
117
+ d="m 102.5702,871.2933 -6.964481,20.07115"
118
+ id="path6624" />
119
+ </g>
120
+ <flowRoot
121
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:Roboto;-inkscape-font-specification:Roboto;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
122
+ id="flowRoot4518"
123
+ xml:space="preserve"><flowRegion
124
+ id="flowRegion4520"><rect
125
+ y="1311.6479"
126
+ x="27.142857"
127
+ height="57.142857"
128
+ width="155"
129
+ id="rect4522"
130
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto" /></flowRegion><flowPara
131
+ id="flowPara4524"
132
+ style="font-size:27.5px;line-height:1.25"> </flowPara></flowRoot>
133
+ </g>
134
+ </svg>
@@ -0,0 +1,103 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="14.56725mm"
6
+ height="14.741101mm"
7
+ viewBox="0 0 51.61624 52.232251"
8
+ id="svg2"
9
+ version="1.1"
10
+ inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
11
+ sodipodi:docname="solid_polyhedra.svg"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"
16
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
17
+ xmlns:cc="http://creativecommons.org/ns#"
18
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
19
+ <sodipodi:namedview
20
+ id="base"
21
+ pagecolor="#ffffff"
22
+ bordercolor="#666666"
23
+ borderopacity="1.0"
24
+ inkscape:pageopacity="0.0"
25
+ inkscape:pageshadow="2"
26
+ inkscape:zoom="11.313709"
27
+ inkscape:cx="15.733125"
28
+ inkscape:cy="25.190678"
29
+ inkscape:document-units="px"
30
+ inkscape:current-layer="g6358"
31
+ showgrid="false"
32
+ inkscape:window-width="1920"
33
+ inkscape:window-height="1043"
34
+ inkscape:window-x="1920"
35
+ inkscape:window-y="0"
36
+ inkscape:window-maximized="1"
37
+ fit-margin-top="0"
38
+ fit-margin-left="0"
39
+ fit-margin-right="0"
40
+ fit-margin-bottom="0"
41
+ inkscape:pagecheckerboard="0"
42
+ width="14.56725mm"
43
+ inkscape:showpageshadow="0"
44
+ inkscape:deskcolor="#d1d1d1" />
45
+ <defs
46
+ id="defs4" />
47
+ <metadata
48
+ id="metadata7">
49
+ <rdf:RDF>
50
+ <cc:Work
51
+ rdf:about="">
52
+ <dc:format>image/svg+xml</dc:format>
53
+ <dc:type
54
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
55
+ </cc:Work>
56
+ </rdf:RDF>
57
+ </metadata>
58
+ <g
59
+ id="layer1"
60
+ inkscape:groupmode="layer"
61
+ inkscape:label="Calque 1"
62
+ transform="translate(-40.39686,-1042.6347)">
63
+ <g
64
+ id="g6358"
65
+ transform="matrix(0.97484501,0.22288385,-0.0558804,1.0130279,35.823527,161.82849)">
66
+ <path
67
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.56250001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
68
+ d="M 93.175917,898.36698 105.08026,864.6786 73.54819,855.46885 Z"
69
+ id="path3559"
70
+ inkscape:connector-curvature="0"
71
+ sodipodi:nodetypes="cccc" />
72
+ <path
73
+ sodipodi:nodetypes="ccc"
74
+ inkscape:connector-curvature="0"
75
+ id="path3561"
76
+ d="m 73.54819,855.46885 -15.464419,38.90846 35.092146,3.98967"
77
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.56250001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
78
+ <path
79
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.5, 4.5;stroke-dashoffset:0;stroke-opacity:1"
80
+ d="M 58.083771,894.37731 105.08026,864.6786"
81
+ id="path3603"
82
+ inkscape:connector-curvature="0"
83
+ sodipodi:nodetypes="cc" />
84
+ <path
85
+ style="fill:#000000;stroke:none;stroke-width:0.9375px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.62393421"
86
+ d="m 74.91637,858.45913 -13.373161,33.73204 30.372021,3.42047 10.74471,-29.40356 z"
87
+ id="path13329" />
88
+ </g>
89
+ <flowRoot
90
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:Roboto;-inkscape-font-specification:Roboto;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
91
+ id="flowRoot4518"
92
+ xml:space="preserve"><flowRegion
93
+ id="flowRegion4520"><rect
94
+ y="1311.6479"
95
+ x="27.142857"
96
+ height="57.142857"
97
+ width="155"
98
+ id="rect4522"
99
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto" /></flowRegion><flowPara
100
+ id="flowPara4524"
101
+ style="font-size:27.5px;line-height:1.25"> </flowPara></flowRoot>
102
+ </g>
103
+ </svg>
@@ -0,0 +1,73 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="14.461467mm"
6
+ height="10.914769mm"
7
+ viewBox="0 0 51.241417 38.67438"
8
+ id="svg2"
9
+ version="1.1"
10
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
11
+ sodipodi:docname="surface_edges.svg"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"
16
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
17
+ xmlns:cc="http://creativecommons.org/ns#"
18
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
19
+ <sodipodi:namedview
20
+ id="base"
21
+ pagecolor="#ffffff"
22
+ bordercolor="#666666"
23
+ borderopacity="1.0"
24
+ inkscape:pageopacity="0.0"
25
+ inkscape:pageshadow="2"
26
+ inkscape:zoom="8.0000004"
27
+ inkscape:cx="-6.4374997"
28
+ inkscape:cy="15.749999"
29
+ inkscape:document-units="px"
30
+ inkscape:current-layer="layer1"
31
+ showgrid="false"
32
+ inkscape:window-width="1920"
33
+ inkscape:window-height="1043"
34
+ inkscape:window-x="3840"
35
+ inkscape:window-y="0"
36
+ inkscape:window-maximized="1"
37
+ fit-margin-top="0"
38
+ fit-margin-left="0"
39
+ fit-margin-right="0"
40
+ fit-margin-bottom="0"
41
+ inkscape:pagecheckerboard="0" />
42
+ <defs
43
+ id="defs4" />
44
+ <metadata
45
+ id="metadata7">
46
+ <rdf:RDF>
47
+ <cc:Work
48
+ rdf:about="">
49
+ <dc:format>image/svg+xml</dc:format>
50
+ <dc:type
51
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
52
+ </cc:Work>
53
+ </rdf:RDF>
54
+ </metadata>
55
+ <g
56
+ id="layer1"
57
+ inkscape:groupmode="layer"
58
+ inkscape:label="Calque 1"
59
+ transform="translate(-465.95997,-519.92571)">
60
+ <path
61
+ sodipodi:nodetypes="cccc"
62
+ inkscape:connector-curvature="0"
63
+ id="path4771"
64
+ d="m 500.398,556.47811 14.68226,-34.40439 h -31.53207 z"
65
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.24248;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
66
+ <path
67
+ sodipodi:nodetypes="cccccccccccc"
68
+ inkscape:connector-curvature="0"
69
+ id="path4773"
70
+ d="m 485.7571,554.35742 h -14.39577 l 14.12109,-31.41406 c 0.65244,-1.39987 -0.36185,-3.00549 -1.90625,-3.01758 -0.85133,-0.007 -1.62417,0.49627 -1.96289,1.27734 l -15.46484,34.40626 c -0.63011,1.40372 0.39688,2.99033 1.93554,2.99023 h 17.67312 m 0,0 h 14.64134 c 2.88053,0.0529 2.88053,-4.29508 0,-4.24219 H 485.7571"
71
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.24248;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
72
+ </g>
73
+ </svg>
@@ -0,0 +1,115 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="16.268888mm"
6
+ height="12.536777mm"
7
+ viewBox="0 0 57.645667 44.421651"
8
+ id="svg2"
9
+ version="1.1"
10
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
11
+ sodipodi:docname="surface_points.svg"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"
16
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
17
+ xmlns:cc="http://creativecommons.org/ns#"
18
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
19
+ <sodipodi:namedview
20
+ id="base"
21
+ pagecolor="#ffffff"
22
+ bordercolor="#666666"
23
+ borderopacity="1.0"
24
+ inkscape:pageopacity="0.0"
25
+ inkscape:pageshadow="2"
26
+ inkscape:zoom="5.6568544"
27
+ inkscape:cx="20.771261"
28
+ inkscape:cy="8.5736695"
29
+ inkscape:document-units="px"
30
+ inkscape:current-layer="layer1"
31
+ showgrid="false"
32
+ inkscape:window-width="1920"
33
+ inkscape:window-height="946"
34
+ inkscape:window-x="1920"
35
+ inkscape:window-y="27"
36
+ inkscape:window-maximized="1"
37
+ fit-margin-top="0"
38
+ fit-margin-left="0"
39
+ fit-margin-right="0"
40
+ fit-margin-bottom="0"
41
+ inkscape:pagecheckerboard="0"
42
+ units="in" />
43
+ <defs
44
+ id="defs4" />
45
+ <metadata
46
+ id="metadata7">
47
+ <rdf:RDF>
48
+ <cc:Work
49
+ rdf:about="">
50
+ <dc:format>image/svg+xml</dc:format>
51
+ <dc:type
52
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
53
+ </cc:Work>
54
+ </rdf:RDF>
55
+ </metadata>
56
+ <g
57
+ id="layer1"
58
+ inkscape:groupmode="layer"
59
+ inkscape:label="Calque 1"
60
+ transform="translate(-255.09317,-516.74135)">
61
+ <ellipse
62
+ ry="5.0382481"
63
+ rx="5.1473732"
64
+ cy="556.12476"
65
+ cx="292.06036"
66
+ id="ellipse3464-6"
67
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.19958;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
68
+ <ellipse
69
+ ry="5.0382481"
70
+ rx="5.1473732"
71
+ cy="522.15839"
72
+ cx="275.5191"
73
+ id="ellipse3464-1"
74
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.19958;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
75
+ <ellipse
76
+ ry="5.0382481"
77
+ rx="5.1473732"
78
+ cy="521.7796"
79
+ cx="307.59146"
80
+ id="ellipse3464-8"
81
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.19958;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
82
+ <ellipse
83
+ ry="5.0382481"
84
+ rx="5.1473732"
85
+ cy="556.12476"
86
+ cx="260.24054"
87
+ id="ellipse3464-7"
88
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.19958;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
89
+ <path
90
+ inkscape:connector-curvature="0"
91
+ id="path4721"
92
+ d="m 268.57431,555.87223 h 15.78363"
93
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
94
+ <path
95
+ inkscape:connector-curvature="0"
96
+ id="path4723"
97
+ d="M 282.96898,521.27451 H 299.6365"
98
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
99
+ <path
100
+ inkscape:connector-curvature="0"
101
+ id="path4725"
102
+ d="m 271.09969,528.72438 -9.21764,20.45559"
103
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
104
+ <path
105
+ inkscape:connector-curvature="0"
106
+ id="path4727"
107
+ d="M 305.82368,527.33542 293.44931,549.0537"
108
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
109
+ <path
110
+ inkscape:connector-curvature="0"
111
+ id="path4729"
112
+ d="m 278.92837,528.59811 9.34391,20.70813"
113
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
114
+ </g>
115
+ </svg>
@@ -0,0 +1,92 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="13.806398mm"
6
+ height="10.069895mm"
7
+ viewBox="0 0 48.920309 35.68073"
8
+ id="svg2"
9
+ version="1.1"
10
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
11
+ sodipodi:docname="surface_triangles.svg"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"
16
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
17
+ xmlns:cc="http://creativecommons.org/ns#"
18
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
19
+ <sodipodi:namedview
20
+ id="base"
21
+ pagecolor="#ffffff"
22
+ bordercolor="#666666"
23
+ borderopacity="1.0"
24
+ inkscape:pageopacity="0.0"
25
+ inkscape:pageshadow="2"
26
+ inkscape:zoom="8.0000002"
27
+ inkscape:cx="80.062498"
28
+ inkscape:cy="35.124999"
29
+ inkscape:document-units="px"
30
+ inkscape:current-layer="g3204"
31
+ showgrid="false"
32
+ inkscape:window-width="1920"
33
+ inkscape:window-height="1043"
34
+ inkscape:window-x="3840"
35
+ inkscape:window-y="0"
36
+ inkscape:window-maximized="1"
37
+ fit-margin-top="0"
38
+ fit-margin-left="0"
39
+ fit-margin-right="0"
40
+ fit-margin-bottom="0"
41
+ inkscape:pagecheckerboard="0" />
42
+ <defs
43
+ id="defs4" />
44
+ <metadata
45
+ id="metadata7">
46
+ <rdf:RDF>
47
+ <cc:Work
48
+ rdf:about="">
49
+ <dc:format>image/svg+xml</dc:format>
50
+ <dc:type
51
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
52
+ </cc:Work>
53
+ </rdf:RDF>
54
+ </metadata>
55
+ <g
56
+ id="layer1"
57
+ inkscape:groupmode="layer"
58
+ inkscape:label="Calque 1"
59
+ transform="translate(-652.16001,-520.35823)">
60
+ <g
61
+ id="g3204">
62
+ <path
63
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.142;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
64
+ d="M 688.35582,521.06357 H 668.1954 l 16.84981,34.40439 14.14623,-33.14832 0.39929,-0.93565 -0.092,-0.13069"
65
+ id="path4785"
66
+ inkscape:connector-curvature="0"
67
+ sodipodi:nodetypes="cccccc" />
68
+ <path
69
+ sodipodi:nodetypes="ccc"
70
+ inkscape:connector-curvature="0"
71
+ id="path4787"
72
+ d="m 668.1954,521.06357 -15.46442,34.40439 h 32.31423"
73
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.142;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
74
+ <path
75
+ sodipodi:nodetypes="ccc"
76
+ inkscape:connector-curvature="0"
77
+ id="path4787-6"
78
+ d="m 685.18809,555.39761 15.32126,-34.46838 -32.31395,0.13434"
79
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.142;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
80
+ <path
81
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.267847;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
82
+ d="m 656.09946,553.23887 c 0.0205,-0.0535 2.76921,-6.17511 6.10814,-13.60347 l 6.0708,-13.50613 6.65178,13.57942 c 3.65848,7.46867 6.65178,13.59024 6.65178,13.60347 0,0.0132 -5.74197,0.0241 -12.75993,0.0241 -11.47064,0 -12.75616,-0.01 -12.72257,-0.0974 z"
83
+ id="path4789"
84
+ inkscape:connector-curvature="0" />
85
+ <path
86
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.267847;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
87
+ d="m 696.62897,522.83417 c -0.0205,0.0536 -2.7537,6.18204 -6.07396,13.61876 l -6.03688,13.52133 -6.68585,-13.56268 c -3.67723,-7.45946 -6.68588,-13.57349 -6.68591,-13.58672 -4e-5,-0.0132 5.74188,-0.0384 12.75982,-0.0557 11.4706,-0.0288 12.75615,-0.022 12.72278,0.0655 z"
88
+ id="path4789-3"
89
+ inkscape:connector-curvature="0" />
90
+ </g>
91
+ </g>
92
+ </svg>
@@ -0,0 +1,123 @@
1
+ <template>
2
+ <v-menu
3
+ v-model="show_menu"
4
+ content-class="circular-menu"
5
+ :style="getMenuStyle()"
6
+ >
7
+ <div
8
+ class="circular-menu-items"
9
+ :style="{ width: `${radius * 2}px`, height: `${radius * 2}px` }"
10
+ >
11
+ <component
12
+ v-for="(item, index) in menu_items"
13
+ :is="item"
14
+ :key="index"
15
+ :itemProps="{
16
+ id: props.id,
17
+ tooltip_location: getTooltipLocation(index),
18
+ tooltip_origin: getTooltipOrigin(index),
19
+ }"
20
+ class="menu-item-wrapper"
21
+ :style="getItemStyle(index)"
22
+ />
23
+ </div>
24
+ </v-menu>
25
+ </template>
26
+
27
+ <script setup>
28
+ const menuStore = useMenuStore()
29
+ const dataBaseStore = useDataBaseStore()
30
+
31
+ const props = defineProps({
32
+ id: { type: String, required: true },
33
+ x: { type: Number, required: true },
34
+ y: { type: Number, required: true },
35
+ containerWidth: { type: Number, required: true },
36
+ containerHeight: { type: Number, required: true },
37
+ })
38
+
39
+ const meta_data = computed(() => {
40
+ const itemId = props.id || menuStore.current_id
41
+ return itemId ? dataBaseStore.itemMetaDatas(itemId) : {}
42
+ })
43
+ const radius = 80
44
+ const show_menu = ref(true)
45
+
46
+ watch(show_menu, (value) => {
47
+ if (!value) {
48
+ menuStore.closeMenu()
49
+ }
50
+ })
51
+
52
+ const menu_items = computed(() =>
53
+ menuStore.getMenuItems(
54
+ meta_data.value.object_type,
55
+ meta_data.value.geode_object,
56
+ ),
57
+ )
58
+
59
+ const menuItemCount = computed(() => menu_items.value.length)
60
+
61
+ function getMenuStyle() {
62
+ const x = props.x || menuStore.menuX
63
+ const y = props.y || menuStore.menuY
64
+ const width = props.containerWidth || menuStore.containerWidth
65
+ const height = props.containerHeight || menuStore.containerHeight
66
+
67
+ const adjustedX = Math.min(Math.max(x, radius), width - radius)
68
+ const adjustedY = Math.min(Math.max(y, radius), height - radius)
69
+
70
+ return {
71
+ left: `${adjustedX - radius}px`,
72
+ top: `${adjustedY - radius}px`,
73
+ }
74
+ }
75
+
76
+ function getTooltipLocation(index) {
77
+ const angle = (index / menuItemCount.value) * 360
78
+ if (angle < 45 || angle >= 315) return "right"
79
+ if (angle >= 45 && angle < 135) return "top"
80
+ if (angle >= 135 && angle < 225) return "left"
81
+ return "bottom"
82
+ }
83
+
84
+ function getTooltipOrigin(index) {
85
+ const angle = (index / menuItemCount.value) * 360
86
+ if (angle < 45 || angle >= 315) return "left"
87
+ if (angle >= 45 && angle < 135) return "bottom"
88
+ if (angle >= 135 && angle < 225) return "right"
89
+ return "top"
90
+ }
91
+
92
+ function getItemStyle(index) {
93
+ const angle = (index / menuItemCount.value) * 2 * Math.PI
94
+ return {
95
+ transform: `translate(${Math.cos(angle) * radius}px, ${
96
+ Math.sin(angle) * radius
97
+ }px)`,
98
+ transition: "opacity 0.1s ease, transform 0.1s ease",
99
+ position: "absolute",
100
+ }
101
+ }
102
+ </script>
103
+
104
+ <style scoped>
105
+ .circular-menu {
106
+ position: absolute;
107
+ border-radius: 50%;
108
+ background-color: rgba(0, 0, 0, 0.8);
109
+ }
110
+
111
+ .circular-menu-items {
112
+ position: relative;
113
+ display: flex;
114
+ align-items: center;
115
+ justify-content: center;
116
+ }
117
+
118
+ .menu-item-wrapper {
119
+ position: absolute;
120
+ transform-origin: center;
121
+ will-change: transform, opacity;
122
+ }
123
+ </style>