Skip to content

Commit e5234eb

Browse files
authored
Merge pull request #4457 from iamvdo/yeti-2025
feat(yeti): YETI updates for 2025/2026
2 parents ea49517 + 072c83f commit e5234eb

26 files changed

+1101
-136
lines changed
1.53 KB
Loading

src/assets/img/yeti/logo-ensg.avif

-4.63 KB
Binary file not shown.

src/assets/img/yeti/logo-ensg.jpg

-12.8 KB
Binary file not shown.

src/assets/img/yeti/logo-ensg.webp

-6.42 KB
Binary file not shown.
14.1 KB
Binary file not shown.
21 KB
Loading
12.5 KB
Loading

src/components/yeti/DropdownContent.vue

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<template>
22
<div class="dropdown-content" :class="{ 'dropdown-content-inverted': inverted }">
33
<div>
4-
<h3 class="dropdown-content-title" :class="{ 'is-open': opened }" @click="switchOpen">
4+
<h3 class="dropdown-content-title" :class="{ 'is-open': localOpen }" @click="switchOpen">
55
<slot />
66
<fa-icon
77
class="dropdown-content-arrow is-size-6 is-pulled-right has-cursor-pointer no-print"
88
icon="angle-down"
9-
:rotation="opened ? 180 : undefined"
9+
:rotation="localOpen ? 180 : undefined"
1010
/>
1111
</h3>
1212
</div>
13-
<div v-if="opened" class="dropdown-content-content p-3">
13+
<div v-if="localOpen" class="dropdown-content-content p-3">
1414
<slot name="content" />
1515
</div>
1616
</div>
@@ -23,15 +23,19 @@ export default {
2323
type: Boolean,
2424
default: false,
2525
},
26+
open: {
27+
type: Boolean,
28+
default: false,
29+
},
2630
},
2731
data() {
2832
return {
29-
opened: false,
33+
localOpen: this.open,
3034
};
3135
},
3236
methods: {
3337
switchOpen() {
34-
this.opened = !this.opened;
38+
this.localOpen = !this.localOpen;
3539
},
3640
},
3741
};

