umap-project 3.3.0__py3-none-any.whl → 3.3.2__py3-none-any.whl

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 (36) hide show
  1. umap/__init__.py +1 -1
  2. umap/locale/el/LC_MESSAGES/django.mo +0 -0
  3. umap/locale/el/LC_MESSAGES/django.po +42 -38
  4. umap/locale/hu/LC_MESSAGES/django.mo +0 -0
  5. umap/locale/hu/LC_MESSAGES/django.po +39 -35
  6. umap/locale/nl/LC_MESSAGES/django.mo +0 -0
  7. umap/locale/nl/LC_MESSAGES/django.po +31 -27
  8. umap/static/umap/js/modules/data/features.js +1 -1
  9. umap/static/umap/js/modules/data/layer.js +11 -13
  10. umap/static/umap/js/modules/rendering/layers/cluster.js +28 -8
  11. umap/static/umap/js/modules/rendering/ui.js +43 -4
  12. umap/static/umap/js/modules/umap.js +1 -1
  13. umap/static/umap/locale/da.js +38 -38
  14. umap/static/umap/locale/da.json +38 -38
  15. umap/static/umap/locale/el.js +81 -81
  16. umap/static/umap/locale/el.json +81 -81
  17. umap/static/umap/locale/en.js +0 -1
  18. umap/static/umap/locale/en.json +0 -1
  19. umap/static/umap/locale/es.js +38 -38
  20. umap/static/umap/locale/es.json +38 -38
  21. umap/static/umap/locale/eu.js +1 -1
  22. umap/static/umap/locale/eu.json +1 -1
  23. umap/static/umap/locale/hu.js +55 -55
  24. umap/static/umap/locale/hu.json +55 -55
  25. umap/static/umap/locale/ms.js +13 -13
  26. umap/static/umap/locale/ms.json +13 -13
  27. umap/static/umap/locale/nl.js +57 -57
  28. umap/static/umap/locale/nl.json +57 -57
  29. umap/static/umap/locale/zh_TW.js +38 -38
  30. umap/static/umap/locale/zh_TW.json +38 -38
  31. umap/tests/integration/test_edit_datalayer.py +4 -0
  32. {umap_project-3.3.0.dist-info → umap_project-3.3.2.dist-info}/METADATA +5 -5
  33. {umap_project-3.3.0.dist-info → umap_project-3.3.2.dist-info}/RECORD +36 -36
  34. {umap_project-3.3.0.dist-info → umap_project-3.3.2.dist-info}/WHEEL +0 -0
  35. {umap_project-3.3.0.dist-info → umap_project-3.3.2.dist-info}/entry_points.txt +0 -0
  36. {umap_project-3.3.0.dist-info → umap_project-3.3.2.dist-info}/licenses/LICENSE +0 -0
