@vcmap/ui 6.0.0-rc.8 → 6.0.0

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 (191) hide show
  1. package/README.md +2 -0
  2. package/build/buildHelpers.js +1 -1
  3. package/build/commonViteConfig.js +7 -0
  4. package/config/aerowest.config.json +12 -2
  5. package/config/analysis.config.json +17 -0
  6. package/config/base.config.json +19 -5
  7. package/config/components-show-case.config.json +53 -0
  8. package/config/concepts-show-case.config.json +39 -0
  9. package/config/dev.config.json +164 -105
  10. package/config/dynamic-layer.config.json +32 -0
  11. package/config/hello-world.config.json +11 -0
  12. package/config/projects.config.json +9 -1
  13. package/config/solar.config.json +65 -0
  14. package/config/vectorTile.config.json +70 -0
  15. package/config/www.config.json +34 -13
  16. package/dist/assets/{cesium-2ec6aae0.js → cesium-00deba88.js} +4672 -4704
  17. package/dist/assets/cesium.js +1 -1
  18. package/dist/assets/{core-6f2522e5.js → core-a599e8b6.js} +7932 -7342
  19. package/dist/assets/core.js +1 -1
  20. package/dist/assets/{ol-b0e134cb.js → ol-21bbc740.js} +12206 -11711
  21. package/dist/assets/ol.js +1 -1
  22. package/dist/assets/ui-adeddc7d.css +1 -0
  23. package/dist/assets/{ui-bf3d1f84.js → ui-adeddc7d.js} +10415 -9588
  24. package/dist/assets/ui.js +1 -1
  25. package/dist/assets/vue.js +1 -1
  26. package/dist/assets/{vuetify-99bf601c.css → vuetify-c0e02f11.css} +1 -1
  27. package/dist/assets/{vuetify-99bf601c.js → vuetify-c0e02f11.js} +5313 -5294
  28. package/dist/assets/vuetify.js +1 -1
  29. package/index.d.ts +4 -0
  30. package/index.js +2 -0
  31. package/lib/olLib.js +6 -0
  32. package/package.json +12 -12
  33. package/plugins/@vcmap-show-case/README.md +15 -6
  34. package/plugins/@vcmap-show-case/category-tester/package.json +1 -1
  35. package/plugins/@vcmap-show-case/category-tester/src/CollectionComponentOptions.vue +23 -23
  36. package/plugins/@vcmap-show-case/category-tester/src/FoobarEditor.vue +2 -8
  37. package/plugins/@vcmap-show-case/collection-manager-example/package.json +1 -1
  38. package/plugins/@vcmap-show-case/collection-manager-example/src/CollectionManagerExample.vue +10 -8
  39. package/plugins/@vcmap-show-case/context-menu-tester/package.json +1 -1
  40. package/plugins/@vcmap-show-case/extent-example/package.json +1 -1
  41. package/plugins/@vcmap-show-case/flight-component-example/package.json +1 -1
  42. package/plugins/@vcmap-show-case/form-inputs-example/package.json +1 -1
  43. package/plugins/@vcmap-show-case/hello-world/package.json +1 -1
  44. package/plugins/@vcmap-show-case/icons-example/package.json +1 -1
  45. package/plugins/@vcmap-show-case/notifier-tester/package.json +1 -1
  46. package/plugins/@vcmap-show-case/panel-tester/package.json +1 -1
  47. package/plugins/@vcmap-show-case/plugin-editors/package.json +1 -1
  48. package/plugins/@vcmap-show-case/plugin-editors/src/index.js +17 -6
  49. package/plugins/@vcmap-show-case/project-selector/package.json +1 -9
  50. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +22 -31
  51. package/plugins/@vcmap-show-case/project-selector/src/ProjectSelectorComponent.vue +15 -23
  52. package/plugins/@vcmap-show-case/projection-example/README.md +3 -0
  53. package/plugins/@vcmap-show-case/projection-example/package.json +5 -0
  54. package/plugins/@vcmap-show-case/projection-example/src/ProjectionExample.vue +73 -0
  55. package/plugins/@vcmap-show-case/{table-example → projection-example}/src/index.js +22 -11
  56. package/plugins/@vcmap-show-case/search-example/package.json +1 -1
  57. package/plugins/@vcmap-show-case/simple-graph/package.json +1 -4
  58. package/plugins/@vcmap-show-case/style-input-example/package.json +1 -1
  59. package/plugins/@vcmap-show-case/switch-map-callback-example/README.md +2 -2
  60. package/plugins/@vcmap-show-case/switch-map-callback-example/package.json +2 -1
  61. package/plugins/@vcmap-show-case/switch-map-callback-example/src/index.js +4 -1
  62. package/plugins/@vcmap-show-case/theming-example/package.json +1 -1
  63. package/plugins/@vcmap-show-case/toolbox-example/package.json +1 -1
  64. package/plugins/@vcmap-show-case/vector-properties-example/package.json +1 -1
  65. package/plugins/@vcmap-show-case/viewpoint-component-example/package.json +1 -1
  66. package/plugins/@vcmap-show-case/window-tester/package.json +1 -1
  67. package/plugins/@vcmap-show-case/window-tester/src/WindowExample.vue +1 -1
  68. package/plugins/@vcmap-show-case/window-tester/src/WindowExampleToggleChild.vue +5 -1
  69. package/plugins/@vcmap-show-case/wizard-example/package.json +1 -1
  70. package/plugins/package.json +23 -3
  71. package/src/actions/flightActions.js +40 -20
  72. package/src/actions/listActions.d.ts +1 -1
  73. package/src/actions/listActions.js +1 -1
  74. package/src/application/VcsApp.vue +3 -0
  75. package/src/application/VcsApp.vue.d.ts +15 -0
  76. package/src/application/VcsAttributions.vue +1 -1
  77. package/src/application/VcsAttributionsFooter.vue +1 -1
  78. package/src/application/VcsContainer.vue +0 -1
  79. package/src/application/VcsContainer.vue.d.ts +15 -0
  80. package/src/application/VcsObliqueFooter.vue +110 -0
  81. package/src/application/VcsObliqueFooter.vue.d.ts +4 -0
  82. package/src/application/VcsTextPageFooter.vue +1 -0
  83. package/src/application/attributionsHelper.js +10 -6
  84. package/src/components/buttons/VcsButton.vue +2 -2
  85. package/src/components/buttons/VcsButton.vue.d.ts +1 -1
  86. package/src/components/buttons/VcsFormButton.vue +2 -2
  87. package/src/components/buttons/VcsFormButton.vue.d.ts +1 -1
  88. package/src/components/buttons/VcsToolButton.vue +2 -2
  89. package/src/components/buttons/VcsToolButton.vue.d.ts +1 -1
  90. package/src/components/composables.d.ts +2 -2
  91. package/src/components/composables.js +3 -5
  92. package/src/components/flight/VcsFlightPlayer.vue +26 -20
  93. package/src/components/form-inputs-controls/VcsCheckbox.vue +11 -5
  94. package/src/components/form-inputs-controls/VcsCheckbox.vue.d.ts +10 -1
  95. package/src/components/form-inputs-controls/VcsDatePicker.vue +23 -3
  96. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -1
  97. package/src/components/form-inputs-controls/VcsFileInput.vue +3 -3
  98. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -1
  99. package/src/components/form-inputs-controls/VcsLabel.vue +10 -1
  100. package/src/components/form-inputs-controls/VcsLabel.vue.d.ts +9 -0
  101. package/src/components/form-inputs-controls/VcsRadio.vue +4 -0
  102. package/src/components/form-inputs-controls/VcsSelect.vue +2 -2
  103. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +3 -3
  104. package/src/components/form-inputs-controls/VcsSlider.vue +2 -2
  105. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +1 -1
  106. package/src/components/form-inputs-controls/VcsTextArea.vue +2 -2
  107. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -1
  108. package/src/components/form-inputs-controls/VcsTextField.vue +3 -3
  109. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +1 -1
  110. package/src/components/form-inputs-controls/VcsWizard.vue +2 -2
  111. package/src/components/form-inputs-controls/VcsWizard.vue.d.ts +1 -1
  112. package/src/components/form-inputs-controls/VcsWizardStep.vue +2 -2
  113. package/src/components/form-inputs-controls/VcsWizardStep.vue.d.ts +3 -3
  114. package/src/components/import/VcsImportComponent.vue +3 -3
  115. package/src/components/lists/VcsActionList.vue +1 -1
  116. package/src/components/lists/VcsList.vue +56 -39
  117. package/src/components/lists/VcsListItemComponent.vue +14 -12
  118. package/src/components/lists/VcsListItemComponent.vue.d.ts +5 -28
  119. package/src/components/lists/VcsTreeview.vue +4 -2
  120. package/src/components/lists/VcsTreeview.vue.d.ts +1 -1
  121. package/src/components/notification/VcsHelp.vue +0 -1
  122. package/src/components/notification/VcsHelpTooltip.vue +48 -0
  123. package/src/components/notification/VcsHelpTooltip.vue.d.ts +25 -0
  124. package/src/components/projection/VcsProjection.vue +329 -0
  125. package/src/components/projection/VcsProjection.vue.d.ts +7 -0
  126. package/src/components/section/VcsFormSection.vue +0 -1
  127. package/src/components/section/VcsFormSection.vue.d.ts +1 -1
  128. package/src/components/tables/VcsDataTable.vue +15 -4
  129. package/src/components/tables/VcsDataTable.vue.d.ts +13 -2
  130. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +17 -1
  131. package/src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts +10 -1
  132. package/src/components/vector-properties/VcsFeatureTransforms.vue +39 -5
  133. package/src/components/vector-properties/VcsFeatureTransforms.vue.d.ts +2 -1
  134. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +44 -24
  135. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +27 -2
  136. package/src/components/viewpoint/VcsViewpointComponent.vue +6 -6
  137. package/src/contentTree/contentTreeCollection.js +12 -1
  138. package/src/contentTree/obliqueCollectionContentTreeItem.js +6 -1
  139. package/src/featureInfo/abstractFeatureInfoView.d.ts +9 -0
  140. package/src/featureInfo/abstractFeatureInfoView.js +20 -3
  141. package/src/i18n/de.d.ts +93 -39
  142. package/src/i18n/de.js +68 -22
  143. package/src/i18n/en.d.ts +93 -39
  144. package/src/i18n/en.js +64 -18
  145. package/src/legend/StyleLegendItem.vue +1 -5
  146. package/src/legend/VcsLegend.vue +9 -10
  147. package/src/legend/VcsLegend.vue.d.ts +1 -1
  148. package/src/legend/legendHelper.js +6 -1
  149. package/src/manager/collectionManager/collectionComponentClass.js +9 -5
  150. package/src/manager/collectionManager/editorCollectionComponentClass.js +5 -3
  151. package/src/manager/toolbox/GroupToolboxComponent.vue +6 -1
  152. package/src/manager/toolbox/SelectToolboxComponent.vue +6 -2
  153. package/src/manager/toolbox/ToolboxManagerComponent.vue +7 -2
  154. package/src/manager/window/WindowComponentHeader.vue +1 -1
  155. package/src/manager/window/windowManager.d.ts +59 -3
  156. package/src/manager/window/windowManager.js +23 -2
  157. package/src/navigation/MapNavCompass.vue +166 -140
  158. package/src/navigation/MapNavCompass.vue.d.ts +3 -1
  159. package/src/navigation/MapNavigation.vue +22 -5
  160. package/src/navigation/VcsCompass.vue +2 -1
  161. package/src/navigation/overviewMap.js +4 -1
  162. package/src/obliqueFallbackWarnings.d.ts +5 -0
  163. package/src/obliqueFallbackWarnings.js +54 -0
  164. package/src/styles/main.scss +2 -2
  165. package/src/uiConfig.d.ts +30 -0
  166. package/src/uiConfig.js +3 -0
  167. package/src/vcsUiApp.d.ts +37 -10
  168. package/src/vcsUiApp.js +4 -0
  169. package/src/vuePlugins/i18n.js +1 -0
  170. package/src/vuePlugins/vuetify.js +2 -0
  171. package/dist/assets/ui-bf3d1f84.css +0 -1
  172. package/plugins/@vcmap-show-case/buttons-example/README.md +0 -4
  173. package/plugins/@vcmap-show-case/buttons-example/package.json +0 -5
  174. package/plugins/@vcmap-show-case/buttons-example/src/ButtonsExample.vue +0 -281
  175. package/plugins/@vcmap-show-case/buttons-example/src/index.js +0 -51
  176. package/plugins/@vcmap-show-case/config-editor/README.md +0 -3
  177. package/plugins/@vcmap-show-case/config-editor/package.json +0 -5
  178. package/plugins/@vcmap-show-case/config-editor/src/ConfigEditor.vue +0 -62
  179. package/plugins/@vcmap-show-case/config-editor/src/index.js +0 -49
  180. package/plugins/@vcmap-show-case/list-example/README.md +0 -3
  181. package/plugins/@vcmap-show-case/list-example/package.json +0 -5
  182. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +0 -403
  183. package/plugins/@vcmap-show-case/list-example/src/index.js +0 -46
  184. package/plugins/@vcmap-show-case/table-example/README.md +0 -3
  185. package/plugins/@vcmap-show-case/table-example/package.json +0 -5
  186. package/plugins/@vcmap-show-case/table-example/src/DataTableExample.vue +0 -203
  187. package/plugins/@vcmap-show-case/textfields-example/README.md +0 -3
  188. package/plugins/@vcmap-show-case/textfields-example/package.json +0 -5
  189. package/plugins/@vcmap-show-case/textfields-example/src/TextfieldsExample.vue +0 -115
  190. package/plugins/@vcmap-show-case/textfields-example/src/index.js +0 -64
  191. /package/dist/assets/{vue-43880c5a.js → vue-8269279d.js} +0 -0
