ekylibre-cartography 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +3 -0
  3. data/Rakefile +10 -0
  4. data/app/assets/javascripts/cartography.coffee +535 -0
  5. data/app/assets/javascripts/cartography/base.coffee +11 -0
  6. data/app/assets/javascripts/cartography/controls.coffee +463 -0
  7. data/app/assets/javascripts/cartography/events.coffee +36 -0
  8. data/app/assets/javascripts/cartography/layers.coffee +127 -0
  9. data/app/assets/javascripts/cartography/layers/simple.coffee +37 -0
  10. data/app/assets/javascripts/cartography/leaflet/controls.coffee +420 -0
  11. data/app/assets/javascripts/cartography/leaflet/handlers.coffee +461 -0
  12. data/app/assets/javascripts/cartography/leaflet/i18n.coffee +31 -0
  13. data/app/assets/javascripts/cartography/leaflet/layers.coffee +60 -0
  14. data/app/assets/javascripts/cartography/leaflet/toolbars.coffee +450 -0
  15. data/app/assets/javascripts/cartography/patches.js +8 -0
  16. data/app/assets/javascripts/cartography/util.coffee +18 -0
  17. data/app/assets/javascripts/main.js +18 -0
  18. data/app/assets/stylesheets/cartography.css +86 -0
  19. data/app/helpers/cartography_helper.rb +55 -0
  20. data/lib/cartography.rb +1 -0
  21. data/lib/cartography/engine.rb +11 -0
  22. data/lib/cartography/version.rb +3 -0
  23. data/vendor/assets/components/d3-array/dist/d3-array.js +590 -0
  24. data/vendor/assets/components/d3-array/dist/d3-array.min.js +2 -0
  25. data/vendor/assets/components/geojson-equality/dist/geojson-equality.js +295 -0
  26. data/vendor/assets/components/geojson-equality/dist/geojson-equality.js.map +21 -0
  27. data/vendor/assets/components/geojson-equality/dist/geojson-equality.min.js +1 -0
  28. data/vendor/assets/components/leaflet-controlpanel/dist/leaflet.controlpanel.css +29 -0
  29. data/vendor/assets/components/leaflet-controlpanel/dist/leaflet.controlpanel.js +269 -0
  30. data/vendor/assets/components/leaflet-draw-cut/dist/leaflet.draw.cut.css +1 -0
  31. data/vendor/assets/components/leaflet-draw-cut/dist/leaflet.draw.cut.js +8 -0
  32. data/vendor/assets/components/leaflet-draw-merge/dist/leaflet.draw.merge.css +0 -0
  33. data/vendor/assets/components/leaflet-draw-merge/dist/leaflet.draw.merge.js +48026 -0
  34. data/vendor/assets/components/leaflet-draw/dist/leaflet.draw-src.css +326 -0
  35. data/vendor/assets/components/leaflet-draw/dist/leaflet.draw-src.js +4653 -0
  36. data/vendor/assets/components/leaflet-draw/dist/leaflet.draw-src.map +1 -0
  37. data/vendor/assets/components/leaflet-draw/dist/leaflet.draw.css +10 -0
  38. data/vendor/assets/components/leaflet-draw/dist/leaflet.draw.js +10 -0
  39. data/vendor/assets/components/leaflet-geographicutil/dist/leaflet.geographicutil.js +3220 -0
  40. data/vendor/assets/components/leaflet-reactive_measure/dist/reactive_measure.css +30 -0
  41. data/vendor/assets/components/leaflet-reactive_measure/dist/reactive_measure.js +3764 -0
  42. data/vendor/assets/components/leaflet/dist/leaflet-src.js +13609 -0
  43. data/vendor/assets/components/leaflet/dist/leaflet-src.js.map +1 -0
  44. data/vendor/assets/components/leaflet/dist/leaflet-src.map +1 -0
  45. data/vendor/assets/components/leaflet/dist/leaflet.css +632 -0
  46. data/vendor/assets/components/leaflet/dist/leaflet.js +5 -0
  47. data/vendor/assets/components/leaflet/dist/leaflet.js.map +1 -0
  48. data/vendor/assets/components/martinez-polygon-clipping/dist/martinez.min.js +9 -0
  49. data/vendor/assets/components/martinez-polygon-clipping/dist/martinez.umd.js +1716 -0
  50. data/vendor/assets/components/martinez-polygon-clipping/dist/martinez.umd.js.map +1 -0
  51. data/vendor/assets/components/polygon-clipping/dist/polygon-clipping.js +279 -0
  52. data/vendor/assets/components/polygon-clipping/dist/polygon-clipping.min.js +1 -0
  53. data/vendor/assets/components/rtree/dist/rtree.js +911 -0
  54. data/vendor/assets/components/rtree/dist/rtree.min.js +1 -0
  55. data/vendor/assets/components/splaytree/dist/splay.es6.js +765 -0
  56. data/vendor/assets/components/splaytree/dist/splay.es6.js.map +1 -0
  57. data/vendor/assets/components/splaytree/dist/splay.js +797 -0
  58. data/vendor/assets/components/splaytree/dist/splay.js.map +1 -0
  59. metadata +156 -0
