umap-project 2.5.0__py3-none-any.whl → 2.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (276) hide show
  1. umap/__init__.py +1 -1
  2. umap/admin.py +6 -1
  3. umap/context_processors.py +2 -1
  4. umap/decorators.py +13 -2
  5. umap/forms.py +26 -2
  6. umap/locale/br/LC_MESSAGES/django.mo +0 -0
  7. umap/locale/br/LC_MESSAGES/django.po +252 -146
  8. umap/locale/ca/LC_MESSAGES/django.mo +0 -0
  9. umap/locale/ca/LC_MESSAGES/django.po +274 -162
  10. umap/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  11. umap/locale/cs_CZ/LC_MESSAGES/django.po +261 -150
  12. umap/locale/de/LC_MESSAGES/django.mo +0 -0
  13. umap/locale/de/LC_MESSAGES/django.po +299 -187
  14. umap/locale/el/LC_MESSAGES/django.mo +0 -0
  15. umap/locale/el/LC_MESSAGES/django.po +215 -159
  16. umap/locale/en/LC_MESSAGES/django.po +211 -155
  17. umap/locale/es/LC_MESSAGES/django.mo +0 -0
  18. umap/locale/es/LC_MESSAGES/django.po +255 -144
  19. umap/locale/eu/LC_MESSAGES/django.mo +0 -0
  20. umap/locale/eu/LC_MESSAGES/django.po +254 -198
  21. umap/locale/fa_IR/LC_MESSAGES/django.mo +0 -0
  22. umap/locale/fa_IR/LC_MESSAGES/django.po +347 -235
  23. umap/locale/fr/LC_MESSAGES/django.mo +0 -0
  24. umap/locale/fr/LC_MESSAGES/django.po +216 -160
  25. umap/locale/hu/LC_MESSAGES/django.mo +0 -0
  26. umap/locale/hu/LC_MESSAGES/django.po +215 -159
  27. umap/locale/it/LC_MESSAGES/django.mo +0 -0
  28. umap/locale/it/LC_MESSAGES/django.po +252 -146
  29. umap/locale/ms/LC_MESSAGES/django.mo +0 -0
  30. umap/locale/ms/LC_MESSAGES/django.po +252 -146
  31. umap/locale/pl/LC_MESSAGES/django.mo +0 -0
  32. umap/locale/pl/LC_MESSAGES/django.po +254 -148
  33. umap/locale/pt/LC_MESSAGES/django.mo +0 -0
  34. umap/locale/pt/LC_MESSAGES/django.po +215 -159
  35. umap/locale/sv/LC_MESSAGES/django.mo +0 -0
  36. umap/locale/sv/LC_MESSAGES/django.po +254 -143
  37. umap/locale/th_TH/LC_MESSAGES/django.mo +0 -0
  38. umap/locale/th_TH/LC_MESSAGES/django.po +125 -70
  39. umap/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  40. umap/locale/zh_TW/LC_MESSAGES/django.po +256 -145
  41. umap/migrations/0022_add_team.py +94 -0
  42. umap/models.py +45 -10
  43. umap/settings/__init__.py +2 -0
  44. umap/settings/base.py +9 -2
  45. umap/static/umap/base.css +32 -41
  46. umap/static/umap/content.css +19 -25
  47. umap/static/umap/css/icon.css +63 -37
  48. umap/static/umap/css/importers.css +1 -1
  49. umap/static/umap/css/slideshow.css +7 -5
  50. umap/static/umap/css/tableeditor.css +4 -3
  51. umap/static/umap/img/16-white.svg +1 -4
  52. umap/static/umap/img/16.svg +2 -6
  53. umap/static/umap/img/24-white.svg +4 -4
  54. umap/static/umap/img/24.svg +6 -6
  55. umap/static/umap/img/source/16-white.svg +2 -5
  56. umap/static/umap/img/source/16.svg +3 -7
  57. umap/static/umap/img/source/24-white.svg +7 -14
  58. umap/static/umap/img/source/24.svg +10 -17
  59. umap/static/umap/js/components/alerts/alert.css +20 -8
  60. umap/static/umap/js/modules/autocomplete.js +8 -12
  61. umap/static/umap/js/modules/browser.js +4 -3
  62. umap/static/umap/js/modules/caption.js +9 -11
  63. umap/static/umap/js/modules/data/features.js +993 -0
  64. umap/static/umap/js/modules/data/layer.js +1210 -0
  65. umap/static/umap/js/modules/formatter.js +12 -3
  66. umap/static/umap/js/modules/global.js +21 -5
  67. umap/static/umap/js/modules/importers/overpass.js +22 -8
  68. umap/static/umap/js/modules/permissions.js +280 -0
  69. umap/static/umap/js/{umap.icon.js → modules/rendering/icon.js} +77 -56
  70. umap/static/umap/js/modules/rendering/layers/base.js +105 -0
  71. umap/static/umap/js/modules/rendering/layers/classified.js +484 -0
  72. umap/static/umap/js/modules/rendering/layers/cluster.js +103 -0
  73. umap/static/umap/js/modules/rendering/layers/heat.js +182 -0
  74. umap/static/umap/js/modules/rendering/popup.js +99 -0
  75. umap/static/umap/js/modules/rendering/template.js +217 -0
  76. umap/static/umap/js/modules/rendering/ui.js +610 -0
  77. umap/static/umap/js/modules/rules.js +16 -3
  78. umap/static/umap/js/modules/schema.js +25 -1
  79. umap/static/umap/js/modules/share.js +66 -45
  80. umap/static/umap/js/modules/sync/updaters.js +9 -10
  81. umap/static/umap/js/modules/tableeditor.js +7 -7
  82. umap/static/umap/js/modules/ui/dialog.js +8 -4
  83. umap/static/umap/js/modules/utils.js +22 -13
  84. umap/static/umap/js/umap.controls.js +80 -146
  85. umap/static/umap/js/umap.core.js +9 -9
  86. umap/static/umap/js/umap.forms.js +41 -17
  87. umap/static/umap/js/umap.js +72 -65
  88. umap/static/umap/locale/am_ET.js +8 -2
  89. umap/static/umap/locale/am_ET.json +8 -2
  90. umap/static/umap/locale/ar.js +8 -2
  91. umap/static/umap/locale/ar.json +8 -2
  92. umap/static/umap/locale/ast.js +8 -2
  93. umap/static/umap/locale/ast.json +8 -2
  94. umap/static/umap/locale/bg.js +8 -2
  95. umap/static/umap/locale/bg.json +8 -2
  96. umap/static/umap/locale/br.js +42 -36
  97. umap/static/umap/locale/br.json +42 -36
  98. umap/static/umap/locale/ca.js +67 -61
  99. umap/static/umap/locale/ca.json +67 -61
  100. umap/static/umap/locale/cs_CZ.js +8 -2
  101. umap/static/umap/locale/cs_CZ.json +8 -2
  102. umap/static/umap/locale/da.js +8 -2
  103. umap/static/umap/locale/da.json +8 -2
  104. umap/static/umap/locale/de.js +143 -137
  105. umap/static/umap/locale/de.json +143 -137
  106. umap/static/umap/locale/el.js +54 -48
  107. umap/static/umap/locale/el.json +54 -48
  108. umap/static/umap/locale/en.js +10 -2
  109. umap/static/umap/locale/en.json +10 -2
  110. umap/static/umap/locale/en_US.json +8 -2
  111. umap/static/umap/locale/es.js +8 -2
  112. umap/static/umap/locale/es.json +8 -2
  113. umap/static/umap/locale/et.js +8 -2
  114. umap/static/umap/locale/et.json +8 -2
  115. umap/static/umap/locale/eu.js +346 -338
  116. umap/static/umap/locale/eu.json +346 -338
  117. umap/static/umap/locale/fa_IR.js +415 -407
  118. umap/static/umap/locale/fa_IR.json +415 -407
  119. umap/static/umap/locale/fi.js +8 -2
  120. umap/static/umap/locale/fi.json +8 -2
  121. umap/static/umap/locale/fr.js +11 -3
  122. umap/static/umap/locale/fr.json +11 -3
  123. umap/static/umap/locale/gl.js +8 -2
  124. umap/static/umap/locale/gl.json +8 -2
  125. umap/static/umap/locale/he.js +8 -2
  126. umap/static/umap/locale/he.json +8 -2
  127. umap/static/umap/locale/hr.js +8 -2
  128. umap/static/umap/locale/hr.json +8 -2
  129. umap/static/umap/locale/hu.js +31 -23
  130. umap/static/umap/locale/hu.json +31 -23
  131. umap/static/umap/locale/id.js +8 -2
  132. umap/static/umap/locale/id.json +8 -2
  133. umap/static/umap/locale/is.js +8 -2
  134. umap/static/umap/locale/is.json +8 -2
  135. umap/static/umap/locale/it.js +8 -2
  136. umap/static/umap/locale/it.json +8 -2
  137. umap/static/umap/locale/ja.js +8 -2
  138. umap/static/umap/locale/ja.json +8 -2
  139. umap/static/umap/locale/ko.js +8 -2
  140. umap/static/umap/locale/ko.json +8 -2
  141. umap/static/umap/locale/lt.js +8 -2
  142. umap/static/umap/locale/lt.json +8 -2
  143. umap/static/umap/locale/ms.js +8 -2
  144. umap/static/umap/locale/ms.json +8 -2
  145. umap/static/umap/locale/nl.js +8 -2
  146. umap/static/umap/locale/nl.json +8 -2
  147. umap/static/umap/locale/no.js +8 -2
  148. umap/static/umap/locale/no.json +8 -2
  149. umap/static/umap/locale/pl.js +54 -48
  150. umap/static/umap/locale/pl.json +54 -48
  151. umap/static/umap/locale/pl_PL.json +8 -2
  152. umap/static/umap/locale/pt.js +24 -18
  153. umap/static/umap/locale/pt.json +24 -18
  154. umap/static/umap/locale/pt_BR.js +8 -2
  155. umap/static/umap/locale/pt_BR.json +8 -2
  156. umap/static/umap/locale/pt_PT.js +214 -208
  157. umap/static/umap/locale/pt_PT.json +214 -208
  158. umap/static/umap/locale/ro.js +8 -2
  159. umap/static/umap/locale/ro.json +8 -2
  160. umap/static/umap/locale/ru.js +8 -2
  161. umap/static/umap/locale/ru.json +8 -2
  162. umap/static/umap/locale/sk_SK.js +8 -2
  163. umap/static/umap/locale/sk_SK.json +8 -2
  164. umap/static/umap/locale/sl.js +8 -2
  165. umap/static/umap/locale/sl.json +8 -2
  166. umap/static/umap/locale/sr.js +8 -2
  167. umap/static/umap/locale/sr.json +8 -2
  168. umap/static/umap/locale/sv.js +8 -2
  169. umap/static/umap/locale/sv.json +8 -2
  170. umap/static/umap/locale/th_TH.js +33 -27
  171. umap/static/umap/locale/th_TH.json +33 -27
  172. umap/static/umap/locale/tr.js +8 -2
  173. umap/static/umap/locale/tr.json +8 -2
  174. umap/static/umap/locale/uk_UA.js +8 -2
  175. umap/static/umap/locale/uk_UA.json +8 -2
  176. umap/static/umap/locale/vi.js +8 -2
  177. umap/static/umap/locale/vi.json +8 -2
  178. umap/static/umap/locale/vi_VN.json +8 -2
  179. umap/static/umap/locale/zh.js +8 -2
  180. umap/static/umap/locale/zh.json +8 -2
  181. umap/static/umap/locale/zh_CN.json +8 -2
  182. umap/static/umap/locale/zh_TW.Big5.json +8 -2
  183. umap/static/umap/locale/zh_TW.js +102 -96
  184. umap/static/umap/locale/zh_TW.json +102 -96
  185. umap/static/umap/map.css +111 -108
  186. umap/static/umap/nav.css +19 -10
  187. umap/static/umap/unittests/utils.js +230 -107
  188. umap/static/umap/vars.css +1 -0
  189. umap/static/umap/vendors/csv2geojson/csv2geojson.js +62 -40
  190. umap/static/umap/vendors/editable/Leaflet.Editable.js +2079 -1937
  191. umap/storage.py +4 -3
  192. umap/templates/404.html +5 -1
  193. umap/templates/500.html +3 -1
  194. umap/templates/auth/user_detail.html +8 -2
  195. umap/templates/auth/user_form.html +19 -10
  196. umap/templates/auth/user_stars.html +8 -2
  197. umap/templates/base.html +1 -0
  198. umap/templates/registration/login.html +18 -3
  199. umap/templates/umap/about.html +1 -0
  200. umap/templates/umap/about_summary.html +22 -7
  201. umap/templates/umap/components/alerts/alert.html +42 -21
  202. umap/templates/umap/content.html +2 -0
  203. umap/templates/umap/content_footer.html +7 -3
  204. umap/templates/umap/css.html +1 -0
  205. umap/templates/umap/dashboard_menu.html +15 -0
  206. umap/templates/umap/home.html +14 -4
  207. umap/templates/umap/js.html +4 -9
  208. umap/templates/umap/login_popup_end.html +10 -4
  209. umap/templates/umap/map_detail.html +8 -2
  210. umap/templates/umap/map_fragment.html +3 -1
  211. umap/templates/umap/map_init.html +2 -1
  212. umap/templates/umap/map_list.html +6 -3
  213. umap/templates/umap/map_table.html +36 -12
  214. umap/templates/umap/messages.html +0 -1
  215. umap/templates/umap/navigation.html +2 -1
  216. umap/templates/umap/password_change.html +5 -1
  217. umap/templates/umap/password_change_done.html +8 -2
  218. umap/templates/umap/search.html +8 -2
  219. umap/templates/umap/search_bar.html +1 -0
  220. umap/templates/umap/team_confirm_delete.html +19 -0
  221. umap/templates/umap/team_detail.html +27 -0
  222. umap/templates/umap/team_form.html +60 -0
  223. umap/templates/umap/user_dashboard.html +7 -9
  224. umap/templates/umap/user_teams.html +51 -0
  225. umap/tests/base.py +8 -1
  226. umap/tests/conftest.py +6 -0
  227. umap/tests/fixtures/test_circles_layer.geojson +219 -0
  228. umap/tests/fixtures/test_upload_georss.xml +20 -0
  229. umap/tests/integration/conftest.py +18 -4
  230. umap/tests/integration/helpers.py +12 -0
  231. umap/tests/integration/test_anonymous_owned_map.py +23 -0
  232. umap/tests/integration/test_basics.py +29 -0
  233. umap/tests/integration/test_browser.py +20 -0
  234. umap/tests/integration/test_caption.py +20 -0
  235. umap/tests/integration/test_circles_layer.py +69 -0
  236. umap/tests/integration/test_conditional_rules.py +102 -17
  237. umap/tests/integration/test_draw_polygon.py +138 -13
  238. umap/tests/integration/test_draw_polyline.py +8 -18
  239. umap/tests/integration/test_edit_datalayer.py +3 -3
  240. umap/tests/integration/test_import.py +124 -5
  241. umap/tests/integration/test_owned_map.py +21 -13
  242. umap/tests/integration/test_querystring.py +7 -0
  243. umap/tests/integration/test_team.py +47 -0
  244. umap/tests/integration/test_tilelayer.py +19 -2
  245. umap/tests/integration/test_view_marker.py +28 -1
  246. umap/tests/integration/test_websocket_sync.py +5 -5
  247. umap/tests/test_datalayer.py +32 -7
  248. umap/tests/test_datalayer_views.py +1 -1
  249. umap/tests/test_map.py +30 -4
  250. umap/tests/test_map_views.py +2 -2
  251. umap/tests/test_statics.py +40 -0
  252. umap/tests/test_team_views.py +131 -0
  253. umap/tests/test_views.py +15 -1
  254. umap/urls.py +23 -13
  255. umap/views.py +116 -10
  256. {umap_project-2.5.0.dist-info → umap_project-2.6.0.dist-info}/METADATA +14 -14
  257. {umap_project-2.5.0.dist-info → umap_project-2.6.0.dist-info}/RECORD +260 -253
  258. umap/static/umap/js/umap.datalayer.permissions.js +0 -70
  259. umap/static/umap/js/umap.features.js +0 -1290
  260. umap/static/umap/js/umap.layer.js +0 -1837
  261. umap/static/umap/js/umap.permissions.js +0 -208
  262. umap/static/umap/js/umap.popup.js +0 -341
  263. umap/static/umap/test/TableEditor.js +0 -104
  264. umap/static/umap/vendors/leaflet/leaflet-src.js +0 -14512
  265. umap/static/umap/vendors/leaflet/leaflet-src.js.map +0 -1
  266. umap/static/umap/vendors/leaflet/leaflet.js +0 -6
  267. umap/static/umap/vendors/leaflet/leaflet.js.map +0 -1
  268. umap/static/umap/vendors/markercluster/WhereAreTheJavascriptFiles.txt +0 -5
  269. umap/static/umap/vendors/markercluster/leaflet.markercluster-src.js +0 -2718
  270. umap/static/umap/vendors/markercluster/leaflet.markercluster-src.js.map +0 -1
  271. umap/static/umap/vendors/toolbar/leaflet.toolbar-src.css +0 -117
  272. umap/static/umap/vendors/toolbar/leaflet.toolbar-src.js +0 -365
  273. umap/tests/integration/test_statics.py +0 -47
  274. {umap_project-2.5.0.dist-info → umap_project-2.6.0.dist-info}/WHEEL +0 -0
  275. {umap_project-2.5.0.dist-info → umap_project-2.6.0.dist-info}/entry_points.txt +0 -0
  276. {umap_project-2.5.0.dist-info → umap_project-2.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,365 +0,0 @@
1
- (function(window, document, undefined) {
2
-
3
- "use strict";
4
-
5
- L.Toolbar = (L.Layer || L.Class).extend({
6
- statics: {
7
- baseClass: 'leaflet-toolbar'
8
- },
9
-
10
- includes: L.Mixin.Events,
11
-
12
- options: {
13
- className: '',
14
- filter: function() { return true; },
15
- actions: []
16
- },
17
-
18
- initialize: function(options) {
19
- L.setOptions(this, options);
20
- this._toolbar_type = this.constructor._toolbar_class_id;
21
- },
22
-
23
- addTo: function(map) {
24
- this._arguments = [].slice.call(arguments);
25
-
26
- map.addLayer(this);
27
-
28
- return this;
29
- },
30
-
31
- onAdd: function(map) {
32
- var currentToolbar = map._toolbars[this._toolbar_type];
33
-
34
- if (this._calculateDepth() === 0) {
35
- if (currentToolbar) { map.removeLayer(currentToolbar); }
36
- map._toolbars[this._toolbar_type] = this;
37
- }
38
- },
39
-
40
- onRemove: function(map) {
41
- /*
42
- * TODO: Cleanup event listeners.
43
- * For some reason, this throws:
44
- * "Uncaught TypeError: Cannot read property 'dragging' of null"
45
- * on this._marker when a toolbar icon is clicked.
46
- */
47
- // for (var i = 0, l = this._disabledEvents.length; i < l; i++) {
48
- // L.DomEvent.off(this._ul, this._disabledEvents[i], L.DomEvent.stopPropagation);
49
- // }
50
-
51
- if (this._calculateDepth() === 0) {
52
- delete map._toolbars[this._toolbar_type];
53
- }
54
- },
55
-
56
- appendToContainer: function(container) {
57
- var baseClass = this.constructor.baseClass + '-' + this._calculateDepth(),
58
- className = baseClass + ' ' + this.options.className,
59
- Action, action,
60
- i, j, l, m;
61
-
62
- this._container = container;
63
- this._ul = L.DomUtil.create('ul', className, container);
64
-
65
- /* Ensure that clicks, drags, etc. don't bubble up to the map. */
66
- this._disabledEvents = ['click', 'mousemove', 'dblclick'];
67
-
68
- for (j = 0, m = this._disabledEvents.length; j < m; j++) {
69
- L.DomEvent.on(this._ul, this._disabledEvents[j], L.DomEvent.stopPropagation);
70
- }
71
-
72
- /* Instantiate each toolbar action and add its corresponding toolbar icon. */
73
- for (i = 0, l = this.options.actions.length; i < l; i++) {
74
- Action = this._getActionConstructor(this.options.actions[i]);
75
-
76
- action = new Action();
77
- action._createIcon(this, this._ul, this._arguments);
78
- }
79
- },
80
-
81
- _getActionConstructor: function(Action) {
82
- var args = this._arguments,
83
- toolbar = this;
84
-
85
- return Action.extend({
86
- initialize: function() {
87
- Action.prototype.initialize.apply(this, args);
88
- },
89
- enable: function(e) {
90
- /* Ensure that only one action in a toolbar will be active at a time. */
91
- if (toolbar._active) { toolbar._active.disable(); }
92
- toolbar._active = this;
93
-
94
- Action.prototype.enable.call(this, e);
95
- }
96
- });
97
- },
98
-
99
- /* Used to hide subToolbars without removing them from the map. */
100
- _hide: function() {
101
- this._ul.style.display = 'none';
102
- },
103
-
104
- /* Used to show subToolbars without removing them from the map. */
105
- _show: function() {
106
- this._ul.style.display = 'block';
107
- },
108
-
109
- _calculateDepth: function() {
110
- var depth = 0,
111
- toolbar = this.parentToolbar;
112
-
113
- while (toolbar) {
114
- depth += 1;
115
- toolbar = toolbar.parentToolbar;
116
- }
117
-
118
- return depth;
119
- }
120
- });
121
-
122
- L.toolbar = {};
123
-
124
- var toolbar_class_id = 0;
125
-
126
- L.Toolbar.extend = function extend(props) {
127
- var statics = L.extend({}, props.statics, {
128
- "_toolbar_class_id": toolbar_class_id
129
- });
130
-
131
- toolbar_class_id += 1;
132
- L.extend(props, { statics: statics });
133
-
134
- return L.Class.extend.call(this, props);
135
- };
136
-
137
- L.Map.addInitHook(function() {
138
- this._toolbars = {};
139
- });
140
-
141
- L.ToolbarAction = L.Handler.extend({
142
- statics: {
143
- baseClass: 'leaflet-toolbar-icon'
144
- },
145
-
146
- options: {
147
- toolbarIcon: {
148
- html: '',
149
- className: '',
150
- tooltip: ''
151
- },
152
- subToolbar: new L.Toolbar()
153
- },
154
-
155
- initialize: function(options) {
156
- var defaultIconOptions = L.ToolbarAction.prototype.options.toolbarIcon;
157
-
158
- L.setOptions(this, options);
159
- this.options.toolbarIcon = L.extend({}, defaultIconOptions, this.options.toolbarIcon);
160
- },
161
-
162
- enable: function(e) {
163
- if (e) { L.DomEvent.preventDefault(e); }
164
- if (this._enabled) { return; }
165
- this._enabled = true;
166
-
167
- if (this.addHooks) { this.addHooks(); }
168
- },
169
-
170
- disable: function() {
171
- if (!this._enabled) { return; }
172
- this._enabled = false;
173
-
174
- if (this.removeHooks) { this.removeHooks(); }
175
- },
176
-
177
- _createIcon: function(toolbar, container, args) {
178
- var iconOptions = this.options.toolbarIcon;
179
-
180
- this.toolbar = toolbar;
181
- this._icon = L.DomUtil.create('li', '', container);
182
- this._link = L.DomUtil.create('a', '', this._icon);
183
-
184
- this._link.innerHTML = iconOptions.html;
185
- this._link.setAttribute('href', '#');
186
- this._link.setAttribute('title', iconOptions.tooltip);
187
-
188
- L.DomUtil.addClass(this._link, this.constructor.baseClass);
189
- if (iconOptions.className) {
190
- L.DomUtil.addClass(this._link, iconOptions.className);
191
- }
192
-
193
- L.DomEvent.on(this._link, 'click', this.enable, this);
194
-
195
- /* Add secondary toolbar */
196
- this._addSubToolbar(toolbar, this._icon, args);
197
- },
198
-
199
- _addSubToolbar: function(toolbar, container, args) {
200
- var subToolbar = this.options.subToolbar,
201
- addHooks = this.addHooks,
202
- removeHooks = this.removeHooks;
203
-
204
- /* For calculating the nesting depth. */
205
- subToolbar.parentToolbar = toolbar;
206
-
207
- if (subToolbar.options.actions.length > 0) {
208
- /* Make a copy of args so as not to pollute the args array used by other actions. */
209
- args = [].slice.call(args);
210
- args.push(this);
211
-
212
- subToolbar.addTo.apply(subToolbar, args);
213
- subToolbar.appendToContainer(container);
214
-
215
- this.addHooks = function(map) {
216
- if (typeof addHooks === 'function') { addHooks.call(this, map); }
217
- subToolbar._show();
218
- };
219
-
220
- this.removeHooks = function(map) {
221
- if (typeof removeHooks === 'function') { removeHooks.call(this, map); }
222
- subToolbar._hide();
223
- };
224
- }
225
- }
226
- });
227
-
228
- L.toolbarAction = function toolbarAction(options) {
229
- return new L.ToolbarAction(options);
230
- };
231
-
232
- L.ToolbarAction.extendOptions = function(options) {
233
- return this.extend({ options: options });
234
- };
235
-
236
- L.Toolbar.Control = L.Toolbar.extend({
237
- statics: {
238
- baseClass: 'leaflet-control-toolbar ' + L.Toolbar.baseClass
239
- },
240
-
241
- initialize: function(options) {
242
- L.Toolbar.prototype.initialize.call(this, options);
243
-
244
- this._control = new L.Control.Toolbar(this.options);
245
- },
246
-
247
- onAdd: function(map) {
248
- this._control.addTo(map);
249
-
250
- L.Toolbar.prototype.onAdd.call(this, map);
251
-
252
- this.appendToContainer(this._control.getContainer());
253
- },
254
-
255
- onRemove: function(map) {
256
- L.Toolbar.prototype.onRemove.call(this, map);
257
- if (this._control.remove) {this._control.remove();} // Leaflet 1.0
258
- else {this._control.removeFrom(map);}
259
- }
260
- });
261
-
262
- L.Control.Toolbar = L.Control.extend({
263
- onAdd: function() {
264
- return L.DomUtil.create('div', '');
265
- }
266
- });
267
-
268
- L.toolbar.control = function(options) {
269
- return new L.Toolbar.Control(options);
270
- };
271
-
272
- // A convenience class for built-in popup toolbars.
273
-
274
- L.Toolbar.Popup = L.Toolbar.extend({
275
- statics: {
276
- baseClass: 'leaflet-popup-toolbar ' + L.Toolbar.baseClass
277
- },
278
-
279
- options: {
280
- anchor: [0, 0]
281
- },
282
-
283
- initialize: function(latlng, options) {
284
- L.Toolbar.prototype.initialize.call(this, options);
285
-
286
- /*
287
- * Developers can't pass a DivIcon in the options for L.Toolbar.Popup
288
- * (the use of DivIcons is an implementation detail which may change).
289
- */
290
- this._marker = new L.Marker(latlng, {
291
- icon : new L.DivIcon({
292
- className: this.options.className,
293
- iconAnchor: [0, 0]
294
- })
295
- });
296
- },
297
-
298
- onAdd: function(map) {
299
- this._map = map;
300
- this._marker.addTo(map);
301
-
302
- L.Toolbar.prototype.onAdd.call(this, map);
303
-
304
- this.appendToContainer(this._marker._icon);
305
-
306
- this._setStyles();
307
- },
308
-
309
- onRemove: function(map) {
310
- map.removeLayer(this._marker);
311
-
312
- L.Toolbar.prototype.onRemove.call(this, map);
313
-
314
- delete this._map;
315
- },
316
-
317
- setLatLng: function(latlng) {
318
- this._marker.setLatLng(latlng);
319
-
320
- return this;
321
- },
322
-
323
- _setStyles: function() {
324
- var container = this._container,
325
- toolbar = this._ul,
326
- anchor = L.point(this.options.anchor),
327
- icons = toolbar.querySelectorAll('.leaflet-toolbar-icon'),
328
- buttonHeights = [],
329
- toolbarWidth = 0,
330
- toolbarHeight,
331
- tipSize,
332
- tipAnchor;
333
-
334
- /* Calculate the dimensions of the toolbar. */
335
- for (var i = 0, l = icons.length; i < l; i++) {
336
- if (icons[i].parentNode.parentNode === toolbar) {
337
- buttonHeights.push(parseInt(L.DomUtil.getStyle(icons[i], 'height'), 10));
338
- toolbarWidth += Math.ceil(parseFloat(L.DomUtil.getStyle(icons[i], 'width')));
339
- }
340
- }
341
- toolbar.style.width = toolbarWidth + 'px';
342
-
343
- /* Create and place the toolbar tip. */
344
- this._tipContainer = L.DomUtil.create('div', 'leaflet-toolbar-tip-container', container);
345
- this._tipContainer.style.width = toolbarWidth + 'px';
346
-
347
- this._tip = L.DomUtil.create('div', 'leaflet-toolbar-tip', this._tipContainer);
348
-
349
- /* Set the tipAnchor point. */
350
- toolbarHeight = Math.max.apply(undefined, buttonHeights);
351
- tipSize = parseInt(L.DomUtil.getStyle(this._tip, 'width'), 10);
352
- tipAnchor = new L.Point(toolbarWidth/2, toolbarHeight + 0.7071*tipSize);
353
-
354
- /* The anchor option allows app developers to adjust the toolbar's position. */
355
- container.style.marginLeft = (anchor.x - tipAnchor.x) + 'px';
356
- container.style.marginTop = (anchor.y - tipAnchor.y) + 'px';
357
- }
358
- });
359
-
360
- L.toolbar.popup = function(options) {
361
- return new L.Toolbar.Popup(options);
362
- };
363
-
364
-
365
- })(window, document);
@@ -1,47 +0,0 @@
1
- import re
2
- import shutil
3
- import tempfile
4
- from copy import deepcopy
5
-
6
- import pytest
7
- from django.core.management import call_command
8
- from django.utils.translation import override
9
- from playwright.sync_api import expect
10
-
11
-
12
- @pytest.fixture
13
- def staticfiles(settings):
14
- static_root = tempfile.mkdtemp(prefix="test_static")
15
- settings.STATIC_ROOT = static_root
16
- # Make sure settings are properly reset after the test
17
- settings.STORAGES = deepcopy(settings.STORAGES)
18
- settings.STORAGES["staticfiles"]["BACKEND"] = (
19
- "umap.storage.UmapManifestStaticFilesStorage"
20
- )
21
- try:
22
- call_command("collectstatic", "--noinput")
23
- yield
24
- finally:
25
- shutil.rmtree(static_root)
26
-
27
-
28
- def test_javascript_have_been_loaded(
29
- map, live_server, datalayer, page, settings, staticfiles
30
- ):
31
- datalayer.settings["displayOnLoad"] = False
32
- datalayer.save()
33
- map.settings["properties"]["defaultView"] = "latest"
34
- map.save()
35
- with override("fr"):
36
- url = f"{live_server.url}{map.get_absolute_url()}"
37
- assert "/fr/" in url
38
- page.goto(url)
39
- # Hash is defined, so map is initialized
40
- expect(page).to_have_url(re.compile(r".*#7/48\..+/13\..+"))
41
- expect(page).to_have_url(re.compile(r".*/fr/"))
42
- # Should be in French, so hashed locale file has been loaded correctly
43
- button = page.get_by_role("button", name="Explorateur")
44
- expect(button).to_be_visible()
45
- button.click()
46
- layers = page.locator(".umap-browser .datalayer")
47
- expect(layers).to_have_count(1)