umap-project 3.1.2__py3-none-any.whl → 3.2.0__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.

Potentially problematic release.


This version of umap-project might be problematic. Click here for more details.

Files changed (151) hide show
  1. umap/__init__.py +1 -1
  2. umap/locale/en/LC_MESSAGES/django.po +21 -17
  3. umap/locale/fr/LC_MESSAGES/django.mo +0 -0
  4. umap/locale/fr/LC_MESSAGES/django.po +21 -17
  5. umap/management/commands/export_pictogram.py +29 -0
  6. umap/management/commands/migrate_to_S3.py +5 -1
  7. umap/management/commands/purge_old_versions.py +8 -6
  8. umap/settings/__init__.py +21 -0
  9. umap/settings/base.py +1 -0
  10. umap/static/umap/content.css +7 -2
  11. umap/static/umap/css/icon.css +77 -3
  12. umap/static/umap/css/panel.css +31 -1
  13. umap/static/umap/js/modules/browser.js +1 -1
  14. umap/static/umap/js/modules/data/features.js +14 -29
  15. umap/static/umap/js/modules/data/layer.js +248 -136
  16. umap/static/umap/js/modules/facets.js +2 -2
  17. umap/static/umap/js/modules/form/fields.js +56 -19
  18. umap/static/umap/js/modules/formatter.js +36 -8
  19. umap/static/umap/js/modules/importers/opendata.js +23 -6
  20. umap/static/umap/js/modules/managers.js +59 -0
  21. umap/static/umap/js/modules/rendering/icon.js +3 -5
  22. umap/static/umap/js/modules/rendering/layers/classified.js +8 -7
  23. umap/static/umap/js/modules/rendering/map.js +1 -1
  24. umap/static/umap/js/modules/rendering/ui.js +13 -0
  25. umap/static/umap/js/modules/rules.js +76 -23
  26. umap/static/umap/js/modules/schema.js +3 -0
  27. umap/static/umap/js/modules/slideshow.js +1 -1
  28. umap/static/umap/js/modules/sync/updaters.js +1 -6
  29. umap/static/umap/js/modules/tableeditor.js +13 -37
  30. umap/static/umap/js/modules/templates.js +7 -6
  31. umap/static/umap/js/modules/ui/panel.js +7 -0
  32. umap/static/umap/js/modules/umap.js +17 -6
  33. umap/static/umap/js/modules/utils.js +8 -7
  34. umap/static/umap/locale/am_ET.js +43 -6
  35. umap/static/umap/locale/am_ET.json +43 -6
  36. umap/static/umap/locale/ar.js +43 -6
  37. umap/static/umap/locale/ar.json +43 -6
  38. umap/static/umap/locale/ast.js +43 -6
  39. umap/static/umap/locale/ast.json +43 -6
  40. umap/static/umap/locale/bg.js +43 -6
  41. umap/static/umap/locale/bg.json +43 -6
  42. umap/static/umap/locale/br.js +30 -26
  43. umap/static/umap/locale/br.json +30 -26
  44. umap/static/umap/locale/ca.js +50 -13
  45. umap/static/umap/locale/ca.json +50 -13
  46. umap/static/umap/locale/cs_CZ.js +43 -6
  47. umap/static/umap/locale/cs_CZ.json +43 -6
  48. umap/static/umap/locale/da.js +10 -6
  49. umap/static/umap/locale/da.json +10 -6
  50. umap/static/umap/locale/de.js +10 -6
  51. umap/static/umap/locale/de.json +10 -6
  52. umap/static/umap/locale/el.js +20 -10
  53. umap/static/umap/locale/el.json +20 -10
  54. umap/static/umap/locale/en.js +10 -6
  55. umap/static/umap/locale/en.json +10 -6
  56. umap/static/umap/locale/en_US.json +43 -6
  57. umap/static/umap/locale/es.js +10 -6
  58. umap/static/umap/locale/es.json +10 -6
  59. umap/static/umap/locale/et.js +43 -6
  60. umap/static/umap/locale/et.json +43 -6
  61. umap/static/umap/locale/eu.js +43 -6
  62. umap/static/umap/locale/eu.json +43 -6
  63. umap/static/umap/locale/fa_IR.js +43 -6
  64. umap/static/umap/locale/fa_IR.json +43 -6
  65. umap/static/umap/locale/fi.js +43 -6
  66. umap/static/umap/locale/fi.json +43 -6
  67. umap/static/umap/locale/fr.js +10 -6
  68. umap/static/umap/locale/fr.json +10 -6
  69. umap/static/umap/locale/gl.js +43 -6
  70. umap/static/umap/locale/gl.json +43 -6
  71. umap/static/umap/locale/he.js +43 -6
  72. umap/static/umap/locale/he.json +43 -6
  73. umap/static/umap/locale/hr.js +43 -6
  74. umap/static/umap/locale/hr.json +43 -6
  75. umap/static/umap/locale/hu.js +34 -24
  76. umap/static/umap/locale/hu.json +34 -24
  77. umap/static/umap/locale/id.js +43 -6
  78. umap/static/umap/locale/id.json +43 -6
  79. umap/static/umap/locale/is.js +43 -6
  80. umap/static/umap/locale/is.json +43 -6
  81. umap/static/umap/locale/it.js +10 -6
  82. umap/static/umap/locale/it.json +10 -6
  83. umap/static/umap/locale/ja.js +43 -6
  84. umap/static/umap/locale/ja.json +43 -6
  85. umap/static/umap/locale/ko.js +43 -6
  86. umap/static/umap/locale/ko.json +43 -6
  87. umap/static/umap/locale/lt.js +43 -6
  88. umap/static/umap/locale/lt.json +43 -6
  89. umap/static/umap/locale/ms.js +43 -6
  90. umap/static/umap/locale/ms.json +43 -6
  91. umap/static/umap/locale/nl.js +10 -6
  92. umap/static/umap/locale/nl.json +10 -6
  93. umap/static/umap/locale/no.js +43 -6
  94. umap/static/umap/locale/no.json +43 -6
  95. umap/static/umap/locale/pl.js +43 -6
  96. umap/static/umap/locale/pl.json +43 -6
  97. umap/static/umap/locale/pl_PL.json +43 -6
  98. umap/static/umap/locale/pt.js +43 -6
  99. umap/static/umap/locale/pt.json +43 -6
  100. umap/static/umap/locale/pt_BR.js +53 -16
  101. umap/static/umap/locale/pt_BR.json +53 -16
  102. umap/static/umap/locale/pt_PT.js +43 -6
  103. umap/static/umap/locale/pt_PT.json +43 -6
  104. umap/static/umap/locale/ro.js +43 -6
  105. umap/static/umap/locale/ro.json +43 -6
  106. umap/static/umap/locale/ru.js +43 -6
  107. umap/static/umap/locale/ru.json +43 -6
  108. umap/static/umap/locale/sk_SK.js +43 -6
  109. umap/static/umap/locale/sk_SK.json +43 -6
  110. umap/static/umap/locale/sl.js +43 -6
  111. umap/static/umap/locale/sl.json +43 -6
  112. umap/static/umap/locale/sr.js +43 -6
  113. umap/static/umap/locale/sr.json +43 -6
  114. umap/static/umap/locale/sv.js +43 -6
  115. umap/static/umap/locale/sv.json +43 -6
  116. umap/static/umap/locale/th_TH.js +43 -6
  117. umap/static/umap/locale/th_TH.json +43 -6
  118. umap/static/umap/locale/tr.js +43 -6
  119. umap/static/umap/locale/tr.json +43 -6
  120. umap/static/umap/locale/uk_UA.js +43 -6
  121. umap/static/umap/locale/uk_UA.json +43 -6
  122. umap/static/umap/locale/vi.js +43 -6
  123. umap/static/umap/locale/vi.json +43 -6
  124. umap/static/umap/locale/vi_VN.json +43 -6
  125. umap/static/umap/locale/zh.js +43 -6
  126. umap/static/umap/locale/zh.json +43 -6
  127. umap/static/umap/locale/zh_CN.json +43 -6
  128. umap/static/umap/locale/zh_TW.Big5.json +43 -6
  129. umap/static/umap/locale/zh_TW.js +43 -6
  130. umap/static/umap/locale/zh_TW.json +43 -6
  131. umap/static/umap/map.css +239 -65
  132. umap/static/umap/vendors/betterknown/betterknown.mjs +287 -0
  133. umap/storage/fs.py +3 -2
  134. umap/templates/base.html +4 -1
  135. umap/tests/base.py +9 -1
  136. umap/tests/integration/test_basics.py +1 -1
  137. umap/tests/integration/test_conditional_rules.py +62 -20
  138. umap/tests/integration/test_edit_datalayer.py +1 -1
  139. umap/tests/integration/test_edit_marker.py +1 -1
  140. umap/tests/integration/test_export_map.py +10 -0
  141. umap/tests/integration/test_import.py +140 -0
  142. umap/tests/integration/test_optimistic_merge.py +72 -12
  143. umap/tests/integration/test_tableeditor.py +6 -3
  144. umap/utils.py +33 -0
  145. umap/views.py +16 -2
  146. umap_project-3.2.0.dist-info/METADATA +76 -0
  147. {umap_project-3.1.2.dist-info → umap_project-3.2.0.dist-info}/RECORD +150 -148
  148. umap_project-3.1.2.dist-info/METADATA +0 -68
  149. {umap_project-3.1.2.dist-info → umap_project-3.2.0.dist-info}/WHEEL +0 -0
  150. {umap_project-3.1.2.dist-info → umap_project-3.2.0.dist-info}/entry_points.txt +0 -0
  151. {umap_project-3.1.2.dist-info → umap_project-3.2.0.dist-info}/licenses/LICENSE +0 -0
