|
| 1 | +<script setup> |
| 2 | +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' |
| 3 | +import { computed, ref, watch } from 'vue' |
| 4 | +import { useI18n } from 'vue-i18n' |
| 5 | +import { useStore } from 'vuex' |
| 6 | +
|
| 7 | +import BlackBackdrop from '@/modules/menu/components/BlackBackdrop.vue' |
| 8 | +import DebugToolbar from '@/modules/menu/components/debug/DebugToolbar.vue' |
| 9 | +import HeaderWithSearch from '@/modules/menu/components/header/HeaderWithSearch.vue' |
| 10 | +import MenuTray from '@/modules/menu/components/menu/MenuTray.vue' |
| 11 | +import TimeSlider from '@/modules/menu/components/timeslider/TimeSlider.vue' |
| 12 | +import FullScreenButton from '@/modules/menu/components/toolboxRight/FullScreenButton.vue' |
| 13 | +import GeolocButton from '@/modules/menu/components/toolboxRight/GeolocButton.vue' |
| 14 | +import TimeSliderButton from '@/modules/menu/components/toolboxRight/TimeSliderButton.vue' |
| 15 | +import Toggle3dButton from '@/modules/menu/components/toolboxRight/Toggle3dButton.vue' |
| 16 | +import ZoomButtons from '@/modules/menu/components/toolboxRight/ZoomButtons.vue' |
| 17 | +
|
| 18 | +const showTimeSlider = ref(false) |
| 19 | +
|
| 20 | +const i18n = useI18n() |
| 21 | +const store = useStore() |
| 22 | +
|
| 23 | +const isGeolocationActive = computed(() => store.state.geolocation.active) |
| 24 | +const isGeolocationDenied = computed(() => store.state.geolocation.denied) |
| 25 | +const showMenu = computed(() => store.state.ui.showMenu) |
| 26 | +const isFullscreenMode = computed(() => store.state.ui.fullscreenMode) |
| 27 | +const isEmbedded = computed(() => store.state.ui.embeddedMode) |
| 28 | +const previewYear = computed(() => store.state.layers.previewYear) |
| 29 | +const inDrawingMode = computed(() => store.state.ui.showDrawingOverlay) |
| 30 | +const is3dActive = computed(() => store.state.cesium.active) |
| 31 | +
|
| 32 | +const isHeaderShown = computed(() => store.getters.isHeaderShown) |
| 33 | +const isPhoneMode = computed(() => store.getters.isPhoneMode) |
| 34 | +const isDesktopMode = computed(() => store.getters.isDesktopMode) |
| 35 | +const isMenuShown = computed(() => store.getters.isMenuShown) |
| 36 | +const isMenuTrayShown = computed(() => store.getters.isMenuTrayShown) |
| 37 | +const hasDevSiteWarning = computed(() => store.getters.hasDevSiteWarning) |
| 38 | +const visibleLayersWithTimeConfig = computed(() => store.getters.visibleLayersWithTimeConfig) |
| 39 | +
|
| 40 | +watch(previewYear, () => { |
| 41 | + // hiding the time slider if the preview has been cleared |
| 42 | + if (!previewYear.value) { |
| 43 | + showTimeSlider.value = false |
| 44 | + } |
| 45 | +}) |
| 46 | +
|
| 47 | +function toggleGeolocation() { |
| 48 | + store.dispatch('toggleGeolocation') |
| 49 | +} |
| 50 | +function increaseZoom() { |
| 51 | + store.dispatch('increaseZoom') |
| 52 | +} |
| 53 | +function decreaseZoom() { |
| 54 | + store.dispatch('decreaseZoom') |
| 55 | +} |
| 56 | +function toggleMenu() { |
| 57 | + store.dispatch('toggleMenu') |
| 58 | +} |
| 59 | +</script> |
| 60 | + |
1 | 61 | <template>
|
2 | 62 | <div class="menu position-absolute w-100 h-100 start-0 top-0 pe-none">
|
3 | 63 | <!-- In order to place the drawing toolbox correctly (so that zoom/geolocation button are under, etc...)
|
|
33 | 93 | @click="toggleGeolocation"
|
34 | 94 | />
|
35 | 95 | <ZoomButtons
|
36 |
| - v-if="!isFullscreenMode" |
| 96 | + v-if="!isFullscreenMode && !is3dActive" |
37 | 97 | @zoom-in="increaseZoom"
|
38 | 98 | @zoom-out="decreaseZoom"
|
39 | 99 | />
|
|
75 | 135 | @click="toggleMenu"
|
76 | 136 | >
|
77 | 137 | <FontAwesomeIcon :icon="showMenu ? 'caret-up' : 'caret-down'" />
|
78 |
| - <span class="ms-1">{{ $t(showMenu ? 'close_menu' : 'open_menu') }}</span> |
| 138 | + <span class="ms-1">{{ |
| 139 | + i18n.t(showMenu ? 'close_menu' : 'open_menu') |
| 140 | + }}</span> |
79 | 141 | </button>
|
80 | 142 | </div>
|
81 | 143 | </transition>
|
82 | 144 | </div>
|
83 | 145 | </div>
|
84 | 146 | </template>
|
85 | 147 |
|
86 |
| -<script> |
87 |
| -import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' |
88 |
| -import { mapActions, mapGetters, mapState } from 'vuex' |
89 |
| -
|
90 |
| -import BlackBackdrop from '@/modules/menu/components/BlackBackdrop.vue' |
91 |
| -import DebugToolbar from '@/modules/menu/components/debug/DebugToolbar.vue' |
92 |
| -import HeaderWithSearch from '@/modules/menu/components/header/HeaderWithSearch.vue' |
93 |
| -import MenuTray from '@/modules/menu/components/menu/MenuTray.vue' |
94 |
| -import TimeSlider from '@/modules/menu/components/timeslider/TimeSlider.vue' |
95 |
| -import FullScreenButton from '@/modules/menu/components/toolboxRight/FullScreenButton.vue' |
96 |
| -import GeolocButton from '@/modules/menu/components/toolboxRight/GeolocButton.vue' |
97 |
| -import TimeSliderButton from '@/modules/menu/components/toolboxRight/TimeSliderButton.vue' |
98 |
| -import Toggle3dButton from '@/modules/menu/components/toolboxRight/Toggle3dButton.vue' |
99 |
| -import ZoomButtons from '@/modules/menu/components/toolboxRight/ZoomButtons.vue' |
100 |
| -
|
101 |
| -export default { |
102 |
| - components: { |
103 |
| - FullScreenButton, |
104 |
| - DebugToolbar, |
105 |
| - Toggle3dButton, |
106 |
| - FontAwesomeIcon, |
107 |
| - TimeSlider, |
108 |
| - TimeSliderButton, |
109 |
| - HeaderWithSearch, |
110 |
| - BlackBackdrop, |
111 |
| - ZoomButtons, |
112 |
| - GeolocButton, |
113 |
| - MenuTray, |
114 |
| - }, |
115 |
| - data() { |
116 |
| - return { |
117 |
| - showTimeSlider: false, |
118 |
| - } |
119 |
| - }, |
120 |
| - computed: { |
121 |
| - ...mapState({ |
122 |
| - isGeolocationActive: (state) => state.geolocation.active, |
123 |
| - isGeolocationDenied: (state) => state.geolocation.denied, |
124 |
| - showMenu: (state) => state.ui.showMenu, |
125 |
| - isFullscreenMode: (state) => state.ui.fullscreenMode, |
126 |
| - isEmbedded: (state) => state.ui.embeddedMode, |
127 |
| - previewYear: (state) => state.layers.previewYear, |
128 |
| - inDrawingMode: (state) => state.ui.showDrawingOverlay, |
129 |
| - }), |
130 |
| - ...mapGetters([ |
131 |
| - 'isHeaderShown', |
132 |
| - 'isPhoneMode', |
133 |
| - 'isDesktopMode', |
134 |
| - 'isMenuShown', |
135 |
| - 'isMenuTrayShown', |
136 |
| - 'hasDevSiteWarning', |
137 |
| - 'visibleLayers', |
138 |
| - 'visibleLayersWithTimeConfig', |
139 |
| - ]), |
140 |
| - }, |
141 |
| - watch: { |
142 |
| - previewYear() { |
143 |
| - // hiding the time slider if the preview has been cleared |
144 |
| - if (!this.previewYear) { |
145 |
| - this.showTimeSlider = false |
146 |
| - } |
147 |
| - }, |
148 |
| - }, |
149 |
| - methods: { |
150 |
| - ...mapActions(['toggleGeolocation', 'increaseZoom', 'decreaseZoom', 'toggleMenu']), |
151 |
| - }, |
152 |
| -} |
153 |
| -</script> |
154 |
| - |
155 | 148 | <style lang="scss" scoped>
|
156 | 149 | @import 'src/scss/media-query.mixin';
|
157 | 150 | @import 'src/scss/variables';
|
|
0 commit comments