umap-project 2.8.2__py3-none-any.whl → 2.9.0b0__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.
- umap/__init__.py +1 -1
- umap/asgi.py +12 -7
- umap/context_processors.py +1 -0
- umap/locale/en/LC_MESSAGES/django.po +102 -59
- umap/locale/fr/LC_MESSAGES/django.mo +0 -0
- umap/locale/fr/LC_MESSAGES/django.po +105 -61
- umap/management/commands/empty_trash.py +12 -1
- umap/migrations/0026_datalayer_modified_at_datalayer_share_status.py +26 -0
- umap/models.py +23 -3
- umap/settings/base.py +4 -1
- umap/static/umap/base.css +1 -1
- umap/static/umap/content.css +2 -22
- umap/static/umap/css/bar.css +7 -10
- umap/static/umap/css/form.css +28 -29
- umap/static/umap/css/icon.css +8 -2
- umap/static/umap/css/panel.css +2 -1
- umap/static/umap/css/tooltip.css +33 -31
- umap/static/umap/img/16-white.svg +2 -0
- umap/static/umap/img/16.svg +1 -1
- umap/static/umap/img/providers/bitbucket.png +0 -0
- umap/static/umap/img/providers/github.png +0 -0
- umap/static/umap/img/providers/keycloak.png +0 -0
- umap/static/umap/img/providers/openstreetmap-oauth2.png +0 -0
- umap/static/umap/img/providers/twitter-oauth2.png +0 -0
- umap/static/umap/img/source/16-white.svg +3 -1
- umap/static/umap/img/source/16.svg +1 -1
- umap/static/umap/js/components/alerts/alert.js +4 -1
- umap/static/umap/js/modules/browser.js +6 -6
- umap/static/umap/js/modules/caption.js +30 -7
- umap/static/umap/js/modules/data/features.js +21 -24
- umap/static/umap/js/modules/data/layer.js +71 -33
- umap/static/umap/js/modules/form/builder.js +241 -0
- umap/static/umap/js/modules/form/fields.js +1338 -0
- umap/static/umap/js/modules/formatter.js +5 -8
- umap/static/umap/js/modules/help.js +3 -1
- umap/static/umap/js/modules/importer.js +1 -1
- umap/static/umap/js/modules/permissions.js +5 -4
- umap/static/umap/js/modules/rendering/icon.js +5 -1
- umap/static/umap/js/modules/rendering/layers/classified.js +11 -7
- umap/static/umap/js/modules/rendering/layers/cluster.js +11 -1
- umap/static/umap/js/modules/rendering/map.js +0 -2
- umap/static/umap/js/modules/rules.js +2 -1
- umap/static/umap/js/modules/schema.js +5 -6
- umap/static/umap/js/modules/share.js +3 -3
- umap/static/umap/js/modules/sync/engine.js +18 -13
- umap/static/umap/js/modules/sync/updaters.js +8 -0
- umap/static/umap/js/modules/sync/websocket.js +10 -5
- umap/static/umap/js/modules/tableeditor.js +3 -2
- umap/static/umap/js/modules/ui/bar.js +17 -9
- umap/static/umap/js/modules/ui/base.js +7 -24
- umap/static/umap/js/modules/ui/tooltip.js +19 -11
- umap/static/umap/js/modules/umap.js +36 -24
- umap/static/umap/js/modules/utils.js +196 -12
- umap/static/umap/js/umap.controls.js +0 -12
- umap/static/umap/locale/br.js +21 -13
- umap/static/umap/locale/br.json +21 -13
- umap/static/umap/locale/ca.js +12 -4
- umap/static/umap/locale/ca.json +12 -4
- umap/static/umap/locale/cs_CZ.js +10 -4
- umap/static/umap/locale/cs_CZ.json +10 -4
- umap/static/umap/locale/de.js +12 -4
- umap/static/umap/locale/de.json +12 -4
- umap/static/umap/locale/el.js +12 -4
- umap/static/umap/locale/el.json +12 -4
- umap/static/umap/locale/en.js +9 -4
- umap/static/umap/locale/en.json +9 -4
- umap/static/umap/locale/es.js +20 -12
- umap/static/umap/locale/es.json +20 -12
- umap/static/umap/locale/eu.js +12 -4
- umap/static/umap/locale/eu.json +12 -4
- umap/static/umap/locale/fa_IR.js +12 -4
- umap/static/umap/locale/fa_IR.json +12 -4
- umap/static/umap/locale/fr.js +10 -5
- umap/static/umap/locale/fr.json +10 -5
- umap/static/umap/locale/gl.js +353 -345
- umap/static/umap/locale/gl.json +353 -345
- umap/static/umap/locale/hu.js +9 -4
- umap/static/umap/locale/hu.json +9 -4
- umap/static/umap/locale/it.js +100 -92
- umap/static/umap/locale/it.json +100 -92
- umap/static/umap/locale/ms.js +12 -4
- umap/static/umap/locale/ms.json +12 -4
- umap/static/umap/locale/nl.js +12 -4
- umap/static/umap/locale/nl.json +12 -4
- umap/static/umap/locale/pl.js +12 -4
- umap/static/umap/locale/pl.json +12 -4
- umap/static/umap/locale/pt.js +12 -4
- umap/static/umap/locale/pt.json +12 -4
- umap/static/umap/locale/pt_PT.js +12 -4
- umap/static/umap/locale/pt_PT.json +12 -4
- umap/static/umap/locale/th_TH.js +12 -4
- umap/static/umap/locale/th_TH.json +12 -4
- umap/static/umap/locale/zh_TW.js +10 -4
- umap/static/umap/locale/zh_TW.json +10 -4
- umap/static/umap/map.css +12 -8
- umap/static/umap/nav.css +2 -3
- umap/static/umap/unittests/utils.js +14 -0
- umap/static/umap/vars.css +2 -0
- umap/sync/__init__.py +0 -0
- umap/sync/app.py +181 -0
- umap/sync/payloads.py +49 -0
- umap/templates/auth/user_detail.html +4 -0
- umap/templates/auth/user_form.html +9 -6
- umap/templates/auth/user_stars.html +4 -0
- umap/templates/base.html +1 -1
- umap/templates/registration/login.html +2 -5
- umap/templates/umap/about.html +5 -0
- umap/templates/umap/about_summary.html +2 -2
- umap/templates/umap/components/provider.html +8 -0
- umap/templates/umap/js.html +0 -3
- umap/templates/umap/map_detail.html +1 -1
- umap/templates/umap/password_change.html +4 -0
- umap/templates/umap/password_change_done.html +4 -0
- umap/templates/umap/search.html +4 -0
- umap/templates/umap/team_confirm_delete.html +4 -0
- umap/templates/umap/team_detail.html +4 -0
- umap/templates/umap/team_form.html +4 -0
- umap/templates/umap/user_dashboard.html +1 -1
- umap/templates/umap/user_teams.html +4 -0
- umap/tests/base.py +3 -1
- umap/tests/integration/conftest.py +16 -23
- umap/tests/integration/test_basics.py +2 -2
- umap/tests/integration/test_caption.py +1 -0
- umap/tests/integration/test_draw_polygon.py +3 -3
- umap/tests/integration/test_edit_datalayer.py +1 -1
- umap/tests/integration/test_edit_map.py +3 -3
- umap/tests/integration/test_edit_polygon.py +1 -1
- umap/tests/integration/test_import.py +23 -1
- umap/tests/integration/test_optimistic_merge.py +1 -0
- umap/tests/integration/test_picto.py +8 -8
- umap/tests/integration/test_save.py +1 -0
- umap/tests/integration/test_star.py +13 -9
- umap/tests/integration/test_tableeditor.py +1 -0
- umap/tests/integration/test_websocket_sync.py +112 -33
- umap/tests/settings.py +2 -0
- umap/tests/test_datalayer.py +2 -3
- umap/tests/test_datalayer_views.py +20 -1
- umap/tests/test_empty_trash.py +10 -3
- umap/tests/test_map_views.py +11 -0
- umap/utils.py +24 -11
- umap/views.py +37 -6
- {umap_project-2.8.2.dist-info → umap_project-2.9.0b0.dist-info}/METADATA +15 -15
- {umap_project-2.8.2.dist-info → umap_project-2.9.0b0.dist-info}/RECORD +146 -145
- {umap_project-2.8.2.dist-info → umap_project-2.9.0b0.dist-info}/WHEEL +1 -1
- umap/management/commands/run_websocket_server.py +0 -23
- umap/settings/local_s3.py +0 -45
- umap/static/umap/bitbucket.png +0 -0
- umap/static/umap/github.png +0 -0
- umap/static/umap/js/umap.forms.js +0 -1242
- umap/static/umap/keycloak.png +0 -0
- umap/static/umap/openstreetmap.png +0 -0
- umap/static/umap/twitter.png +0 -0
- umap/static/umap/vendors/formbuilder/Leaflet.FormBuilder.js +0 -468
- umap/tests/test_websocket_server.py +0 -22
- umap/websocket_server.py +0 -202
- {umap_project-2.8.2.dist-info → umap_project-2.9.0b0.dist-info}/entry_points.txt +0 -0
- {umap_project-2.8.2.dist-info → umap_project-2.9.0b0.dist-info}/licenses/LICENSE +0 -0
|
@@ -34,6 +34,7 @@ import {
|
|
|
34
34
|
uMapAlert as Alert,
|
|
35
35
|
} from '../components/alerts/alert.js'
|
|
36
36
|
import Orderable from './orderable.js'
|
|
37
|
+
import { MutatingForm } from './form/builder.js'
|
|
37
38
|
|
|
38
39
|
export default class Umap extends ServerStored {
|
|
39
40
|
constructor(element, geojson) {
|
|
@@ -540,7 +541,13 @@ export default class Umap extends ServerStored {
|
|
|
540
541
|
if (SAVEMANAGER.isDirty) this.saveAll()
|
|
541
542
|
break
|
|
542
543
|
case 'z':
|
|
543
|
-
if (
|
|
544
|
+
if (Utils.isWritable(event.target)) {
|
|
545
|
+
used = false
|
|
546
|
+
break
|
|
547
|
+
}
|
|
548
|
+
if (SAVEMANAGER.isDirty) {
|
|
549
|
+
this.askForReset()
|
|
550
|
+
}
|
|
544
551
|
break
|
|
545
552
|
case 'm':
|
|
546
553
|
this._leafletMap.editTools.startMarker()
|
|
@@ -734,7 +741,7 @@ export default class Umap extends ServerStored {
|
|
|
734
741
|
const metadataFields = ['properties.name', 'properties.description']
|
|
735
742
|
|
|
736
743
|
DomUtil.createTitle(container, translate('Edit map details'), 'icon-caption')
|
|
737
|
-
const builder = new
|
|
744
|
+
const builder = new MutatingForm(this, metadataFields, {
|
|
738
745
|
className: 'map-metadata',
|
|
739
746
|
umap: this,
|
|
740
747
|
})
|
|
@@ -749,7 +756,7 @@ export default class Umap extends ServerStored {
|
|
|
749
756
|
'properties.permanentCredit',
|
|
750
757
|
'properties.permanentCreditBackground',
|
|
751
758
|
]
|
|
752
|
-
const creditsBuilder = new
|
|
759
|
+
const creditsBuilder = new MutatingForm(this, creditsFields, { umap: this })
|
|
753
760
|
credits.appendChild(creditsBuilder.build())
|
|
754
761
|
this.editPanel.open({ content: container })
|
|
755
762
|
}
|
|
@@ -770,7 +777,7 @@ export default class Umap extends ServerStored {
|
|
|
770
777
|
'properties.captionBar',
|
|
771
778
|
'properties.captionMenus',
|
|
772
779
|
])
|
|
773
|
-
const builder = new
|
|
780
|
+
const builder = new MutatingForm(this, UIFields, { umap: this })
|
|
774
781
|
const controlsOptions = DomUtil.createFieldset(
|
|
775
782
|
container,
|
|
776
783
|
translate('User interface options')
|
|
@@ -793,7 +800,7 @@ export default class Umap extends ServerStored {
|
|
|
793
800
|
'properties.dashArray',
|
|
794
801
|
]
|
|
795
802
|
|
|
796
|
-
const builder = new
|
|
803
|
+
const builder = new MutatingForm(this, shapeOptions, { umap: this })
|
|
797
804
|
const defaultShapeProperties = DomUtil.createFieldset(
|
|
798
805
|
container,
|
|
799
806
|
translate('Default shape properties')
|
|
@@ -812,7 +819,7 @@ export default class Umap extends ServerStored {
|
|
|
812
819
|
'properties.slugKey',
|
|
813
820
|
]
|
|
814
821
|
|
|
815
|
-
const builder = new
|
|
822
|
+
const builder = new MutatingForm(this, optionsFields, { umap: this })
|
|
816
823
|
const defaultProperties = DomUtil.createFieldset(
|
|
817
824
|
container,
|
|
818
825
|
translate('Default properties')
|
|
@@ -830,7 +837,7 @@ export default class Umap extends ServerStored {
|
|
|
830
837
|
'properties.labelInteractive',
|
|
831
838
|
'properties.outlinkTarget',
|
|
832
839
|
]
|
|
833
|
-
const builder = new
|
|
840
|
+
const builder = new MutatingForm(this, popupFields, { umap: this })
|
|
834
841
|
const popupFieldset = DomUtil.createFieldset(
|
|
835
842
|
container,
|
|
836
843
|
translate('Default interaction options')
|
|
@@ -887,7 +894,7 @@ export default class Umap extends ServerStored {
|
|
|
887
894
|
container,
|
|
888
895
|
translate('Custom background')
|
|
889
896
|
)
|
|
890
|
-
const builder = new
|
|
897
|
+
const builder = new MutatingForm(this, tilelayerFields, { umap: this })
|
|
891
898
|
customTilelayer.appendChild(builder.build())
|
|
892
899
|
}
|
|
893
900
|
|
|
@@ -935,7 +942,7 @@ export default class Umap extends ServerStored {
|
|
|
935
942
|
['properties.overlay.tms', { handler: 'Switch', label: translate('TMS format') }],
|
|
936
943
|
]
|
|
937
944
|
const overlay = DomUtil.createFieldset(container, translate('Custom overlay'))
|
|
938
|
-
const builder = new
|
|
945
|
+
const builder = new MutatingForm(this, overlayFields, { umap: this })
|
|
939
946
|
overlay.appendChild(builder.build())
|
|
940
947
|
}
|
|
941
948
|
|
|
@@ -962,7 +969,7 @@ export default class Umap extends ServerStored {
|
|
|
962
969
|
{ handler: 'BlurFloatInput', placeholder: translate('max East') },
|
|
963
970
|
],
|
|
964
971
|
]
|
|
965
|
-
const boundsBuilder = new
|
|
972
|
+
const boundsBuilder = new MutatingForm(this, boundsFields, { umap: this })
|
|
966
973
|
limitBounds.appendChild(boundsBuilder.build())
|
|
967
974
|
const boundsButtons = DomUtil.create('div', 'button-bar half', limitBounds)
|
|
968
975
|
DomUtil.createButton(
|
|
@@ -1027,14 +1034,7 @@ export default class Umap extends ServerStored {
|
|
|
1027
1034
|
{ handler: 'Switch', label: translate('Autostart when map is loaded') },
|
|
1028
1035
|
],
|
|
1029
1036
|
]
|
|
1030
|
-
const slideshowBuilder = new
|
|
1031
|
-
callback: () => {
|
|
1032
|
-
this.slideshow.load()
|
|
1033
|
-
// FIXME when we refactor formbuilder: this callback is called in a 'postsync'
|
|
1034
|
-
// event, which comes after the call of `setter` method, which will call the
|
|
1035
|
-
// map.render method, which should do this redraw.
|
|
1036
|
-
this.bottomBar.redraw()
|
|
1037
|
-
},
|
|
1037
|
+
const slideshowBuilder = new MutatingForm(this, slideshowFields, {
|
|
1038
1038
|
umap: this,
|
|
1039
1039
|
})
|
|
1040
1040
|
slideshow.appendChild(slideshowBuilder.build())
|
|
@@ -1042,7 +1042,9 @@ export default class Umap extends ServerStored {
|
|
|
1042
1042
|
|
|
1043
1043
|
_editSync(container) {
|
|
1044
1044
|
const sync = DomUtil.createFieldset(container, translate('Real-time collaboration'))
|
|
1045
|
-
const builder = new
|
|
1045
|
+
const builder = new MutatingForm(this, ['properties.syncEnabled'], {
|
|
1046
|
+
umap: this,
|
|
1047
|
+
})
|
|
1046
1048
|
sync.appendChild(builder.build())
|
|
1047
1049
|
}
|
|
1048
1050
|
|
|
@@ -1109,7 +1111,7 @@ export default class Umap extends ServerStored {
|
|
|
1109
1111
|
this._editOverlay(container)
|
|
1110
1112
|
this._editBounds(container)
|
|
1111
1113
|
this._editSlideshow(container)
|
|
1112
|
-
if (this.properties.websocketEnabled) {
|
|
1114
|
+
if (this.properties.websocketEnabled && this.id) {
|
|
1113
1115
|
this._editSync(container)
|
|
1114
1116
|
}
|
|
1115
1117
|
this._advancedActions(container)
|
|
@@ -1259,6 +1261,7 @@ export default class Umap extends ServerStored {
|
|
|
1259
1261
|
}
|
|
1260
1262
|
|
|
1261
1263
|
askForReset(e) {
|
|
1264
|
+
if (this.getProperty('syncEnabled')) return
|
|
1262
1265
|
this.dialog
|
|
1263
1266
|
.confirm(translate('Are you sure you want to cancel your changes?'))
|
|
1264
1267
|
.then(() => {
|
|
@@ -1347,10 +1350,14 @@ export default class Umap extends ServerStored {
|
|
|
1347
1350
|
}
|
|
1348
1351
|
this.topBar.redraw()
|
|
1349
1352
|
},
|
|
1353
|
+
'properties.slideshow.active': () => {
|
|
1354
|
+
this.slideshow.load()
|
|
1355
|
+
this.bottomBar.redraw()
|
|
1356
|
+
},
|
|
1350
1357
|
numberOfConnectedPeers: () => {
|
|
1351
1358
|
Utils.eachElement('.connected-peers span', (el) => {
|
|
1352
1359
|
if (this.sync.websocketConnected) {
|
|
1353
|
-
el.textContent = this.sync.
|
|
1360
|
+
el.textContent = Object.keys(this.sync.getPeers()).length
|
|
1354
1361
|
} else {
|
|
1355
1362
|
el.textContent = translate('Disconnected')
|
|
1356
1363
|
}
|
|
@@ -1359,7 +1366,11 @@ export default class Umap extends ServerStored {
|
|
|
1359
1366
|
},
|
|
1360
1367
|
'properties.starred': () => {
|
|
1361
1368
|
Utils.eachElement('.map-star', (el) => {
|
|
1362
|
-
el.classList.toggle('starred', this.properties.starred)
|
|
1369
|
+
el.classList.toggle('icon-starred', this.properties.starred)
|
|
1370
|
+
el.classList.toggle('icon-star', !this.properties.starred)
|
|
1371
|
+
})
|
|
1372
|
+
Utils.eachElement('.map-stars', (el) => {
|
|
1373
|
+
el.textContent = this.properties.stars || 0
|
|
1363
1374
|
})
|
|
1364
1375
|
},
|
|
1365
1376
|
}
|
|
@@ -1439,7 +1450,7 @@ export default class Umap extends ServerStored {
|
|
|
1439
1450
|
|
|
1440
1451
|
removeDataLayers() {
|
|
1441
1452
|
this.eachDataLayerReverse((datalayer) => {
|
|
1442
|
-
datalayer.
|
|
1453
|
+
datalayer.del()
|
|
1443
1454
|
})
|
|
1444
1455
|
}
|
|
1445
1456
|
|
|
@@ -1458,7 +1469,7 @@ export default class Umap extends ServerStored {
|
|
|
1458
1469
|
const row = DomUtil.create('li', 'orderable', ul)
|
|
1459
1470
|
DomUtil.createIcon(row, 'icon-drag', translate('Drag to reorder'))
|
|
1460
1471
|
datalayer.renderToolbox(row)
|
|
1461
|
-
const builder = new
|
|
1472
|
+
const builder = new MutatingForm(
|
|
1462
1473
|
datalayer,
|
|
1463
1474
|
[['options.name', { handler: 'EditableText' }]],
|
|
1464
1475
|
{ className: 'umap-form-inline' }
|
|
@@ -1542,6 +1553,7 @@ export default class Umap extends ServerStored {
|
|
|
1542
1553
|
return
|
|
1543
1554
|
}
|
|
1544
1555
|
this.properties.starred = data.starred
|
|
1556
|
+
this.properties.stars = data.stars
|
|
1545
1557
|
Alert.success(
|
|
1546
1558
|
data.starred
|
|
1547
1559
|
? translate('Map has been starred')
|
|
@@ -159,16 +159,13 @@ export function toHTML(r, options) {
|
|
|
159
159
|
r = r.replace(/\*(.*?)\*/g, '<em>$1</em>')
|
|
160
160
|
|
|
161
161
|
// links
|
|
162
|
-
r = r.replace(/(\[\[http)/g, '[[h_t_t_p') // Escape for avoiding clash between [[http://xxx]] and http://xxx
|
|
163
|
-
r = r.replace(/({{http)/g, '{{h_t_t_p')
|
|
164
|
-
r = r.replace(/(=http)/g, '=h_t_t_p') // http://xxx as query string, see https://github.com/umap-project/umap/issues/607
|
|
165
|
-
r = r.replace(/(https?:[^ \<)\n]*)/g, `<a target="_${target}" href="$1">$1</a>`)
|
|
166
162
|
r = r.replace(
|
|
167
|
-
|
|
168
|
-
|
|
163
|
+
/(^|\s|>|\()(https?:[^ \<)\n]*)/g,
|
|
164
|
+
`$1<a target="_${target}" href="$2">$2</a>`
|
|
169
165
|
)
|
|
166
|
+
r = r.replace(/\[\[(https?:[^\]|]*?)\]\]/g, `<a target="_${target}" href="$1">$1</a>`)
|
|
170
167
|
r = r.replace(
|
|
171
|
-
/\[\[(
|
|
168
|
+
/\[\[(https?:[^|]*?)\|(.*?)\]\]/g,
|
|
172
169
|
`<a target="_${target}" href="$1">$2</a>`
|
|
173
170
|
)
|
|
174
171
|
r = r.replace(/\[\[([^\]|]*?)\]\]/g, `<a target="_${target}" href="$1">$1</a>`)
|
|
@@ -176,15 +173,15 @@ export function toHTML(r, options) {
|
|
|
176
173
|
|
|
177
174
|
// iframe
|
|
178
175
|
r = r.replace(
|
|
179
|
-
/{{{(
|
|
176
|
+
/{{{(https?[^|{]*)}}}/g,
|
|
180
177
|
'<div><iframe frameborder="0" src="$1" width="100%" height="300px"></iframe></div>'
|
|
181
178
|
)
|
|
182
179
|
r = r.replace(
|
|
183
|
-
/{{{(
|
|
180
|
+
/{{{(https?[^|{]*)\|(\d*)(px)?}}}/g,
|
|
184
181
|
'<div><iframe frameborder="0" src="$1" width="100%" height="$2px"></iframe></div>'
|
|
185
182
|
)
|
|
186
183
|
r = r.replace(
|
|
187
|
-
/{{{(
|
|
184
|
+
/{{{(https?[^|{]*)\|(\d*)(px)?\*(\d*)(px)?}}}/g,
|
|
188
185
|
'<div><iframe frameborder="0" src="$1" width="$4px" height="$2px"></iframe></div>'
|
|
189
186
|
)
|
|
190
187
|
|
|
@@ -416,9 +413,11 @@ export function loadTemplate(html) {
|
|
|
416
413
|
}
|
|
417
414
|
|
|
418
415
|
export function loadTemplateWithRefs(html) {
|
|
419
|
-
const
|
|
416
|
+
const template = document.createElement('template')
|
|
417
|
+
template.innerHTML = html
|
|
418
|
+
const element = template.content.firstElementChild
|
|
420
419
|
const elements = {}
|
|
421
|
-
for (const node of
|
|
420
|
+
for (const node of template.content.querySelectorAll('[data-ref]')) {
|
|
422
421
|
elements[node.dataset.ref] = node
|
|
423
422
|
}
|
|
424
423
|
return [element, elements]
|
|
@@ -446,3 +445,188 @@ export function eachElement(selector, callback) {
|
|
|
446
445
|
callback(el)
|
|
447
446
|
}
|
|
448
447
|
}
|
|
448
|
+
|
|
449
|
+
export class WithEvents {
|
|
450
|
+
constructor() {
|
|
451
|
+
this._target = new EventTarget()
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
on(eventType, callback) {
|
|
455
|
+
if (typeof callback !== 'function') return
|
|
456
|
+
this._target.addEventListener(eventType, callback)
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
fire(eventType, detail) {
|
|
460
|
+
const event = new CustomEvent(eventType, { detail })
|
|
461
|
+
this._target.dispatchEvent(event)
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
export function isWritable(element) {
|
|
466
|
+
if (['TEXTAREA', 'INPUT'].includes(element.tagName)) return true
|
|
467
|
+
if (element.isContentEditable) return true
|
|
468
|
+
return false
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// From https://www.joshwcomeau.com/snippets/javascript/debounce/
|
|
472
|
+
export const debounce = (callback, wait) => {
|
|
473
|
+
let timeoutId = null
|
|
474
|
+
|
|
475
|
+
return (...args) => {
|
|
476
|
+
window.clearTimeout(timeoutId)
|
|
477
|
+
|
|
478
|
+
timeoutId = window.setTimeout(() => {
|
|
479
|
+
callback.apply(null, args)
|
|
480
|
+
}, wait)
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
export const COLORS = [
|
|
485
|
+
'Black',
|
|
486
|
+
'Navy',
|
|
487
|
+
'DarkBlue',
|
|
488
|
+
'MediumBlue',
|
|
489
|
+
'Blue',
|
|
490
|
+
'DarkGreen',
|
|
491
|
+
'Green',
|
|
492
|
+
'Teal',
|
|
493
|
+
'DarkCyan',
|
|
494
|
+
'DeepSkyBlue',
|
|
495
|
+
'DarkTurquoise',
|
|
496
|
+
'MediumSpringGreen',
|
|
497
|
+
'Lime',
|
|
498
|
+
'SpringGreen',
|
|
499
|
+
'Aqua',
|
|
500
|
+
'Cyan',
|
|
501
|
+
'MidnightBlue',
|
|
502
|
+
'DodgerBlue',
|
|
503
|
+
'LightSeaGreen',
|
|
504
|
+
'ForestGreen',
|
|
505
|
+
'SeaGreen',
|
|
506
|
+
'DarkSlateGray',
|
|
507
|
+
'DarkSlateGrey',
|
|
508
|
+
'LimeGreen',
|
|
509
|
+
'MediumSeaGreen',
|
|
510
|
+
'Turquoise',
|
|
511
|
+
'RoyalBlue',
|
|
512
|
+
'SteelBlue',
|
|
513
|
+
'DarkSlateBlue',
|
|
514
|
+
'MediumTurquoise',
|
|
515
|
+
'Indigo',
|
|
516
|
+
'DarkOliveGreen',
|
|
517
|
+
'CadetBlue',
|
|
518
|
+
'CornflowerBlue',
|
|
519
|
+
'MediumAquaMarine',
|
|
520
|
+
'DimGray',
|
|
521
|
+
'DimGrey',
|
|
522
|
+
'SlateBlue',
|
|
523
|
+
'OliveDrab',
|
|
524
|
+
'SlateGray',
|
|
525
|
+
'SlateGrey',
|
|
526
|
+
'LightSlateGray',
|
|
527
|
+
'LightSlateGrey',
|
|
528
|
+
'MediumSlateBlue',
|
|
529
|
+
'LawnGreen',
|
|
530
|
+
'Chartreuse',
|
|
531
|
+
'Aquamarine',
|
|
532
|
+
'Maroon',
|
|
533
|
+
'Purple',
|
|
534
|
+
'Olive',
|
|
535
|
+
'Gray',
|
|
536
|
+
'Grey',
|
|
537
|
+
'SkyBlue',
|
|
538
|
+
'LightSkyBlue',
|
|
539
|
+
'BlueViolet',
|
|
540
|
+
'DarkRed',
|
|
541
|
+
'DarkMagenta',
|
|
542
|
+
'SaddleBrown',
|
|
543
|
+
'DarkSeaGreen',
|
|
544
|
+
'LightGreen',
|
|
545
|
+
'MediumPurple',
|
|
546
|
+
'DarkViolet',
|
|
547
|
+
'PaleGreen',
|
|
548
|
+
'DarkOrchid',
|
|
549
|
+
'YellowGreen',
|
|
550
|
+
'Sienna',
|
|
551
|
+
'Brown',
|
|
552
|
+
'DarkGray',
|
|
553
|
+
'DarkGrey',
|
|
554
|
+
'LightBlue',
|
|
555
|
+
'GreenYellow',
|
|
556
|
+
'PaleTurquoise',
|
|
557
|
+
'LightSteelBlue',
|
|
558
|
+
'PowderBlue',
|
|
559
|
+
'FireBrick',
|
|
560
|
+
'DarkGoldenRod',
|
|
561
|
+
'MediumOrchid',
|
|
562
|
+
'RosyBrown',
|
|
563
|
+
'DarkKhaki',
|
|
564
|
+
'Silver',
|
|
565
|
+
'MediumVioletRed',
|
|
566
|
+
'IndianRed',
|
|
567
|
+
'Peru',
|
|
568
|
+
'Chocolate',
|
|
569
|
+
'Tan',
|
|
570
|
+
'LightGray',
|
|
571
|
+
'LightGrey',
|
|
572
|
+
'Thistle',
|
|
573
|
+
'Orchid',
|
|
574
|
+
'GoldenRod',
|
|
575
|
+
'PaleVioletRed',
|
|
576
|
+
'Crimson',
|
|
577
|
+
'Gainsboro',
|
|
578
|
+
'Plum',
|
|
579
|
+
'BurlyWood',
|
|
580
|
+
'LightCyan',
|
|
581
|
+
'Lavender',
|
|
582
|
+
'DarkSalmon',
|
|
583
|
+
'Violet',
|
|
584
|
+
'PaleGoldenRod',
|
|
585
|
+
'LightCoral',
|
|
586
|
+
'Khaki',
|
|
587
|
+
'AliceBlue',
|
|
588
|
+
'HoneyDew',
|
|
589
|
+
'Azure',
|
|
590
|
+
'SandyBrown',
|
|
591
|
+
'Wheat',
|
|
592
|
+
'Beige',
|
|
593
|
+
'WhiteSmoke',
|
|
594
|
+
'MintCream',
|
|
595
|
+
'GhostWhite',
|
|
596
|
+
'Salmon',
|
|
597
|
+
'AntiqueWhite',
|
|
598
|
+
'Linen',
|
|
599
|
+
'LightGoldenRodYellow',
|
|
600
|
+
'OldLace',
|
|
601
|
+
'Red',
|
|
602
|
+
'Fuchsia',
|
|
603
|
+
'Magenta',
|
|
604
|
+
'DeepPink',
|
|
605
|
+
'OrangeRed',
|
|
606
|
+
'Tomato',
|
|
607
|
+
'HotPink',
|
|
608
|
+
'Coral',
|
|
609
|
+
'DarkOrange',
|
|
610
|
+
'LightSalmon',
|
|
611
|
+
'Orange',
|
|
612
|
+
'LightPink',
|
|
613
|
+
'Pink',
|
|
614
|
+
'Gold',
|
|
615
|
+
'PeachPuff',
|
|
616
|
+
'NavajoWhite',
|
|
617
|
+
'Moccasin',
|
|
618
|
+
'Bisque',
|
|
619
|
+
'MistyRose',
|
|
620
|
+
'BlanchedAlmond',
|
|
621
|
+
'PapayaWhip',
|
|
622
|
+
'LavenderBlush',
|
|
623
|
+
'SeaShell',
|
|
624
|
+
'Cornsilk',
|
|
625
|
+
'LemonChiffon',
|
|
626
|
+
'FloralWhite',
|
|
627
|
+
'Snow',
|
|
628
|
+
'Yellow',
|
|
629
|
+
'LightYellow',
|
|
630
|
+
'Ivory',
|
|
631
|
+
'White',
|
|
632
|
+
]
|
|
@@ -491,18 +491,6 @@ U.CaptionControl = L.Control.Button.extend({
|
|
|
491
491
|
},
|
|
492
492
|
})
|
|
493
493
|
|
|
494
|
-
U.StarControl = L.Control.Button.extend({
|
|
495
|
-
options: {
|
|
496
|
-
position: 'topleft',
|
|
497
|
-
title: L._('Star this map'),
|
|
498
|
-
className: 'leaflet-control-star map-star umap-control',
|
|
499
|
-
},
|
|
500
|
-
|
|
501
|
-
onClick: function () {
|
|
502
|
-
this._umap.star()
|
|
503
|
-
},
|
|
504
|
-
})
|
|
505
|
-
|
|
506
494
|
L.Control.Embed = L.Control.Button.extend({
|
|
507
495
|
options: {
|
|
508
496
|
position: 'topleft',
|
umap/static/umap/locale/br.js
CHANGED
|
@@ -19,7 +19,6 @@ const locale = {
|
|
|
19
19
|
"Add a new property": "Ouzhpennañ ur perzh nevez",
|
|
20
20
|
"Add a polygon to the current multi": "Ouzhpennañ ul lieskorn d'ar strollad a-vremañ",
|
|
21
21
|
"Add image URL": "Ouzhpennañ URL ar skeudenn",
|
|
22
|
-
"Add": "Ouzhpennañ",
|
|
23
22
|
"Advanced actions": "Oberoù araokaet",
|
|
24
23
|
"Advanced properties": "Perzhioù araokaet",
|
|
25
24
|
"All data and settings of the map": "Holl roadennoù hag arventennoù ar gartenn",
|
|
@@ -120,7 +119,6 @@ const locale = {
|
|
|
120
119
|
"Display the locate control": "Diskwel an afell \"lec'hiañ\"",
|
|
121
120
|
"Display the measure control": "Diskwel an afell muzuliañ",
|
|
122
121
|
"Display the search control": "Diskwel an afell \"klask\"",
|
|
123
|
-
"Display the star map button": "Diskouez an afell evit spilhennañ ar gartenn",
|
|
124
122
|
"Display the tile layers control": "Diskwel an afell \"cheñch foñs ar gartenn\"",
|
|
125
123
|
"Display the zoom control": "Diskwel an afelloù \"zoumañ\" ha \"dizoumañ\"",
|
|
126
124
|
"Do you want to display a caption bar?": "Diskwel ur varrenn alc'hwez?",
|
|
@@ -183,12 +181,12 @@ const locale = {
|
|
|
183
181
|
"Icon shape": "Furm an ikon",
|
|
184
182
|
"Icon symbol": "Arouez an ikon",
|
|
185
183
|
"If false, the polygon or line will act as a part of the underlying map.": "If false, the polygon or line will act as a part of the underlying map.",
|
|
186
|
-
"Iframe with custom height (in px): {{{https://iframe.url.com|height}}}": "Iframe
|
|
187
|
-
"Iframe with custom height and width (in px): {{{https://iframe.url.com|height*width}}}": "Iframe
|
|
184
|
+
"Iframe with custom height (in px): {{{https://iframe.url.com|height}}}": "Iframe gant uhelder personelaet (e pikselioù): {{{https://iframe.url.com|height}}}",
|
|
185
|
+
"Iframe with custom height and width (in px): {{{https://iframe.url.com|height*width}}}": "Iframe gant mentoù personelaet (e pikselioù): {{{https://iframe.url.com|height*width}}}",
|
|
188
186
|
"iframe": "iframe",
|
|
189
187
|
"Iframe: {{{https://iframe.url.com}}}": "Iframe: {{{https://iframe.url.com}}}",
|
|
190
|
-
"Image with custom width (in px): {{https://image.url.com|width}}": "
|
|
191
|
-
"Image: {{https://image.url.com}}": "
|
|
188
|
+
"Image with custom width (in px): {{https://image.url.com|width}}": "Skeudenn gant ledander personelaet (e pikselioù): {{https://image.url.com|width}}",
|
|
189
|
+
"Image: {{https://image.url.com}}": "Skeudenn: {{https://image.url.com}}",
|
|
192
190
|
"Import data": "Enporzhiañ roadennoù",
|
|
193
191
|
"Import in a new layer": "Enporzhiañ ur gwiskad nevez",
|
|
194
192
|
"Imports all umap data, including layers and settings.": "Enporzhiañ holl roadennoù ar gartenn, ar gwiskadoù hag an arventennoù en o zouez.",
|
|
@@ -216,7 +214,7 @@ const locale = {
|
|
|
216
214
|
"Limit bounds": "Bevennoù geografek",
|
|
217
215
|
"Link to view the map": "Liamm evit gwelet ar gartenn",
|
|
218
216
|
"Link to…": "Liamm etrezek...",
|
|
219
|
-
"Link with text: [[https://example.com|text of the link]]": "
|
|
217
|
+
"Link with text: [[https://example.com|text of the link]]": "Liamm gant testenn: [[https://skouer.bzh|testenn al liamm]]",
|
|
220
218
|
"Long credits": "Kredadoù hir",
|
|
221
219
|
"Longitude": "Hedred",
|
|
222
220
|
"Make main shape": "Tres pennañ",
|
|
@@ -320,7 +318,7 @@ const locale = {
|
|
|
320
318
|
"Show this layer in the caption": "Diskouez ar gwiskad-mañ en alc'hwez",
|
|
321
319
|
"Show/hide layer": "Diskouez/kuzhat ar gwiskad",
|
|
322
320
|
"Side panel": "Panell gostez",
|
|
323
|
-
"Simple link: [[https://example.com]]": "
|
|
321
|
+
"Simple link: [[https://example.com]]": "Liamm simpl: [[https://skouer.bzh]]",
|
|
324
322
|
"Simplify": "Eeunaat",
|
|
325
323
|
"Skipping unknown geometry.type: {type}": "Tremen e-bioù tikedenn geometry.type dianav: {type}",
|
|
326
324
|
"Slideshow": "Diaporama",
|
|
@@ -515,12 +513,22 @@ const locale = {
|
|
|
515
513
|
"Manage collaborators": "Merañ ar c'henlabourerien",
|
|
516
514
|
"show/hide all layers": "diskouez/kuzhat an holl wiskadoù",
|
|
517
515
|
"zoom to data extent": "zoom to data extent",
|
|
518
|
-
"download visible data": "
|
|
519
|
-
"
|
|
520
|
-
"Import helpers": "
|
|
521
|
-
"Import helpers will fill the URL field for you.": "Import helpers will fill the URL field for you.",
|
|
516
|
+
"download visible data": "Pellgargañ ar roadennoù war-wel",
|
|
517
|
+
"Import helpers": "Skoazellerien enporzhiañ",
|
|
518
|
+
"Import helpers will fill the URL field for you.": "Ar skoazellerien enporzhiañ a leunio maezienn an URL evidoc'h.",
|
|
522
519
|
"Wikipedia": "Wikipedia",
|
|
523
|
-
"Save draft": "
|
|
520
|
+
"Save draft": "Enrollañ ar brouilhed",
|
|
521
|
+
"No data has been found for import": "No data has been found for import",
|
|
522
|
+
"Successfully imported {count} feature(s)": "Successfully imported {count} feature(s)",
|
|
523
|
+
"Disconnected": "Disconnected",
|
|
524
|
+
"You must be logged in": "You must be logged in",
|
|
525
|
+
"Created at {date}": "Created at {date}",
|
|
526
|
+
"Modified at {date}": "Modified at {date}",
|
|
527
|
+
"on hover": "on hover",
|
|
528
|
+
"Cannot load remote data for layer \"{layer}\" with url \"{url}\"": "Cannot load remote data for layer \"{layer}\" with url \"{url}\"",
|
|
529
|
+
"Cannot parse remote data for layer \"{layer}\" with url \"{url}\"": "Cannot parse remote data for layer \"{layer}\" with url \"{url}\"",
|
|
530
|
+
"Import failed: invalid data": "Import failed: invalid data",
|
|
531
|
+
"Anonymous": "Anonymous"
|
|
524
532
|
}
|
|
525
533
|
L.registerLocale("br", locale)
|
|
526
534
|
L.setLocale("br")
|
umap/static/umap/locale/br.json
CHANGED
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
"Add a new property": "Ouzhpennañ ur perzh nevez",
|
|
20
20
|
"Add a polygon to the current multi": "Ouzhpennañ ul lieskorn d'ar strollad a-vremañ",
|
|
21
21
|
"Add image URL": "Ouzhpennañ URL ar skeudenn",
|
|
22
|
-
"Add": "Ouzhpennañ",
|
|
23
22
|
"Advanced actions": "Oberoù araokaet",
|
|
24
23
|
"Advanced properties": "Perzhioù araokaet",
|
|
25
24
|
"All data and settings of the map": "Holl roadennoù hag arventennoù ar gartenn",
|
|
@@ -120,7 +119,6 @@
|
|
|
120
119
|
"Display the locate control": "Diskwel an afell \"lec'hiañ\"",
|
|
121
120
|
"Display the measure control": "Diskwel an afell muzuliañ",
|
|
122
121
|
"Display the search control": "Diskwel an afell \"klask\"",
|
|
123
|
-
"Display the star map button": "Diskouez an afell evit spilhennañ ar gartenn",
|
|
124
122
|
"Display the tile layers control": "Diskwel an afell \"cheñch foñs ar gartenn\"",
|
|
125
123
|
"Display the zoom control": "Diskwel an afelloù \"zoumañ\" ha \"dizoumañ\"",
|
|
126
124
|
"Do you want to display a caption bar?": "Diskwel ur varrenn alc'hwez?",
|
|
@@ -183,12 +181,12 @@
|
|
|
183
181
|
"Icon shape": "Furm an ikon",
|
|
184
182
|
"Icon symbol": "Arouez an ikon",
|
|
185
183
|
"If false, the polygon or line will act as a part of the underlying map.": "If false, the polygon or line will act as a part of the underlying map.",
|
|
186
|
-
"Iframe with custom height (in px): {{{https://iframe.url.com|height}}}": "Iframe
|
|
187
|
-
"Iframe with custom height and width (in px): {{{https://iframe.url.com|height*width}}}": "Iframe
|
|
184
|
+
"Iframe with custom height (in px): {{{https://iframe.url.com|height}}}": "Iframe gant uhelder personelaet (e pikselioù): {{{https://iframe.url.com|height}}}",
|
|
185
|
+
"Iframe with custom height and width (in px): {{{https://iframe.url.com|height*width}}}": "Iframe gant mentoù personelaet (e pikselioù): {{{https://iframe.url.com|height*width}}}",
|
|
188
186
|
"iframe": "iframe",
|
|
189
187
|
"Iframe: {{{https://iframe.url.com}}}": "Iframe: {{{https://iframe.url.com}}}",
|
|
190
|
-
"Image with custom width (in px): {{https://image.url.com|width}}": "
|
|
191
|
-
"Image: {{https://image.url.com}}": "
|
|
188
|
+
"Image with custom width (in px): {{https://image.url.com|width}}": "Skeudenn gant ledander personelaet (e pikselioù): {{https://image.url.com|width}}",
|
|
189
|
+
"Image: {{https://image.url.com}}": "Skeudenn: {{https://image.url.com}}",
|
|
192
190
|
"Import data": "Enporzhiañ roadennoù",
|
|
193
191
|
"Import in a new layer": "Enporzhiañ ur gwiskad nevez",
|
|
194
192
|
"Imports all umap data, including layers and settings.": "Enporzhiañ holl roadennoù ar gartenn, ar gwiskadoù hag an arventennoù en o zouez.",
|
|
@@ -216,7 +214,7 @@
|
|
|
216
214
|
"Limit bounds": "Bevennoù geografek",
|
|
217
215
|
"Link to view the map": "Liamm evit gwelet ar gartenn",
|
|
218
216
|
"Link to…": "Liamm etrezek...",
|
|
219
|
-
"Link with text: [[https://example.com|text of the link]]": "
|
|
217
|
+
"Link with text: [[https://example.com|text of the link]]": "Liamm gant testenn: [[https://skouer.bzh|testenn al liamm]]",
|
|
220
218
|
"Long credits": "Kredadoù hir",
|
|
221
219
|
"Longitude": "Hedred",
|
|
222
220
|
"Make main shape": "Tres pennañ",
|
|
@@ -320,7 +318,7 @@
|
|
|
320
318
|
"Show this layer in the caption": "Diskouez ar gwiskad-mañ en alc'hwez",
|
|
321
319
|
"Show/hide layer": "Diskouez/kuzhat ar gwiskad",
|
|
322
320
|
"Side panel": "Panell gostez",
|
|
323
|
-
"Simple link: [[https://example.com]]": "
|
|
321
|
+
"Simple link: [[https://example.com]]": "Liamm simpl: [[https://skouer.bzh]]",
|
|
324
322
|
"Simplify": "Eeunaat",
|
|
325
323
|
"Skipping unknown geometry.type: {type}": "Tremen e-bioù tikedenn geometry.type dianav: {type}",
|
|
326
324
|
"Slideshow": "Diaporama",
|
|
@@ -515,10 +513,20 @@
|
|
|
515
513
|
"Manage collaborators": "Merañ ar c'henlabourerien",
|
|
516
514
|
"show/hide all layers": "diskouez/kuzhat an holl wiskadoù",
|
|
517
515
|
"zoom to data extent": "zoom to data extent",
|
|
518
|
-
"download visible data": "
|
|
519
|
-
"
|
|
520
|
-
"Import helpers": "
|
|
521
|
-
"Import helpers will fill the URL field for you.": "Import helpers will fill the URL field for you.",
|
|
516
|
+
"download visible data": "Pellgargañ ar roadennoù war-wel",
|
|
517
|
+
"Import helpers": "Skoazellerien enporzhiañ",
|
|
518
|
+
"Import helpers will fill the URL field for you.": "Ar skoazellerien enporzhiañ a leunio maezienn an URL evidoc'h.",
|
|
522
519
|
"Wikipedia": "Wikipedia",
|
|
523
|
-
"Save draft": "
|
|
520
|
+
"Save draft": "Enrollañ ar brouilhed",
|
|
521
|
+
"No data has been found for import": "No data has been found for import",
|
|
522
|
+
"Successfully imported {count} feature(s)": "Successfully imported {count} feature(s)",
|
|
523
|
+
"Disconnected": "Disconnected",
|
|
524
|
+
"You must be logged in": "You must be logged in",
|
|
525
|
+
"Created at {date}": "Created at {date}",
|
|
526
|
+
"Modified at {date}": "Modified at {date}",
|
|
527
|
+
"on hover": "on hover",
|
|
528
|
+
"Cannot load remote data for layer \"{layer}\" with url \"{url}\"": "Cannot load remote data for layer \"{layer}\" with url \"{url}\"",
|
|
529
|
+
"Cannot parse remote data for layer \"{layer}\" with url \"{url}\"": "Cannot parse remote data for layer \"{layer}\" with url \"{url}\"",
|
|
530
|
+
"Import failed: invalid data": "Import failed: invalid data",
|
|
531
|
+
"Anonymous": "Anonymous"
|
|
524
532
|
}
|
umap/static/umap/locale/ca.js
CHANGED
|
@@ -19,7 +19,6 @@ const locale = {
|
|
|
19
19
|
"Add a new property": "Add a new property",
|
|
20
20
|
"Add a polygon to the current multi": "Add a polygon to the current multi",
|
|
21
21
|
"Add image URL": "Add image URL",
|
|
22
|
-
"Add": "Add",
|
|
23
22
|
"Advanced actions": "Opcions avançades",
|
|
24
23
|
"Advanced properties": "Propietats avançades",
|
|
25
24
|
"All data and settings of the map": "Totes les dades i configuracions del mapa",
|
|
@@ -120,7 +119,6 @@ const locale = {
|
|
|
120
119
|
"Display the locate control": "Mostra el control de ubicar",
|
|
121
120
|
"Display the measure control": "Mostra el botó mesura",
|
|
122
121
|
"Display the search control": "Mostra el control de cerca",
|
|
123
|
-
"Display the star map button": "Mostra el botó per a destacar el mapa",
|
|
124
122
|
"Display the tile layers control": "Mostra el botó de les capes de tessel·les",
|
|
125
123
|
"Display the zoom control": "Mostra el control del zoom",
|
|
126
124
|
"Do you want to display a caption bar?": "Voleu mostrar la barra de llegenda?",
|
|
@@ -516,11 +514,21 @@ const locale = {
|
|
|
516
514
|
"show/hide all layers": "show/hide all layers",
|
|
517
515
|
"zoom to data extent": "zoom to data extent",
|
|
518
516
|
"download visible data": "download visible data",
|
|
519
|
-
"{connectedPeers} peer(s) currently connected to this map": "{connectedPeers} peer(s) currently connected to this map",
|
|
520
517
|
"Import helpers": "Import helpers",
|
|
521
518
|
"Import helpers will fill the URL field for you.": "Import helpers will fill the URL field for you.",
|
|
522
519
|
"Wikipedia": "Wikipedia",
|
|
523
|
-
"Save draft": "Save draft"
|
|
520
|
+
"Save draft": "Save draft",
|
|
521
|
+
"No data has been found for import": "No data has been found for import",
|
|
522
|
+
"Successfully imported {count} feature(s)": "Successfully imported {count} feature(s)",
|
|
523
|
+
"Disconnected": "Disconnected",
|
|
524
|
+
"You must be logged in": "You must be logged in",
|
|
525
|
+
"Created at {date}": "Created at {date}",
|
|
526
|
+
"Modified at {date}": "Modified at {date}",
|
|
527
|
+
"on hover": "on hover",
|
|
528
|
+
"Cannot load remote data for layer \"{layer}\" with url \"{url}\"": "Cannot load remote data for layer \"{layer}\" with url \"{url}\"",
|
|
529
|
+
"Cannot parse remote data for layer \"{layer}\" with url \"{url}\"": "Cannot parse remote data for layer \"{layer}\" with url \"{url}\"",
|
|
530
|
+
"Import failed: invalid data": "Import failed: invalid data",
|
|
531
|
+
"Anonymous": "Anonymous"
|
|
524
532
|
}
|
|
525
533
|
L.registerLocale("ca", locale)
|
|
526
534
|
L.setLocale("ca")
|