umap-project 3.4.0b1__py3-none-any.whl → 3.4.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.
- umap/__init__.py +1 -1
- umap/context_processors.py +1 -1
- umap/locale/da/LC_MESSAGES/django.mo +0 -0
- umap/locale/da/LC_MESSAGES/django.po +20 -16
- umap/locale/en/LC_MESSAGES/django.po +18 -14
- umap/locale/es/LC_MESSAGES/django.mo +0 -0
- umap/locale/es/LC_MESSAGES/django.po +20 -16
- umap/locale/fr/LC_MESSAGES/django.mo +0 -0
- umap/locale/fr/LC_MESSAGES/django.po +18 -14
- umap/locale/pl/LC_MESSAGES/django.mo +0 -0
- umap/locale/pl/LC_MESSAGES/django.po +72 -71
- umap/migrations/0018_datalayer_uuid.py +1 -1
- umap/models.py +7 -3
- umap/settings/local.py.sample +1 -1
- umap/static/umap/content.css +0 -3
- umap/static/umap/css/bar.css +9 -6
- umap/static/umap/css/form.css +27 -11
- umap/static/umap/css/popup.css +1 -0
- umap/static/umap/js/components/base.js +1 -1
- umap/static/umap/js/components/copiable.js +47 -0
- umap/static/umap/js/modules/autocomplete.js +31 -58
- umap/static/umap/js/modules/browser.js +8 -8
- umap/static/umap/js/modules/data/features.js +33 -36
- umap/static/umap/js/modules/data/fields.js +446 -0
- umap/static/umap/js/modules/data/layer.js +76 -93
- umap/static/umap/js/modules/domutils.js +24 -4
- umap/static/umap/js/modules/filters.js +20 -47
- umap/static/umap/js/modules/form/fields.js +4 -4
- umap/static/umap/js/modules/formatter.js +9 -1
- umap/static/umap/js/modules/help.js +13 -14
- umap/static/umap/js/modules/i18n.js +1 -1
- umap/static/umap/js/modules/importer.js +18 -27
- umap/static/umap/js/modules/importers/banfr.js +0 -1
- umap/static/umap/js/modules/importers/cadastrefr.js +19 -19
- umap/static/umap/js/modules/importers/communesfr.js +7 -8
- umap/static/umap/js/modules/importers/datasets.js +14 -14
- umap/static/umap/js/modules/importers/geodatamine.js +20 -22
- umap/static/umap/js/modules/importers/opendata.js +10 -0
- umap/static/umap/js/modules/importers/overpass.js +19 -18
- umap/static/umap/js/modules/managers.js +1 -265
- umap/static/umap/js/modules/permissions.js +5 -3
- umap/static/umap/js/modules/rendering/controls.js +6 -4
- umap/static/umap/js/modules/rendering/icon.js +5 -9
- umap/static/umap/js/modules/rendering/layers/base.js +1 -1
- umap/static/umap/js/modules/rendering/layers/classified.js +16 -11
- umap/static/umap/js/modules/rendering/layers/heat.js +27 -21
- umap/static/umap/js/modules/rendering/map.js +22 -22
- umap/static/umap/js/modules/rendering/popup.js +6 -3
- umap/static/umap/js/modules/rendering/template.js +31 -37
- umap/static/umap/js/modules/rendering/ui.js +1 -2
- umap/static/umap/js/modules/rules.js +34 -41
- umap/static/umap/js/modules/schema.js +0 -7
- umap/static/umap/js/modules/share.js +36 -69
- umap/static/umap/js/modules/slideshow.js +3 -3
- umap/static/umap/js/modules/tableeditor.js +0 -1
- umap/static/umap/js/modules/ui/bar.js +51 -32
- umap/static/umap/js/modules/ui/dialog.js +10 -1
- umap/static/umap/js/modules/ui/panel.js +28 -23
- umap/static/umap/js/modules/ui/tooltip.js +1 -1
- umap/static/umap/js/modules/umap.js +84 -84
- umap/static/umap/js/modules/utils.js +13 -4
- umap/static/umap/js/umap.controls.js +33 -14
- umap/static/umap/locale/am_ET.js +19 -8
- umap/static/umap/locale/am_ET.json +19 -8
- umap/static/umap/locale/ar.js +19 -8
- umap/static/umap/locale/ar.json +19 -8
- umap/static/umap/locale/ast.js +19 -8
- umap/static/umap/locale/ast.json +19 -8
- umap/static/umap/locale/bg.js +19 -8
- umap/static/umap/locale/bg.json +19 -8
- umap/static/umap/locale/br.js +20 -9
- umap/static/umap/locale/br.json +20 -9
- umap/static/umap/locale/ca.js +19 -8
- umap/static/umap/locale/ca.json +19 -8
- umap/static/umap/locale/cs_CZ.js +20 -9
- umap/static/umap/locale/cs_CZ.json +20 -9
- umap/static/umap/locale/da.js +54 -43
- umap/static/umap/locale/da.json +54 -43
- umap/static/umap/locale/de.js +44 -33
- umap/static/umap/locale/de.json +44 -33
- umap/static/umap/locale/el.js +20 -9
- umap/static/umap/locale/el.json +20 -9
- umap/static/umap/locale/en.js +20 -9
- umap/static/umap/locale/en.json +20 -9
- umap/static/umap/locale/en_US.json +19 -8
- umap/static/umap/locale/es.js +55 -44
- umap/static/umap/locale/es.json +55 -44
- umap/static/umap/locale/et.js +20 -9
- umap/static/umap/locale/et.json +20 -9
- umap/static/umap/locale/eu.js +25 -14
- umap/static/umap/locale/eu.json +25 -14
- umap/static/umap/locale/fa_IR.js +20 -9
- umap/static/umap/locale/fa_IR.json +20 -9
- umap/static/umap/locale/fi.js +19 -8
- umap/static/umap/locale/fi.json +19 -8
- umap/static/umap/locale/fr.js +21 -10
- umap/static/umap/locale/fr.json +21 -10
- umap/static/umap/locale/gl.js +147 -136
- umap/static/umap/locale/gl.json +147 -136
- umap/static/umap/locale/he.js +19 -8
- umap/static/umap/locale/he.json +19 -8
- umap/static/umap/locale/hr.js +19 -8
- umap/static/umap/locale/hr.json +19 -8
- umap/static/umap/locale/hu.js +62 -51
- umap/static/umap/locale/hu.json +62 -51
- umap/static/umap/locale/id.js +19 -8
- umap/static/umap/locale/id.json +19 -8
- umap/static/umap/locale/is.js +20 -9
- umap/static/umap/locale/is.json +20 -9
- umap/static/umap/locale/it.js +20 -9
- umap/static/umap/locale/it.json +20 -9
- umap/static/umap/locale/ja.js +19 -8
- umap/static/umap/locale/ja.json +19 -8
- umap/static/umap/locale/ko.js +19 -8
- umap/static/umap/locale/ko.json +19 -8
- umap/static/umap/locale/lt.js +19 -8
- umap/static/umap/locale/lt.json +19 -8
- umap/static/umap/locale/ms.js +20 -9
- umap/static/umap/locale/ms.json +20 -9
- umap/static/umap/locale/nl.js +20 -9
- umap/static/umap/locale/nl.json +20 -9
- umap/static/umap/locale/no.js +19 -8
- umap/static/umap/locale/no.json +19 -8
- umap/static/umap/locale/pl.js +56 -45
- umap/static/umap/locale/pl.json +56 -45
- umap/static/umap/locale/pl_PL.json +19 -8
- umap/static/umap/locale/pt.js +20 -9
- umap/static/umap/locale/pt.json +20 -9
- umap/static/umap/locale/pt_BR.js +19 -8
- umap/static/umap/locale/pt_BR.json +19 -8
- umap/static/umap/locale/pt_PT.js +19 -8
- umap/static/umap/locale/pt_PT.json +19 -8
- umap/static/umap/locale/ro.js +19 -8
- umap/static/umap/locale/ro.json +19 -8
- umap/static/umap/locale/ru.js +19 -8
- umap/static/umap/locale/ru.json +19 -8
- umap/static/umap/locale/si.js +1 -1
- umap/static/umap/locale/si.json +1 -1
- umap/static/umap/locale/sk_SK.js +19 -8
- umap/static/umap/locale/sk_SK.json +19 -8
- umap/static/umap/locale/sl.js +19 -8
- umap/static/umap/locale/sl.json +19 -8
- umap/static/umap/locale/sr.js +19 -8
- umap/static/umap/locale/sr.json +19 -8
- umap/static/umap/locale/sv.js +19 -8
- umap/static/umap/locale/sv.json +19 -8
- umap/static/umap/locale/th_TH.js +19 -8
- umap/static/umap/locale/th_TH.json +19 -8
- umap/static/umap/locale/tr.js +19 -8
- umap/static/umap/locale/tr.json +19 -8
- umap/static/umap/locale/uk_UA.js +19 -8
- umap/static/umap/locale/uk_UA.json +19 -8
- umap/static/umap/locale/vi.js +19 -8
- umap/static/umap/locale/vi.json +19 -8
- umap/static/umap/locale/vi_VN.json +19 -8
- umap/static/umap/locale/zh.js +19 -8
- umap/static/umap/locale/zh.json +19 -8
- umap/static/umap/locale/zh_CN.json +19 -8
- umap/static/umap/locale/zh_TW.Big5.json +19 -8
- umap/static/umap/locale/zh_TW.js +53 -42
- umap/static/umap/locale/zh_TW.json +53 -42
- umap/static/umap/map.css +8 -7
- umap/static/umap/unittests/utils.js +7 -7
- umap/templates/umap/content_footer.html +1 -0
- umap/templates/umap/css.html +0 -2
- umap/templates/umap/js.html +1 -3
- umap/templates/umap/login_popup_end.html +2 -2
- umap/tests/integration/conftest.py +11 -2
- umap/tests/integration/test_anonymous_owned_map.py +2 -2
- umap/tests/integration/test_conditional_rules.py +107 -52
- umap/tests/integration/test_draw_polygon.py +4 -0
- umap/tests/integration/test_draw_polyline.py +11 -0
- umap/tests/integration/test_edit_datalayer.py +1 -1
- umap/tests/integration/test_fields.py +19 -0
- umap/tests/integration/test_filters.py +6 -7
- umap/tests/integration/test_iframe.py +1 -1
- umap/tests/integration/test_import.py +23 -0
- umap/tests/integration/test_map.py +2 -2
- umap/tests/integration/test_map_preview.py +1 -1
- umap/tests/integration/test_owned_map.py +2 -2
- umap/tests/integration/test_picto.py +1 -1
- umap/tests/integration/test_popup.py +31 -0
- umap/tests/integration/test_remote_data.py +4 -4
- umap/tests/integration/test_save.py +1 -1
- umap/tests/integration/test_search.py +41 -0
- umap/tests/integration/test_share.py +2 -2
- umap/tests/integration/test_team.py +1 -1
- umap/tests/integration/test_websocket_sync.py +69 -20
- umap/tests/test_dashboard.py +1 -1
- umap/tests/test_statics.py +2 -2
- umap/tests/test_utils.py +4 -1
- umap/tests/test_views.py +1 -1
- umap/utils.py +3 -2
- {umap_project-3.4.0b1.dist-info → umap_project-3.4.2.dist-info}/METADATA +17 -17
- {umap_project-3.4.0b1.dist-info → umap_project-3.4.2.dist-info}/RECORD +198 -199
- umap/static/umap/js/umap.core.js +0 -93
- umap/static/umap/vendors/editinosm/Leaflet.EditInOSM.css +0 -46
- umap/static/umap/vendors/editinosm/Leaflet.EditInOSM.js +0 -240
- umap/static/umap/vendors/editinosm/edit-in-osm.png +0 -0
- {umap_project-3.4.0b1.dist-info → umap_project-3.4.2.dist-info}/WHEEL +0 -0
- {umap_project-3.4.0b1.dist-info → umap_project-3.4.2.dist-info}/entry_points.txt +0 -0
- {umap_project-3.4.0b1.dist-info → umap_project-3.4.2.dist-info}/licenses/LICENSE +0 -0
umap/static/umap/locale/zh_TW.js
CHANGED
|
@@ -70,7 +70,7 @@ const locale = {
|
|
|
70
70
|
"color": "色彩",
|
|
71
71
|
"Comma separated list of numbers, including min and max values.": "用逗號分隔數字,包括最小與最大值。",
|
|
72
72
|
"Comma separated list of properties to use for sorting features. To reverse the sort, put a minus sign (-) before. Eg. mykey,-otherkey.": "用逗號分隔屬性清單來排序圖徵。要保存排序,在槊面加上減號 (-1),例如 mykey,-otherkey。",
|
|
73
|
-
"Comma, tab or semi-colon separated values. SRS WGS84 is implied. Only Point geometries are imported. The import will look at the column headers for any mention of «lat» and «lon» at the
|
|
73
|
+
"Comma, tab or semi-colon separated values. SRS WGS84 is implied. Only Point geometries are imported. The import will look at the column headers for any mention of «lat» and «lon» at the beginning of the header, case insensitive. All other column are imported as properties.": "使用逗號、定位鍵或是分號分隔的地理數據。預設座標系為 SRS WGS84。只會匯入地理座標點。匯入時抓取 «lat» 與 «lon» 開頭的欄位資料,不分大小寫。其他欄位則歸入屬性資料。",
|
|
74
74
|
"Congratulations, your map has been created!": "恭喜您的地圖已經新增完成",
|
|
75
75
|
"Continue line": "連續線段",
|
|
76
76
|
"Coordinates": "座標",
|
|
@@ -99,7 +99,6 @@ const locale = {
|
|
|
99
99
|
"Delete this vertex (Alt+Click)": "刪除頂點 (Alt+Click)",
|
|
100
100
|
"Delete": "刪除",
|
|
101
101
|
"description": "描述",
|
|
102
|
-
"Direct link": "直接連結",
|
|
103
102
|
"Directions from here": "從此處開始導航",
|
|
104
103
|
"Display label": "顯示標籤",
|
|
105
104
|
"Display measure": "Display measure",
|
|
@@ -135,7 +134,6 @@ const locale = {
|
|
|
135
134
|
"Edit this feature": "編輯此圖徵",
|
|
136
135
|
"Edit": "編輯",
|
|
137
136
|
"Embed and link options": "嵌入與連結選項",
|
|
138
|
-
"Embed the map": "嵌入地圖",
|
|
139
137
|
"Emoji & Character": "表情符號和字元",
|
|
140
138
|
"Empty": "空白",
|
|
141
139
|
"Equidistant": "等距",
|
|
@@ -159,7 +157,6 @@ const locale = {
|
|
|
159
157
|
"Go to \"{coords}\"": "去 \"{coords}\"",
|
|
160
158
|
"Go to the homepage": "前往首頁",
|
|
161
159
|
"Go to «{feature}»": "轉至 «{feature}»",
|
|
162
|
-
"Heatmap intensity property": "熱點圖強度屬性",
|
|
163
160
|
"Heatmap radius": "熱點圖半徑",
|
|
164
161
|
"Heatmap": "熱點圖",
|
|
165
162
|
"height": "高度",
|
|
@@ -240,7 +237,6 @@ const locale = {
|
|
|
240
237
|
"No licence has been set": "尚未設定授權條例",
|
|
241
238
|
"No results": "沒有結果",
|
|
242
239
|
"no": "否",
|
|
243
|
-
"No.": "無。",
|
|
244
240
|
"None": "以上皆非",
|
|
245
241
|
"Number of desired classes (default 5)": "偏好的類別數量 (預設為 5)",
|
|
246
242
|
"On the bottom": "在底部",
|
|
@@ -255,7 +251,6 @@ const locale = {
|
|
|
255
251
|
"Open share & download panel": "開啟分享與下載面板",
|
|
256
252
|
"Open this map extent in a map editor to provide more accurate data to OpenStreetMap": "在地圖編輯器中打開此地圖,提供更多準確資料給 OpenStreetMap",
|
|
257
253
|
"OpenStreetMap": "開放街圖",
|
|
258
|
-
"Optional intensity property for heatmap": "選用的熱圖 heatmap 強度屬性",
|
|
259
254
|
"Optional. Same as color if not set.": "可選,若您未選取顏色,則採用預設值",
|
|
260
255
|
"Optional.": "可選",
|
|
261
256
|
"Override clustering radius (default 80)": "覆蓋群集分析半徑 (預設80)",
|
|
@@ -297,7 +292,6 @@ const locale = {
|
|
|
297
292
|
"settings": "設定",
|
|
298
293
|
"Shape properties": "形狀屬性",
|
|
299
294
|
"Share and download": "分享與下載",
|
|
300
|
-
"Share this link to open a customized map view": "分享這連結來開啟客製化地圖檢視",
|
|
301
295
|
"Short credits": "簡短工作人員名單",
|
|
302
296
|
"Short link": "短網址",
|
|
303
297
|
"Show this layer in the caption": "在標題顯示此圖層",
|
|
@@ -604,44 +598,61 @@ const locale = {
|
|
|
604
598
|
"Right-click to edit": "按右鍵來編輯",
|
|
605
599
|
"Draw along routes": "沿著路線繪製",
|
|
606
600
|
"Skipping invalid geometry": "略過無效的地理空間",
|
|
607
|
-
"Add filter": "
|
|
608
|
-
"Min/Max": "
|
|
609
|
-
"Multiple choices": "
|
|
610
|
-
"Exclusive choice": "
|
|
611
|
-
"Yes/No": "
|
|
612
|
-
"Add a field prior to create a filter.": "
|
|
613
|
-
"Edit this filter": "
|
|
614
|
-
"Remove this filter": "
|
|
615
|
-
"Apply filter to": "
|
|
616
|
-
"Filter on": "
|
|
617
|
-
"Human readable name of the filter": "
|
|
618
|
-
"Widget for the filter": "
|
|
619
|
-
"Edit filter": "
|
|
620
|
-
"Edit this field": "
|
|
621
|
-
"all layers": "
|
|
622
|
-
"single layer": "
|
|
623
|
-
"unset": "
|
|
624
|
-
"Filters will be displayed in the data browser to ease data selection.": "
|
|
601
|
+
"Add filter": "新增篩選",
|
|
602
|
+
"Min/Max": "最小/最大",
|
|
603
|
+
"Multiple choices": "多重選擇",
|
|
604
|
+
"Exclusive choice": "單一選擇",
|
|
605
|
+
"Yes/No": "是/否",
|
|
606
|
+
"Add a field prior to create a filter.": "在新增篩選前新增欄位。",
|
|
607
|
+
"Edit this filter": "編輯這個篩選",
|
|
608
|
+
"Remove this filter": "移除這個篩選",
|
|
609
|
+
"Apply filter to": "套用篩選到",
|
|
610
|
+
"Filter on": "篩選啟用",
|
|
611
|
+
"Human readable name of the filter": "這個篩選的人類可讀名稱",
|
|
612
|
+
"Widget for the filter": "這個篩選的小工具",
|
|
613
|
+
"Edit filter": "編輯篩選",
|
|
614
|
+
"Edit this field": "編輯這個欄位",
|
|
615
|
+
"all layers": "所有圖層",
|
|
616
|
+
"single layer": "單一圖層",
|
|
617
|
+
"unset": "取消設定",
|
|
618
|
+
"Filters will be displayed in the data browser to ease data selection.": "資料瀏覽器會顯示篩選,來減少資料選擇程度。",
|
|
625
619
|
"[key=\"value\"][key2=\"value2\"] (eg. [boundary=\"educational\"][name=\"Académie de Lyon\"])": "[key=\"value\"][key2=\"value2\"] (eg. [boundary=\"educational\"][name=\"Académie de Lyon\"])",
|
|
626
|
-
"Field Name": "
|
|
627
|
-
"Field Type": "
|
|
628
|
-
"Manage field": "
|
|
629
|
-
"Add filter for this field": "
|
|
630
|
-
"Name cannot be empty.": "
|
|
631
|
-
"Are you sure you want to delete this field on all the data?": "
|
|
632
|
-
"Anonymous map": "
|
|
633
|
-
"Edit filter for this field": "
|
|
634
|
-
"
|
|
635
|
-
"
|
|
636
|
-
"
|
|
637
|
-
"
|
|
638
|
-
"Elevation has been added!": "Elevation has been added!",
|
|
620
|
+
"Field Name": "欄位名稱",
|
|
621
|
+
"Field Type": "欄位類型",
|
|
622
|
+
"Manage field": "管理欄位",
|
|
623
|
+
"Add filter for this field": "新增篩選到這一欄位",
|
|
624
|
+
"Name cannot be empty.": "名稱無法是空白的。",
|
|
625
|
+
"Are you sure you want to delete this field on all the data?": "你確定要刪除所有資料當中的這個欄位?",
|
|
626
|
+
"Anonymous map": "暱名地圖",
|
|
627
|
+
"Edit filter for this field": "為這個欄位編輯篩選",
|
|
628
|
+
"Hey, you created a map without an account!": "嗨,你在沒有帳號狀態下創建地圖!",
|
|
629
|
+
"This map is anonymous, do you want to attach it to your account?": "這份地圖是暱名的,你想要連結到你的帳號嗎?",
|
|
630
|
+
"The map has been upgraded to latest version, please save it.": "這份地圖已經更新至最新版本,請先儲存。",
|
|
631
|
+
"Elevation has been added!": "已經新增海拔高度了!",
|
|
639
632
|
"Mapillary": "Mapillary",
|
|
640
633
|
"Wikidata": "Wikidata",
|
|
641
|
-
"Wikipedia contributors": "
|
|
642
|
-
"See on Wikipedia": "
|
|
643
|
-
"Anonymous map: update who can see and edit it": "
|
|
644
|
-
"Login": "
|
|
634
|
+
"Wikipedia contributors": "維基百科貢獻者",
|
|
635
|
+
"See on Wikipedia": "在維基百科上檢視",
|
|
636
|
+
"Anonymous map: update who can see and edit it": "暱名地圖,任何人都可以檢視與編輯",
|
|
637
|
+
"Login": "登入",
|
|
638
|
+
"Manage filters": "管理篩選",
|
|
639
|
+
"Map (all layers)": "地圖 (所有圖層)",
|
|
640
|
+
"Add a filter for this field": "新增篩選到這欄位",
|
|
641
|
+
"Short text": "簡短文字",
|
|
642
|
+
"Text": "文字",
|
|
643
|
+
"Number": "數值",
|
|
644
|
+
"Date": "日期",
|
|
645
|
+
"Date and time": "日期與時間",
|
|
646
|
+
"List of values": "變數列表",
|
|
647
|
+
"Yes / No": "是 / 否",
|
|
648
|
+
"Select field to compute intensity": "選擇欄位運算強度",
|
|
649
|
+
"Optional intensity field to compute heatmap": "選擇性強度欄位來計算熱力圖",
|
|
650
|
+
"All layers": "所有圖層",
|
|
651
|
+
"Comma separated list of values": "逗號分隔清單的值",
|
|
652
|
+
"Share": "分享",
|
|
653
|
+
"Customized link": "自訂連結",
|
|
654
|
+
"Iframe": "頁面框",
|
|
655
|
+
"№": "№"
|
|
645
656
|
}
|
|
646
657
|
L.registerLocale("zh_TW", locale)
|
|
647
658
|
L.setLocale("zh_TW")
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"color": "色彩",
|
|
71
71
|
"Comma separated list of numbers, including min and max values.": "用逗號分隔數字,包括最小與最大值。",
|
|
72
72
|
"Comma separated list of properties to use for sorting features. To reverse the sort, put a minus sign (-) before. Eg. mykey,-otherkey.": "用逗號分隔屬性清單來排序圖徵。要保存排序,在槊面加上減號 (-1),例如 mykey,-otherkey。",
|
|
73
|
-
"Comma, tab or semi-colon separated values. SRS WGS84 is implied. Only Point geometries are imported. The import will look at the column headers for any mention of «lat» and «lon» at the
|
|
73
|
+
"Comma, tab or semi-colon separated values. SRS WGS84 is implied. Only Point geometries are imported. The import will look at the column headers for any mention of «lat» and «lon» at the beginning of the header, case insensitive. All other column are imported as properties.": "使用逗號、定位鍵或是分號分隔的地理數據。預設座標系為 SRS WGS84。只會匯入地理座標點。匯入時抓取 «lat» 與 «lon» 開頭的欄位資料,不分大小寫。其他欄位則歸入屬性資料。",
|
|
74
74
|
"Congratulations, your map has been created!": "恭喜您的地圖已經新增完成",
|
|
75
75
|
"Continue line": "連續線段",
|
|
76
76
|
"Coordinates": "座標",
|
|
@@ -99,7 +99,6 @@
|
|
|
99
99
|
"Delete this vertex (Alt+Click)": "刪除頂點 (Alt+Click)",
|
|
100
100
|
"Delete": "刪除",
|
|
101
101
|
"description": "描述",
|
|
102
|
-
"Direct link": "直接連結",
|
|
103
102
|
"Directions from here": "從此處開始導航",
|
|
104
103
|
"Display label": "顯示標籤",
|
|
105
104
|
"Display measure": "Display measure",
|
|
@@ -135,7 +134,6 @@
|
|
|
135
134
|
"Edit this feature": "編輯此圖徵",
|
|
136
135
|
"Edit": "編輯",
|
|
137
136
|
"Embed and link options": "嵌入與連結選項",
|
|
138
|
-
"Embed the map": "嵌入地圖",
|
|
139
137
|
"Emoji & Character": "表情符號和字元",
|
|
140
138
|
"Empty": "空白",
|
|
141
139
|
"Equidistant": "等距",
|
|
@@ -159,7 +157,6 @@
|
|
|
159
157
|
"Go to \"{coords}\"": "去 \"{coords}\"",
|
|
160
158
|
"Go to the homepage": "前往首頁",
|
|
161
159
|
"Go to «{feature}»": "轉至 «{feature}»",
|
|
162
|
-
"Heatmap intensity property": "熱點圖強度屬性",
|
|
163
160
|
"Heatmap radius": "熱點圖半徑",
|
|
164
161
|
"Heatmap": "熱點圖",
|
|
165
162
|
"height": "高度",
|
|
@@ -240,7 +237,6 @@
|
|
|
240
237
|
"No licence has been set": "尚未設定授權條例",
|
|
241
238
|
"No results": "沒有結果",
|
|
242
239
|
"no": "否",
|
|
243
|
-
"No.": "無。",
|
|
244
240
|
"None": "以上皆非",
|
|
245
241
|
"Number of desired classes (default 5)": "偏好的類別數量 (預設為 5)",
|
|
246
242
|
"On the bottom": "在底部",
|
|
@@ -255,7 +251,6 @@
|
|
|
255
251
|
"Open share & download panel": "開啟分享與下載面板",
|
|
256
252
|
"Open this map extent in a map editor to provide more accurate data to OpenStreetMap": "在地圖編輯器中打開此地圖,提供更多準確資料給 OpenStreetMap",
|
|
257
253
|
"OpenStreetMap": "開放街圖",
|
|
258
|
-
"Optional intensity property for heatmap": "選用的熱圖 heatmap 強度屬性",
|
|
259
254
|
"Optional. Same as color if not set.": "可選,若您未選取顏色,則採用預設值",
|
|
260
255
|
"Optional.": "可選",
|
|
261
256
|
"Override clustering radius (default 80)": "覆蓋群集分析半徑 (預設80)",
|
|
@@ -297,7 +292,6 @@
|
|
|
297
292
|
"settings": "設定",
|
|
298
293
|
"Shape properties": "形狀屬性",
|
|
299
294
|
"Share and download": "分享與下載",
|
|
300
|
-
"Share this link to open a customized map view": "分享這連結來開啟客製化地圖檢視",
|
|
301
295
|
"Short credits": "簡短工作人員名單",
|
|
302
296
|
"Short link": "短網址",
|
|
303
297
|
"Show this layer in the caption": "在標題顯示此圖層",
|
|
@@ -604,42 +598,59 @@
|
|
|
604
598
|
"Right-click to edit": "按右鍵來編輯",
|
|
605
599
|
"Draw along routes": "沿著路線繪製",
|
|
606
600
|
"Skipping invalid geometry": "略過無效的地理空間",
|
|
607
|
-
"Add filter": "
|
|
608
|
-
"Min/Max": "
|
|
609
|
-
"Multiple choices": "
|
|
610
|
-
"Exclusive choice": "
|
|
611
|
-
"Yes/No": "
|
|
612
|
-
"Add a field prior to create a filter.": "
|
|
613
|
-
"Edit this filter": "
|
|
614
|
-
"Remove this filter": "
|
|
615
|
-
"Apply filter to": "
|
|
616
|
-
"Filter on": "
|
|
617
|
-
"Human readable name of the filter": "
|
|
618
|
-
"Widget for the filter": "
|
|
619
|
-
"Edit filter": "
|
|
620
|
-
"Edit this field": "
|
|
621
|
-
"all layers": "
|
|
622
|
-
"single layer": "
|
|
623
|
-
"unset": "
|
|
624
|
-
"Filters will be displayed in the data browser to ease data selection.": "
|
|
601
|
+
"Add filter": "新增篩選",
|
|
602
|
+
"Min/Max": "最小/最大",
|
|
603
|
+
"Multiple choices": "多重選擇",
|
|
604
|
+
"Exclusive choice": "單一選擇",
|
|
605
|
+
"Yes/No": "是/否",
|
|
606
|
+
"Add a field prior to create a filter.": "在新增篩選前新增欄位。",
|
|
607
|
+
"Edit this filter": "編輯這個篩選",
|
|
608
|
+
"Remove this filter": "移除這個篩選",
|
|
609
|
+
"Apply filter to": "套用篩選到",
|
|
610
|
+
"Filter on": "篩選啟用",
|
|
611
|
+
"Human readable name of the filter": "這個篩選的人類可讀名稱",
|
|
612
|
+
"Widget for the filter": "這個篩選的小工具",
|
|
613
|
+
"Edit filter": "編輯篩選",
|
|
614
|
+
"Edit this field": "編輯這個欄位",
|
|
615
|
+
"all layers": "所有圖層",
|
|
616
|
+
"single layer": "單一圖層",
|
|
617
|
+
"unset": "取消設定",
|
|
618
|
+
"Filters will be displayed in the data browser to ease data selection.": "資料瀏覽器會顯示篩選,來減少資料選擇程度。",
|
|
625
619
|
"[key=\"value\"][key2=\"value2\"] (eg. [boundary=\"educational\"][name=\"Académie de Lyon\"])": "[key=\"value\"][key2=\"value2\"] (eg. [boundary=\"educational\"][name=\"Académie de Lyon\"])",
|
|
626
|
-
"Field Name": "
|
|
627
|
-
"Field Type": "
|
|
628
|
-
"Manage field": "
|
|
629
|
-
"Add filter for this field": "
|
|
630
|
-
"Name cannot be empty.": "
|
|
631
|
-
"Are you sure you want to delete this field on all the data?": "
|
|
632
|
-
"Anonymous map": "
|
|
633
|
-
"Edit filter for this field": "
|
|
634
|
-
"
|
|
635
|
-
"
|
|
636
|
-
"
|
|
637
|
-
"
|
|
638
|
-
"Elevation has been added!": "Elevation has been added!",
|
|
620
|
+
"Field Name": "欄位名稱",
|
|
621
|
+
"Field Type": "欄位類型",
|
|
622
|
+
"Manage field": "管理欄位",
|
|
623
|
+
"Add filter for this field": "新增篩選到這一欄位",
|
|
624
|
+
"Name cannot be empty.": "名稱無法是空白的。",
|
|
625
|
+
"Are you sure you want to delete this field on all the data?": "你確定要刪除所有資料當中的這個欄位?",
|
|
626
|
+
"Anonymous map": "暱名地圖",
|
|
627
|
+
"Edit filter for this field": "為這個欄位編輯篩選",
|
|
628
|
+
"Hey, you created a map without an account!": "嗨,你在沒有帳號狀態下創建地圖!",
|
|
629
|
+
"This map is anonymous, do you want to attach it to your account?": "這份地圖是暱名的,你想要連結到你的帳號嗎?",
|
|
630
|
+
"The map has been upgraded to latest version, please save it.": "這份地圖已經更新至最新版本,請先儲存。",
|
|
631
|
+
"Elevation has been added!": "已經新增海拔高度了!",
|
|
639
632
|
"Mapillary": "Mapillary",
|
|
640
633
|
"Wikidata": "Wikidata",
|
|
641
|
-
"Wikipedia contributors": "
|
|
642
|
-
"See on Wikipedia": "
|
|
643
|
-
"Anonymous map: update who can see and edit it": "
|
|
644
|
-
"Login": "
|
|
634
|
+
"Wikipedia contributors": "維基百科貢獻者",
|
|
635
|
+
"See on Wikipedia": "在維基百科上檢視",
|
|
636
|
+
"Anonymous map: update who can see and edit it": "暱名地圖,任何人都可以檢視與編輯",
|
|
637
|
+
"Login": "登入",
|
|
638
|
+
"Manage filters": "管理篩選",
|
|
639
|
+
"Map (all layers)": "地圖 (所有圖層)",
|
|
640
|
+
"Add a filter for this field": "新增篩選到這欄位",
|
|
641
|
+
"Short text": "簡短文字",
|
|
642
|
+
"Text": "文字",
|
|
643
|
+
"Number": "數值",
|
|
644
|
+
"Date": "日期",
|
|
645
|
+
"Date and time": "日期與時間",
|
|
646
|
+
"List of values": "變數列表",
|
|
647
|
+
"Yes / No": "是 / 否",
|
|
648
|
+
"Select field to compute intensity": "選擇欄位運算強度",
|
|
649
|
+
"Optional intensity field to compute heatmap": "選擇性強度欄位來計算熱力圖",
|
|
650
|
+
"All layers": "所有圖層",
|
|
651
|
+
"Comma separated list of values": "逗號分隔清單的值",
|
|
652
|
+
"Share": "分享",
|
|
653
|
+
"Customized link": "自訂連結",
|
|
654
|
+
"Iframe": "頁面框",
|
|
655
|
+
"№": "№"
|
|
645
656
|
}
|
umap/static/umap/map.css
CHANGED
|
@@ -369,7 +369,7 @@ ul.photon-autocomplete {
|
|
|
369
369
|
margin: 0;
|
|
370
370
|
}
|
|
371
371
|
|
|
372
|
-
.photon-autocomplete button:hover {
|
|
372
|
+
.photon-autocomplete button[type="button"]:hover {
|
|
373
373
|
background-color: var(--color-darkCyan);
|
|
374
374
|
}
|
|
375
375
|
|
|
@@ -405,8 +405,8 @@ ul.photon-autocomplete {
|
|
|
405
405
|
display: none;
|
|
406
406
|
}
|
|
407
407
|
|
|
408
|
-
.search-result-tools button {
|
|
409
|
-
padding:
|
|
408
|
+
.search-result-tools button[type="button"] {
|
|
409
|
+
padding: var(--text-margin);
|
|
410
410
|
background-color: var(--background-color);
|
|
411
411
|
}
|
|
412
412
|
|
|
@@ -420,6 +420,11 @@ ul.photon-autocomplete {
|
|
|
420
420
|
/* ***************************** */
|
|
421
421
|
/* Share and download panel */
|
|
422
422
|
/* ***************************** */
|
|
423
|
+
.downloads {
|
|
424
|
+
columns: 4;
|
|
425
|
+
margin-bottom: var(--box-margin);
|
|
426
|
+
}
|
|
427
|
+
|
|
423
428
|
.downloads li {
|
|
424
429
|
height: 1.7em;
|
|
425
430
|
padding: 0;
|
|
@@ -427,10 +432,6 @@ ul.photon-autocomplete {
|
|
|
427
432
|
vertical-align: bottom;
|
|
428
433
|
}
|
|
429
434
|
|
|
430
|
-
.vspace {
|
|
431
|
-
height: 32px;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
435
|
/* *********** */
|
|
435
436
|
/* Draw */
|
|
436
437
|
/* *********** */
|
|
@@ -120,28 +120,28 @@ describe('Utils', () => {
|
|
|
120
120
|
it('should handle iframe', () => {
|
|
121
121
|
assert.equal(
|
|
122
122
|
Utils.toHTML('A simple iframe: {{{http://osm.org/pouet.html}}}'),
|
|
123
|
-
'A simple iframe: <div><iframe
|
|
123
|
+
'A simple iframe: <div><iframe style="width: 100%; height: 300px; border: 0;" src="http://osm.org/pouet.html" allowfullscreen=""></iframe></div>'
|
|
124
124
|
)
|
|
125
125
|
})
|
|
126
126
|
|
|
127
127
|
it('should handle iframe with height', () => {
|
|
128
128
|
assert.equal(
|
|
129
129
|
Utils.toHTML('A simple iframe: {{{http://osm.org/pouet.html|200}}}'),
|
|
130
|
-
'A simple iframe: <div><iframe
|
|
130
|
+
'A simple iframe: <div><iframe style="width: 100%; height: 200px; border: 0;" src="http://osm.org/pouet.html" allowfullscreen=""></iframe></div>'
|
|
131
131
|
)
|
|
132
132
|
})
|
|
133
133
|
|
|
134
134
|
it('should handle iframe with height and width', () => {
|
|
135
135
|
assert.equal(
|
|
136
136
|
Utils.toHTML('A simple iframe: {{{http://osm.org/pouet.html|200*400}}}'),
|
|
137
|
-
'A simple iframe: <div><iframe
|
|
137
|
+
'A simple iframe: <div><iframe style="width: 400px; height: 200px; border: 0;" src="http://osm.org/pouet.html" allowfullscreen=""></iframe></div>'
|
|
138
138
|
)
|
|
139
139
|
})
|
|
140
140
|
|
|
141
141
|
it('should handle iframe with height with px', () => {
|
|
142
142
|
assert.equal(
|
|
143
143
|
Utils.toHTML('A simple iframe: {{{http://osm.org/pouet.html|200px}}}'),
|
|
144
|
-
'A simple iframe: <div><iframe
|
|
144
|
+
'A simple iframe: <div><iframe style="width: 100%; height: 200px; border: 0;" src="http://osm.org/pouet.html" allowfullscreen=""></iframe></div>'
|
|
145
145
|
)
|
|
146
146
|
})
|
|
147
147
|
|
|
@@ -150,7 +150,7 @@ describe('Utils', () => {
|
|
|
150
150
|
Utils.toHTML(
|
|
151
151
|
'A simple iframe: {{{https://osm.org/?url=https%3A//anotherurl.com}}}'
|
|
152
152
|
),
|
|
153
|
-
'A simple iframe: <div><iframe
|
|
153
|
+
'A simple iframe: <div><iframe style="width: 100%; height: 300px; border: 0;" src="https://osm.org/?url=https%3A//anotherurl.com" allowfullscreen=""></iframe></div>'
|
|
154
154
|
)
|
|
155
155
|
})
|
|
156
156
|
|
|
@@ -159,7 +159,7 @@ describe('Utils', () => {
|
|
|
159
159
|
Utils.toHTML(
|
|
160
160
|
'A double iframe: {{{https://osm.org/pouet}}}{{{https://osm.org/boudin}}}'
|
|
161
161
|
),
|
|
162
|
-
'A double iframe: <div><iframe
|
|
162
|
+
'A double iframe: <div><iframe style="width: 100%; height: 300px; border: 0;" src="https://osm.org/pouet" allowfullscreen=""></iframe></div><div><iframe style="width: 100%; height: 300px; border: 0;" src="https://osm.org/boudin" allowfullscreen=""></iframe></div>'
|
|
163
163
|
)
|
|
164
164
|
})
|
|
165
165
|
|
|
@@ -168,7 +168,7 @@ describe('Utils', () => {
|
|
|
168
168
|
Utils.toHTML(
|
|
169
169
|
'An iframe with query string: {{{https://osm.org/pouet.html?name=foobar&description=baz baz}}}'
|
|
170
170
|
),
|
|
171
|
-
'An iframe with query string: <div><iframe
|
|
171
|
+
'An iframe with query string: <div><iframe style="width: 100%; height: 300px; border: 0;" src="https://osm.org/pouet.html?name=foobar&description=baz baz" allowfullscreen=""></iframe></div>'
|
|
172
172
|
)
|
|
173
173
|
})
|
|
174
174
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
{% if UMAP_HOST_INFOS.url and UMAP_HOST_INFOS.name %}<span>{% trans "Hosted by" %} <a href="{{ UMAP_HOST_INFOS.url }}">{{ UMAP_HOST_INFOS.name }}</a></span>{% endif %}
|
|
8
8
|
{% if UMAP_HOST_INFOS.email %}<a href="mailto:{{ UMAP_HOST_INFOS.email }}">{% trans "Contact" %}</a>{% endif %}
|
|
9
9
|
{% if UMAP_HELP_URL %}<a href="{{ UMAP_HELP_URL }}">{% trans "Help" %}</a>{% endif %}
|
|
10
|
+
{% if UMAP_HOST_INFOS.tos %}<a href="{{ UMAP_HOST_INFOS.tos }}">{% trans "Terms of Service" %}</a>{% endif %}
|
|
10
11
|
{% get_language_info_list for LANGUAGES as languages %}
|
|
11
12
|
<form action="{% url "set_language" %}" method="post" class="i18n_switch">
|
|
12
13
|
{% csrf_token %}
|
umap/templates/umap/css.html
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
<link rel="stylesheet"
|
|
6
6
|
href="{% static 'umap/vendors/leaflet/leaflet.css' %}" />
|
|
7
|
-
<link rel="stylesheet"
|
|
8
|
-
href="{% static 'umap/vendors/editinosm/Leaflet.EditInOSM.css' %}" />
|
|
9
7
|
<link rel="stylesheet"
|
|
10
8
|
href="{% static 'umap/vendors/minimap/Control.MiniMap.min.css' %}" />
|
|
11
9
|
<link rel="stylesheet"
|
umap/templates/umap/js.html
CHANGED
|
@@ -17,8 +17,6 @@
|
|
|
17
17
|
<script src="{% static 'umap/vendors/editable/Leaflet.Editable.js' %}" defer></script>
|
|
18
18
|
<script type="module" src="{% static 'umap/js/modules/global.js' %}" defer></script>
|
|
19
19
|
<script src="{% static 'umap/vendors/hash/leaflet-hash.js' %}" defer></script>
|
|
20
|
-
<script src="{% static 'umap/vendors/editinosm/Leaflet.EditInOSM.js' %}"
|
|
21
|
-
defer></script>
|
|
22
20
|
<script src="{% static 'umap/vendors/minimap/Control.MiniMap.min.js' %}"
|
|
23
21
|
defer></script>
|
|
24
22
|
<script src="{% static 'umap/vendors/csv2geojson/csv2geojson.js' %}" defer></script>
|
|
@@ -36,8 +34,8 @@
|
|
|
36
34
|
defer></script>
|
|
37
35
|
<script src="{% static 'umap/vendors/simple-statistics/simple-statistics.min.js' %}"
|
|
38
36
|
defer></script>
|
|
39
|
-
<script src="{% static 'umap/js/umap.core.js' %}" defer></script>
|
|
40
37
|
<script src="{% static 'umap/js/umap.controls.js' %}" defer></script>
|
|
41
38
|
<script type="module" src="{% static 'umap/js/components/fragment.js' %}" defer></script>
|
|
42
39
|
<script type="module" src="{% static 'umap/js/components/modal.js' %}" defer></script>
|
|
40
|
+
<script type="module" src="{% static 'umap/js/components/copiable.js' %}" defer></script>
|
|
43
41
|
{% endautoescape %}
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
}
|
|
15
15
|
bc.postMessage('auth:ok')
|
|
16
16
|
}
|
|
17
|
-
// In case the login was started in Javascript, the broadcasting
|
|
18
|
-
// window, so we wait for the
|
|
17
|
+
// In case the login was started in Javascript, the broadcasting would close this
|
|
18
|
+
// window, so we wait for the broadcasting to have a chance to finish the communication
|
|
19
19
|
// before trying to load the dashboard.
|
|
20
20
|
window.setTimeout(() => {
|
|
21
21
|
// We should arrive here in three situations:
|
|
@@ -26,8 +26,9 @@ def set_timeout(context):
|
|
|
26
26
|
|
|
27
27
|
@pytest.fixture
|
|
28
28
|
def new_page(context):
|
|
29
|
-
def make_page(prefix="console"):
|
|
30
|
-
|
|
29
|
+
def make_page(prefix="console", custom_context=None):
|
|
30
|
+
_context = custom_context or context
|
|
31
|
+
page = _context.new_page()
|
|
31
32
|
page.on(
|
|
32
33
|
"console",
|
|
33
34
|
lambda msg: print(f"{prefix}: {msg.text}")
|
|
@@ -47,6 +48,14 @@ def page(new_page):
|
|
|
47
48
|
return new_page()
|
|
48
49
|
|
|
49
50
|
|
|
51
|
+
@pytest.fixture
|
|
52
|
+
def wait_for_loaded():
|
|
53
|
+
def _(page):
|
|
54
|
+
page.wait_for_function("() => U.MAP.dataloaded === true")
|
|
55
|
+
|
|
56
|
+
return _
|
|
57
|
+
|
|
58
|
+
|
|
50
59
|
@pytest.fixture
|
|
51
60
|
def login(new_page, settings, live_server):
|
|
52
61
|
def do_login(user, **kwargs):
|
|
@@ -133,7 +133,7 @@ def test_can_change_perms_after_create(tilelayer, live_server, page):
|
|
|
133
133
|
page.goto(f"{live_server.url}/en/map/new")
|
|
134
134
|
# Create a layer
|
|
135
135
|
page.get_by_title("Manage layers").click()
|
|
136
|
-
page.
|
|
136
|
+
page.get_by_role("button", name="Add a layer").click()
|
|
137
137
|
page.locator("input[name=name]").fill("Layer 1")
|
|
138
138
|
expect(
|
|
139
139
|
page.get_by_role("button", name="Visibility: Draft (private)")
|
|
@@ -193,7 +193,7 @@ def test_alert_message_after_create(
|
|
|
193
193
|
)
|
|
194
194
|
|
|
195
195
|
|
|
196
|
-
def
|
|
196
|
+
def test_email_sending_error_are_caught(tilelayer, page, live_server):
|
|
197
197
|
page.goto(f"{live_server.url}/en/map/new")
|
|
198
198
|
alert_creation = page.locator('umap-alert-creation div[role="dialog"]')
|
|
199
199
|
with page.expect_response(re.compile(r".*/map/create/")):
|