@@ -1,151 +1,172 @@
1
1
  <template>
2
- <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
- width="58"
5
- height="58"
6
- viewBox="0 0 58 58"
7
- >
8
- <g id="Group_1654" data-name="Group 1654" transform="translate(24)">
9
- <path
10
- :class="canEmit ? 'cursor-pointer' : ''"
11
- id="north_arrow"
12
- data-name="Polygon 14"
13
- d="M4,0,8,13H0Z"
14
- transform="translate(1)"
15
- fill="currentColor"
16
- @click="emit($event, 0)"
17
- />
18
- <path
19
- :class="canEmit ? 'cursor-pointer' : ''"
20
- id="south_arrow"
21
- data-name="Polygon 17"
22
- d="M4,0,8,13H0Z"
23
- transform="translate(9 58) rotate(180)"
24
- fill="rgba(88,88,88,0.51)"
25
- @click="emit($event, 180)"
26
- />
27
- </g>
28
- <g
29
- id="Group_1653"
30
- data-name="Group 1653"
31
- transform="translate(0 33) rotate(-90)"
32
- >
33
- <path
34
- :class="canEmit ? 'cursor-pointer' : ''"
35
- id="west_arrow"
36
- data-name="Polygon 14"
37
- d="M4,0,8,13H0Z"
38
- fill="rgba(88,88,88,0.51)"
39
- @click="emit($event, 270)"
40
- />
41
- <path
42
- :class="canEmit ? 'cursor-pointer' : ''"
43
- id="east_arrow"
44
- data-name="Polygon 17"
45
- d="M4,0,8,13H0Z"
46
- transform="translate(8 58) rotate(180)"
47
- fill="rgba(88,88,88,0.51)"
48
- @click="emit($event, 90)"
49
- />
50
- </g>
51
- <g
52
- id="Group_1672"
53
- data-name="Group 1672"
54
- transform="translate(1)"
55
- v-if="!hideTicks"
56
- >
57
- <line
58
- id="Line_289-2"
59
- data-name="Line 289"
60
- x2="6.079"
61
- transform="translate(3.751 15) rotate(30)"
62
- fill="none"
63
- stroke="#707070"
64
- stroke-linecap="round"
65
- stroke-width="1"
66
- />
67
- <line
68
- id="Line_290-2"
69
- data-name="Line 290"
70
- x2="4.665"
71
- transform="translate(48.208 40.667) rotate(30)"
72
- fill="none"
73
- stroke="#707070"
74
- stroke-linecap="round"
75
- stroke-width="1"
76
- />
77
- <line
78
- id="Line_289-4"
79
- data-name="Line 289"
80
- x2="6.079"
81
- transform="translate(14 53.249) rotate(-60)"
82
- fill="none"
83
- stroke="#707070"
84
- stroke-linecap="round"
85
- stroke-width="1"
86
- />
87
- <line
88
- id="Line_290-3"
89
- data-name="Line 290"
90
- x2="4.665"
91
- transform="translate(39.668 8.792) rotate(-60)"
92
- fill="none"
93
- stroke="#707070"
94
- stroke-linecap="round"
95
- stroke-width="1"
96
- />
97
- <line
98
- id="Line_289-5"
99
- data-name="Line 289"
100
- x2="6.079"
101
- transform="translate(14 4.751) rotate(60)"
102
- fill="none"
103
- stroke="#707070"
104
- stroke-linecap="round"
105
- stroke-width="1"
106
- />
107
- <line
108
- id="Line_290-4"
109
- data-name="Line 290"
110
- x2="4.665"
111
- transform="translate(39.667 49.208) rotate(60)"
112
- fill="none"
113
- stroke="#707070"
114
- stroke-linecap="round"
115
- stroke-width="1"
116
- />
117
- <line
118
- id="Line_289-6"
119
- data-name="Line 289"
120
- x2="6.079"
121
- transform="translate(3.752 43) rotate(-30)"
122
- fill="none"
123
- stroke="#707070"
124
- stroke-linecap="round"
125
- stroke-width="1"
126
- />
127
- <line
128
- id="Line_290-5"
129
- data-name="Line 290"
130
- x2="4.665"
131
- transform="translate(48.209 17.333) rotate(-30)"
132
- fill="none"
133
- stroke="#707070"
134
- stroke-linecap="round"
135
- stroke-width="1"
136
- />
137
- </g>
138
- </svg>
2
+ <span>
3
+ <v-tooltip location="start" target="parent" :disabled="!canEmit">
4
+ <template #activator="{ props }">
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ width="58"
8
+ height="58"
9
+ viewBox="0 0 58 58"
10
+ >
11
+ <g
12
+ id="Group_1654"
13
+ data-name="Group 1654"
14
+ transform="translate(24)"
15
+ v-bind="props"
16
+ >
17
+ <path
18
+ :class="canEmit ? 'cursor-pointer hover' : ''"
19
+ id="north_arrow"
20
+ data-name="Polygon 14"
21
+ d="M4,0,8,13H0Z"
22
+ transform="translate(1)"
23
+ fill="currentColor"
24
+ @click="emit($event, 0)"
25
+ @mouseenter="alignment = 'alignNorth'"
26
+ />
27
+ <path
28
+ :class="canEmit ? 'cursor-pointer hover' : ''"
29
+ id="south_arrow"
30
+ data-name="Polygon 17"
31
+ d="M4,0,8,13H0Z"
32
+ transform="translate(9 58) rotate(180)"
33
+ fill="rgba(88,88,88,0.51)"
34
+ @click="emit($event, 180)"
35
+ @mouseenter="alignment = 'alignSouth'"
36
+ />
37
+ </g>
38
+ <g
39
+ id="Group_1653"
40
+ data-name="Group 1653"
41
+ transform="translate(0 33) rotate(-90)"
42
+ v-bind="props"
43
+ >
44
+ <path
45
+ :class="canEmit ? 'cursor-pointer hover' : ''"
46
+ id="west_arrow"
47
+ data-name="Polygon 14"
48
+ d="M4,0,8,13H0Z"
49
+ fill="rgba(88,88,88,0.51)"
50
+ @click="emit($event, 270)"
51
+ @mouseenter="alignment = 'alignWest'"
52
+ />
53
+ <path
54
+ :class="canEmit ? 'cursor-pointer hover' : ''"
55
+ id="east_arrow"
56
+ data-name="Polygon 17"
57
+ d="M4,0,8,13H0Z"
58
+ transform="translate(8 58) rotate(180)"
59
+ fill="rgba(88,88,88,0.51)"
60
+ @click="emit($event, 90)"
61
+ @mouseenter="alignment = 'alignEast'"
62
+ />
63
+ </g>
64
+ <g
65
+ id="Group_1672"
66
+ data-name="Group 1672"
67
+ transform="translate(1)"
68
+ v-if="!hideTicks"
69
+ >
70
+ <line
71
+ id="Line_289-2"
72
+ data-name="Line 289"
73
+ x2="6.079"
74
+ transform="translate(3.751 15) rotate(30)"
75
+ fill="none"
76
+ stroke="#707070"
77
+ stroke-linecap="round"
78
+ stroke-width="1"
79
+ />
80
+ <line
81
+ id="Line_290-2"
82
+ data-name="Line 290"
83
+ x2="4.665"
84
+ transform="translate(48.208 40.667) rotate(30)"
85
+ fill="none"
86
+ stroke="#707070"
87
+ stroke-linecap="round"
88
+ stroke-width="1"
89
+ />
90
+ <line
91
+ id="Line_289-4"
92
+ data-name="Line 289"
93
+ x2="6.079"
94
+ transform="translate(14 53.249) rotate(-60)"
95
+ fill="none"
96
+ stroke="#707070"
97
+ stroke-linecap="round"
98
+ stroke-width="1"
99
+ />
100
+ <line
101
+ id="Line_290-3"
102
+ data-name="Line 290"
103
+ x2="4.665"
104
+ transform="translate(39.668 8.792) rotate(-60)"
105
+ fill="none"
106
+ stroke="#707070"
107
+ stroke-linecap="round"
108
+ stroke-width="1"
109
+ />
110
+ <line
111
+ id="Line_289-5"
112
+ data-name="Line 289"
113
+ x2="6.079"
114
+ transform="translate(14 4.751) rotate(60)"
115
+ fill="none"
116
+ stroke="#707070"
117
+ stroke-linecap="round"
118
+ stroke-width="1"
119
+ />
120
+ <line
121
+ id="Line_290-4"
122
+ data-name="Line 290"
123
+ x2="4.665"
124
+ transform="translate(39.667 49.208) rotate(60)"
125
+ fill="none"
126
+ stroke="#707070"
127
+ stroke-linecap="round"
128
+ stroke-width="1"
129
+ />
130
+ <line
131
+ id="Line_289-6"
132
+ data-name="Line 289"
133
+ x2="6.079"
134
+ transform="translate(3.752 43) rotate(-30)"
135
+ fill="none"
136
+ stroke="#707070"
137
+ stroke-linecap="round"
138
+ stroke-width="1"
139
+ />
140
+ <line
141
+ id="Line_290-5"
142
+ data-name="Line 290"
143
+ x2="4.665"
144
+ transform="translate(48.209 17.333) rotate(-30)"
145
+ fill="none"
146
+ stroke="#707070"
147
+ stroke-linecap="round"
148
+ stroke-width="1"
149
+ />
150
+ </g>
151
+ </svg>
152
+ </template>
153
+ <span>{{ $st(`navigation.compass.${alignment}`) }}</span>
154
+ </v-tooltip>
155
+ </span>
139
156
  </template>