@@ -43,7 +43,6 @@ export class DataLayer {
43
43
  this._umap = umap
44
44
  this.sync = umap.syncEngine.proxy(this)
45
45
  this.features = new FeatureManager()
46
- this._geojson = null
47
46
  this._propertiesIndex = []
48
47
 
49
48
  this._leafletMap = leafletMap
@@ -306,7 +305,6 @@ export class DataLayer {
306
305
  fromGeoJSON(geojson, sync = true) {
307
306
  if (!geojson) return []
308
307
  const features = this.addData(geojson, sync)
309
- this._geojson = geojson
310
308
  this._needsFetch = false
311
309
  this.onDataLoaded()
312
310
  this.dataChanged()
@@ -318,7 +316,11 @@ export class DataLayer {
318
316
  }
319
317
 
320
318
  async fromUmapGeoJSON(geojson) {
321
- if (geojson._storage) geojson._umap_options = geojson._storage // Retrocompat
319
+ if (geojson._storage) {
320
+ // Retrocompat
321
+ geojson._umap_options = geojson._storage
322
+ delete geojson._storage
323
+ }
322
324
  if (geojson._umap_options) this.setProperties(geojson._umap_options)
323
325
  if (this.isRemoteLayer()) {
324
326
  await this.fetchRemoteData()
@@ -327,12 +329,6 @@ export class DataLayer {
327
329
  }
328
330
  }
329
331
 
330
- backupData() {
331
- if (this._geojson) {
332
- this._geojson_bk = Utils.CopyJSON(this._geojson)
333
- }
334
- }
335
-
336
332
  showAtZoom() {
337
333
  const from = Number.parseInt(this.properties.fromZoom, 10)
338
334
  const to = Number.parseInt(this.properties.toZoom, 10)
@@ -747,7 +743,7 @@ export class DataLayer {
747
743
  const properties = Utils.CopyJSON(this.properties)
748
744
  properties.name = translate('Clone of {name}', { name: this.properties.name })
749
745
  delete properties.id
750
- const geojson = Utils.CopyJSON(this._geojson)
746
+ const geojson = Utils.CopyJSON(this.umapGeoJSON())
751
747
  const datalayer = this._umap.createDirtyDataLayer(properties)
752
748
  datalayer.fromGeoJSON(geojson)
753
749
  return datalayer
@@ -1164,7 +1160,11 @@ export class DataLayer {
1164
1160
  this.getVersionUrl(version)
1165
1161
  )
1166
1162
  if (!error) {
1167
- if (geojson._storage) geojson._umap_options = geojson._storage // Retrocompat.
1163
+ if (geojson._storage) {
1164
+ // Retrocompat.
1165
+ geojson._umap_options = geojson._storage
1166
+ delete geojson._storage
1167
+ }
1168
1168
  if (geojson._umap_options) {
1169
1169
  const oldProperties = Utils.CopyJSON(this.properties)
1170
1170
  this.setProperties(geojson._umap_options)
@@ -1323,7 +1323,6 @@ export class DataLayer {
1323
1323
  ? { 'X-Datalayer-Reference': this._referenceVersion }
1324
1324
  : {}
1325
1325
  const status = await this._trySave(saveURL, headers, formData)
1326
- this._geojson = geojson
1327
1326
  return status
1328
1327
  }
1329
1328
 
@@ -1363,7 +1362,6 @@ export class DataLayer {
1363
1362
 
1364
1363
  this.setReferenceVersion({ response, sync: true })
1365
1364
 
1366
- this.backupData()
1367
1365
  this.connectToMap()
1368
1366
  this.redraw() // Needed for reordering features
1369
1367
  return true
@@ -104,6 +104,7 @@ export const Cluster = FeatureGroup.extend({
104
104
  initialize: function (datalayer) {
105
105
  this.datalayer = datalayer
106
106
  this._bucket = []
107
+ this._group = new LayerGroup()
107
108
  if (!Utils.isObject(this.datalayer.properties.cluster)) {
108
109
  this.datalayer.properties.cluster = {}
109
110
  }
@@ -117,11 +118,11 @@ export const Cluster = FeatureGroup.extend({
117
118
 
118
119
  removeClusters() {
119
120
  this.hideCoverage()
121
+ for (const layer of this._bucket) {
122
+ delete layer._cluster
123
+ }
120
124
  if (this._map) {
121
- for (const cluster of this._clusters) {
122
- const layer = cluster._layers.length === 1 ? cluster._layers[0] : cluster
123
- this._map.removeLayer(layer)
124
- }
125
+ this._group.clearLayers()
125
126
  }
126
127
  },
127
128
 
@@ -129,7 +130,7 @@ export const Cluster = FeatureGroup.extend({
129
130
  if (this._map) {
130
131
  for (const cluster of this._clusters) {
131
132
  const layer = cluster._layers.length === 1 ? cluster._layers[0] : cluster
132
- this._map.addLayer(layer)
133
+ this._group.addLayer(layer)
133
134
  }
134
135
  }
135
136
  },
@@ -144,8 +145,11 @@ export const Cluster = FeatureGroup.extend({
144
145
  const radius = this.datalayer.properties.cluster?.radius || 80
145
146
  this._clusters = []
146
147
  const map = this.datalayer._umap._leafletMap
148
+ this._bounds = map.getBounds().pad(0.1)
147
149
  const CRS = map.options.crs
148
150
  for (const layer of this._bucket) {
151
+ if (layer._cluster) continue
152
+ if (!this._bounds.contains(layer._latlng)) continue
149
153
  layer._xy = CRS.latLngToPoint(layer._latlng, map.getZoom())
150
154
  let cluster = null
151
155
  for (const candidate of this._clusters) {
@@ -188,21 +192,34 @@ export const Cluster = FeatureGroup.extend({
188
192
  this.on('mouseout', this.onMouseOut)
189
193
  this.compute()
190
194
  LayerMixin.onAdd.call(this, leafletMap)
191
- leafletMap.on('zoomend', this.redraw, this)
195
+ leafletMap.on('moveend', this.onMoveEnd, this)
196
+ leafletMap.on('zoomend', this.onZoomEnd, this)
192
197
  this.addClusters()
198
+ leafletMap.addLayer(this._group)
193
199
  return FeatureGroup.prototype.onAdd.call(this, leafletMap)
194
200
  },
195
201
 
196
202
  onRemove: function (leafletMap) {
197
- leafletMap.off('zoomend', this.redraw, this)
203
+ leafletMap.off('zoomend', this.onZoomEnd, this)
204
+ leafletMap.off('moveend', this.onMoveEnd, this)
198
205
  this.off('click', this.onClick)
199
206
  this.off('mouseover', this.onMouseOver)
200
207
  this.off('mouseout', this.onMouseOut)
201
208
  LayerMixin.onRemove.call(this, leafletMap)
202
209
  this.removeClusters()
210
+ leafletMap.removeLayer(this._group)
203
211
  return FeatureGroup.prototype.onRemove.call(this, leafletMap)
204
212
  },
205
213
 
214
+ onZoomEnd: function () {
215
+ this.removeClusters()
216
+ },
217
+
218
+ onMoveEnd: function () {
219
+ this.compute()
220
+ this.addClusters()
221
+ },
222
+
206
223
  showCoverage(cluster) {
207
224
  if (cluster._coverage) {
208
225
  this._shownCoverage = cluster._coverage
@@ -235,7 +252,10 @@ export const Cluster = FeatureGroup.extend({
235
252
  [
236
253
  'properties.cluster.radius',
237
254
  {
238
- handler: 'BlurIntInput',
255
+ handler: 'Range',
256
+ min: 40,
257
+ max: 200,
258
+ step: 10,
239
259
  placeholder: translate('Clustering radius'),
240
260
  helpText: translate('Override clustering radius (default 80)'),
241
261
  },
@@ -29,6 +29,7 @@ const FeatureMixin = {
29
29
  },
30
30
 
31
31
  onRemove: function (map) {
32
+ this.removeInteractions()
32
33
  this.parentClass.prototype.onRemove.call(this, map)
33
34
  if (map._umap.editedFeature === this.feature) {
34
35
  this.feature.endEdit()
@@ -49,6 +50,13 @@ const FeatureMixin = {
49
50
  this.on('mouseover', this.onMouseOver)
50
51
  },
51
52
 
53
+ removeInteractions: function () {
54
+ this.off('contextmenu editable:vertex:contextmenu', this.onContextMenu)
55
+ this.off('click', this.onClick)
56
+ this.off('editable:edited', this.onCommit)
57
+ this.off('mouseover', this.onMouseOver)
58
+ },
59
+
52
60
  onMouseOver: function () {
53
61
  if (this._map._umap.editEnabled && !this._map._umap.editedFeature) {
54
62
  this._map._umap.tooltip.open({
@@ -112,13 +120,26 @@ const PointMixin = {
112
120
 
113
121
  addInteractions() {
114
122
  FeatureMixin.addInteractions.call(this)
115
- this.on('dragend', (event) => {
116
- this.feature.edit(event)
117
- })
123
+ this.on('dragend', this._onDragEnd)
118
124
  if (!this.feature.isReadOnly()) this.on('mouseover', this._enableDragging)
119
125
  this.on('mouseout', this._onMouseOut)
120
126
  },
121
127
 
128
+ removeInteractions() {
129
+ FeatureMixin.removeInteractions.call(this)
130
+ this.off('dragend', this._onDragEnd)
131
+ if (!this.feature.isReadOnly()) this.off('mouseover', this._enableDragging)
132
+ this.off('mouseout', this._onMouseOut)
133
+ },
134
+
135
+ _onDragEnd(event) {
136
+ if (this._cluster) {
137
+ delete this._originalLatLng
138
+ this.feature.datalayer.dataChanged()
139
+ }
140
+ this.feature.edit(event)
141
+ },
142
+
122
143
  _onMouseOut: function () {
123
144
  if (this.dragging?._draggable && !this.dragging._draggable._moving) {
124
145
  // Do not disable if the mouse went out while dragging
@@ -127,7 +148,6 @@ const PointMixin = {
127
148
  },
128
149
 
129
150
  _enableDragging: function () {
130
- if (this._cluster) return
131
151
  // TODO: start dragging after 1 second on mouse down
132
152
  if (this._map._umap.editEnabled) {
133
153
  if (!this.editEnabled()) this.enableEdit()
@@ -177,6 +197,12 @@ export const LeafletMarker = Marker.extend({
177
197
  this.on('popupclose', this.resetHighlight)
178
198
  },
179
199
 
200
+ removeInteractions() {
201
+ PointMixin.removeInteractions.call(this)
202
+ this.off('popupopen', this.highlight)
203
+ this.off('popupclose', this.resetHighlight)
204
+ },
205
+
180
206
  onMoveEnd: function () {
181
207
  this._initIcon()
182
208
  this.update()
@@ -295,6 +321,13 @@ const PathMixin = {
295
321
  this.on('popupclose', this._redraw)
296
322
  },
297
323
 
324
+ removeInteractions: function () {
325
+ FeatureMixin.removeInteractions.call(this)
326
+ this.off('drag editable:drag', this._onDrag)
327
+ this.off('popupopen', this.highlightPath)
328
+ this.off('popupclose', this._redraw)
329
+ },
330
+
298
331
  bindTooltip: function (content, options) {
299
332
  options.sticky = !options.permanent
300
333
  this.parentClass.prototype.bindTooltip.call(this, content, options)
@@ -486,6 +519,12 @@ export const LeafletRoute = LeafletPolyline.extend({
486
519
  this.on('editable:vertex:dragend editable:vertex:deleted', this.onDrawingMoved)
487
520
  },
488
521
 
522
+ removeInteractions: function () {
523
+ PathMixin.removeInteractions.call(this)
524
+ this.off('editable:drawing:clicked', this.onDrawingClick)
525
+ this.off('editable:vertex:dragend editable:vertex:deleted', this.onDrawingMoved)
526
+ },
527
+
489
528
  getEditorClass: (tools) => {
490
529
  return RouteEditor
491
530
  },
@@ -1609,8 +1609,8 @@ export default class Umap {
1609
1609
  for (const geojson of importedData.layers) {
1610
1610
  if (!geojson._umap_options && geojson._storage) {
1611
1611
  geojson._umap_options = geojson._storage
1612
- delete geojson._storage
1613
1612
  }
1613
+ delete geojson._storage
1614
1614
  delete geojson._umap_options?.id // Never trust an id at this stage
1615
1615
  if (geojson._umap_options?.iconUrl?.startsWith('/')) {
1616
1616
  geojson._umap_options.iconUrl = remoteOrigin + geojson._umap_options.iconUrl
@@ -578,44 +578,44 @@ const locale = {
578
578
  "Rename this field": "Omdøb dette felt",
579
579
  "Delete this field": "Slet dette felt",
580
580
  "Double click to edit the name": "Dobbeltklik for at redigere navnet",
581
- "Print map": "Print map",
582
- "Choose a format": "Choose a format",
583
- "Scale map": "Scale map",
584
- "portrait": "portrait",
585
- "landscape": "landscape",
586
- "Print": "Print",
587
- "Preparing the print…": "Preparing the print…",
588
- "Large Circle": "Large Circle",
589
- "Icon size": "Icon size",
590
- "Will only affect raw and large circle icons.": "Will only affect raw and large circle icons.",
591
- "Route": "Route",
592
- "Display the print control": "Display the print control",
593
- "Compute isochrone from here": "Compute isochrone from here",
594
- "Route settings": "Route settings",
595
- "Transform to regular line": "Transform to regular line",
596
- "Transform to route": "Transform to route",
597
- "Restore route": "Restore route",
598
- "Compute elevation": "Compute elevation",
599
- "Profile": "Profile",
600
- "Compute elevations": "Compute elevations",
601
- "Route preference": "Route preference",
602
- "Compute route": "Compute route",
603
- "Walking": "Walking",
604
- "Hiking": "Hiking",
605
- "By car": "By car",
606
- "Cycling": "Cycling",
607
- "Wheelchair": "Wheelchair",
608
- "Recommended": "Recommended",
609
- "Fastest": "Fastest",
610
- "Shortest": "Shortest",
611
- "Max time (in minutes)": "Max time (in minutes)",
612
- "Number of lines": "Number of lines",
613
- "Distance:": "Distance:",
614
- "Gain:": "Gain:",
615
- "Loss:": "Loss:",
616
- "Altitude:": "Altitude:",
617
- "Right-click to edit": "Right-click to edit",
618
- "Draw along routes": "Draw along routes"
581
+ "Print map": "Udskriv kort",
582
+ "Choose a format": "Vælg dit format",
583
+ "Scale map": "Skalér kort",
584
+ "portrait": "portræt",
585
+ "landscape": "landskab",
586
+ "Print": "Udskriv",
587
+ "Preparing the print…": "Forbereder udskriften…",
588
+ "Large Circle": "Stor cirkel",
589
+ "Icon size": "Ikonstørrelse",
590
+ "Will only affect raw and large circle icons.": "Vil kun påvirke og store cirkelikoner.",
591
+ "Route": "Rute",
592
+ "Display the print control": "Vis udskriftskontrol",
593
+ "Compute isochrone from here": "Beregn isokron herfra",
594
+ "Route settings": "Ruteindstillinger",
595
+ "Transform to regular line": "Omdan til almindelig linje",
596
+ "Transform to route": "Omdan til rute",
597
+ "Restore route": "Gendan rute",
598
+ "Compute elevation": "Beregn højde",
599
+ "Profile": "Profil",
600
+ "Compute elevations": "Beregn højder",
601
+ "Route preference": "Rutepræference",
602
+ "Compute route": "Beregn rute",
603
+ "Walking": "Gåtur",
604
+ "Hiking": "Vandring",
605
+ "By car": "I bil",
606
+ "Cycling": "Cykling",
607
+ "Wheelchair": "Kørestol",
608
+ "Recommended": "Anbefalet",
609
+ "Fastest": "Hurtigst",
610
+ "Shortest": "Korteste",
611
+ "Max time (in minutes)": "Maksimal tid (i minutter)",
612
+ "Number of lines": "Antal linjer",
613
+ "Distance:": "Afstand:",
614
+ "Gain:": "Forøgelse:",
615
+ "Loss:": "Tab:",
616
+ "Altitude:": "Højde:",
617
+ "Right-click to edit": "Højreklik for at redigere",
618
+ "Draw along routes": "Tegn langs ruter"
619
619
  }
620
620
  L.registerLocale("da", locale)
621
621
  L.setLocale("da")
@@ -578,42 +578,42 @@
578
578
  "Rename this field": "Omdøb dette felt",
579
579
  "Delete this field": "Slet dette felt",
580
580
  "Double click to edit the name": "Dobbeltklik for at redigere navnet",
581
- "Print map": "Print map",
582
- "Choose a format": "Choose a format",
583
- "Scale map": "Scale map",
584
- "portrait": "portrait",
585
- "landscape": "landscape",
586
- "Print": "Print",
587
- "Preparing the print…": "Preparing the print…",
588
- "Large Circle": "Large Circle",
589
- "Icon size": "Icon size",
590
- "Will only affect raw and large circle icons.": "Will only affect raw and large circle icons.",
591
- "Route": "Route",
592
- "Display the print control": "Display the print control",
593
- "Compute isochrone from here": "Compute isochrone from here",
594
- "Route settings": "Route settings",
595
- "Transform to regular line": "Transform to regular line",
596
- "Transform to route": "Transform to route",
597
- "Restore route": "Restore route",
598
- "Compute elevation": "Compute elevation",
599
- "Profile": "Profile",
600
- "Compute elevations": "Compute elevations",
601
- "Route preference": "Route preference",
602
- "Compute route": "Compute route",
603
- "Walking": "Walking",
604
- "Hiking": "Hiking",
605
- "By car": "By car",
606
- "Cycling": "Cycling",
607
- "Wheelchair": "Wheelchair",
608
- "Recommended": "Recommended",
609
- "Fastest": "Fastest",
610
- "Shortest": "Shortest",
611
- "Max time (in minutes)": "Max time (in minutes)",
612
- "Number of lines": "Number of lines",
613
- "Distance:": "Distance:",
614
- "Gain:": "Gain:",
615
- "Loss:": "Loss:",
616
- "Altitude:": "Altitude:",
617
- "Right-click to edit": "Right-click to edit",
618
- "Draw along routes": "Draw along routes"
581
+ "Print map": "Udskriv kort",
582
+ "Choose a format": "Vælg dit format",
583
+ "Scale map": "Skalér kort",
584
+ "portrait": "portræt",
585
+ "landscape": "landskab",
586
+ "Print": "Udskriv",
587
+ "Preparing the print…": "Forbereder udskriften…",
588
+ "Large Circle": "Stor cirkel",
589
+ "Icon size": "Ikonstørrelse",
590
+ "Will only affect raw and large circle icons.": "Vil kun påvirke og store cirkelikoner.",
591
+ "Route": "Rute",
592
+ "Display the print control": "Vis udskriftskontrol",
593
+ "Compute isochrone from here": "Beregn isokron herfra",
594
+ "Route settings": "Ruteindstillinger",
595
+ "Transform to regular line": "Omdan til almindelig linje",
596
+ "Transform to route": "Omdan til rute",
597
+ "Restore route": "Gendan rute",
598
+ "Compute elevation": "Beregn højde",
599
+ "Profile": "Profil",
600
+ "Compute elevations": "Beregn højder",
601
+ "Route preference": "Rutepræference",
602
+ "Compute route": "Beregn rute",
603
+ "Walking": "Gåtur",
604
+ "Hiking": "Vandring",
605
+ "By car": "I bil",
606
+ "Cycling": "Cykling",
607
+ "Wheelchair": "Kørestol",
608
+ "Recommended": "Anbefalet",
609
+ "Fastest": "Hurtigst",
610
+ "Shortest": "Korteste",
611
+ "Max time (in minutes)": "Maksimal tid (i minutter)",
612
+ "Number of lines": "Antal linjer",
613
+ "Distance:": "Afstand:",
614
+ "Gain:": "Forøgelse:",
615
+ "Loss:": "Tab:",
616
+ "Altitude:": "Højde:",
617
+ "Right-click to edit": "Højreklik for at redigere",
618
+ "Draw along routes": "Tegn langs ruter"
619
619
  }
@@ -535,87 +535,87 @@ const locale = {
535
535
  "Back to list": "Πίσω στην λίστα",
536
536
  "Toggle rule": "Εναλλαγή κανόνα",
537
537
  "Delete rule": "Διαγραφή κανόνα",
538
- "Cannot save layer, please try again in a few minutes.": "Δεν μπόρεσε να αποθηκευτεί το επίπεδο, παρακαλούμε δοκιμάστε ξανά σε μερικά λεπτά.",
539
- "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.": "Ενεργοποιήστε την ζωντανή συνεργατική επεξεργασία σε αυτόν τον χάρτη. Άλλοι χρήστες θα πρέπει να ξαναφορτώσουν τον χάρτη μετά την αλλαγή αυτής της ρύθμισης.",
540
- "More help resources": "More help resources",
541
- "This map is a template": "This map is a template",
542
- "Add text along path": "Add text along path",
543
- "Text color": "Text color",
544
- "Text offset": "Text offset",
545
- "Text position": "Text position",
546
- "start": "start",
547
- "center": "center",
548
- "end": "end",
549
- "Text repeat": "Text repeat",
550
- "Text rotate": "Text rotate",
551
- "Text size": "Text size",
552
- "Load map template": "Load map template",
553
- "My templates": "My templates",
554
- "From staff": "From staff",
555
- "From community": "From community",
556
- "You must select a template.": "You must select a template.",
557
- "Line decoration": "Line decoration",
558
- "Reuse this template": "Reuse this template",
559
- "Create a new map using this template": "Create a new map using this template",
560
- "Save template": "Save template",
561
- "Load template": "Load template",
562
- "Loading a template will apply predefined styles and settings to your map": "Loading a template will apply predefined styles and settings to your map",
563
- "Load template with data": "Load template with data",
564
- "You have no registered template yet. You can add one by creating a new map and flagging it as \"template\".": "You have no registered template yet. You can add one by creating a new map and flagging it as \"template\".",
565
- "There is no recommended template yet. Recommended templates are the ones starred by uMap administrators.": "There is no recommended template yet. Recommended templates are the ones starred by uMap administrators.",
566
- "There is no public template yet.": "There is no public template yet.",
567
- "Explore": "Explore",
568
- "Import data from public open data portals": "Import data from public open data portals",
569
- "Choose a portal": "Choose a portal",
570
- "Limit results to current map view": "Limit results to current map view",
571
- "Please choose an instance first.": "Please choose an instance first.",
572
- "No geo column found: must be either `lat(itude)` and `lon(gitude)` or `geom(etry)`.": "No geo column found: must be either `lat(itude)` and `lon(gitude)` or `geom(etry)`.",
573
- "Add a new field": "Add a new field",
574
- "Are you sure you want to delete this field on all the features?": "Are you sure you want to delete this field on all the features?",
575
- "Please enter the new name of this field": "Please enter the new name of this field",
576
- "Cannot process MultiPoint": "Cannot process MultiPoint",
577
- "Manage Fields": "Manage Fields",
578
- "Rename this field": "Rename this field",
579
- "Delete this field": "Delete this field",
580
- "Double click to edit the name": "Double click to edit the name",
581
- "Print map": "Print map",
582
- "Choose a format": "Choose a format",
583
- "Scale map": "Scale map",
584
- "portrait": "portrait",
585
- "landscape": "landscape",
586
- "Print": "Print",
587
- "Preparing the print…": "Preparing the print…",
588
- "Large Circle": "Large Circle",
589
- "Icon size": "Icon size",
590
- "Will only affect raw and large circle icons.": "Will only affect raw and large circle icons.",
591
- "Route": "Route",
592
- "Display the print control": "Display the print control",
593
- "Compute isochrone from here": "Compute isochrone from here",
594
- "Route settings": "Route settings",
595
- "Transform to regular line": "Transform to regular line",
596
- "Transform to route": "Transform to route",
597
- "Restore route": "Restore route",
598
- "Compute elevation": "Compute elevation",
599
- "Profile": "Profile",
600
- "Compute elevations": "Compute elevations",
601
- "Route preference": "Route preference",
602
- "Compute route": "Compute route",
603
- "Walking": "Walking",
604
- "Hiking": "Hiking",
605
- "By car": "By car",
606
- "Cycling": "Cycling",
607
- "Wheelchair": "Wheelchair",
608
- "Recommended": "Recommended",
609
- "Fastest": "Fastest",
610
- "Shortest": "Shortest",
611
- "Max time (in minutes)": "Max time (in minutes)",
612
- "Number of lines": "Number of lines",
613
- "Distance:": "Distance:",
614
- "Gain:": "Gain:",
615
- "Loss:": "Loss:",
616
- "Altitude:": "Altitude:",
617
- "Right-click to edit": "Right-click to edit",
618
- "Draw along routes": "Draw along routes"
538
+ "Cannot save layer, please try again in a few minutes.": "Δεν ήταν δυνατή η αποθήκευση του επιπέδου, παρακαλούμε δοκιμάστε ξανά σε μερικά λεπτά.",
539
+ "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.": "Ενεργοποιήστε τη ζωντανή συνεργατική επεξεργασία σε αυτόν τον χάρτη. Άλλοι χρήστες θα πρέπει να ξαναφορτώσουν τον χάρτη μετά την αλλαγή αυτής της ρύθμισης.",
540
+ "More help resources": "Περισσότερες πηγές βοήθειας",
541
+ "This map is a template": "Αυτός ο χάρτης είναι ένα πρότυπο",
542
+ "Add text along path": "Προσθήκη κειμένου κατά μήκος του μονοπατιού",
543
+ "Text color": "Χρώμα κειμένου",
544
+ "Text offset": "Μετατόπιση κειμένου",
545
+ "Text position": "Θέση κειμένου",
546
+ "start": "αρχή",
547
+ "center": "κέντρο",
548
+ "end": "τέλος",
549
+ "Text repeat": "Επανάληψη κειμένου",
550
+ "Text rotate": "Περιστροφή κειμένου",
551
+ "Text size": "Μέγεθος κειμένου",
552
+ "Load map template": "Φόρτωση προτύπου χάρτη",
553
+ "My templates": "Τα πρότυπά μου",
554
+ "From staff": "Από το προσωπικό",
555
+ "From community": "Από την κοινότητα",
556
+ "You must select a template.": "Πρέπει να επιλέξετε ένα πρότυπο.",
557
+ "Line decoration": "Διακόσμηση γραμμής",
558
+ "Reuse this template": "Επαναχρησιμοποίηση του προτύπου",
559
+ "Create a new map using this template": "Δημιουργία νέου χάρτη χρησιμοποιώντας αυτό το πρότυπο",
560
+ "Save template": "Αποθήκευση προτύπου",
561
+ "Load template": "Φόρτωση προτύπου",
562
+ "Loading a template will apply predefined styles and settings to your map": "Η φόρτωση ενός προτύπου θα εφαρμόσει προκαθορισμένα στυλ και ρυθμίσεις στο χάρτη σας",
563
+ "Load template with data": "Φόρτωση προτύπου με δεδομένα",
564
+ "You have no registered template yet. You can add one by creating a new map and flagging it as \"template\".": "Δεν έχετε καταχωρήσει ακόμη πρότυπο. Μπορείτε να το κάνετε, δημιουργώντας έναν νέο χάρτη και επισημαίνοντάς τον ως «πρότυπο».",
565
+ "There is no recommended template yet. Recommended templates are the ones starred by uMap administrators.": "Δεν υπάρχει ακόμη προτεινόμενο πρότυπο. Τα προτεινόμενα πρότυπα είναι αυτά που έχουν επισημανθεί με αστερίσκο από τους διαχειριστές του uMap.",
566
+ "There is no public template yet.": "Δεν υπάρχει ακόμη δημόσιο πρότυπο.",
567
+ "Explore": "Εξερεύνηση",
568
+ "Import data from public open data portals": "Εισαγωγή δεδομένων από δημόσιες πύλες ανοικτών δεδομένων",
569
+ "Choose a portal": "Επιλέξτε μια πύλη",
570
+ "Limit results to current map view": "Περιορισμός αποτελεσμάτων στην τρέχουσα προβολή χάρτη",
571
+ "Please choose an instance first.": "Παρακαλώ επιλέξτε πρώτα μια περίπτωση.",
572
+ "No geo column found: must be either `lat(itude)` and `lon(gitude)` or `geom(etry)`.": "Δεν βρέθηκε στήλη γεωγραφικών συντεταγμένων: πρέπει να είναι είτε `lat(itude)` και `lon(gitude)` είτε `geom(etry)`.",
573
+ "Add a new field": "Προσθήκη νέου πεδίου",
574
+ "Are you sure you want to delete this field on all the features?": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το πεδίο από όλα τα χαρακτηριστικά;",
575
+ "Please enter the new name of this field": "Παρακαλώ εισάγετε το νέο όνομα αυτού του πεδίου.",
576
+ "Cannot process MultiPoint": "Δεν είναι δυνατή η επεξεργασία MultiPoint.",
577
+ "Manage Fields": "Διαχείριση πεδίων",
578
+ "Rename this field": "Μετονομασία πεδίου",
579
+ "Delete this field": "Διαγραφή πεδίου",
580
+ "Double click to edit the name": "Διπλό κλικ για επεξεργασία του ονόματος",
581
+ "Print map": "Εκτύπωση χάρτη",
582
+ "Choose a format": "Επιλέξτε μορφή",
583
+ "Scale map": "Κλίμακα χάρτη",
584
+ "portrait": "κατακόρυφα",
585
+ "landscape": "οριζόντια",
586
+ "Print": "Εκτύπωση",
587
+ "Preparing the print…": "Προετοιμασία της εκτύπωσης…",
588
+ "Large Circle": "Μεγάλος κύκλος",
589
+ "Icon size": "Μέγεθος εικονιδίου",
590
+ "Will only affect raw and large circle icons.": "Θα επηρεάσει μόνο τα ακατέργαστα μεγάλα κυκλικά εικονίδια .",
591
+ "Route": "Διαδρομή",
592
+ "Display the print control": "Εμφάνιση του ελέγχου εκτύπωσης",
593
+ "Compute isochrone from here": "Υπολογισμός ισοχρώματος από εδώ",
594
+ "Route settings": "Ρυθμίσεις διαδρομής",
595
+ "Transform to regular line": "Μετατροπή σε κανονική γραμμή",
596
+ "Transform to route": "Μετατροπή σε διαδρομή",
597
+ "Restore route": "Επαναφορά διαδρομής",
598
+ "Compute elevation": "Υπολογισμός υψομέτρου",
599
+ "Profile": "Προφίλ",
600
+ "Compute elevations": "Υπολογισμός υψομέτρων",
601
+ "Route preference": "Προτίμηση διαδρομής",
602
+ "Compute route": "Υπολογισμός διαδρομής",
603
+ "Walking": "Περπάτημα",
604
+ "Hiking": "Πεζοπορία",
605
+ "By car": "Με αυτοκίνητο",
606
+ "Cycling": "Ποδηλασία",
607
+ "Wheelchair": "Αναπηρικό αμαξίδιο",
608
+ "Recommended": "Προτεινόμενη",
609
+ "Fastest": "Γρηγορότερη",
610
+ "Shortest": "Συντομότερη",
611
+ "Max time (in minutes)": "Μέγιστος χρόνος (σε λεπτά)",
612
+ "Number of lines": "Αριθμός γραμμών",
613
+ "Distance:": "Απόσταση:",
614
+ "Gain:": "Κέρδος:",
615
+ "Loss:": "Απώλεια:",
616
+ "Altitude:": "Υψόμετρο:",
617
+ "Right-click to edit": "Δεξί κλικ για επεξεργασία",
618
+ "Draw along routes": "Σχεδιάστε κατά μήκος διαδρομών"
619
619
  }
620
620
  L.registerLocale("el", locale)
621
621
  L.setLocale("el")