@@ -39,7 +39,7 @@ export default class Slideshow extends WithTemplate {
39
39
  get current() {
40
40
  if (!this._current) {
41
41
  const datalayer = this.defaultDatalayer()
42
- if (datalayer) this._current = datalayer.getFeatureByIndex(0)
42
+ if (datalayer) this._current = datalayer.features.first()
43
43
  }
44
44
  return this._current
45
45
  }
@@ -81,7 +81,7 @@ export class DataLayerUpdater extends BaseUpdater {
81
81
  export class FeatureUpdater extends BaseUpdater {
82
82
  getFeatureFromMetadata({ id, layerId }) {
83
83
  const datalayer = this.getDataLayerFromID(layerId)
84
- return datalayer.getFeatureById(id)
84
+ return datalayer.features.get(id)
85
85
  }
86
86
 
87
87
  // Create or update an object at a specific position
@@ -109,11 +109,6 @@ export class FeatureUpdater extends BaseUpdater {
109
109
  feature.geometry = value
110
110
  } else {
111
111
  Utils.setObjectValue(feature, key, value)
112
- if (key.startsWith('properties')) {
113
- feature.datalayer.indexProperties(feature)
114
- const name = key.replace('properties.', '')
115
- feature.datalayer.checkIndexForProperty(name)
116
- }
117
112
  }
118
113
 
119
114
  feature.render([key])
@@ -74,10 +74,10 @@ export default class TableEditor extends WithTemplate {
74
74
  const th = loadTemplate('<th><input type="checkbox" /></th>')
75
75
  const checkbox = th.firstChild
76
76
  this.elements.header.appendChild(th)
77
- for (const property of this.properties) {
77
+ for (const field of this.datalayer.fields) {
78
78
  this.elements.header.appendChild(
79
79
  loadTemplate(
80
- `<th>${property}<button data-property="${property}" class="flat" aria-label="${translate('Advanced actions')}">…</button></th>`
80
+ `<th>${field.key}<button data-property="${field.key}" class="flat" aria-label="${translate('Advanced actions')}">…</button></th>`
81
81
  )
82
82
  )
83
83
  }
@@ -91,56 +91,32 @@ export default class TableEditor extends WithTemplate {
91
91
  const bounds = this._leafletMap.getBounds()
92
92
  const inBbox = this._umap.browser.options.inBbox
93
93
  let html = ''
94
- this.datalayer.eachFeature((feature) => {
94
+ this.datalayer.features.forEach((feature) => {
95
95
  if (feature.isFiltered()) return
96
96
  if (inBbox && !feature.isOnScreen(bounds)) return
97
- const tds = this.properties.map(
98
- (prop) =>
99
- `<td tabindex="0" data-property="${prop}">${feature.properties[prop] ?? ''}</td>`
97
+ const tds = this.datalayer.fields.map(
98
+ (field) =>
99
+ `<td tabindex="0" data-property="${field.key}">${feature.properties[field.key] ?? ''}</td>`
100
100
  )
101
101
  html += `<tr data-feature="${feature.id}"><th><input type="checkbox" /></th>${tds.join('')}</tr>`
102
102
  })
103
103
  this.elements.body.innerHTML = html
104
104
  }
105
105
 
106
- resetProperties() {
107
- this.properties = this.datalayer.allProperties()
108
- if (this.properties.length === 0) {
109
- this.properties = [U.DEFAULT_LABEL_KEY, 'description']
110
- }
111
- }
112
-
113
106
  renameProperty(property) {
114
- this._umap.dialog
115
- .prompt(translate('Please enter the new name of this property'))
116
- .then(({ prompt }) => {
117
- if (!prompt || !this.datalayer.validateName(prompt)) return
118
- this.datalayer.renameProperty(property, prompt)
119
- this.open()
120
- })
107
+ this.datalayer.askForRenameProperty(property).then(() => this.open())
121
108
  }
122
109
 
123
110
  deleteProperty(property) {
124
- this._umap.dialog
125
- .confirm(
126
- translate('Are you sure you want to delete this property on all the features?')
127
- )
128
- .then(() => {
129
- this.datalayer.deleteProperty(property)
130
- this.resetProperties()
131
- this.open()
132
- })
111
+ this.datalayer.confirmDeleteProperty(property).then(() => this.open())
133
112
  }
134
113
 
135
114
  addProperty() {
136
- this.datalayer.addProperty().then(() => {
137
- this.open()
138
- })
115
+ this.datalayer.addProperty().then(() => this.open())
139
116
  }
140
117
 
141
118
  open() {
142
119
  const id = 'tableeditor:edit'
143
- this.resetProperties()
144
120
  this.renderHeaders()
145
121
  this.elements.body.innerHTML = ''
146
122
  this.renderBody()
@@ -149,7 +125,7 @@ export default class TableEditor extends WithTemplate {
149
125
  if (!this.datalayer.isRemoteLayer()) {
150
126
  const addButton = loadTemplate(`
151
127
  <button class="flat" type="button" data-ref="add">
152
- <i class="icon icon-16 icon-add"></i>${translate('Add a new property')}
128
+ <i class="icon icon-16 icon-add"></i>${translate('Add a new field')}
153
129
  </button>`)
154
130
  addButton.addEventListener('click', () => this.addProperty())
155
131
  actions.push(addButton)
@@ -181,10 +157,10 @@ export default class TableEditor extends WithTemplate {
181
157
  const property = cell.dataset.property
182
158
  const field = `properties.${property}`
183
159
  const tr = event.target.closest('tr')
184
- const feature = this.datalayer.getFeatureById(tr.dataset.feature)
160
+ const feature = this.datalayer.features.get(tr.dataset.feature)
185
161
  const handler = property === 'description' ? 'Textarea' : 'Input'
186
162
  const builder = new MutatingForm(feature, [[field, { handler }]], {
187
- id: `umap-feature-properties_${L.stamp(feature)}`,
163
+ id: `umap-feature-properties_${feature.id}`,
188
164
  })
189
165
  cell.innerHTML = ''
190
166
  cell.appendChild(builder.build())
@@ -293,7 +269,7 @@ export default class TableEditor extends WithTemplate {
293
269
  this.datalayer.hide()
294
270
  for (const row of selectedRows) {
295
271
  const id = row.dataset.feature
296
- const feature = this.datalayer.getFeatureById(id)
272
+ const feature = this.datalayer.features.get(id)
297
273
  feature.del()
298
274
  }
299
275
  this.datalayer.show()
@@ -60,20 +60,21 @@ export default class TemplateImporter {
60
60
  break
61
61
  }
62
62
  body.textContent = message
63
+ return
63
64
  }
65
+ const ul = Utils.loadTemplate('<ul></ul>')
66
+ body.appendChild(ul)
64
67
  for (const template of data.templates) {
65
68
  const item = Utils.loadTemplate(
66
- `<dl>
67
- <dt>
69
+ `<li>
68
70
  <label>
69
71
  <input type="radio" value="${template.id}" name="template" />${template.name}
70
72
  <a href="${template.url}" target="_blank"><nobr>${translate('Explore')}<i class="icon icon-16 icon-external-link"></i></nobr></a>
71
73
  </label>
72
- </dt>
73
- <dd class="text">${Utils.toHTML(template.description)}</dd>
74
- </dl>`
74
+ </li>
75
+ `
75
76
  )
76
- body.appendChild(item)
77
+ ul.appendChild(item)
77
78
  }
78
79
  tabs.querySelectorAll('button').forEach((el) => el.classList.remove('on'))
79
80
  tabs.querySelector(`[data-value="${source}"]`).classList.add('on')
@@ -88,6 +88,13 @@ export class Panel {
88
88
  this._leafletMap.invalidateSize({ pan: false })
89
89
  }
90
90
  }
91
+ scrollTo(selector) {
92
+ const fieldset = this.container.querySelector(selector)
93
+ if (!fieldset) return
94
+ fieldset.open = true
95
+ const { top, left } = fieldset.getBoundingClientRect()
96
+ this.container.scrollTo(left, top)
97
+ }
91
98
  }
92
99
 
93
100
  export class EditPanel extends Panel {
@@ -2,7 +2,6 @@ import {
2
2
  DomUtil,
3
3
  Util as LeafletUtil,
4
4
  latLngBounds,
5
- stamp,
6
5
  } from '../../vendors/leaflet/leaflet-src.esm.js'
7
6
  import {
8
7
  uMapAlert as Alert,
@@ -262,6 +261,17 @@ export default class Umap {
262
261
  return window.self !== window.top
263
262
  }
264
263
 
264
+ get fields() {
265
+ if (!this.properties.fields) this.properties.fields = []
266
+ return this.properties.fields
267
+ }
268
+
269
+ get fieldKeys() {
270
+ return this.fields
271
+ .map((field) => field.key)
272
+ .concat(...this.datalayers.active().map((dl) => dl.fieldKeys))
273
+ }
274
+
265
275
  setPropertiesFromQueryString() {
266
276
  const asBoolean = (key) => {
267
277
  const value = this.searchParams.get(key)
@@ -503,6 +513,10 @@ export default class Umap {
503
513
  return SCHEMA[key]?.default
504
514
  }
505
515
 
516
+ getColor() {
517
+ return this.getProperty('color')
518
+ }
519
+
506
520
  getOption(key, feature) {
507
521
  // TODO: remove when field.js does not call blindly obj.getOption anymore
508
522
  return this.getProperty(key, feature)
@@ -742,10 +756,6 @@ export default class Umap {
742
756
  return Boolean(this.datalayers.count())
743
757
  }
744
758
 
745
- allProperties() {
746
- return [].concat(...this.datalayers.active().map((dl) => dl.allProperties()))
747
- }
748
-
749
759
  sortedValues(property) {
750
760
  return []
751
761
  .concat(...this.datalayers.active().map((dl) => dl.sortedValues(property)))
@@ -1463,7 +1473,7 @@ export default class Umap {
1463
1473
 
1464
1474
  eachFeature(callback) {
1465
1475
  this.datalayers.browsable().map((datalayer) => {
1466
- if (datalayer.isVisible()) datalayer.eachFeature(callback)
1476
+ if (datalayer.isVisible()) datalayer.features.forEach(callback)
1467
1477
  })
1468
1478
  }
1469
1479
 
@@ -1519,6 +1529,7 @@ export default class Umap {
1519
1529
  const oldRank = datalayer.rank
1520
1530
  datalayer.rank = rank
1521
1531
  datalayer.sync.update('options.rank', rank, oldRank)
1532
+ datalayer.redraw()
1522
1533
  }
1523
1534
  })
1524
1535
  this.sync.commitBatch()
@@ -3,15 +3,16 @@ import { default as DOMPurifyInitializer } from '../../vendors/dompurify/purify.
3
3
  /**
4
4
  * Generate a pseudo-unique identifier (5 chars long, mixed-case alphanumeric)
5
5
  *
6
- * Here's the collision risk:
7
- * - for 6 chars, 1 in 100 000
8
- * - for 5 chars, 5 in 100 000
9
- * - for 4 chars, 500 in 100 000
10
- *
11
6
  * @returns string
12
7
  */
13
- export function generateId() {
14
- return btoa(Math.random().toString()).substring(10, 15)
8
+ const CHARACTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
9
+ export function generateId(length = 5) {
10
+ let result = ''
11
+ const charactersLength = CHARACTERS.length
12
+ for (let i = 0; i < length; i++) {
13
+ result += CHARACTERS.charAt(Math.floor(Math.random() * charactersLength))
14
+ }
15
+ return result
15
16
  }
16
17
 
17
18
  /**
@@ -16,7 +16,6 @@ const locale = {
16
16
  "Activate slideshow mode": "Activate slideshow mode",
17
17
  "Add a layer": "ሌየር ጨምር",
18
18
  "Add a line to the current multi": "ላሁኑ ብዝሀ መስመር ጨምር",
19
- "Add a new property": "አዲስ ባህርይ ጨምር",
20
19
  "Add a polygon to the current multi": "ላሁኑ ብዝሀ ፖሊጎን ጨምር",
21
20
  "Add image URL": "Add image URL",
22
21
  "Advanced actions": "ተጨማሪ ተግባራት",
@@ -29,7 +28,6 @@ const locale = {
29
28
  "Animated transitions": "Animated transitions",
30
29
  "Are you sure you want to clone this map and all its datalayers?": "እርግጠኛ ነዎት ይህንን ካርታ እና ሁሉንም የመረጃ ገጾች ማባዛት ይፈልጋሉ?",
31
30
  "Are you sure you want to delete this map?": "እርግጠኛ ነዎት ይህንን ካርታ መሰረዝ ይፈልጋሉ?",
32
- "Are you sure you want to delete this property on all the features?": "እርግጠኛ ነህ ይህንንባህርይ ከሁሉም ፊቸሮች ላይ መሰረዝ ትችላለህ",
33
31
  "Are you sure you want to restore this version?": "እርግጠኛ ነዎት ወደዚህኛው እትም መመለስ ይልጋሉ?",
34
32
  "Attach the map to my account": "Attach the map to my account",
35
33
  "attribution": "አትሪብዩሽን",
@@ -157,7 +155,6 @@ const locale = {
157
155
  "Format": "ፎርማት",
158
156
  "From zoom": "ከዙም",
159
157
  "full backup": "full backup",
160
- "Generic": "Generic",
161
158
  "GeoRSS (only link)": "GeoRSS (ሊንክ ብቻ)",
162
159
  "GeoRSS (title + image)": "GeoRSS (መጠሪያ + ምስል)",
163
160
  "Go to \"{coords}\"": "Go to \"{coords}\"",
@@ -273,7 +270,6 @@ const locale = {
273
270
  "Please be sure the licence is compliant with your use.": "እባክዎ ፈቃዱ እስርዎ ሊጠቀሙ ካሉበት አገልግሎት ጋር መጣጣሙን ያረጋግጡ",
274
271
  "Please choose a format": "እባክዎ ፎርማት ይምረጡ",
275
272
  "Please enter the name of the property": "እባክዎ የባህርይውን ስም ያስገቡ",
276
- "Please enter the new name of this property": "እባክዎን አዲሱን የባህርይውን ስም ያስገቡ",
277
273
  "Please save the map first": "Please save the map first",
278
274
  "Popup (large)": "Popup (large)",
279
275
  "Popup content style": "Popup content style",
@@ -406,7 +402,6 @@ const locale = {
406
402
  "Until": "Until",
407
403
  "Example: key1,key2|Label 2,key3|Label 3|checkbox": "Example: key1,key2|Label 2,key3|Label 3|checkbox",
408
404
  "Edit in OpenStreetMap": "Edit in OpenStreetMap",
409
- "Cannot determine latitude and longitude columns.": "Cannot determine latitude and longitude columns.",
410
405
  "Back to layers": "Back to layers",
411
406
  "Filters": "Filters",
412
407
  "Comma separated list of properties to use when filtering features by text input": "Comma separated list of properties to use when filtering features by text input",
@@ -543,7 +538,49 @@ const locale = {
543
538
  "Back to list": "Back to list",
544
539
  "Toggle rule": "Toggle rule",
545
540
  "Delete rule": "Delete rule",
546
- "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes."
541
+ "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes.",
542
+ "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.": "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.",
543
+ "More help resources": "More help resources",
544
+ "This map is a template": "This map is a template",
545
+ "Add text along path": "Add text along path",
546
+ "Text color": "Text color",
547
+ "Text offset": "Text offset",
548
+ "Text position": "Text position",
549
+ "start": "start",
550
+ "center": "center",
551
+ "end": "end",
552
+ "Text repeat": "Text repeat",
553
+ "Text rotate": "Text rotate",
554
+ "Text size": "Text size",
555
+ "Load map template": "Load map template",
556
+ "My templates": "My templates",
557
+ "From staff": "From staff",
558
+ "From community": "From community",
559
+ "You must select a template.": "You must select a template.",
560
+ "Line decoration": "Line decoration",
561
+ "Reuse this template": "Reuse this template",
562
+ "Create a new map using this template": "Create a new map using this template",
563
+ "Save template": "Save template",
564
+ "Load template": "Load template",
565
+ "Loading a template will apply predefined styles and settings to your map": "Loading a template will apply predefined styles and settings to your map",
566
+ "Load template with data": "Load template with data",
567
+ "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\".",
568
+ "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.",
569
+ "There is no public template yet.": "There is no public template yet.",
570
+ "Explore": "Explore",
571
+ "Import data from public open data portals": "Import data from public open data portals",
572
+ "Choose a portal": "Choose a portal",
573
+ "Limit results to current map view": "Limit results to current map view",
574
+ "Please choose an instance first.": "Please choose an instance first.",
575
+ "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)`.",
576
+ "Add a new field": "Add a new field",
577
+ "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?",
578
+ "Please enter the new name of this field": "Please enter the new name of this field",
579
+ "Cannot process MultiPoint": "Cannot process MultiPoint",
580
+ "Manage Fields": "Manage Fields",
581
+ "Rename this field": "Rename this field",
582
+ "Delete this field": "Delete this field",
583
+ "Double click to edit the name": "Double click to edit the name"
547
584
  }
548
585
  L.registerLocale("am_ET", locale)
549
586
  L.setLocale("am_ET")
@@ -16,7 +16,6 @@
16
16
  "Activate slideshow mode": "Activate slideshow mode",
17
17
  "Add a layer": "ሌየር ጨምር",
18
18
  "Add a line to the current multi": "ላሁኑ ብዝሀ መስመር ጨምር",
19
- "Add a new property": "አዲስ ባህርይ ጨምር",
20
19
  "Add a polygon to the current multi": "ላሁኑ ብዝሀ ፖሊጎን ጨምር",
21
20
  "Add image URL": "Add image URL",
22
21
  "Advanced actions": "ተጨማሪ ተግባራት",
@@ -29,7 +28,6 @@
29
28
  "Animated transitions": "Animated transitions",
30
29
  "Are you sure you want to clone this map and all its datalayers?": "እርግጠኛ ነዎት ይህንን ካርታ እና ሁሉንም የመረጃ ገጾች ማባዛት ይፈልጋሉ?",
31
30
  "Are you sure you want to delete this map?": "እርግጠኛ ነዎት ይህንን ካርታ መሰረዝ ይፈልጋሉ?",
32
- "Are you sure you want to delete this property on all the features?": "እርግጠኛ ነህ ይህንንባህርይ ከሁሉም ፊቸሮች ላይ መሰረዝ ትችላለህ",
33
31
  "Are you sure you want to restore this version?": "እርግጠኛ ነዎት ወደዚህኛው እትም መመለስ ይልጋሉ?",
34
32
  "Attach the map to my account": "Attach the map to my account",
35
33
  "attribution": "አትሪብዩሽን",
@@ -157,7 +155,6 @@
157
155
  "Format": "ፎርማት",
158
156
  "From zoom": "ከዙም",
159
157
  "full backup": "full backup",
160
- "Generic": "Generic",
161
158
  "GeoRSS (only link)": "GeoRSS (ሊንክ ብቻ)",
162
159
  "GeoRSS (title + image)": "GeoRSS (መጠሪያ + ምስል)",
163
160
  "Go to \"{coords}\"": "Go to \"{coords}\"",
@@ -273,7 +270,6 @@
273
270
  "Please be sure the licence is compliant with your use.": "እባክዎ ፈቃዱ እስርዎ ሊጠቀሙ ካሉበት አገልግሎት ጋር መጣጣሙን ያረጋግጡ",
274
271
  "Please choose a format": "እባክዎ ፎርማት ይምረጡ",
275
272
  "Please enter the name of the property": "እባክዎ የባህርይውን ስም ያስገቡ",
276
- "Please enter the new name of this property": "እባክዎን አዲሱን የባህርይውን ስም ያስገቡ",
277
273
  "Please save the map first": "Please save the map first",
278
274
  "Popup (large)": "Popup (large)",
279
275
  "Popup content style": "Popup content style",
@@ -406,7 +402,6 @@
406
402
  "Until": "Until",
407
403
  "Example: key1,key2|Label 2,key3|Label 3|checkbox": "Example: key1,key2|Label 2,key3|Label 3|checkbox",
408
404
  "Edit in OpenStreetMap": "Edit in OpenStreetMap",
409
- "Cannot determine latitude and longitude columns.": "Cannot determine latitude and longitude columns.",
410
405
  "Back to layers": "Back to layers",
411
406
  "Filters": "Filters",
412
407
  "Comma separated list of properties to use when filtering features by text input": "Comma separated list of properties to use when filtering features by text input",
@@ -543,5 +538,47 @@
543
538
  "Back to list": "Back to list",
544
539
  "Toggle rule": "Toggle rule",
545
540
  "Delete rule": "Delete rule",
546
- "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes."
541
+ "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes.",
542
+ "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.": "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.",
543
+ "More help resources": "More help resources",
544
+ "This map is a template": "This map is a template",
545
+ "Add text along path": "Add text along path",
546
+ "Text color": "Text color",
547
+ "Text offset": "Text offset",
548
+ "Text position": "Text position",
549
+ "start": "start",
550
+ "center": "center",
551
+ "end": "end",
552
+ "Text repeat": "Text repeat",
553
+ "Text rotate": "Text rotate",
554
+ "Text size": "Text size",
555
+ "Load map template": "Load map template",
556
+ "My templates": "My templates",
557
+ "From staff": "From staff",
558
+ "From community": "From community",
559
+ "You must select a template.": "You must select a template.",
560
+ "Line decoration": "Line decoration",
561
+ "Reuse this template": "Reuse this template",
562
+ "Create a new map using this template": "Create a new map using this template",
563
+ "Save template": "Save template",
564
+ "Load template": "Load template",
565
+ "Loading a template will apply predefined styles and settings to your map": "Loading a template will apply predefined styles and settings to your map",
566
+ "Load template with data": "Load template with data",
567
+ "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\".",
568
+ "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.",
569
+ "There is no public template yet.": "There is no public template yet.",
570
+ "Explore": "Explore",
571
+ "Import data from public open data portals": "Import data from public open data portals",
572
+ "Choose a portal": "Choose a portal",
573
+ "Limit results to current map view": "Limit results to current map view",
574
+ "Please choose an instance first.": "Please choose an instance first.",
575
+ "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)`.",
576
+ "Add a new field": "Add a new field",
577
+ "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?",
578
+ "Please enter the new name of this field": "Please enter the new name of this field",
579
+ "Cannot process MultiPoint": "Cannot process MultiPoint",
580
+ "Manage Fields": "Manage Fields",
581
+ "Rename this field": "Rename this field",
582
+ "Delete this field": "Delete this field",
583
+ "Double click to edit the name": "Double click to edit the name"
547
584
  }
@@ -16,7 +16,6 @@ const locale = {
16
16
  "Activate slideshow mode": "Activate slideshow mode",
17
17
  "Add a layer": "أضف طبقة",
18
18
  "Add a line to the current multi": "Add a line to the current multi",
19
- "Add a new property": "Add a new property",
20
19
  "Add a polygon to the current multi": "Add a polygon to the current multi",
21
20
  "Add image URL": "Add image URL",
22
21
  "Advanced actions": "Advanced actions",
@@ -29,7 +28,6 @@ const locale = {
29
28
  "Animated transitions": "Animated transitions",
30
29
  "Are you sure you want to clone this map and all its datalayers?": "Are you sure you want to clone this map and all its datalayers?",
31
30
  "Are you sure you want to delete this map?": "هل تريد فعلاً حذف هذه الخريطة ؟",
32
- "Are you sure you want to delete this property on all the features?": "Are you sure you want to delete this property on all the features?",
33
31
  "Are you sure you want to restore this version?": "Are you sure you want to restore this version?",
34
32
  "Attach the map to my account": "Attach the map to my account",
35
33
  "attribution": "attribution",
@@ -157,7 +155,6 @@ const locale = {
157
155
  "Format": "Format",
158
156
  "From zoom": "From zoom",
159
157
  "full backup": "full backup",
160
- "Generic": "Generic",
161
158
  "GeoRSS (only link)": "GeoRSS (only link)",
162
159
  "GeoRSS (title + image)": "GeoRSS (title + image)",
163
160
  "Go to \"{coords}\"": "Go to \"{coords}\"",
@@ -273,7 +270,6 @@ const locale = {
273
270
  "Please be sure the licence is compliant with your use.": "Please be sure the licence is compliant with your use.",
274
271
  "Please choose a format": "الرجاء إختيار الشكل",
275
272
  "Please enter the name of the property": "Please enter the name of the property",
276
- "Please enter the new name of this property": "Please enter the new name of this property",
277
273
  "Please save the map first": "Please save the map first",
278
274
  "Popup (large)": "Popup (large)",
279
275
  "Popup content style": "Popup content style",
@@ -406,7 +402,6 @@ const locale = {
406
402
  "Until": "Until",
407
403
  "Example: key1,key2|Label 2,key3|Label 3|checkbox": "Example: key1,key2|Label 2,key3|Label 3|checkbox",
408
404
  "Edit in OpenStreetMap": "Edit in OpenStreetMap",
409
- "Cannot determine latitude and longitude columns.": "Cannot determine latitude and longitude columns.",
410
405
  "Back to layers": "Back to layers",
411
406
  "Filters": "Filters",
412
407
  "Comma separated list of properties to use when filtering features by text input": "Comma separated list of properties to use when filtering features by text input",
@@ -543,7 +538,49 @@ const locale = {
543
538
  "Back to list": "Back to list",
544
539
  "Toggle rule": "Toggle rule",
545
540
  "Delete rule": "Delete rule",
546
- "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes."
541
+ "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes.",
542
+ "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.": "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.",
543
+ "More help resources": "More help resources",
544
+ "This map is a template": "This map is a template",
545
+ "Add text along path": "Add text along path",
546
+ "Text color": "Text color",
547
+ "Text offset": "Text offset",
548
+ "Text position": "Text position",
549
+ "start": "start",
550
+ "center": "center",
551
+ "end": "end",
552
+ "Text repeat": "Text repeat",
553
+ "Text rotate": "Text rotate",
554
+ "Text size": "Text size",
555
+ "Load map template": "Load map template",
556
+ "My templates": "My templates",
557
+ "From staff": "From staff",
558
+ "From community": "From community",
559
+ "You must select a template.": "You must select a template.",
560
+ "Line decoration": "Line decoration",
561
+ "Reuse this template": "Reuse this template",
562
+ "Create a new map using this template": "Create a new map using this template",
563
+ "Save template": "Save template",
564
+ "Load template": "Load template",
565
+ "Loading a template will apply predefined styles and settings to your map": "Loading a template will apply predefined styles and settings to your map",
566
+ "Load template with data": "Load template with data",
567
+ "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\".",
568
+ "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.",
569
+ "There is no public template yet.": "There is no public template yet.",
570
+ "Explore": "Explore",
571
+ "Import data from public open data portals": "Import data from public open data portals",
572
+ "Choose a portal": "Choose a portal",
573
+ "Limit results to current map view": "Limit results to current map view",
574
+ "Please choose an instance first.": "Please choose an instance first.",
575
+ "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)`.",
576
+ "Add a new field": "Add a new field",
577
+ "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?",
578
+ "Please enter the new name of this field": "Please enter the new name of this field",
579
+ "Cannot process MultiPoint": "Cannot process MultiPoint",
580
+ "Manage Fields": "Manage Fields",
581
+ "Rename this field": "Rename this field",
582
+ "Delete this field": "Delete this field",
583
+ "Double click to edit the name": "Double click to edit the name"
547
584
  }
548
585
  L.registerLocale("ar", locale)
549
586
  L.setLocale("ar")
@@ -16,7 +16,6 @@
16
16
  "Activate slideshow mode": "Activate slideshow mode",
17
17
  "Add a layer": "أضف طبقة",
18
18
  "Add a line to the current multi": "Add a line to the current multi",
19
- "Add a new property": "Add a new property",
20
19
  "Add a polygon to the current multi": "Add a polygon to the current multi",
21
20
  "Add image URL": "Add image URL",
22
21
  "Advanced actions": "Advanced actions",
@@ -29,7 +28,6 @@
29
28
  "Animated transitions": "Animated transitions",
30
29
  "Are you sure you want to clone this map and all its datalayers?": "Are you sure you want to clone this map and all its datalayers?",
31
30
  "Are you sure you want to delete this map?": "هل تريد فعلاً حذف هذه الخريطة ؟",
32
- "Are you sure you want to delete this property on all the features?": "Are you sure you want to delete this property on all the features?",
33
31
  "Are you sure you want to restore this version?": "Are you sure you want to restore this version?",
34
32
  "Attach the map to my account": "Attach the map to my account",
35
33
  "attribution": "attribution",
@@ -157,7 +155,6 @@
157
155
  "Format": "Format",
158
156
  "From zoom": "From zoom",
159
157
  "full backup": "full backup",
160
- "Generic": "Generic",
161
158
  "GeoRSS (only link)": "GeoRSS (only link)",
162
159
  "GeoRSS (title + image)": "GeoRSS (title + image)",
163
160
  "Go to \"{coords}\"": "Go to \"{coords}\"",
@@ -273,7 +270,6 @@
273
270
  "Please be sure the licence is compliant with your use.": "Please be sure the licence is compliant with your use.",
274
271
  "Please choose a format": "الرجاء إختيار الشكل",
275
272
  "Please enter the name of the property": "Please enter the name of the property",
276
- "Please enter the new name of this property": "Please enter the new name of this property",
277
273
  "Please save the map first": "Please save the map first",
278
274
  "Popup (large)": "Popup (large)",
279
275
  "Popup content style": "Popup content style",
@@ -406,7 +402,6 @@
406
402
  "Until": "Until",
407
403
  "Example: key1,key2|Label 2,key3|Label 3|checkbox": "Example: key1,key2|Label 2,key3|Label 3|checkbox",
408
404
  "Edit in OpenStreetMap": "Edit in OpenStreetMap",
409
- "Cannot determine latitude and longitude columns.": "Cannot determine latitude and longitude columns.",
410
405
  "Back to layers": "Back to layers",
411
406
  "Filters": "Filters",
412
407
  "Comma separated list of properties to use when filtering features by text input": "Comma separated list of properties to use when filtering features by text input",
@@ -543,5 +538,47 @@
543
538
  "Back to list": "Back to list",
544
539
  "Toggle rule": "Toggle rule",
545
540
  "Delete rule": "Delete rule",
546
- "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes."
541
+ "Cannot save layer, please try again in a few minutes.": "Cannot save layer, please try again in a few minutes.",
542
+ "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.": "Activate collaborative live editing on this map. Other users must reload the map after changing this setting.",
543
+ "More help resources": "More help resources",
544
+ "This map is a template": "This map is a template",
545
+ "Add text along path": "Add text along path",
546
+ "Text color": "Text color",
547
+ "Text offset": "Text offset",
548
+ "Text position": "Text position",
549
+ "start": "start",
550
+ "center": "center",
551
+ "end": "end",
552
+ "Text repeat": "Text repeat",
553
+ "Text rotate": "Text rotate",
554
+ "Text size": "Text size",
555
+ "Load map template": "Load map template",
556
+ "My templates": "My templates",
557
+ "From staff": "From staff",
558
+ "From community": "From community",
559
+ "You must select a template.": "You must select a template.",
560
+ "Line decoration": "Line decoration",
561
+ "Reuse this template": "Reuse this template",
562
+ "Create a new map using this template": "Create a new map using this template",
563
+ "Save template": "Save template",
564
+ "Load template": "Load template",
565
+ "Loading a template will apply predefined styles and settings to your map": "Loading a template will apply predefined styles and settings to your map",
566
+ "Load template with data": "Load template with data",
567
+ "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\".",
568
+ "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.",
569
+ "There is no public template yet.": "There is no public template yet.",
570
+ "Explore": "Explore",
571
+ "Import data from public open data portals": "Import data from public open data portals",
572
+ "Choose a portal": "Choose a portal",
573
+ "Limit results to current map view": "Limit results to current map view",
574
+ "Please choose an instance first.": "Please choose an instance first.",
575
+ "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)`.",
576
+ "Add a new field": "Add a new field",
577
+ "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?",
578
+ "Please enter the new name of this field": "Please enter the new name of this field",
579
+ "Cannot process MultiPoint": "Cannot process MultiPoint",
580
+ "Manage Fields": "Manage Fields",
581
+ "Rename this field": "Rename this field",
582
+ "Delete this field": "Delete this field",
583
+ "Double click to edit the name": "Double click to edit the name"
547
584
  }