140
157
 
141
158
  <script>
159
+ import { ref } from 'vue';
160
+ import { VTooltip } from 'vuetify/components';
161
+
142
162
  /**
143
- * @description The compass with ticks along the border
163
+ * @description The compass with ticks along the border and alignment tooltips on arrows.
144
164
  * @vue-prop {boolean} [canEmit=true] - whether to emit click events on cardinal direction arrows or not
145
165
  * @vue-prop {boolean} [hideTicks=false] - hide ticks on navigation rose
146
166
  * @vue-event {HTMLEvent} direction-click - raised when a cardinal direction arrow is clicked
147
167
  */
148
168
  export default {
169
+ components: { VTooltip },
149
170
  props: {
150
171
  canEmit: {
151
172
  type: Boolean,
@@ -165,6 +186,9 @@
165
186
  }
166
187
  },
167
188
  },
189
+ setup() {
190
+ return { alignment: ref('') };
191
+ },
168
192
  };
169
193
  </script>
170
194
 
@@ -174,8 +198,10 @@
174
198
  height: 85%;
175
199
  margin: 7.5%;
176
200
  }
177
-
178
- svg path:hover {
201
+ svg g:focus {
202
+ outline: none;
203
+ }
204
+ .hover:hover {
179
205
  fill: var(--v-primary-lighten1) !important;
180
206
  }
181
207
  </style>
@@ -7,7 +7,9 @@ declare const _default: import("vue").DefineComponent<{
7
7
  type: BooleanConstructor;
8
8
  default: boolean;
9
9
  };
10
- }, any, any, {}, {
10
+ }, {
11
+ alignment: import("vue").Ref<string>;
12
+ }, any, {}, {
11
13
  emit(event: any, dir: any): void;
12
14
  }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