@@ -0,0 +1,11 @@
1
+ ((C, $) ->
2
+ "use strict"
3
+
4
+ class C.BaseClass
5
+ constructor: (map) ->
6
+ @map = map
7
+
8
+ getMap: ->
9
+ @map
10
+
11
+ )(window.Cartography = window.Cartography || {}, jQuery)
@@ -0,0 +1,463 @@
1
+ ((C, $) ->
2
+ "use strict"
3
+
4
+ class C.Control extends C.BaseClass
5
+ constructor: (map) ->
6
+ super(map)
7
+
8
+ class C.Controls extends C.Control
9
+ constructor: (map) ->
10
+ @controls = {}
11
+ @collection = {}
12
+
13
+ super(map)
14
+
15
+ add: (id) ->
16
+ return if @get(id)
17
+ item = @collection[id]
18
+ control = item.constructor.call()
19
+ @controls[id] = control
20
+ @getMap().addControl control.getControl() unless !item.addToMap
21
+
22
+ if control.getToolbar()
23
+ control.getToolbar().on 'enable', (e) =>
24
+ for toolbar in @getToolbars()
25
+ continue if toolbar is e.target
26
+ toolbar.disable()
27
+
28
+ if item.callback and item.callback.constructor.name is 'Function'
29
+ item.callback.call @
30
+
31
+ register: (id, addToMap = true, constructor, callback) ->
32
+ @collection[id] = addToMap: addToMap, constructor: constructor, callback: callback
33
+
34
+ unregister: (id) ->
35
+ @collection[id] = undefined
36
+ @remove(id)
37
+
38
+ remove: (id) ->
39
+ if control = @get(id)
40
+ item = @collection[id]
41
+ @getMap().removeControl control.getControl() unless !item.addToMap
42
+
43
+ c = control.getControl()
44
+ if c and c.disable and c.disable.constructor.name is 'Function'
45
+ c.disable()
46
+
47
+ @controls[id] = undefined
48
+
49
+ get: (id) ->
50
+ @controls[id]
51
+
52
+ getToolbar: ->
53
+ undefined
54
+
55
+ getToolbars: ->
56
+ Object.values(@controls)
57
+ .filter Boolean
58
+ .map (c) ->
59
+ c.getToolbar()
60
+ .filter Boolean
61
+
62
+
63
+ class C.Controls.Layers extends C.Controls
64
+ options:
65
+ position: 'topleft'
66
+ constructor: ( control, map, options = {} ) ->
67
+ super(map)
68
+
69
+ C.Util.setOptions @, options
70
+
71
+ @control = control || new L.Control.Layers(undefined, undefined, @options)
72
+
73
+ @layers = {}
74
+
75
+ getLayers: ->
76
+ @references.getLayers()
77
+
78
+ getMainLayer: ->
79
+ @references.getMainLayer()
80
+
81
+ getLayer: (name) ->
82
+ @references.getLayers()[name]
83
+
84
+ getControl: ->
85
+ @control
86
+
87
+ class C.Controls.BaseLayers extends C.Controls.Layers
88
+ options:
89
+ backgrounds: [
90
+ 'Esri.WorldImagery'
91
+ 'OpenStreetMap.Mapnik',
92
+ 'OpenStreetMap.HOT',
93
+ 'Thunderforest.Landscape',
94
+ ]
95
+
96
+ constructor: ( control, map, options = {} )->
97
+ C.Util.setOptions @, options
98
+ super(control, map)
99
+
100
+ @references = new C.BaseLayers(map, @options)
101
+ @add(@options.backgrounds)
102
+
103
+ @setActive(0)
104
+
105
+ add: (layers) ->
106
+ newLayers = @references.add(layers)
107
+
108
+ for name, layer of newLayers
109
+ @getControl().addBaseLayer(layer, name)
110
+
111
+ setActive: (index) ->
112
+ @getMap().addLayer(@getLayers()[Object.keys(@getLayers())[index]])
113
+
114
+ class C.Controls.OverlayLayers extends C.Controls.Layers
115
+ options:
116
+ minZoom: 0
117
+ maxZoom: 25
118
+ overlays: []
119
+ series: {}
120
+
121
+ constructor: ( control, map, options = {} )->
122
+ C.Util.setOptions @, options
123
+ super(control, map)
124
+
125
+ @references = new C.OverlayLayers(map, @options)
126
+ @add(@options.overlays, 'tiles') unless !@options.overlays.length
127
+ @add([@options.series, @options.layers], 'series') if @options.series?
128
+
129
+ #TODO: refactoring
130
+ add: (layers, type) ->
131
+ [series, propertiesCollection, ...] = layers
132
+
133
+ propertiesCollection ||= []
134
+
135
+ if !propertiesCollection.length
136
+ newLayers = @references.add(layers, type)
137
+
138
+ for name, layer of newLayers
139
+ @getControl().addOverlay(layer, name)
140
+
141
+ for properties in propertiesCollection
142
+ if @references.getLayers()[properties.name] is undefined
143
+ newLayers = @references.add(layers, type)
144
+
145
+ for name, layer of newLayers
146
+ @getControl().addOverlay(layer, name)
147
+ else
148
+ @references.updateSerie(@references.getLayers()[properties.name], series[properties.name])
149
+
150
+ remove: (name) ->
151
+ layer = @getLayer name
152
+ @getControl().removeLayer layer
153
+ layer.eachLayer (l) =>
154
+ @getMap().removeLayer l
155
+
156
+ @getMap().removeLayer layer
157
+ delete @references.layers[name]
158
+
159
+
160
+ class C.Controls.Scale extends C.Controls
161
+ options:
162
+ position: "bottomright"
163
+ imperial: false
164
+ maxWidth: 200
165
+
166
+ constructor: ( map, options = {} ) ->
167
+ super(map)
168
+ C.Util.setOptions @, options
169
+ @control = new L.Control.Scale(@options)
170
+
171
+ getControl: ->
172
+ @control
173
+
174
+ class C.Controls.Zoom extends C.Controls
175
+ options:
176
+ position: "topleft"
177
+
178
+ constructor: ( map, options = {} ) ->
179
+ super(map)
180
+ C.Util.setOptions @, options
181
+ @control = new L.Control.Zoom(@options)
182
+
183
+ getControl: ->
184
+ @control
185
+
186
+ class C.Controls.Home extends C.Controls
187
+ options:
188
+ position: "topleft"
189
+
190
+ constructor: ( map, options = {} ) ->
191
+ super(map)
192
+ C.Util.setOptions @, options
193
+ @control = new L.Control.Home(@options.home)
194
+
195
+ getControl: ->
196
+ @control
197
+
198
+ class C.Controls.Draw extends C.Controls
199
+ options:
200
+ draw:
201
+ edit: false
202
+ draw:
203
+ marker: false
204
+ circlemarker: false
205
+ polyline: false
206
+ rectangle: false
207
+ circle: false
208
+ polygon:
209
+ allowIntersection: false
210
+ showArea: false
211
+ snap:
212
+ polygon:
213
+ guideLayers: []
214
+ snapDistance: 15
215
+ snapOriginDistance: 30
216
+ allowIntersection: false
217
+ guidelineDistance: 8
218
+ shapeOptions:
219
+ dashArray: '8, 8'
220
+ fill: false
221
+ color: '#FF5722'
222
+ opacity: 1
223
+
224
+ constructor: ( map, options = {} ) ->
225
+ super(map)
226
+ C.Util.setOptions @, options
227
+
228
+ @control = new L.Control.Draw(@options.draw)
229
+ @control.setDrawingOptions(@options.snap)
230
+
231
+ @toolbar = @control._toolbars['draw']
232
+ if @options.draw.panel
233
+ new L.Control.ControlPanel.Draw @toolbar, @options.draw.panel
234
+
235
+ @initHooks()
236
+
237
+ initHooks: () ->
238
+ @toolbar.on 'enable', (e) =>
239
+ @getMap().on L.Draw.Event.DRAWSTART, =>
240
+ @getMap().fire C.Events.new.start
241
+
242
+ @getMap().on L.Draw.Event.DRAWSTOP, =>
243
+ @getMap().fire C.Events.new.cancel
244
+
245
+ getControl: ->
246
+ @control
247
+
248
+ getToolbar: ->
249
+ @toolbar
250
+
251
+ class C.Controls.Edit extends C.Controls
252
+ options:
253
+ edit:
254
+ label: undefined
255
+ reactiveMeasure: true
256
+ featureGroup: undefined
257
+ remove: false
258
+ shapeOptions:
259
+ color: "#3498db"
260
+ fillOpacity: 0.8
261
+ popup: false
262
+ snap:
263
+ polyline:
264
+ guideLayers: []
265
+ snapDistance: 5
266
+ polygon:
267
+ guideLayers: []
268
+ snapDistance: 5
269
+ constructor: (map, options = {}) ->
270
+ super(map)
271
+
272
+ C.Util.setOptions @, options
273
+
274
+ @editionLayer = L.geoJson(undefined,
275
+ style: (feature) =>
276
+ C.Util.extend @options.edit.shapeOptions, feature.properties)
277
+
278
+ @control = new L.Control.SnapEdit(@options)
279
+
280
+ @initHooks()
281
+
282
+ initHooks: ->
283
+ @getMap().on "draw:editstart", (e) =>
284
+
285
+ getControl: ->
286
+ @control
287
+
288
+ getLayer: ->
289
+ @editionLayer
290
+
291
+ addLayer: (layer) ->
292
+ @getLayer().addData layer.toGeoJSON()
293
+ # @getLayer().addLayer layer
294
+
295
+ addTo: (control) ->
296
+ control.addOverlay @getLayer(), @options.label
297
+
298
+
299
+ class C.Controls.Edit.ReactiveMeasure extends C.Controls
300
+ options:
301
+ reactiveMeasure:
302
+ position: 'bottomright'
303
+ metric: true
304
+ feet: false
305
+ tooltip: false
306
+
307
+ constructor: (map, control, options = {}) ->
308
+ super(map)
309
+ C.Util.setOptions @, options
310
+
311
+ @control = new L.ReactiveMeasureControl(control.getLayer(), @options.reactiveMeasure)
312
+
313
+ @initHooks()
314
+
315
+ initHooks: (->)
316
+
317
+ getControl: ->
318
+ @control
319
+
320
+ class C.Controls.LayerSelection extends C.Controls
321
+ options:
322
+ layerSelection:
323
+ featureGroup: undefined
324
+
325
+ constructor: (map, options = {}) ->
326
+ super(map)
327
+
328
+ C.Util.setOptions @, options
329
+
330
+ @control = new L.Control.LayerSelection(map, @options.layerSelection)
331
+
332
+ @initHooks()
333
+
334
+ initHooks: ->
335
+ # @getMap().on "draw:editstart", (e) =>
336
+
337
+ getControl: ->
338
+ @control
339
+
340
+ class C.Controls.LayerLocking extends C.Controls
341
+ options:
342
+ layerLocking:
343
+ featureGroup: undefined
344
+
345
+ constructor: (map, options = {}) ->
346
+ super(map)
347
+
348
+ C.Util.setOptions @, options
349
+
350
+ @control = new L.Control.LayerLocking(map, @options.layerLocking)
351
+
352
+ @initHooks()
353
+
354
+ initHooks: (->)
355
+
356
+ getControl: ->
357
+ @control
358
+
359
+ class C.Controls.Cut extends C.Controls
360
+ options:
361
+ cut:
362
+ featureGroup: undefined
363
+
364
+ constructor: (map, options = {}) ->
365
+ super(map)
366
+
367
+ C.Util.setOptions @, options
368
+
369
+ @control = new L.Control.Cut(@options.cut)
370
+
371
+ @initHooks()
372
+
373
+ initHooks: ->
374
+ # @getMap().on "draw:editstart", (e) =>
375
+
376
+ getControl: ->
377
+ @control
378
+
379
+ getToolbar: ->
380
+ @control._toolbar
381
+
382
+ class C.Controls.Merge extends C.Controls
383
+ options:
384
+ merge:
385
+ featureGroup: undefined
386
+
387
+ constructor: (map, options = {}) ->
388
+ super(map)
389
+
390
+ C.Util.setOptions @, options
391
+
392
+ @control = new L.Control.Merge(@options.merge)
393
+
394
+ @initHooks()
395
+
396
+ initHooks: (->)
397
+
398
+ getControl: ->
399
+ @control
400
+
401
+ class C.Controls.ShapeDraw extends C.Controls
402
+ options:
403
+ draw:
404
+ edit: false
405
+ draw:
406
+ marker: false
407
+ circlemarker: false
408
+ polyline: false
409
+ rectangle: false
410
+ circle: false
411
+ polygon:
412
+ allowIntersection: false
413
+ showArea: false
414
+ snap:
415
+ polygon:
416
+ guideLayers: []
417
+ snapDistance: 15
418
+ snapOriginDistance: 30
419
+ allowIntersection: false
420
+ guidelineDistance: 8
421
+ shapeOptions:
422
+ dashArray: '8, 8'
423
+ fill: false
424
+ color: '#FF5722'
425
+ opacity: 1
426
+
427
+ constructor: (map, options = {}) ->
428
+ super(map)
429
+
430
+ C.Util.setOptions @, options
431
+
432
+ @options.draw.guideLayers = @options.snap.polygon.guideLayers
433
+ @control = new L.Control.ShapeDraw(map, @options.draw)
434
+
435
+ @initHooks()
436
+
437
+ initHooks: ->
438
+
439
+
440
+ getControl: ->
441
+ @control
442
+
443
+ class C.Controls.ShapeCut extends C.Controls
444
+ options:
445
+ cut:
446
+ featureGroup: undefined
447
+
448
+ constructor: (map, options = {}) ->
449
+ super(map)
450
+
451
+ C.Util.setOptions @, options
452
+
453
+ @control = new L.Control.ShapeCut(map, @options.cut)
454
+
455
+ @initHooks()
456
+
457
+ initHooks: ->
458
+
459
+
460
+ getControl: ->
461
+ @control
462
+
463
+ )(window.Cartography = window.Cartography || {}, jQuery)