umap-project 2.9.0b0__py3-none-any.whl → 2.9.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.

Potentially problematic release.


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

Files changed (205) hide show
  1. umap/__init__.py +1 -1
  2. umap/admin.py +15 -2
  3. umap/locale/br/LC_MESSAGES/django.mo +0 -0
  4. umap/locale/br/LC_MESSAGES/django.po +111 -67
  5. umap/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  6. umap/locale/cs_CZ/LC_MESSAGES/django.po +112 -67
  7. umap/locale/el/LC_MESSAGES/django.mo +0 -0
  8. umap/locale/el/LC_MESSAGES/django.po +132 -87
  9. umap/locale/en/LC_MESSAGES/django.po +11 -10
  10. umap/locale/es/LC_MESSAGES/django.mo +0 -0
  11. umap/locale/es/LC_MESSAGES/django.po +117 -71
  12. umap/locale/fr/LC_MESSAGES/django.mo +0 -0
  13. umap/locale/fr/LC_MESSAGES/django.po +11 -10
  14. umap/locale/gl/LC_MESSAGES/django.mo +0 -0
  15. umap/locale/gl/LC_MESSAGES/django.po +219 -173
  16. umap/locale/it/LC_MESSAGES/django.mo +0 -0
  17. umap/locale/it/LC_MESSAGES/django.po +145 -100
  18. umap/locale/nl/LC_MESSAGES/django.mo +0 -0
  19. umap/locale/nl/LC_MESSAGES/django.po +198 -152
  20. umap/locale/pt/LC_MESSAGES/django.mo +0 -0
  21. umap/locale/pt/LC_MESSAGES/django.po +118 -73
  22. umap/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  23. umap/locale/zh_TW/LC_MESSAGES/django.po +112 -67
  24. umap/middleware.py +30 -1
  25. umap/models.py +20 -10
  26. umap/settings/base.py +2 -1
  27. umap/static/umap/base.css +4 -1
  28. umap/static/umap/css/bar.css +32 -0
  29. umap/static/umap/css/contextmenu.css +14 -2
  30. umap/static/umap/css/form.css +5 -10
  31. umap/static/umap/css/icon.css +39 -3
  32. umap/static/umap/css/panel.css +18 -1
  33. umap/static/umap/css/popup.css +0 -1
  34. umap/static/umap/img/16-white.svg +3 -3
  35. umap/static/umap/img/16.svg +1 -1
  36. umap/static/umap/img/24-white.svg +17 -16
  37. umap/static/umap/img/24.svg +29 -18
  38. umap/static/umap/img/providers/twitter-oauth2.png +0 -0
  39. umap/static/umap/img/source/16-white.svg +4 -4
  40. umap/static/umap/img/source/16.svg +1 -1
  41. umap/static/umap/img/source/24-white.svg +20 -18
  42. umap/static/umap/img/source/24.svg +30 -19
  43. umap/static/umap/js/modules/browser.js +2 -2
  44. umap/static/umap/js/modules/caption.js +4 -4
  45. umap/static/umap/js/modules/data/features.js +80 -32
  46. umap/static/umap/js/modules/data/layer.js +37 -50
  47. umap/static/umap/js/modules/form/builder.js +23 -22
  48. umap/static/umap/js/modules/form/fields.js +13 -5
  49. umap/static/umap/js/modules/formatter.js +6 -2
  50. umap/static/umap/js/modules/help.js +17 -23
  51. umap/static/umap/js/modules/importer.js +5 -2
  52. umap/static/umap/js/modules/permissions.js +6 -2
  53. umap/static/umap/js/modules/rendering/layers/classified.js +1 -1
  54. umap/static/umap/js/modules/rendering/map.js +1 -21
  55. umap/static/umap/js/modules/rendering/ui.js +20 -38
  56. umap/static/umap/js/modules/rules.js +1 -1
  57. umap/static/umap/js/modules/saving.js +5 -0
  58. umap/static/umap/js/modules/schema.js +4 -1
  59. umap/static/umap/js/modules/sync/engine.js +39 -14
  60. umap/static/umap/js/modules/sync/updaters.js +7 -6
  61. umap/static/umap/js/modules/sync/websocket.js +48 -40
  62. umap/static/umap/js/modules/ui/bar.js +84 -0
  63. umap/static/umap/js/modules/ui/base.js +11 -0
  64. umap/static/umap/js/modules/ui/contextmenu.js +9 -2
  65. umap/static/umap/js/modules/ui/panel.js +5 -1
  66. umap/static/umap/js/modules/umap.js +85 -44
  67. umap/static/umap/js/umap.controls.js +11 -341
  68. umap/static/umap/locale/am_ET.js +17 -5
  69. umap/static/umap/locale/am_ET.json +17 -5
  70. umap/static/umap/locale/ar.js +17 -5
  71. umap/static/umap/locale/ar.json +17 -5
  72. umap/static/umap/locale/ast.js +17 -5
  73. umap/static/umap/locale/ast.json +17 -5
  74. umap/static/umap/locale/bg.js +17 -5
  75. umap/static/umap/locale/bg.json +17 -5
  76. umap/static/umap/locale/br.js +20 -15
  77. umap/static/umap/locale/br.json +20 -15
  78. umap/static/umap/locale/ca.js +8 -4
  79. umap/static/umap/locale/ca.json +8 -4
  80. umap/static/umap/locale/cs_CZ.js +8 -4
  81. umap/static/umap/locale/cs_CZ.json +8 -4
  82. umap/static/umap/locale/da.js +17 -5
  83. umap/static/umap/locale/da.json +17 -5
  84. umap/static/umap/locale/de.js +8 -4
  85. umap/static/umap/locale/de.json +8 -4
  86. umap/static/umap/locale/el.js +54 -50
  87. umap/static/umap/locale/el.json +54 -50
  88. umap/static/umap/locale/en.js +9 -4
  89. umap/static/umap/locale/en.json +9 -4
  90. umap/static/umap/locale/en_US.json +17 -5
  91. umap/static/umap/locale/es.js +13 -9
  92. umap/static/umap/locale/es.json +13 -9
  93. umap/static/umap/locale/et.js +17 -5
  94. umap/static/umap/locale/et.json +17 -5
  95. umap/static/umap/locale/eu.js +8 -4
  96. umap/static/umap/locale/eu.json +8 -4
  97. umap/static/umap/locale/fa_IR.js +8 -4
  98. umap/static/umap/locale/fa_IR.json +8 -4
  99. umap/static/umap/locale/fi.js +17 -5
  100. umap/static/umap/locale/fi.json +17 -5
  101. umap/static/umap/locale/fr.js +9 -4
  102. umap/static/umap/locale/fr.json +9 -4
  103. umap/static/umap/locale/gl.js +13 -9
  104. umap/static/umap/locale/gl.json +13 -9
  105. umap/static/umap/locale/he.js +17 -5
  106. umap/static/umap/locale/he.json +17 -5
  107. umap/static/umap/locale/hr.js +17 -5
  108. umap/static/umap/locale/hr.json +17 -5
  109. umap/static/umap/locale/hu.js +8 -4
  110. umap/static/umap/locale/hu.json +8 -4
  111. umap/static/umap/locale/id.js +17 -5
  112. umap/static/umap/locale/id.json +17 -5
  113. umap/static/umap/locale/is.js +17 -5
  114. umap/static/umap/locale/is.json +17 -5
  115. umap/static/umap/locale/it.js +31 -27
  116. umap/static/umap/locale/it.json +31 -27
  117. umap/static/umap/locale/ja.js +17 -5
  118. umap/static/umap/locale/ja.json +17 -5
  119. umap/static/umap/locale/ko.js +17 -5
  120. umap/static/umap/locale/ko.json +17 -5
  121. umap/static/umap/locale/lt.js +17 -5
  122. umap/static/umap/locale/lt.json +17 -5
  123. umap/static/umap/locale/ms.js +8 -4
  124. umap/static/umap/locale/ms.json +8 -4
  125. umap/static/umap/locale/nl.js +132 -127
  126. umap/static/umap/locale/nl.json +132 -127
  127. umap/static/umap/locale/no.js +17 -5
  128. umap/static/umap/locale/no.json +17 -5
  129. umap/static/umap/locale/pl.js +8 -4
  130. umap/static/umap/locale/pl.json +8 -4
  131. umap/static/umap/locale/pl_PL.json +17 -5
  132. umap/static/umap/locale/pt.js +38 -33
  133. umap/static/umap/locale/pt.json +38 -33
  134. umap/static/umap/locale/pt_BR.js +17 -5
  135. umap/static/umap/locale/pt_BR.json +17 -5
  136. umap/static/umap/locale/pt_PT.js +8 -4
  137. umap/static/umap/locale/pt_PT.json +8 -4
  138. umap/static/umap/locale/ro.js +17 -5
  139. umap/static/umap/locale/ro.json +17 -5
  140. umap/static/umap/locale/ru.js +17 -5
  141. umap/static/umap/locale/ru.json +17 -5
  142. umap/static/umap/locale/sk_SK.js +17 -5
  143. umap/static/umap/locale/sk_SK.json +17 -5
  144. umap/static/umap/locale/sl.js +17 -5
  145. umap/static/umap/locale/sl.json +17 -5
  146. umap/static/umap/locale/sr.js +17 -5
  147. umap/static/umap/locale/sr.json +17 -5
  148. umap/static/umap/locale/sv.js +17 -5
  149. umap/static/umap/locale/sv.json +17 -5
  150. umap/static/umap/locale/th_TH.js +8 -4
  151. umap/static/umap/locale/th_TH.json +8 -4
  152. umap/static/umap/locale/tr.js +17 -5
  153. umap/static/umap/locale/tr.json +17 -5
  154. umap/static/umap/locale/uk_UA.js +17 -5
  155. umap/static/umap/locale/uk_UA.json +17 -5
  156. umap/static/umap/locale/vi.js +17 -5
  157. umap/static/umap/locale/vi.json +17 -5
  158. umap/static/umap/locale/vi_VN.json +17 -5
  159. umap/static/umap/locale/zh.js +17 -5
  160. umap/static/umap/locale/zh.json +17 -5
  161. umap/static/umap/locale/zh_CN.json +17 -5
  162. umap/static/umap/locale/zh_TW.Big5.json +17 -5
  163. umap/static/umap/locale/zh_TW.js +14 -10
  164. umap/static/umap/locale/zh_TW.json +14 -10
  165. umap/static/umap/map.css +17 -68
  166. umap/static/umap/nav.css +4 -0
  167. umap/static/umap/vars.css +1 -0
  168. umap/static/umap/vendors/dompurify/purify.es.js +138 -354
  169. umap/static/umap/vendors/dompurify/purify.es.mjs.map +1 -1
  170. umap/static/umap/vendors/editable/Leaflet.Editable.js +1 -0
  171. umap/sync/app.py +19 -13
  172. umap/sync/payloads.py +8 -1
  173. umap/templates/auth/user_form.html +2 -2
  174. umap/templates/umap/content_footer.html +1 -1
  175. umap/templates/umap/css.html +0 -2
  176. umap/templates/umap/js.html +0 -1
  177. umap/templates/umap/messages.html +5 -1
  178. umap/templates/umap/search_bar.html +1 -0
  179. umap/tests/integration/test_anonymous_owned_map.py +2 -2
  180. umap/tests/integration/test_basics.py +2 -5
  181. umap/tests/integration/test_categorized_layer.py +4 -8
  182. umap/tests/integration/test_choropleth.py +1 -1
  183. umap/tests/integration/test_conditional_rules.py +3 -3
  184. umap/tests/integration/test_draw_polygon.py +11 -19
  185. umap/tests/integration/test_draw_polyline.py +6 -14
  186. umap/tests/integration/test_edit_datalayer.py +10 -10
  187. umap/tests/integration/test_edit_map.py +27 -1
  188. umap/tests/integration/test_edit_marker.py +5 -5
  189. umap/tests/integration/test_edit_polygon.py +5 -5
  190. umap/tests/integration/test_features_id_generation.py +2 -6
  191. umap/tests/integration/test_import.py +93 -29
  192. umap/tests/integration/test_owned_map.py +1 -1
  193. umap/tests/integration/test_save.py +2 -2
  194. umap/tests/integration/test_tableeditor.py +7 -7
  195. umap/tests/integration/test_view_marker.py +10 -0
  196. umap/tests/integration/test_websocket_sync.py +128 -32
  197. umap/utils.py +4 -1
  198. umap/views.py +1 -10
  199. {umap_project-2.9.0b0.dist-info → umap_project-2.9.2.dist-info}/METADATA +13 -13
  200. {umap_project-2.9.0b0.dist-info → umap_project-2.9.2.dist-info}/RECORD +203 -205
  201. umap/static/umap/vendors/toolbar/leaflet.toolbar.css +0 -1
  202. umap/static/umap/vendors/toolbar/leaflet.toolbar.js +0 -1
  203. {umap_project-2.9.0b0.dist-info → umap_project-2.9.2.dist-info}/WHEEL +0 -0
  204. {umap_project-2.9.0b0.dist-info → umap_project-2.9.2.dist-info}/entry_points.txt +0 -0
  205. {umap_project-2.9.0b0.dist-info → umap_project-2.9.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,8 +1,8 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
2
  <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
3
 
4
- <svg width="252" height="252" viewBox="0 0 66.674999 66.674999" version="1.1" id="svg6237" inkscape:version="1.4 (e7c3feb100, 2024-10-09)" sodipodi:docname="24.svg" inkscape:export-filename="../24.svg" inkscape:export-xdpi="7.52" inkscape:export-ydpi="7.52" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
5
- <sodipodi:namedview id="namedview6239" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="px" showgrid="true" showguides="true" inkscape:zoom="3.1596124" inkscape:cx="118.68544" inkscape:cy="166.47612" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="layer1">
4
+ <svg width="288" height="288" viewBox="0 0 76.199999 76.199999" version="1.1" id="svg6237" inkscape:version="1.4 (e7c3feb100, 2024-10-09)" sodipodi:docname="24.svg" inkscape:export-filename="../24.svg" inkscape:export-xdpi="7.52" inkscape:export-ydpi="7.52" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
5
+ <sodipodi:namedview id="namedview6239" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="px" showgrid="true" showguides="true" inkscape:zoom="22.223397" inkscape:cx="25.378659" inkscape:cy="18.269034" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="layer1">
6
6
  <inkscape:grid type="xygrid" id="grid6358" empspacing="6" originx="0" originy="0" spacingy="0.26458333" spacingx="0.26458333" units="px" visible="true" />
7
7
  <inkscape:grid id="grid1" units="px" originx="0" originy="0" spacingx="9.5249999" spacingy="9.5249999" empcolor="#3f3fff" empopacity="0.25098039" color="#ff0000" opacity="0.83529412" empspacing="0" dotted="false" gridanglex="30" gridanglez="30" visible="true" />
8
8
  </sodipodi:namedview>
@@ -18,31 +18,31 @@
18
18
  </mask>
19
19
  </defs>
20
20
  <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1">
21
- <path style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" d="m 6.6145836,2.1166666 -0.529167,0.529167 1.058333,1.058333 0.529167,-0.529167 z m -0.79375,0.79375 -2.910417,2.910417 1.058333,1.058333 2.910417,-2.910417 z m -2.910417,2.910417 -0.79375,1.852083 1.852083,-0.79375 z" id="edit" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccc" class="sprite" />
21
+ <path style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" d="m 25.532291,20.902083 -0.529167,0.529167 1.058333,1.058333 0.529167,-0.529167 z m -0.79375,0.79375 -2.910417,2.910417 1.058333,1.058333 2.910417,-2.910417 z m -2.910417,2.910417 -0.79375,1.852083 1.852083,-0.79375 z" id="edit" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccc" class="sprite" />
22
22
  <path style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.264583" d="m 51.858331,21.16666 v 0.529167 c -0.529167,0 -1.058333,0 -1.322917,0.529166 v 0.264584 h 3.704167 v -0.264584 c -0.264583,-0.529166 -0.79375,-0.529166 -1.322917,-0.529166 v -0.529167 z m -1.322917,1.5875 0.79375,3.704172 h 2.116667 l 0.79375,-3.704172 z" id="delete" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccc" inkscape:label="delete-30" class="sprite" />
23
23
  <g id="measure" transform="matrix(0.26458333,0,0,0.26458333,-11.112499,-232.45291)" class="sprite">
24
24
  <path sodipodi:nodetypes="ccccccccccccccccccccccccccccc" inkscape:connector-curvature="0" id="rect4452" d="m 47.999998,965.36218 h 3.000002 v 8 h 2 v -8 h 2 v 5 h 1 v -5 h 2 v 5 h 1 v -5 h 2 v 5 h 1 v -5 h 2 v 5 h 1 v -5 h 2 v 8 h 2 v -8 h 3 v 11 h -24 z" style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none" />
25
25
  <text id="text4455" y="964.36218" x="49.170559" style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none" xml:space="preserve"><tspan style="font-weight:bold;font-size:8px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';fill:#4d4d4d;fill-opacity:1" y="964.36218" x="49.170559" id="tspan4457" sodipodi:role="line">0</tspan></text>
26
26
  <text xml:space="preserve" style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none" x="65.048965" y="964.36218" id="text4459"><tspan sodipodi:role="line" id="tspan4461" x="65.048965" y="964.36218" style="font-weight:bold;font-size:8px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'Sans Bold';fill:#4d4d4d;fill-opacity:1">1</tspan></text>
27
27
  </g>
28
- <g id="markers" transform="matrix(0.26458333,0,0,0.26458333,14.287499,-226.04994)" class="sprite">
28
+ <g id="markers" transform="matrix(0.26458333,0,0,0.26458333,42.862499,-225.92402)" class="sprite">
29
29
  <path sodipodi:nodetypes="sccccsssccs" inkscape:connector-curvature="0" id="rect2985" d="m 105.25387,934.36268 c -3.17753,0 -6.346004,2.1278 -7.25387,6.3794 0,2.551 1.806672,7.6679 7.25387,13.6201 1.46368,-1.5994 2.66945,-3.1177 3.64397,-4.5613 -1.4505,-2.1639 -2.41497,-4.0873 -2.96285,-5.7095 -0.22599,0.041 -0.44225,0.063 -0.68112,0.063 -2.0056,0 -3.64396,-1.5346 -3.64396,-3.413 0,-1.8785 1.63836,-3.3811 3.64396,-3.3811 0.51205,0 0.98854,0.076 1.43034,0.2552 0.64347,-0.9222 1.4345,-1.6571 2.31579,-2.169 -1.14444,-0.7114 -2.44633,-1.0845 -3.74613,-1.0845 z" style="fill:#4d4d4d;fill-opacity:1;stroke:none" />
30
30
  <path id="path3378" d="m 111,934.36218 c -3.0625,0 -6.125,2.1277 -7,6.383 0,2.5532 1.75,7.6596 7,13.617 5.25,-5.9574 7,-11.0638 7,-13.617 -0.875,-4.2553 -3.9375,-6.383 -7,-6.383 z m 0,2.9788 c 1.933,0 3.5,1.5241 3.5,3.4042 0,1.8801 -1.567,3.4043 -3.5,3.4043 -1.93299,0 -3.5,-1.5242 -3.5,-3.4043 0,-1.8801 1.56701,-3.4042 3.5,-3.4042 z" style="fill:#4d4d4d;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" />
31
31
  </g>
32
- <path inkscape:connector-curvature="0" style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" d="m 42.862498,11.1125 c -0.926041,0 -1.852083,0.661458 -2.116666,1.984375 0,0.793749 0.529166,2.381249 2.116666,4.233333 1.5875,-1.852084 2.116667,-3.439584 2.116667,-4.233333 -0.264583,-1.322917 -1.190625,-1.984375 -2.116667,-1.984375 z m 0,0.926041 c 0.584502,0 1.058334,0.473832 1.058334,1.058334 0,0.584501 -0.473832,1.058333 -1.058334,1.058333 -0.584501,0 -1.058333,-0.473832 -1.058333,-1.058333 0,-0.584502 0.473832,-1.058334 1.058333,-1.058334 z" id="marker" class="sprite" />
33
- <path inkscape:connector-curvature="0" d="m 30.956249,11.112501 v 0.132291 0.79375 0.132292 h 0.132292 0.79375 0.132292 v -0.132292 -0.09095 l 2.645833,1.058334 v 0.355533 0.115756 l -1.876888,2.926953 h -0.636654 -0.132291 v 0.132291 0.79375 0.132292 h 0.132291 0.79375 0.132292 v -0.132292 -0.79375 -0.09922 l 1.876888,-2.943489 h 0.636654 0.132291 v -0.132292 -0.79375 -0.132291 h -0.132291 -0.79375 -0.132292 v 0.132291 0.148828 l -2.645833,-1.058333 v -0.413411 -0.132292 h -0.132292 -0.79375 z m 0.264584,0.264583 h 0.529166 v 0.529167 h -0.529166 z m 3.704166,1.322917 h 0.529167 v 0.529166 h -0.529167 z m -2.645833,3.96875 h 0.529167 v 0.529166 h -0.529167 z" id="polyline" class="sprite" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.264583" />
34
- <path d="m 21.695833,11.90625 v 0.132292 0.79375 0.132291 h 0.132292 0.347265 l -0.421679,3.704167 h -0.454753 -0.132292 v 0.132292 0.79375 0.132291 h 0.132292 0.79375 0.132292 v -0.132291 -0.421667 l 2.645833,-0.181901 v 0.338984 0.132292 h 0.132292 0.79375 0.132291 v -0.132292 -0.79375 -0.132291 h -0.132291 -0.305925 l 0.363802,-2.116667 h 0.471289 0.132292 v -0.132292 -0.79375 -0.132291 h -0.132292 -0.79375 -0.132291 v 0.132291 0.214974 l -2.645834,-0.950833 v -0.587057 -0.132292 h -0.132291 -0.79375 z m 0.264583,0.264583 h 0.529167 v 0.529167 h -0.529167 z m 3.704167,1.322917 h 0.529167 v 0.529167 h -0.529167 z m -0.529167,3.175 h 0.529167 v 0.529167 h -0.529167 z m -3.704166,0.264583 c 0.529166,0 0,0 0.529166,0 v 0.529167 h -0.529166 z" id="polygon" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" class="sprite" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.264583" />
35
- <g transform="matrix(0.06466922,0,0,0.06466922,30.097119,1.5355706)" id="settings" style="fill:#4d4d4d;fill-opacity:1;stroke:none" class="sprite">
32
+ <path inkscape:connector-curvature="0" style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" d="m 71.437498,11.178646 c -0.926041,0 -1.852083,0.661458 -2.116666,1.984375 0,0.793749 0.529166,2.381249 2.116666,4.233333 1.5875,-1.852084 2.116667,-3.439584 2.116667,-4.233333 -0.264583,-1.322917 -1.190625,-1.984375 -2.116667,-1.984375 z m 0,0.926041 c 0.584502,0 1.058334,0.473832 1.058334,1.058334 0,0.584501 -0.473832,1.058333 -1.058334,1.058333 -0.584501,0 -1.058333,-0.473832 -1.058333,-1.058333 0,-0.584502 0.473832,-1.058334 1.058333,-1.058334 z" id="marker" class="sprite" />
33
+ <path inkscape:connector-curvature="0" d="m 69.056248,58.737493 v 0.132291 0.79375 0.132292 h 0.132293 0.79375 0.132292 v -0.132292 -0.09095 l 2.645833,1.058334 v 0.355533 0.115756 l -1.876888,2.926953 h -0.636654 -0.132291 v 0.132291 0.79375 0.132292 h 0.132291 0.79375 0.132292 v -0.132292 -0.79375 -0.09922 l 1.876888,-2.943489 h 0.636654 0.132291 v -0.132292 -0.79375 -0.132291 h -0.132291 -0.79375 -0.132292 v 0.132291 0.148828 l -2.645833,-1.058333 v -0.413411 -0.132292 h -0.132292 -0.79375 z m 0.264584,0.264583 h 0.529166 v 0.529167 h -0.529166 z m 3.704166,1.322917 h 0.529167 v 0.529166 h -0.529167 z m -2.645833,3.96875 h 0.529167 v 0.529166 h -0.529167 z" id="polyline" class="sprite" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.264583" />
34
+ <path d="m 69.320832,39.952089 v 0.132292 0.793751 0.132291 h 0.132292 0.347265 l -0.421679,3.704167 h -0.454753 -0.132292 v 0.132292 0.79375 0.132291 h 0.132292 0.79375 0.132292 v -0.132291 -0.421667 l 2.645833,-0.181901 v 0.338984 0.132292 h 0.132292 0.79375 0.132291 v -0.132292 -0.79375 -0.132292 h -0.132291 -0.305925 l 0.363802,-2.116667 h 0.471289 0.132292 v -0.132291 -0.793751 -0.132291 h -0.132292 -0.79375 -0.132291 v 0.132291 0.214974 l -2.645834,-0.950833 v -0.587057 -0.132292 h -0.132291 -0.79375 z m 0.264583,0.264584 h 0.529167 v 0.529167 h -0.529167 z m 3.704167,1.322916 h 0.529167 v 0.529167 h -0.529167 z m -0.529167,3.175 h 0.529167 v 0.529167 h -0.529167 z m -3.704166,0.264583 c 0.529166,0 0,0 0.529166,0 v 0.529167 h -0.529166 z" id="polygon" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" class="sprite" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.264583" />
35
+ <g transform="matrix(0.06466922,0,0,0.06466922,11.047119,39.63557)" id="settings" style="fill:#4d4d4d;fill-opacity:1;stroke:none" class="sprite">
36
36
  <path inkscape:connector-curvature="0" d="m 98.762,43.652 c -0.186,-1.386 -1.481,-2.582 -2.876,-2.659 l -6.172,-0.337 c -1.395,-0.076 -2.899,-1.224 -3.341,-2.55 l -2.28,-5.518 c -0.629,-1.249 -0.379,-3.121 0.553,-4.161 l 4.122,-4.6 c 0.933,-1.042 0.962,-2.77 0.066,-3.842 l -8.813,-8.813 c -1.073,-0.897 -2.803,-0.867 -3.845,0.065 l -4.598,4.122 c -1.039,0.934 -2.915,1.182 -4.161,0.551 l -5.521,-2.279 c -1.324,-0.442 -2.472,-1.945 -2.549,-3.34 l -0.337,-6.17 c -0.077,-1.396 -1.272,-2.691 -2.659,-2.878 0,0 -3.252,-0.44 -6.248,-0.44 -2.991,0 -6.243,0.44 -6.243,0.44 -1.386,0.188 -2.582,1.483 -2.658,2.878 l -0.338,6.17 c -0.076,1.396 -1.224,2.898 -2.551,3.34 l -5.517,2.279 c -1.249,0.631 -3.122,0.382 -4.161,-0.551 l -4.601,-4.122 c -1.042,-0.932 -2.769,-0.962 -3.842,-0.065 l -8.813,8.813 c -0.897,1.073 -0.867,2.801 0.066,3.842 l 4.122,4.6 c 0.933,1.041 1.182,2.913 0.551,4.161 l -2.279,5.518 c -0.442,1.326 -1.946,2.474 -3.34,2.55 l -6.17,0.337 c -1.396,0.077 -2.691,1.272 -2.879,2.659 0,0 -0.439,3.253 -0.439,6.243 0,2.99 0.44,6.24 0.44,6.24 0.188,1.389 1.483,2.582 2.879,2.659 l 6.169,0.339 c 1.396,0.075 2.898,1.225 3.341,2.549 l 2.278,5.517 c 0.631,1.248 0.381,3.122 -0.551,4.163 l -4.122,4.598 c -0.933,1.042 -0.963,2.771 -0.066,3.845 l 8.814,8.813 c 1.073,0.896 2.801,0.866 3.842,-0.066 l 4.6,-4.122 c 1.041,-0.932 2.913,-1.182 4.161,-0.553 l 5.517,2.28 c 1.327,0.441 2.475,1.946 2.55,3.343 l 0.338,6.168 c 0.076,1.395 1.272,2.692 2.658,2.88 0,0 3.252,0.439 6.244,0.439 2.996,0 6.25,-0.439 6.25,-0.439 1.385,-0.188 2.58,-1.485 2.657,-2.88 l 0.337,-6.168 c 0.077,-1.396 1.225,-2.901 2.551,-3.343 l 5.517,-2.28 c 1.248,-0.629 3.122,-0.379 4.163,0.553 l 4.598,4.122 c 1.042,0.933 2.771,0.964 3.843,0.067 l 8.815,-8.814 c 0.896,-1.073 0.866,-2.803 -0.066,-3.845 l -4.122,-4.598 c -0.932,-1.041 -1.182,-2.915 -0.553,-4.163 l 2.28,-5.517 c 0.441,-1.324 1.946,-2.474 3.341,-2.549 l 6.172,-0.339 c 1.395,-0.077 2.692,-1.271 2.876,-2.659 0,0 0.441,-3.25 0.441,-6.24 0,-2.99 -0.441,-6.243 -0.441,-6.243 z m -48.658,18.709 c -6.886,0 -12.468,-5.585 -12.468,-12.467 0,-6.885 5.582,-12.467 12.468,-12.467 6.89,0 12.475,5.582 12.475,12.467 -10e-4,6.882 -5.586,12.467 -12.475,12.467 z" id="path27812" style="fill:#4d4d4d;fill-opacity:1;stroke:none" />
37
37
  </g>
38
- <path style="fill:#464646;fill-opacity:1;stroke:none;stroke-width:0.264583" d="m 42.862499,1.5875 c -1.753504,0 -3.175,1.421495 -3.175,3.175 0,1.753504 1.421496,3.175 3.175,3.175 1.753505,0 3.175,-1.421496 3.175,-3.175 0,-1.753505 -1.421495,-3.175 -3.175,-3.175 z m 0,1.322916 1.852084,1.852084 h -1.322917 v 1.5875 h -1.058333 v -1.5875 h -1.322917 z" id="import" inkscape:connector-curvature="0" sodipodi:nodetypes="ssssscccccccc" class="sprite" />
38
+ <path style="fill:#464646;fill-opacity:1;stroke:none;stroke-width:0.264583" d="m 61.912499,39.687506 c -1.753504,0 -3.175,1.421495 -3.175,3.175 0,1.753504 1.421496,3.175 3.175,3.175 1.753505,0 3.175,-1.421496 3.175,-3.175 0,-1.753505 -1.421495,-3.175 -3.175,-3.175 z m 0,1.322916 1.852084,1.852084 h -1.322917 v 1.5875 h -1.058333 v -1.5875 h -1.322917 z" id="import" inkscape:connector-curvature="0" sodipodi:nodetypes="ssssscccccccc" class="sprite" />
39
39
  <g id="set-zoom" class="sprite" transform="matrix(0.26458333,0,0,0.26458333,-0.52916667,-227.10832)">
40
- <polygon points="0,88.737 17.702,71.042 9.297,62.644 37.37,62.644 37.37,90.703 28.965,82.305 11.27,100 " id="polygon3044" transform="matrix(0.24,0,0,0.24,8,900.36218)" style="fill:#4d4d4d;fill-opacity:1" />
41
- <polygon points="82.298,28.958 100,11.263 88.743,0 71.042,17.708 62.644,9.31 62.644,37.357 90.71,37.37 " id="polygon3048" transform="matrix(0.24,0,0,0.24,8,900.36218)" style="fill:#4d4d4d;fill-opacity:1" />
40
+ <polygon points="9.297,62.644 37.37,62.644 37.37,90.703 28.965,82.305 11.27,100 0,88.737 17.702,71.042 " id="polygon3044" transform="matrix(0.24,0,0,0.24,8,900.36218)" style="fill:#4d4d4d;fill-opacity:1" />
41
+ <polygon points="88.743,0 71.042,17.708 62.644,9.31 62.644,37.357 90.71,37.37 82.298,28.958 100,11.263 " id="polygon3048" transform="matrix(0.24,0,0,0.24,8,900.36218)" style="fill:#4d4d4d;fill-opacity:1" />
42
42
  <path inkscape:connector-curvature="0" d="m 20,909.43106 c -1.618801,0 -2.93112,1.31256 -2.93112,2.93112 0,1.62192 1.31256,2.93448 2.93112,2.93448 1.6188,0 2.9328,-1.31256 2.9328,-2.93448 0,-1.6188 -1.314,-2.93112 -2.9328,-2.93112 z" id="path3052" style="fill:#4d4d4d;fill-opacity:1" />
43
43
  </g>
44
- <path d="m 12.460221,12.700004 c -0.890121,-0.0021 -1.610321,0.711677 -1.612305,1.5875 0.002,0.877761 0.722184,1.586074 1.612305,1.5875 0.593513,-8.73e-4 1.110529,-0.321123 1.389062,-0.79375 h 0.65319 l 0.520899,-0.504362 0.396875,0.380339 0.380338,-0.37207 0.388607,0.380338 0.396875,-0.380338 0.388607,0.380338 0.677994,-0.65319 c 0.09761,-0.09927 0.100016,-0.174188 0,-0.272852 l -0.553971,-0.545703 h -3.241146 c -0.277124,-0.47713 -0.799763,-0.794983 -1.39733,-0.79375 z m -0.7028,1.157552 c 0.233962,-0.0011 0.419905,0.187463 0.42168,0.42168 -0.0017,0.230958 -0.187613,0.419542 -0.42168,0.42168 -0.237929,-0.0024 -0.43214,-0.190722 -0.429948,-0.42168 -0.0022,-0.234217 0.192019,-0.422799 0.429948,-0.42168 z" id="permissions" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.264583" class="sprite" />
45
- <polygon points="43.75,87.5 43.75,62.5 56.25,62.5 56.25,87.5 87.5,87.5 87.5,50 100,50 50,0 0,50 12.5,50 12.5,87.5 " id="home" transform="matrix(0.0635,0,0,0.0635,30.162499,20.902083)" style="fill:#4d4d4d;fill-opacity:1" class="sprite" />
44
+ <path d="m 60.085221,50.800004 c -0.890121,-0.0021 -1.610321,0.711677 -1.612305,1.5875 0.002,0.877761 0.722184,1.586074 1.612305,1.5875 0.593513,-8.73e-4 1.110529,-0.321123 1.389062,-0.79375 h 0.65319 l 0.520899,-0.504362 0.396875,0.380339 0.380338,-0.37207 0.388607,0.380338 0.396875,-0.380338 0.388607,0.380338 0.677994,-0.65319 c 0.09761,-0.09927 0.100016,-0.174188 0,-0.272852 l -0.553971,-0.545703 h -3.241146 c -0.277124,-0.47713 -0.799763,-0.794983 -1.39733,-0.79375 z m -0.7028,1.157552 c 0.233962,-0.0011 0.419905,0.187463 0.42168,0.42168 -0.0017,0.230958 -0.187613,0.419542 -0.42168,0.42168 -0.237929,-0.0024 -0.43214,-0.190722 -0.429948,-0.42168 -0.0022,-0.234217 0.192019,-0.422799 0.429948,-0.42168 z" id="permissions" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.264583" class="sprite" />
45
+ <polygon points="12.5,50 12.5,87.5 43.75,87.5 43.75,62.5 56.25,62.5 56.25,87.5 87.5,87.5 87.5,50 100,50 50,0 0,50 " id="home" transform="matrix(0.0635,0,0,0.0635,30.162499,20.902083)" style="fill:#4d4d4d;fill-opacity:1" class="sprite" />
46
46
  <path inkscape:connector-curvature="0" d="m 7.937502,33.337505 c 0,-0.119238 -0.0078,-0.236713 -0.02082,-0.352777 h -0.356658 c -0.159103,-1.275998 -1.168753,-2.285648 -2.44475,-2.445102 v -0.356307 c -0.116064,-0.01304 -0.233539,-0.02082 -0.352778,-0.02082 -0.119239,0 -0.236714,0.0078 -0.352778,0.02082 v 0.356659 c -1.275997,0.159102 -2.285647,1.168752 -2.445103,2.44475 h -0.356305 c -0.01305,0.116064 -0.02081,0.233539 -0.02081,0.352777 0,0.119239 0.0078,0.236714 0.02081,0.352779 h 0.356658 c 0.159103,1.275996 1.168753,2.285659 2.44475,2.445123 v 0.356658 c 0.116064,0.0127 0.233539,0.02037 0.352778,0.02037 0.119239,0 0.236714,-0.0077 0.352778,-0.0209 v -0.356658 c 1.275644,-0.159438 2.285647,-1.168757 2.445102,-2.444753 h 0.356659 c 0.0127,-0.115712 0.02046,-0.233187 0.02046,-0.352779 z m -2.822223,2.084929 v -0.32104 c 0,-0.195085 -0.158044,-0.352777 -0.352777,-0.352777 -0.194734,0 -0.352778,0.157692 -0.352778,0.352777 v 0.32104 c -0.885472,-0.148883 -1.582914,-0.845973 -1.731786,-1.731798 l 0.320675,-2.65e-4 c 0.195086,0 0.352778,-0.158046 0.352778,-0.352779 0,-0.194733 -0.157692,-0.352777 -0.352778,-0.352777 h -0.321028 c 0.149225,-0.885473 0.846667,-1.582915 1.732139,-1.73214 v 0.32103 c 0,0.194733 0.158044,0.352777 0.352778,0.352777 0.194733,0 0.352777,-0.158044 0.352777,-0.352777 v -0.32103 c 0.885825,0.148873 1.583267,0.846315 1.732139,1.73214 h -0.321028 c -0.195086,0 -0.352777,0.158044 -0.352777,0.352777 0,0.194733 0.157691,0.352779 0.352777,0.352779 l 0.321028,2.65e-4 c -0.149225,0.885825 -0.846314,1.582915 -1.732139,1.731798 z" id="geolocation" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.264583" class="sprite" />
47
47
  <g id="share" class="sprite" transform="matrix(0.26458333,0,0,0.26458333,-2.6458336,-229.22505)">
48
48
  <circle id="path4309" style="fill:none;stroke:#464646;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="100" cy="992.3623" r="11" />
@@ -59,15 +59,15 @@
59
59
  </g>
60
60
  <path inkscape:export-ydpi="28.799999" inkscape:export-xdpi="28.799999" inkscape:export-filename="/home/ybon/Work/osmtouch64.png" d="m 36.286947,38.82145 c -0.457367,0.452579 -0.512559,0.504833 -0.938758,0.934524 l 1.311056,-0.309645 c 0.03951,-0.177773 0.08574,-0.397942 0.09827,-0.449622 -0.206968,-0.007 -0.324977,-0.0729 -0.470564,-0.175257 z m 1.416518,-0.515743 c -0.04859,0.578556 -0.300471,0.62169 -0.777745,0.697632 -0.034,0.152288 -0.05699,0.258181 -0.0969,0.437787 l 1.223994,0.303984 c 0.164208,-0.701576 0.296132,-1.269942 0.293248,-1.273096 -0.0043,-0.0046 -0.327631,-0.08748 -0.642597,-0.166307 z m -0.587772,-0.141586 c -0.0016,0.0027 -0.06999,0.304712 -0.158099,0.698899 0.559065,-0.08996 0.575972,-0.270987 0.592873,-0.594974 -0.229404,-0.05691 -0.432289,-0.106081 -0.434774,-0.103925 z m -0.164475,-0.0092 c -0.135978,0.01159 -0.204073,0.02561 -0.353171,0.06753 0.04792,0.09125 0.07023,0.278832 -0.200036,0.497924 0.141563,0.08791 0.265261,0.122014 0.390009,0.137353 0.114356,-0.532403 0.172961,-0.615354 0.163198,-0.702835 z m -2.677486,-0.0065 -0.237148,0.943143 0.805796,-0.798942 c -0.18084,-0.04602 -0.34599,-0.08797 -0.568648,-0.144201 z m 5.612522,-0.03249 c -0.750179,0.194829 -1.362065,0.355852 -1.364242,0.358548 -0.0019,0.0027 -0.137285,0.574647 -0.303451,1.280914 l 1.337469,-0.33256 z m -2.182789,-0.197471 v 0.211759 c 0.276503,0.0699 0.560065,0.139645 0.618371,0.140292 0,0 -0.03096,-0.126516 -0.06757,-0.283199 -7.93e-4,0 -0.0016,0 -0.0026,0 -0.238721,0.0062 -0.321882,-0.0081 -0.548246,-0.06885 z m -0.679572,-0.315683 -0.0026,0.0027 0.09817,0.38583 c 0.02307,-0.0027 0.214998,0.04675 0.430948,0.10131 2.4e-5,-0.0864 1.64e-4,-0.157114 0.0013,-0.219523 -0.185131,-0.06365 -0.363024,-0.153906 -0.527846,-0.270232 z m -2.866186,-0.12471 0.131326,0.50016 c 0,0 0.363977,0.08961 0.697421,0.171483 l 0.03825,-0.03769 c -0.494559,-0.17868 -0.501422,-0.552676 -0.866997,-0.633955 z m 5.579372,-0.111716 c -0.494358,0.418395 -0.758865,0.525016 -1.314519,0.614464 0.03396,0.138971 0.06369,0.258155 0.07268,0.285814 0.0076,0.02345 0.467328,-0.08354 1.388467,-0.320887 z m -3.207882,-0.254623 c -0.06109,-0.08511 -0.11524,-0.173667 -0.161925,-0.265029 -0.359863,0.0798 -0.952985,0.222488 -0.97027,0.237747 -0.0073,0.0065 0.04546,0.244648 0.118573,0.540437 0.178835,-0.168006 0.384271,-0.137731 0.520491,-0.04456 m 0.507283,0.496144 c 0.125,-0.04259 0.297064,-0.07581 0.406593,-0.08915 -0.01373,-0.100393 -0.0232,-0.163665 -0.06247,-0.267616 m -2.910811,-0.983419 0.131326,0.528737 c 0.662519,0.255998 0.711877,0.768478 1.067168,0.697631 l 0.228224,-0.226046 c -0.07081,-0.298943 -0.153485,-0.613683 -0.173397,-0.633956 -0.0046,-0.0046 -1.253321,-0.366366 -1.253321,-0.366366 z m 2.186615,-1.140587 -0.443699,0.111716 c -0.09333,0.398662 -0.219022,0.89726 -0.294523,1.192563 0.363871,-0.102631 0.462682,-0.124171 0.872095,-0.20785 -0.143711,-0.349112 -0.188886,-0.728445 -0.133873,-1.096429 z m -1.87424,-0.285813 -0.313648,1.249741 c 0.483029,0.139375 0.763559,0.218579 1.252043,0.335148 0.10314,-0.32458 0.219451,-0.683155 0.303448,-1.197766 -0.325758,-0.103251 -0.521049,-0.166792 -1.241843,-0.387123 z m 2.351088,-1.414701 -1.220169,0.30269 c 0.172125,0.761442 0.298183,1.305114 0.305999,1.313364 0.0075,0.0078 0.225253,-0.03952 0.473022,-0.09743 0.116554,-0.470022 0.217924,-0.632905 0.563546,-0.989889 -0.03709,-0.162128 -0.07823,-0.339596 -0.122398,-0.528737 z m 0.163197,-0.01698 c 0.05038,0.214994 0.05503,0.230495 0.09945,0.419609 0.140443,-0.115059 0.293208,-0.208632 0.452622,-0.281905 z m -2.852158,0 0.318746,1.249742 c 0.700001,0.21006 1.258697,0.375235 1.262245,0.371542 0.0038,-0.004 -0.123335,-0.586051 -0.283048,-1.309482 z m 5.60487,-0.01159 -0.493422,0.122095 c 0.227135,0.09573 0.440336,0.233245 0.628571,0.411818 z m -2.717445,2.334255 c 0.109487,0.68124 0.842335,1.193371 1.606491,1.108532 0.285036,-0.686201 0.484585,-0.652934 0.594535,-1.340268 0.0044,-0.611014 -0.784114,-0.234107 -1.142519,-0.214697 -0.615619,-0.01995 -0.584985,-0.758423 -0.651779,-0.867659 -0.190072,0.142368 -0.521817,0.587372 -0.406728,1.314092 z m 0.702955,-1.549601 c 0.200636,0.645656 0.243692,0.866311 0.883571,0.613171 0.481322,-0.142179 0.864986,0.05125 0.927298,0.283279 0.102087,0.345959 -0.06402,0.852913 -0.5091,1.641961 0.697153,-0.379441 0.91768,-1.209169 0.667258,-1.845956 -0.341146,-0.72645 -1.135436,-1.087828 -1.969027,-0.692455 z" style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.264583" id="path5801" inkscape:connector-curvature="0" />
61
61
  </g>
62
- <g id="delete-marker" transform="matrix(0.26458333,0,0,0.26458333,-4.9136911,-228.12889)" class="sprite">
62
+ <g id="delete-marker" transform="matrix(0.26458333,0,0,0.26458333,23.529017,-228.26118)" class="sprite">
63
63
  <path id="path3378-6" d="m 178.57143,979.21934 c -3.0625,0 -6.125,2.1197 -7,6.375 0,2.5532 1.75,7.6676 7,13.625 3.4166,-3.877 5.31568,-7.3755 6.25,-10.0625 -1.31416,-0.1622 -2.497,-0.7235 -3.40625,-1.5938 -0.63462,0.8653 -1.6677,1.4375 -2.84375,1.4375 -1.933,0 -3.5,-1.5261 -3.5,-3.4062 0,-1.8801 1.567,-3.4063 3.5,-3.4063 0.36776,0 0.72951,0.085 1.0625,0.1875 0.14352,-1.0312 0.55799,-1.956 1.15625,-2.75 -0.72276,-0.259 -1.46314,-0.4062 -2.21875,-0.4062 z" style="fill:#4d4d4d;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" />
64
64
  <path inkscape:connector-curvature="0" id="path6764" d="m 185.57143,978.21934 c -2.76142,0 -5,2.2386 -5,5 0,2.7615 2.23858,5 5,5 2.76142,0 5,-2.2385 5,-5 0,-2.7614 -2.23858,-5 -5,-5 z m -1.81818,2.2727 1.81818,1.8182 1.81818,-1.8182 0.90909,0.9091 -1.81818,1.8182 1.81818,1.8182 -0.90909,0.9091 -1.81818,-1.8182 -1.81818,1.8182 -0.90909,-0.9091 1.81818,-1.8182 -1.81818,-1.8182 z" style="fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none" />
65
65
  </g>
66
- <g id="multipolygon" class="sprite" transform="matrix(0.26458333,0,0,0.26458333,-0.57877605,-230.28333)">
66
+ <g id="multipolygon" class="sprite" transform="matrix(0.26458333,0,0,0.26458333,66.121027,-220.75833)">
67
67
  <path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" d="m 10.1875,1017.3622 v 0.5 3 0.5 h 0.5 1.3125 l -1.59375,14 h -1.71875 -0.5 v 0.5 3 0.5 h 0.5 3 0.5 v -0.5 -1.5938 c 0,0 13.716518,-10.9062 13.71875,-10.9062 h 1.78125 0.5 v -0.5 -3 -0.5 h -0.5 -3 -0.5 v 0.5 0.8125 l -10,-3.5938 v -2.2187 -0.5 h -0.5 -3 z m 1,1 h 2 v 2 h -2 z m 14,5 h 2 v 2 h -2 z m -16,13 h 2 v 2 h -2 z" id="rect4058-1-2" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccc" />
68
68
  <path style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" d="m 18,1043.3622 h -3.5 -0.5 v 0.5 3 0.5 h 0.5 3 0.5 v -0.5 -1.5937 l 10,-0.6875 v 1.2812 0.5 h 0.5 3 0.5 v -0.5 -3 -0.5 h -0.5 -1.15625 l -2.4375,-8 h 1.78125 0.5 v -0.5 -3 -0.5 h -0.5 -3 -0.6875 c 0,3 0,3 0,3 0,0 -7.8125,10 -8,10 z m 9.1875,-12 h 2 v 2 h -2 z m 1.8125,12 h 2 v 2 h -2 z m -14,1 c 2,0 0,0 2,0 v 2 h -2 z" id="rect4058-1-2-0" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccc" />
69
69
  </g>
70
- <g id="multiline" class="sprite" transform="matrix(0.26458333,0,0,0.26458333,-1.5875001,-230.81236)">
70
+ <g id="multiline" class="sprite" transform="matrix(0.26458333,0,0,0.26458333,55.562499,-201.97278)">
71
71
  <path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccc" id="rect4058-9" d="m 51,1020.3622 v 0.5 3 0.5 h 0.5 3 0.5 v -0.5 -0.3438 l 10,4 v 1.3438 0.4375 l 1.09375,0.062 h 2.40625 0.5 v -0.5 -3 -0.5 h -0.5 -3 -0.5 v 0.5 0.5625 l -10,-4 v -1.5625 -0.5 h -0.5 -3 z m 1,1 h 2 v 2 h -2 z m 14,5 h 2 v 2 h -2 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" inkscape:connector-curvature="0" />
72
72
  <path sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc" id="rect4058-9-5" d="m 55.09375,1030.5184 v 1.3438 0.4375 l 7.09375,11.0625 h 2.40625 0.5 v 0.5 3 0.5 h -0.5 -3 -0.5 v -0.5 -3 -0.375 l -7.09375,-11.125 h -2.40625 -0.5 v -0.5 -3 -0.5 h 0.5 3 0.5 v 0.5 0.5625 z m -1,-1.1562 h -2 v 2 h 2 z m 10,15 h -2 v 2 h 2 z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1;marker:none;enable-background:accumulate" inkscape:connector-curvature="0" />
73
73
  </g>
@@ -77,8 +77,8 @@
77
77
  </g>
78
78
  <path style="fill:#464646;fill-opacity:1;stroke:none;stroke-width:1.84551;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" inkscape:transform-center-x="-0.0017170804" inkscape:transform-center-y="-1.1593678" d="m 31.537126,45.771563 0.577355,-2.184903 -1.687401,-1.349931 h 2.154994 l 0.756436,-2.28465 0.754501,2.284227 h 2.154902 l -1.688682,1.351121 0.575368,2.185485 -1.798166,-1.252432 z" id="star" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" class="sprite" />
79
79
  <path style="fill:none;fill-opacity:1;stroke:#464646;stroke-width:0.264583;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" inkscape:transform-center-x="-0.0017170804" inkscape:transform-center-y="-1.1593678" d="m 40.742193,45.771563 0.577355,-2.184903 -1.687401,-1.349931 h 2.154994 l 0.756436,-2.28465 0.754502,2.284227 h 2.154901 l -1.688682,1.351121 0.575368,2.185485 -1.798169,-1.252432 z" id="starred" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" class="sprite" />
80
- <path d="m 16.75657,23.457511 0.367177,0.21791 c 0.07232,0.04294 0.09577,0.135732 0.0524,0.207275 -0.01292,0.02122 -0.03092,0.03903 -0.0524,0.0518 l -2.836254,1.6832 -2.836235,-1.6832 c -0.07233,-0.04294 -0.09579,-0.135704 -0.05238,-0.207274 0.0129,-0.02125 0.03089,-0.03905 0.05238,-0.05181 l 0.367179,-0.21791 2.469056,1.465315 z m 0,1.419992 0.367177,0.217911 c 0.07232,0.04294 0.09577,0.135731 0.0524,0.207274 -0.01292,0.02125 -0.03092,0.03903 -0.0524,0.05181 l -2.679097,1.58996 c -0.09674,0.05739 -0.217576,0.05739 -0.314315,0 l -2.679077,-1.58996 c -0.07233,-0.04292 -0.09579,-0.135705 -0.05238,-0.207249 0.0129,-0.02127 0.03089,-0.03908 0.05238,-0.05183 l 0.367179,-0.217911 2.469056,1.465315 z m -2.31192,-4.196946 2.679097,1.589967 c 0.07232,0.04292 0.09577,0.135715 0.0524,0.207256 -0.01292,0.02126 -0.03092,0.03906 -0.0524,0.05182 l -2.836254,1.683221 -2.836235,-1.683221 c -0.07233,-0.04292 -0.09579,-0.135716 -0.05238,-0.207256 0.0129,-0.02126 0.03089,-0.03906 0.05238,-0.05182 l 2.679077,-1.589967 c 0.09674,-0.05741 0.217576,-0.05741 0.314315,0 z" fill="#4d4d4d" id="datalayers" style="stroke-width:0.264583" />
81
- <g id="tilelayers" transform="translate(0,-0.26458333)">
80
+ <path d="m 45.33157,52.032511 0.367177,0.21791 c 0.07232,0.04294 0.09577,0.135732 0.0524,0.207275 -0.01292,0.02122 -0.03092,0.03903 -0.0524,0.0518 l -2.836254,1.6832 -2.836235,-1.6832 c -0.07233,-0.04294 -0.09579,-0.135704 -0.05238,-0.207274 0.0129,-0.02125 0.03089,-0.03905 0.05238,-0.05181 l 0.367179,-0.21791 2.469056,1.465315 z m 0,1.419992 0.367177,0.217911 c 0.07232,0.04294 0.09577,0.135731 0.0524,0.207274 -0.01292,0.02125 -0.03092,0.03903 -0.0524,0.05181 l -2.679097,1.58996 c -0.09674,0.05739 -0.217576,0.05739 -0.314315,0 l -2.679077,-1.58996 c -0.07233,-0.04292 -0.09579,-0.135705 -0.05238,-0.207249 0.0129,-0.02127 0.03089,-0.03908 0.05238,-0.05183 l 0.367179,-0.217911 2.469056,1.465315 z m -2.31192,-4.196946 2.679097,1.589967 c 0.07232,0.04292 0.09577,0.135715 0.0524,0.207256 -0.01292,0.02126 -0.03092,0.03906 -0.0524,0.05182 l -2.836254,1.683221 -2.836235,-1.683221 c -0.07233,-0.04292 -0.09579,-0.135716 -0.05238,-0.207256 0.0129,-0.02126 0.03089,-0.03906 0.05238,-0.05182 l 2.679077,-1.589967 c 0.09674,-0.05741 0.217576,-0.05741 0.314315,0 z" fill="#4d4d4d" id="datalayers" style="stroke-width:0.264583" />
81
+ <g id="tilelayers" transform="translate(19.049999,56.885416)">
82
82
  <path d="m 26.772659,3.4276506 h -4.243945 c -0.07035,0 -0.137814,0.027945 -0.187558,0.077687 -0.04974,0.049744 -0.07769,0.1172104 -0.07769,0.1875578 v 4.2439431 c 0,0.070353 0.02794,0.1378215 0.07769,0.1875631 0.04974,0.049742 0.11721,0.077682 0.187558,0.077682 h 4.243945 c 0.07035,0 0.137822,-0.02794 0.187563,-0.077682 0.04974,-0.049742 0.07768,-0.1172104 0.07768,-0.1875631 v -4.2439431 c 0,-0.070347 -0.02794,-0.1378135 -0.07768,-0.1875578 -0.04974,-0.049742 -0.11721,-0.077687 -0.187563,-0.077687 z m -0.265245,4.1590648 h -3.713453 v -3.546348 h 3.713453 z" fill="#464646" id="path2349" style="stroke-width:0.264583" />
83
83
  <g mask="url(#mask0_181_11898)" id="g2376" transform="matrix(0.26458333,0,0,0.26458333,20.637501,1.8520833)">
84
84
  <path d="m 16.0401,2.3158 h -14.0351 v 14.0351 h 14.0351 z" fill="#d5ecbe" id="path2354" />
@@ -95,9 +95,20 @@
95
95
  </g>
96
96
  <path d="m 25.146689,1.8520833 h -4.243941 c -0.07035,0 -0.137815,0.027946 -0.187558,0.077689 -0.04974,0.049744 -0.07769,0.1172099 -0.07769,0.1875586 v 4.2439405 c 0,0.070353 0.02795,0.1378215 0.07769,0.1875632 0.04974,0.049742 0.11721,0.077682 0.187558,0.077682 h 4.243941 c 0.07035,0 0.137821,-0.02794 0.187563,-0.077682 0.04974,-0.049742 0.07768,-0.1172105 0.07768,-0.1875632 v -4.2439405 c 0,-0.070349 -0.02794,-0.1378151 -0.07768,-0.1875586 -0.04974,-0.049743 -0.11721,-0.077689 -0.187563,-0.077689 z m -0.265245,4.1590648 h -3.713451 v -3.5463453 h 3.713451 z" fill="#464646" id="path2378" style="stroke-width:0.264583" />
97
97
  </g>
98
- <g id="info" transform="matrix(0.33072916,0,0,0.33072916,-11.90625,-256.10415)" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.8">
98
+ <g id="info" transform="matrix(0.33072916,0,0,0.33072916,7.1437494,-265.62915)" style="fill:#4d4d4d;fill-opacity:1;stroke-width:0.8">
99
99
  <path id="path3762" style="fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.8" d="m 108,838.36217 a 8,8 0 0 0 -8,8 8,8 0 0 0 8,8 8,8 0 0 0 8,-8 8,8 0 0 0 -8,-8 z m 0,2.5 a 1.5,1.5 0 0 1 1.5,1.5 1.5,1.5 0 0 1 -1.5,1.5 1.5,1.5 0 0 1 -1.5,-1.5 1.5,1.5 0 0 1 1.5,-1.5 z m -1,4.5 h 2 v 6 h -2 z" />
100
100
  </g>
101
101
  <path d="m 5.6444435,59.43432 v 1.034991 h 1.0541546 z m 1.1759257,1.612262 h -1.1759257 c -0.3247228,0 -0.5879626,-0.258453 -0.5879626,-0.577271 v -1.154545 h -2.3518514 v 5.195451 h 4.1157397 z m -4.1157397,-2.309089 h 3.0615854 l 1.6421175,1.612259 v 4.160465 c 0,0.318822 -0.2632403,0.577275 -0.5879632,0.577275 h -4.1157397 c -0.3247231,0 -0.5879631,-0.258453 -0.5879631,-0.577275 v -5.195451 c 0,-0.31882 0.26324,-0.577273 0.5879631,-0.577273 z m 1.7638882,3.92135 v -1.323625 h 0.5879632 v 1.323625 l 0.3800861,-0.373177 0.415753,0.408196 -1.0898206,1.070004 -1.0898208,-1.070004 0.4157526,-0.408196 z" fill-rule="evenodd" id="downloadfile" style="fill:#464646;fill-opacity:1;stroke-width:0.192424" />
102
+ <g id="set-zoom-6" class="sprite" transform="translate(37.659368,8.069823)" style="fill:#4d4d4d;fill-opacity:1">
103
+ <polygon points="37.37,62.644 37.37,90.703 28.965,82.305 11.27,100 0,88.737 17.702,71.042 9.297,62.644 " id="polygon3044-7" transform="matrix(0.0635,0,0,0.0635,2.2709793,12.435385)" style="fill:#4d4d4d;fill-opacity:1;stroke:#999999;stroke-width:1.04167;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
104
+ <polygon points="71.042,17.708 62.644,9.31 62.644,37.357 90.71,37.37 82.298,28.958 100,11.263 88.743,0 " id="polygon3048-5" transform="matrix(0.0635,0,0,0.0635,2.2709793,12.435385)" style="fill:#4d4d4d;fill-opacity:1;stroke:#999999;stroke-width:1.04167;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
105
+ <path inkscape:connector-curvature="0" d="m 5.4459792,14.83486 c -0.428308,0 -0.775525,0.347281 -0.775525,0.775525 0,0.429133 0.347281,0.776415 0.775525,0.776415 0.428308,0 0.77597,-0.347282 0.77597,-0.776415 0,-0.428307 -0.347662,-0.775525 -0.77597,-0.775525 z" id="path3052-3" style="fill:#4d4d4d;fill-opacity:1;stroke:#999999;stroke-width:0.0661458;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
106
+ </g>
107
+ <g id="help" transform="matrix(0.35277776,0,0,0.35277776,-7.6749272,-328.17103)" style="stroke-width:0.75">
108
+ <circle transform="matrix(1.0714286,0,0,1.0714286,26.684272,934.10579)" id="path3014" style="fill:none;stroke:#4d4d4d;stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="8" cy="9" r="7" />
109
+ <g id="text3784" style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.75" transform="translate(27.255701,-100.61365)">
110
+ <path inkscape:connector-curvature="0" id="path3789" style="font-weight:bold;font-size:12px;-inkscape-font-specification:'Sans Bold';fill:#4d4d4d;stroke-width:0.75" d="m 9,1046.0464 h -2.3698034 v -0.3223 c 0,-0.3596 0.072207,-0.6775 0.2166302,-0.9539 0.1444174,-0.2807 0.4485749,-0.636 0.9124728,-1.0658 l 0.4201314,-0.3816 c 0.249449,-0.228 0.4310681,-0.4429 0.5448577,-0.6446 0.1181576,-0.2019 0.1772384,-0.4036 0.177243,-0.6053 -4.6e-6,-0.3071 -0.1050376,-0.5462 -0.3150985,-0.7171 -0.2100697,-0.1756 -0.5032861,-0.2632 -0.87965,-0.2632 -0.3544889,0 -0.7374207,0.075 -1.1487968,0.2237 -0.4113804,0.1446 -0.840264,0.3618 -1.2866522,0.6513 v -2.0659 c 0.5295391,-0.184 1.0131273,-0.32 1.4507661,-0.4077 0.437634,-0.088 0.8599531,-0.1317 1.2669587,-0.1317 1.0678292,0 1.8818328,0.2194 2.442012,0.6579 0.560169,0.4341 0.840256,1.0702 0.840263,1.9078 -7e-6,0.4298 -0.08535,0.8159 -0.256017,1.158 -0.170685,0.3377 -0.461713,0.7017 -0.873085,1.092 l -0.4201313,0.375 c -0.297598,0.272 -0.4923463,0.4913 -0.5842451,0.658 -0.091909,0.1622 -0.1378603,0.342 -0.1378556,0.5394 v 0.296 m -2.3698034,0.9739 h 2.3698034 v 2.342 h -2.3698034 v -2.342" sodipodi:nodetypes="ccsccccccsccccsccccccccccccc" />
111
+ </g>
112
+ </g>
102
113
  </g>
103
114
  </svg>
@@ -46,7 +46,7 @@ export default class Browser {
46
46
  const symbol = feature._getIconUrl
47
47
  ? Icon.formatUrl(feature._getIconUrl(), feature)
48
48
  : null
49
- title.textContent = feature.getDisplayName() || '—'
49
+ title.textContent = title.title = feature.getDisplayName() || '—'
50
50
  const bgcolor = feature.getPreviewColor()
51
51
  colorBox.style.backgroundColor = bgcolor
52
52
  if (symbol && symbol !== U.SCHEMA.iconUrl.default) {
@@ -97,7 +97,7 @@ export default class Browser {
97
97
  DomEvent.on(toggle, 'click', toggleList)
98
98
  datalayer.renderToolbox(headline)
99
99
  const name = DomUtil.create('span', 'datalayer-name', headline)
100
- name.textContent = datalayer.options.name
100
+ name.textContent = name.title = datalayer.options.name
101
101
  DomEvent.on(name, 'click', toggleList)
102
102
  container.innerHTML = ''
103
103
  datalayer.eachFeature((feature) => this.addFeature(feature, container))
@@ -8,9 +8,9 @@ const TEMPLATE = `
8
8
  <i class="icon icon-16 icon-caption icon-block"></i>
9
9
  <hgroup>
10
10
  <h3><span class="map-name" data-ref="name"></span></h3>
11
- <p class="dates" data-ref="dates"></p>
12
11
  <p data-ref="author"></p>
13
- <p><button type="button" class="round" data-ref="star" title="${translate('Star this map')}"><i class="icon icon-16 icon-star map-star"></i><span class="map-stars"></span></button></p>
12
+ <p class="dates" data-ref="dates"></p>
13
+ <p><button type="button" class="round small" data-ref="star" title="${translate('Star this map')}"><i class="icon icon-16 icon-star map-star"></i><span class="map-stars"></span></button></p>
14
14
  </hgroup>
15
15
  </div>
16
16
  <div class="umap-map-description text" data-ref="description"></div>
@@ -73,10 +73,10 @@ export default class Caption extends Utils.WithTemplate {
73
73
  )
74
74
  this.addCredits()
75
75
  if (this._umap.properties.created_at) {
76
- const created_at = translate('Created at {date}', {
76
+ const created_at = translate('created at {date}', {
77
77
  date: new Date(this._umap.properties.created_at).toLocaleDateString(),
78
78
  })
79
- const modified_at = translate('Modified at {date}', {
79
+ const modified_at = translate('modified at {date}', {
80
80
  date: new Date(this._umap.properties.modified_at).toLocaleDateString(),
81
81
  })
82
82
  this.elements.dates.innerHTML = `${created_at} - ${modified_at}`
@@ -22,7 +22,6 @@ class Feature {
22
22
  constructor(umap, datalayer, geojson = {}, id = null) {
23
23
  this._umap = umap
24
24
  this.sync = umap.syncEngine.proxy(this)
25
- this._marked_for_deletion = false
26
25
  this._isDirty = false
27
26
  this._ui = null
28
27
 
@@ -147,17 +146,6 @@ class Feature {
147
146
  // When the layer is a remote layer, we don't want to sync the creation of the
148
147
  // points via the websocket, as the other peers will get them themselves.
149
148
  if (this.datalayer?.isRemoteLayer()) return
150
-
151
- // The "endEdit" event is triggered at the end of an edition,
152
- // and will trigger the sync.
153
- // In the case of a deletion (or a change of layer), we don't want this
154
- // event triggered to cause a sync event, as it would reintroduce
155
- // deleted features.
156
- // The `._marked_for_deletion` private property is here to track this status.
157
- if (this._marked_for_deletion === true) {
158
- this._marked_for_deletion = false
159
- return
160
- }
161
149
  this.sync.upsert(this.toGeoJSON())
162
150
  }
163
151
 
@@ -270,6 +258,10 @@ class Feature {
270
258
  if (!this.ui.isOnScreen(this._umap._leafletMap.getBounds())) this.zoomTo(event)
271
259
  }
272
260
 
261
+ toggleEditing() {
262
+ this.edit()
263
+ }
264
+
273
265
  getAdvancedEditActions(container) {
274
266
  const button = Utils.loadTemplate(`
275
267
  <button class="button" type="button">
@@ -331,15 +323,15 @@ class Feature {
331
323
  // Variables mode.
332
324
  if (labelKey) {
333
325
  if (Utils.hasVar(labelKey)) {
334
- return Utils.greedyTemplate(labelKey, this.extendedProperties())
326
+ return Utils.greedyTemplate(labelKey, this.extendedProperties()).trim()
335
327
  }
336
328
  keys.unshift(labelKey)
337
329
  }
338
330
  for (const key of keys) {
339
331
  const value = this.properties[key]
340
- if (value) return value
332
+ if (value) return value.trim()
341
333
  }
342
- return this.datalayer.getName()
334
+ return this.datalayer.getName().trim()
343
335
  }
344
336
 
345
337
  hasPopupFooter() {
@@ -508,8 +500,19 @@ class Feature {
508
500
  })
509
501
  }
510
502
 
511
- getInplaceToolbarActions() {
512
- return [U.ToggleEditAction, U.DeleteFeatureAction]
503
+ getInplaceEditMenu() {
504
+ return [
505
+ {
506
+ action: () => this.toggleEditing(),
507
+ title: translate('Toggle edit mode (⇧+Click)'),
508
+ icon: 'icon-edit',
509
+ },
510
+ {
511
+ action: () => this.confirmDelete(),
512
+ title: translate('Delete this feature'),
513
+ icon: 'icon-delete',
514
+ },
515
+ ]
513
516
  }
514
517
 
515
518
  isFiltered() {
@@ -564,6 +567,10 @@ class Feature {
564
567
  return false
565
568
  }
566
569
 
570
+ isEmpty() {
571
+ return !this.coordinates.length
572
+ }
573
+
567
574
  clone() {
568
575
  const geojson = this.toGeoJSON()
569
576
  delete geojson.id
@@ -621,6 +628,12 @@ class Feature {
621
628
  window.open(permalink)
622
629
  },
623
630
  })
631
+ items.push({
632
+ label: translate('Layer permalink'),
633
+ action: () => {
634
+ window.open(this.datalayer.getPermalink())
635
+ },
636
+ })
624
637
  }
625
638
  items.push({
626
639
  label: translate('Copy as GeoJSON'),
@@ -781,17 +794,15 @@ class Path extends Feature {
781
794
  }
782
795
  }
783
796
 
784
- _toggleEditing(event) {
797
+ toggleEditing() {
785
798
  if (this._umap.editEnabled) {
786
799
  if (this.ui.editEnabled()) {
787
800
  this.endEdit()
788
801
  this._umap.editPanel.close()
789
802
  } else {
790
- this.edit(event)
803
+ this.edit()
791
804
  }
792
805
  }
793
- // FIXME: disable when disabling global edit
794
- L.DomEvent.stop(event)
795
806
  }
796
807
 
797
808
  getShapeOptions() {
@@ -842,15 +853,33 @@ class Path extends Feature {
842
853
  return other
843
854
  }
844
855
 
845
- getInplaceToolbarActions(event) {
846
- const items = super.getInplaceToolbarActions(event)
856
+ getInplaceEditMenu(event) {
857
+ const items = super.getInplaceEditMenu()
847
858
  if (this.isMulti()) {
848
- items.push(U.DeleteShapeAction)
849
- items.push(U.ExtractShapeFromMultiAction)
859
+ items.push({
860
+ action: () => this.ui.enableEdit().deleteShapeAt(event.latlng),
861
+ title: translate('Delete this shape'),
862
+ icon: 'icon-delete-shape',
863
+ })
864
+ items.push({
865
+ action: () => this.ui.isolateShape(event.latlng),
866
+ title: translate('Extract shape to separate feature'),
867
+ icon: 'icon-extract-shape',
868
+ })
850
869
  }
851
870
  return items
852
871
  }
853
872
 
873
+ getInplaceEditVertexMenu(event) {
874
+ return [
875
+ {
876
+ action: () => event.vertex.delete(),
877
+ title: translate('Delete this vertex (Alt+Click)'),
878
+ icon: 'icon-delete-vertex',
879
+ },
880
+ ]
881
+ }
882
+
854
883
  zoomTo({ easing, callback }) {
855
884
  // Use bounds instead of centroid for paths.
856
885
  easing = easing || this._umap.getProperty('easing')
@@ -951,10 +980,6 @@ export class LineString extends Path {
951
980
  return { coordinates, type }
952
981
  }
953
982
 
954
- isEmpty() {
955
- return !this.coordinates.length
956
- }
957
-
958
983
  getUIClass() {
959
984
  return super.getUIClass() || LeafletPolyline
960
985
  }
@@ -1077,6 +1102,25 @@ export class LineString extends Path {
1077
1102
  const [gain, loss] = this.ui.getElevation()
1078
1103
  return Object.assign({ gain, loss }, super.extendedProperties())
1079
1104
  }
1105
+
1106
+ getInplaceEditVertexMenu(event) {
1107
+ const items = super.getInplaceEditVertexMenu(event)
1108
+ const index = event.vertex.getIndex()
1109
+ if (index === 0 || index === event.vertex.getLastIndex()) {
1110
+ items.push({
1111
+ action: () => event.vertex.continue(),
1112
+ title: translate('Continue line'),
1113
+ icon: 'icon-continue-line',
1114
+ })
1115
+ } else {
1116
+ items.push({
1117
+ action: () => event.vertex.split(),
1118
+ title: translate('Split line'),
1119
+ icon: 'icon-split-line',
1120
+ })
1121
+ }
1122
+ return items
1123
+ }
1080
1124
  }
1081
1125
 
1082
1126
  export class Polygon extends Path {
@@ -1182,9 +1226,13 @@ export class Polygon extends Path {
1182
1226
  )
1183
1227
  }
1184
1228
 
1185
- getInplaceToolbarActions(event) {
1186
- const items = super.getInplaceToolbarActions(event)
1187
- items.push(U.CreateHoleAction)
1229
+ getInplaceEditMenu(event) {
1230
+ const items = super.getInplaceEditMenu()
1231
+ items.push({
1232
+ action: () => this.ui.startHole(event),
1233
+ title: translate('Start a hole here'),
1234
+ icon: 'icon-hole',
1235
+ })
1188
1236
  return items
1189
1237
  }
1190
1238
 
@@ -45,8 +45,6 @@ export class DataLayer extends ServerStored {
45
45
  this._features = {}
46
46
  this._geojson = null
47
47
  this._propertiesIndex = []
48
- this._loaded = false // Are layer metadata loaded
49
- this._dataloaded = false // Are layer data loaded
50
48
 
51
49
  this._leafletMap = leafletMap
52
50
  this.parentPane = this._leafletMap.getPane('overlayPane')
@@ -85,6 +83,7 @@ export class DataLayer extends ServerStored {
85
83
  this.connectToMap()
86
84
  this.permissions = new DataLayerPermissions(this._umap, this)
87
85
 
86
+ this._needsFetch = this.createdOnServer
88
87
  if (!this.createdOnServer) {
89
88
  if (this.showAtLoad()) this.show()
90
89
  }
@@ -243,7 +242,7 @@ export class DataLayer extends ServerStored {
243
242
  }
244
243
 
245
244
  dataChanged() {
246
- if (!this.hasDataLoaded()) return
245
+ if (!this.isLoaded()) return
247
246
  this._umap.onDataLayersChanged()
248
247
  this.layer.dataChanged()
249
248
  }
@@ -252,13 +251,13 @@ export class DataLayer extends ServerStored {
252
251
  if (!geojson) return []
253
252
  const features = this.addData(geojson, sync)
254
253
  this._geojson = geojson
254
+ this._needsFetch = false
255
255
  this.onDataLoaded()
256
256
  this.dataChanged()
257
257
  return features
258
258
  }
259
259
 
260
260
  onDataLoaded() {
261
- this._dataloaded = true
262
261
  this.renderLegend()
263
262
  }
264
263
 
@@ -268,7 +267,6 @@ export class DataLayer extends ServerStored {
268
267
  if (geojson._umap_options) this.setOptions(geojson._umap_options)
269
268
  if (this.isRemoteLayer()) await this.fetchRemoteData()
270
269
  else this.fromGeoJSON(geojson, false)
271
- this._loaded = true
272
270
  }
273
271
 
274
272
  clear() {
@@ -320,7 +318,7 @@ export class DataLayer extends ServerStored {
320
318
 
321
319
  async fetchRemoteData(force) {
322
320
  if (!this.isRemoteLayer()) return
323
- if (!this.hasDynamicData() && this.hasDataLoaded() && !force) return
321
+ if (!this.hasDynamicData() && this.isLoaded() && !force) return
324
322
  if (!this.isVisible()) return
325
323
  // Keep non proxied url for later use in Alert.
326
324
  const remoteUrl = this._umap.renderUrl(this.options.remoteData.url)
@@ -345,11 +343,7 @@ export class DataLayer extends ServerStored {
345
343
  }
346
344
 
347
345
  isLoaded() {
348
- return !this.createdOnServer || this._loaded
349
- }
350
-
351
- hasDataLoaded() {
352
- return this._dataloaded
346
+ return !this._needsFetch
353
347
  }
354
348
 
355
349
  backupOptions() {
@@ -522,7 +516,7 @@ export class DataLayer extends ServerStored {
522
516
  })
523
517
  )
524
518
  }
525
- if (feature) {
519
+ if (feature && !feature.isEmpty()) {
526
520
  this.addFeature(feature)
527
521
  if (sync) feature.onCommit()
528
522
  return feature
@@ -633,8 +627,6 @@ export class DataLayer extends ServerStored {
633
627
  this.propagateDelete()
634
628
  this._leaflet_events_bk = this._leaflet_events
635
629
  this.clear()
636
- delete this._loaded
637
- delete this._dataloaded
638
630
  }
639
631
 
640
632
  reset() {
@@ -652,7 +644,6 @@ export class DataLayer extends ServerStored {
652
644
  this.hide()
653
645
  if (this.isRemoteLayer()) this.fetchRemoteData()
654
646
  else if (this._geojson_bk) this.fromGeoJSON(this._geojson_bk)
655
- this._loaded = true
656
647
  this.show()
657
648
  this.isDirty = false
658
649
  }
@@ -847,44 +838,36 @@ export class DataLayer extends ServerStored {
847
838
  container,
848
839
  translate('Advanced actions')
849
840
  )
850
- const advancedButtons = DomUtil.create('div', 'button-bar half', advancedActions)
851
- const deleteButton = Utils.loadTemplate(`
852
- <button class="button" type="button">
841
+ const filename = `${Utils.slugify(this.options.name)}.geojson`
842
+ const tpl = `
843
+ <div class="button-bar half">
844
+ <button class="button" type="button" data-ref=del>
853
845
  <i class="icon icon-24 icon-delete"></i>${translate('Delete')}
854
- </button>`)
855
- deleteButton.addEventListener('click', () => {
846
+ </button>
847
+ <button class="button" type="button" data-ref=empty hidden>
848
+ <i class="icon icon-24 icon-empty"></i>${translate('Empty')}
849
+ </button>
850
+ <button class="button" type="button" data-ref=clone>
851
+ <i class="icon icon-24 icon-clone"></i>${translate('Clone')}
852
+ </button>
853
+ <a class="button" href="${this._dataUrl()}" download="${filename}" data-ref=download hidden>
854
+ <i class="icon icon-24 icon-download"></i>${translate('Download')}
855
+ </a>
856
+ </div>
857
+ `
858
+ const [bar, { del, empty, clone, download }] = Utils.loadTemplateWithRefs(tpl)
859
+ advancedActions.appendChild(bar)
860
+ del.addEventListener('click', () => {
856
861
  this.del()
857
862
  this._umap.editPanel.close()
858
863
  })
859
- advancedButtons.appendChild(deleteButton)
860
864
 
861
865
  if (!this.isRemoteLayer()) {
862
- const emptyLink = DomUtil.createButton(
863
- 'button umap-empty',
864
- advancedButtons,
865
- translate('Empty'),
866
- this.empty,
867
- this
868
- )
869
- }
870
- const cloneLink = DomUtil.createButton(
871
- 'button umap-clone',
872
- advancedButtons,
873
- translate('Clone'),
874
- function () {
875
- const datalayer = this.clone()
876
- datalayer.edit()
877
- },
878
- this
879
- )
880
- if (this.createdOnServer) {
881
- const filename = `${Utils.slugify(this.options.name)}.geojson`
882
- const download = Utils.loadTemplate(`
883
- <a class="button" href="${this._dataUrl()}" download="${filename}">
884
- <i class="icon icon-24 icon-download"></i>${translate('Download')}
885
- </a>`)
886
- advancedButtons.appendChild(download)
866
+ empty.hidden = false
867
+ empty.addEventListener('click', () => this.empty())
887
868
  }
869
+ clone.addEventListener('click', () => this.clone().edit())
870
+ if (this.createdOnServer) download.hidden = false
888
871
  const backButton = DomUtil.createButtonIcon(
889
872
  undefined,
890
873
  'icon-back',
@@ -897,6 +880,7 @@ export class DataLayer extends ServerStored {
897
880
 
898
881
  this._umap.editPanel.open({
899
882
  content: container,
883
+ highlight: 'layers',
900
884
  actions: [backButton],
901
885
  })
902
886
  }
@@ -1107,9 +1091,7 @@ export class DataLayer extends ServerStored {
1107
1091
 
1108
1092
  async save() {
1109
1093
  if (this.isDeleted) return await this.saveDelete()
1110
- if (!this.isLoaded()) {
1111
- return
1112
- }
1094
+ if (!this.isLoaded()) return
1113
1095
  const geojson = this.umapGeoJSON()
1114
1096
  const formData = new FormData()
1115
1097
  formData.append('name', this.options.name)
@@ -1171,7 +1153,6 @@ export class DataLayer extends ServerStored {
1171
1153
  this.backupOptions()
1172
1154
  this.backupData()
1173
1155
  this.connectToMap()
1174
- this._loaded = true
1175
1156
  this.redraw() // Needed for reordering features
1176
1157
  return true
1177
1158
  }
@@ -1193,6 +1174,12 @@ export class DataLayer extends ServerStored {
1193
1174
  return this.options.name || translate('Untitled layer')
1194
1175
  }
1195
1176
 
1177
+ getPermalink() {
1178
+ return `${Utils.getBaseUrl()}?${Utils.buildQueryString({ datalayers: this.id })}${
1179
+ window.location.hash
1180
+ }`
1181
+ }
1182
+
1196
1183
  tableEdit() {
1197
1184
  if (!this.isVisible()) return
1198
1185
  const editor = new TableEditor(this._umap, this, this._leafletMap)