13
15
  canEmit: {
@@ -60,9 +60,10 @@
60
60
 
61
61
  <script>
62
62
  import { computed, inject, ref, reactive, onUnmounted } from 'vue';
63
- import { ObliqueMap, CesiumMap } from '@vcmap/core';
63
+ import { ObliqueMap, CesiumMap, ObliqueViewDirection } from '@vcmap/core';
64
64
  import { VContainer, VRow } from 'vuetify/components';
65
65
  import { useDisplay } from 'vuetify';
66
+ import { Math as CesiumMath } from '@vcmap-cesium/engine';
66
67
  import { createOverviewMapAction } from '../actions/actionHelper.js';
67
68
  import { createLocatorAction } from './locatorHelper.js';
68
69
  import {
@@ -185,6 +186,16 @@
185
186
  };
186
187
  }
187
188
 
189
+ /**
190
+ * @enum {number}
191
+ */
192
+ const directionToDegrees = {
193
+ [ObliqueViewDirection.NORTH]: 0,
194
+ [ObliqueViewDirection.EAST]: 90,
195
+ [ObliqueViewDirection.SOUTH]: 180,
196
+ [ObliqueViewDirection.WEST]: 270,
197
+ };
198
+
188
199
  export default {
189
200
  components: {
190
201
  OrientationToolsButton,
@@ -204,10 +215,16 @@
204
215
 
205
216
  const handleRenderEvent = ({ map }) => {
206
217
  viewMode.value = getViewModeForMap(map);
207
- const vp = map.getViewpointSync();
208
- if (vp) {
209
- headingRef.value = vp.heading;
210
- tiltRef.value = vp.pitch;
218
+ if (map instanceof ObliqueMap && map.currentImage) {
219
+ headingRef.value = map.currentImage.viewDirectionAngle
220
+ ? 90 - CesiumMath.toDegrees(map.currentImage.viewDirectionAngle)
221
+ : directionToDegrees[map.currentImage.viewDirection];
222
+ } else {
223
+ const vp = map.getViewpointSync();
224
+ if (vp) {
225
+ headingRef.value = vp.heading;
226
+ tiltRef.value = vp.pitch;
227
+ }
211
228
  }
212
229
  };
213
230
 
@@ -2,9 +2,10 @@
2
2
  <v-sheet
3
3
  :style="{
4
4
  transform: `rotate(${compassRotation}deg)`,
5
+ transition: 'transform 0.2s ease',
5
6
  }"
6
7
  @click="$emit('update:modelValue', 0)"
7
- class="d-flex flex-column justify-center align-center position-relative rounded-circle user-select-none transition-transform-200-ease vcs-compass"
8
+ class="d-flex flex-column justify-center align-center position-relative rounded-circle user-select-none vcs-compass"
8
9
  elevation="1"
9
10
  :height="height"
10
11
  :width="width"
@@ -232,7 +232,10 @@ class OverviewMap {
232
232
  this._collectionListeners = [
233
233
  this._app.maps.layerCollection.added.addEventListener((layer) => {
234
234
  if (layer.properties.showInOverviewMap) {
235
- const clone = deserializeLayer(this._app, layer.toJSON());
235
+ const clone = deserializeLayer(this._app, {
236
+ ...layer.toJSON(),
237
+ mapNames: [this._map.name],
238
+ });
236
239
  clone.activate();
237
240
  const idx = this._map.layerCollection.indexOf(clone);
238
241
  if (idx < 0) {
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @param {import("./vcsUiApp.js").default} app
3
+ * @returns {() => void}
4
+ */
5
+ export default function createObliqueFallbackWarnings(app: import("./vcsUiApp.js").default): () => void;
@@ -0,0 +1,54 @@
1
+ import { ObliqueMap } from '@vcmap/core';
2
+ import { NotificationType } from './notifier/notifier.js';
3
+
4
+ function createNotification(app) {
5
+ app.notifier.add({
6
+ title: 'navigation.obliqueFallback.title',
7
+ type: NotificationType.WARNING,
8
+ message: 'navigation.obliqueFallback.message',
9
+ });
10
+ }
11
+
12
+ /**
13
+ * @param {import("./vcsUiApp.js").default} app
14
+ * @returns {() => void}
15
+ */
16
+ export default function createObliqueFallbackWarnings(app) {
17
+ const fallbackMapEventListener =
18
+ app.maps.fallbackMapActivated.addEventListener(() => {
19
+ createNotification(app);
20
+ });
21
+
22
+ const mapListeners = new Map();
23
+ const setMapListener = (map) => {
24
+ mapListeners.set(
25
+ map,
26
+ map.failedToSetCollection.addEventListener(() => {
27
+ createNotification(app);
28
+ }),
29
+ );
30
+ };
31
+
32
+ app.maps.getByType(ObliqueMap.className).forEach(setMapListener);
33
+
34
+ const mapAddedListener = app.maps.added.addEventListener((map) => {
35
+ if (map instanceof ObliqueMap) {
36
+ setMapListener(map);
37
+ }
38
+ });
39
+
40
+ const mapRemovedListener = app.maps.removed.addEventListener((map) => {
41
+ mapListeners.get(map)?.();
42
+ mapListeners.delete(map);
43
+ });
44
+
45
+ return () => {
46
+ fallbackMapEventListener();
47
+ mapAddedListener();
48
+ mapRemovedListener();
49
+ [...mapListeners.values()].forEach((cb) => {
50
+ cb();
51
+ });
52
+ mapListeners.clear();
53
+ };
54
+ }
@@ -1,5 +1,5 @@
1
- @import './typography';
2
- @import './vcsList';
1
+ @use './typography';
2
+ @use './vcsList';
3
3
 
4
4
  /* latin-ext */
5
5
  @font-face {
package/src/uiConfig.d.ts CHANGED
@@ -56,6 +56,10 @@ export type UiConfigObject = {
56
56
  * - mouse event, when position display is updated. Either 'click' (default) or 'move'.
57
57
  */
58
58
  positionDisplayEventType?: string | undefined;
59
+ /**
60
+ * - A template for rendering information of the current image in oblique mode, e.g. '{{ name }}' printing the image's name
61
+ */
62
+ obliqueFooterTemplate?: string | undefined;
59
63
  /**
60
64
  * - an optional URL to a help landing page
61
65
  */
@@ -128,10 +132,18 @@ export type UiConfigObject = {
128
132
  * - can be used to hide the settings Window
129
133
  */
130
134
  hideSettings?: boolean | undefined;
135
+ /**
136
+ * - can be used to hide the oblique name in the footer
137
+ */
138
+ hideObliqueFooter?: boolean | undefined;
131
139
  /**
132
140
  * - can be used to activate the overviewMap on startup
133
141
  */
134
142
  overviewMapActiveOnStartup?: boolean | undefined;
143
+ /**
144
+ * - can be used to activate a contentTree on startup
145
+ */
146
+ contentTreeActiveOnStartup?: boolean | undefined;
135
147
  /**
136
148
  * - the display quality settings
137
149
  */
@@ -190,6 +202,7 @@ export type UiConfigObject = {
190
202
  * @property {string} [primaryColor] - an optional primary color to use in all themes, can be overwritten by `vuetifyTheme`
191
203
  * @property {boolean} [startingFeatureInfo] - an optional flag whether to activate feature info on startup (default active)
192
204
  * @property {string} [positionDisplayEventType] - mouse event, when position display is updated. Either 'click' (default) or 'move'.
205
+ * @property {string} [obliqueFooterTemplate] - A template for rendering information of the current image in oblique mode, e.g. '{{ name }}' printing the image's name
193
206
  * @property {string} [helpBaseUrl='https://help.vc.systems/'] - an optional URL to a help landing page
194
207
  * @property {TextPageType} [imprint] - an option imprint, will show a link in the footer. Default title is 'footer.imprint.title'.
195
208
  * @property {TextPageType} [dataProtection] - an option dataProtection, will show a link in the footer. Default title is 'footer.dataProtection.title'.
@@ -208,7 +221,9 @@ export type UiConfigObject = {
208
221
  * @property {boolean} [hideContentTree] - can be used to hide the contentTree
209
222
  * @property {boolean} [hideLegend] - can be used to hide the legend
210
223
  * @property {boolean} [hideSettings] - can be used to hide the settings Window
224
+ * @property {boolean} [hideObliqueFooter] - can be used to hide the oblique name in the footer
211
225
  * @property {boolean} [overviewMapActiveOnStartup] - can be used to activate the overviewMap on startup
226
+ * @property {boolean} [contentTreeActiveOnStartup] - can be used to activate a contentTree on startup
212
227
  * @property {import("@vcmap/core").DisplayQualityOptions} [displayQuality] - the display quality settings
213
228
  * @property {import("./vuetifyPlugins/vuetify.js").VcsThemes} [vuetifyTheme] - Vuetify Theming, also see vuetify configuraton https://vuetifyjs.com/en/features/theme/
214
229
  * @property {boolean} [openLegendOnAdd] - open the legend window, if new layer has a config
@@ -266,6 +281,10 @@ declare class UiConfig extends Collection<UiConfigurationItem<unknown>> {
266
281
  * - mouse event, when position display is updated. Either 'click' (default) or 'move'.
267
282
  */
268
283
  readonly positionDisplayEventType?: string | undefined;
284
+ /**
285
+ * - A template for rendering information of the current image in oblique mode, e.g. '{{ name }}' printing the image's name
286
+ */
287
+ readonly obliqueFooterTemplate?: string | undefined;
269
288
  /**
270
289
  * - an optional URL to a help landing page
271
290
  */
@@ -438,10 +457,18 @@ declare class UiConfig extends Collection<UiConfigurationItem<unknown>> {
438
457
  * - can be used to hide the settings Window
439
458
  */
440
459
  readonly hideSettings?: boolean | undefined;
460
+ /**
461
+ * - can be used to hide the oblique name in the footer
462
+ */
463
+ readonly hideObliqueFooter?: boolean | undefined;
441
464
  /**
442
465
  * - can be used to activate the overviewMap on startup
443
466
  */
444
467
  readonly overviewMapActiveOnStartup?: boolean | undefined;
468
+ /**
469
+ * - can be used to activate a contentTree on startup
470
+ */
471
+ readonly contentTreeActiveOnStartup?: boolean | undefined;
445
472
  /**
446
473
  * - the display quality settings
447
474
  */
@@ -456,6 +483,7 @@ declare class UiConfig extends Collection<UiConfigurationItem<unknown>> {
456
483
  readonly fogScreenSpaceErrorFactor?: number | undefined;
457
484
  readonly resolutionScale?: number | undefined;
458
485
  readonly layerSSEFactor?: number | undefined;
486
+ readonly msaa?: 1 | 2 | 4 | 8 | undefined;
459
487
  } | undefined;
460
488
  readonly medium?: {
461
489
  readonly sse?: number | undefined;
@@ -465,6 +493,7 @@ declare class UiConfig extends Collection<UiConfigurationItem<unknown>> {
465
493
  readonly fogScreenSpaceErrorFactor?: number | undefined;
466
494
  readonly resolutionScale?: number | undefined;
467
495
  readonly layerSSEFactor?: number | undefined;
496
+ readonly msaa?: 1 | 2 | 4 | 8 | undefined;
468
497
  } | undefined;
469
498
  readonly high?: {
470
499
  readonly sse?: number | undefined;
@@ -474,6 +503,7 @@ declare class UiConfig extends Collection<UiConfigurationItem<unknown>> {
474
503
  readonly fogScreenSpaceErrorFactor?: number | undefined;
475
504
  readonly resolutionScale?: number | undefined;
476
505
  readonly layerSSEFactor?: number | undefined;
506
+ readonly msaa?: 1 | 2 | 4 | 8 | undefined;
477
507
  } | undefined;
478
508
  } | undefined;
479
509
  /**
package/src/uiConfig.js CHANGED
@@ -50,6 +50,7 @@ import { reactive, readonly } from 'vue';
50
50
  * @property {string} [primaryColor] - an optional primary color to use in all themes, can be overwritten by `vuetifyTheme`
51
51
  * @property {boolean} [startingFeatureInfo] - an optional flag whether to activate feature info on startup (default active)
52
52
  * @property {string} [positionDisplayEventType] - mouse event, when position display is updated. Either 'click' (default) or 'move'.
53
+ * @property {string} [obliqueFooterTemplate] - A template for rendering information of the current image in oblique mode, e.g. '{{ name }}' printing the image's name
53
54
  * @property {string} [helpBaseUrl='https://help.vc.systems/'] - an optional URL to a help landing page
54
55
  * @property {TextPageType} [imprint] - an option imprint, will show a link in the footer. Default title is 'footer.imprint.title'.
55
56
  * @property {TextPageType} [dataProtection] - an option dataProtection, will show a link in the footer. Default title is 'footer.dataProtection.title'.
@@ -68,7 +69,9 @@ import { reactive, readonly } from 'vue';
68
69
  * @property {boolean} [hideContentTree] - can be used to hide the contentTree
69
70
  * @property {boolean} [hideLegend] - can be used to hide the legend
70
71
  * @property {boolean} [hideSettings] - can be used to hide the settings Window
72
+ * @property {boolean} [hideObliqueFooter] - can be used to hide the oblique name in the footer
71
73
  * @property {boolean} [overviewMapActiveOnStartup] - can be used to activate the overviewMap on startup
74
+ * @property {boolean} [contentTreeActiveOnStartup] - can be used to activate a contentTree on startup
72
75
  * @property {import("@vcmap/core").DisplayQualityOptions} [displayQuality] - the display quality settings
73
76
  * @property {import("./vuetifyPlugins/vuetify.js").VcsThemes} [vuetifyTheme] - Vuetify Theming, also see vuetify configuraton https://vuetifyjs.com/en/features/theme/
74
77
  * @property {boolean} [openLegendOnAdd] - open the legend window, if new layer has a config