src/components/yeti/EditModeButton.vue

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
<template>
2-
<button class="button edit-mode-button ol-control-edit-mode" :class="{ 'is-dark': editMode }">
2+
<button
3+
class="button edit-mode-button ol-control-edit-mode"
4+
:class="{ 'is-dark': editMode, 'is-small': isSmall }"
5+
:title="$gettext('Enable drawing and editing features on map')"
6+
:aria-label="iconOnly ? $gettext('Enable drawing and editing features on map') : null"
7+
>
38
<input-checkbox @input="onEditMode" :value="editMode" :disabled="validSimplifyTolerance">
4-
<span v-translate :title="$gettext('Enable drawing and editing features on map')">Edit mode</span>
9+
<span v-if="!iconOnly" v-translate> Edit mode </span>
510
<fa-icon icon="pen" class="ml-1" />
611
</input-checkbox>
712
</button>
@@ -11,6 +16,16 @@
1116
import Yetix from '@/components/yeti/Yetix';
1217
1318
export default {
19+
props: {
20+
isSmall: {
21+
type: Boolean,
22+
default: false,
23+
},
24+
iconOnly: {
25+
type: Boolean,
26+
default: false,
27+
},
28+
},
1429
computed: {
1530
editMode() {
1631
return Yetix.editMode;

src/components/yeti/SubPanelCourse.vue

Lines changed: 79 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
<template>
22
<div class="yeti-subpanel">
33
<sub-panel-title><span v-translate>Route</span></sub-panel-title>
4-
<div class="route-buttons" v-if="features.length">
5-
<button class="button is-secondary is-small" :title="$gettext('Delete route')" @click="onRemoveFeatures">
6-
<fa-icon icon="trash" />
7-
<span v-translate class="is-sr-only">Delete route</span>
8-
</button>
9-
<button class="button is-secondary is-small" :title="$gettext('Fit map to route')" @click="fitMapToFeatures">
10-
<fa-icon icon="location-crosshairs" />
11-
<span v-translate class="is-sr-only">Fit map to route</span>
12-
</button>
4+
<div class="route-buttons">
5+
<edit-mode-button is-small icon-only />
6+
<span v-if="features.length">
7+
<button class="button is-secondary is-small" :title="$gettext('Delete route')" @click="onRemoveFeatures">
8+
<fa-icon icon="trash" />
9+
<span v-translate class="is-sr-only">Delete route</span>
10+
</button>
11+
<button class="button is-secondary is-small" :title="$gettext('Fit map to route')" @click="fitMapToFeatures">
12+
<fa-icon icon="location-crosshairs" />
13+
<span v-translate class="is-sr-only">Fit map to route</span>
14+
</button>
15+
</span>
1316
</div>
1417
<div v-if="features.length">
1518
<div class="columns is-mobile">
@@ -50,33 +53,25 @@
5053
</template>
5154
</dropdown-content>
5255
<simplify-tool ref="simplifyTool" />
53-
<info type="help">
54-
<p v-translate>Drawing tips</p>
55-
<ul class="content-ul">
56-
<li><strong v-translate translate-context="yeti">Draw</strong> <span v-translate>new lines chunks</span></li>
57-
<li>
58-
<strong v-translate translate-context="yeti">Delete</strong>
59-
<span v-translate>last point with the Backspace key</span>
60-
</li>
61-
</ul>
62-
<p v-translate>On a drawn line</p>
63-
<ul class="content-ul">
64-
<li>
65-
<strong v-translate translate-context="yeti">Edit</strong> <span v-translate>points by moving them</span>
66-
</li>
67-
<li>
68-
<strong v-translate translate-context="yeti">Create</strong>
69-
<span v-translate>a new point on an existing line</span>
70-
</li>
71-
<li><strong v-translate>Delete a point</strong> <span v-translate>with Alt + clic</span></li>
72-
</ul>
73-
<p v-translate>From the interface</p>
74-
<ul class="content-ul">
75-
<li><strong v-translate>Delete a line chunk</strong></li>
76-
<li><strong v-translate>Delete route</strong> <span v-translate>to start or load a new one</span></li>
77-
</ul>
78-
</info>
79-
<sub-panel-title><span v-translate>Export</span></sub-panel-title>
56+
</div>
57+
<div v-else class="columns is-vcentered is-mobile">
58+
<div class="column">
59+
<p v-translate class="mb-2">No route right now</p>
60+
</div>
61+
</div>
62+
63+
<sub-panel-title><span v-translate>Winter routes</span></sub-panel-title>
64+
<div v-if="winterRouteLayer" class="columns is-vcentered is-mobile">
65+
<div class="column">
66+
<input-checkbox v-model="winterRouteLayer.checked" @change="winterRouteLayer.action">
67+
<span v-translate>Visible layer</span>
68+
</input-checkbox>
69+
<component :is="winterRouteLayer.contentComponent" v-if="winterRouteLayer.checked" class="mt-2" />
70+
</div>
71+
</div>
72+
73+
<div v-if="features.length">
74+
<sub-panel-title><span v-translate key="export">Export</span></sub-panel-title>
8075
<div class="columns is-vcentered is-mobile">
8176
<div class="column">
8277
<ul class="form-export">
@@ -105,32 +100,54 @@
105100
</div>
106101
</div>
107102
</div>
103+
108104
<div v-else>
109-
<p v-translate>No route right now</p>
110-
<div class="load-gpx">
111-
<div class="buttons">
112-
<button
113-
class="button is-primary mr-2"
114-
:class="{ 'is-loading': loading }"
115-
:disabled="loading"
116-
@click="onLoadGpx"
117-
v-translate
118-
>
119-
Upload a GPS track
120-
</button>
121-
<edit-mode-button />
122-
</div>
123-
<div class="control upload-button">
124-
<input ref="gpxFileInput" type="file" @change="uploadGpx" accept=".gpx" />
125-
</div>
126-
<info type="help" class="mt-5">
127-
<p>
128-
<strong v-translate>To draw (and edit) directly on the map</strong>
129-
<span v-translate>you need to activate edit mode</span>
130-
</p>
131-
</info>
105+
<sub-panel-title><span v-translate key="import">Import</span></sub-panel-title>
106+
<div class="buttons">
107+
<button
108+
class="button is-primary mr-2"
109+
:class="{ 'is-loading': loading }"
110+
:disabled="loading"
111+
@click="onLoadGpx"
112+
v-translate
113+
>
114+
Upload a GPS track
115+
</button>
116+
</div>
117+
<div class="control upload-button">
118+
<input ref="gpxFileInput" type="file" @change="uploadGpx" accept=".gpx" />
132119
</div>
133120
</div>
121+
122+
<hr />
123+
124+
<info type="help">
125+
<p v-translate>Drawing tips</p>
126+
<ul class="content-ul">
127+
<li><strong v-translate translate-context="yeti">Draw</strong> <span v-translate>new lines chunks</span></li>
128+
<li>
129+
<strong v-translate translate-context="yeti">Delete</strong>
130+
<span v-translate>last point with the Backspace key</span>
131+
</li>
132+
</ul>
133+
<p v-translate>On a drawn line</p>
134+
<ul class="content-ul">
135+
<li>
136+
<strong v-translate translate-context="yeti">Edit</strong> <span v-translate>points by moving them</span>
137+
</li>
138+
<li>
139+
<strong v-translate translate-context="yeti">Create</strong>
140+
<span v-translate>a new point on an existing line</span>
141+
</li>
142+
<li><strong v-translate>Delete a point</strong> <span v-translate>with Alt + clic</span></li>
143+
<li><strong v-translate>Split a line</strong> with Ctrl + clic</li>
144+
</ul>
145+
<p v-translate>From the interface</p>
146+
<ul class="content-ul">
147+
<li><strong v-translate>Delete a line chunk</strong></li>
148+
<li><strong v-translate>Delete route</strong> <span v-translate>to start or load a new one</span></li>
149+
</ul>
150+
</info>
134151
</div>
135152
</template>
136153

@@ -180,6 +197,9 @@ export default {
180197
hasFeaturesTitle() {
181198
return !(!this.featuresTitle.length && !this.newFeaturesTitle);
182199
},
200+
winterRouteLayer() {
201+
return Yetix.overlaysLayersSelector.filter((layer) => layer.id === 'winter-route')[0];
202+
},
183203
},
184204
methods: {
185205
onEditFeaturesTitle(e) {
@@ -319,10 +339,6 @@ input[type='file'] {
319339
cursor: pointer;
320340
}
321341
322-
.load-gpx {
323-
margin-top: 2rem;
324-
}
325-
326342
.form-export {
327343
display: flex;
328344
}

0 commit comments

Comments
 (0)