socmap_adf 0.0.1

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.
Files changed (128) hide show
  1. data/.gitignore +10 -0
  2. data/.rvmrc +81 -0
  3. data/CHANGELOG.md +5 -0
  4. data/Gemfile +17 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +3 -0
  7. data/Rakefile +36 -0
  8. data/lib/assets/.gitkeep +0 -0
  9. data/lib/assets/javascripts/.DS_Store +0 -0
  10. data/lib/assets/javascripts/socmap_adf/.DS_Store +0 -0
  11. data/lib/assets/javascripts/socmap_adf/init.js.coffee.erb +9 -0
  12. data/lib/assets/javascripts/socmap_adf/lib/adf_delegate.js.coffee +13 -0
  13. data/lib/assets/javascripts/socmap_adf/lib/adf_view.js.coffee +7 -0
  14. data/lib/assets/javascripts/socmap_adf/modules/.DS_Store +0 -0
  15. data/lib/assets/javascripts/socmap_adf/modules/cluster/init.js.coffee +11 -0
  16. data/lib/assets/javascripts/socmap_adf/modules/cluster/lib/elycharts.js +3769 -0
  17. data/lib/assets/javascripts/socmap_adf/modules/cluster/lib/raphael.js +5815 -0
  18. data/lib/assets/javascripts/socmap_adf/modules/cluster/templates/chart.jst.eco +6 -0
  19. data/lib/assets/javascripts/socmap_adf/modules/cluster/views/chart.js.coffee +107 -0
  20. data/lib/assets/javascripts/socmap_adf/modules/cluster/views/chart_icon.js.coffee +106 -0
  21. data/lib/assets/javascripts/socmap_adf/modules/cluster/views/cluster.js.coffee +127 -0
  22. data/lib/assets/javascripts/socmap_adf/modules/cluster/views/default_icon.js.coffee +170 -0
  23. data/lib/assets/javascripts/socmap_adf/modules/cluster/views/main.js.coffee +10 -0
  24. data/lib/assets/javascripts/socmap_adf/modules/cluster/views/marker_clusterer.js.coffee +358 -0
  25. data/lib/assets/javascripts/socmap_adf/modules/file_uploader/init.js.coffee +7 -0
  26. data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/existing_file.jst.eco +10 -0
  27. data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/file.jst.eco +3 -0
  28. data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/main.jst.eco +7 -0
  29. data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/uploading.jst.eco +3 -0
  30. data/lib/assets/javascripts/socmap_adf/modules/file_uploader/views/main.js.coffee +76 -0
  31. data/lib/assets/javascripts/socmap_adf/modules/form/init.js.coffee +9 -0
  32. data/lib/assets/javascripts/socmap_adf/modules/form/models/base.js.coffee +73 -0
  33. data/lib/assets/javascripts/socmap_adf/modules/form/models/error.js.coffee +12 -0
  34. data/lib/assets/javascripts/socmap_adf/modules/form/models/field_binder.js.coffee +104 -0
  35. data/lib/assets/javascripts/socmap_adf/modules/form/models/validator.js.coffee +65 -0
  36. data/lib/assets/javascripts/socmap_adf/modules/form/templates/error_field.jst.eco +7 -0
  37. data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_set.jst.eco +6 -0
  38. data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_set_button.jst.eco +1 -0
  39. data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_sets.jst.eco +2 -0
  40. data/lib/assets/javascripts/socmap_adf/modules/form/views/base.js.coffee +9 -0
  41. data/lib/assets/javascripts/socmap_adf/modules/form/views/field_set.js.coffee +88 -0
  42. data/lib/assets/javascripts/socmap_adf/modules/form/views/field_set_with_button.js.coffee +38 -0
  43. data/lib/assets/javascripts/socmap_adf/modules/form/views/field_sets.js.coffee +81 -0
  44. data/lib/assets/javascripts/socmap_adf/modules/gmap/.DS_Store +0 -0
  45. data/lib/assets/javascripts/socmap_adf/modules/gmap/init.js.coffee +6 -0
  46. data/lib/assets/javascripts/socmap_adf/modules/gmap/views/.DS_Store +0 -0
  47. data/lib/assets/javascripts/socmap_adf/modules/gmap/views/custom_marker.js.coffee +36 -0
  48. data/lib/assets/javascripts/socmap_adf/modules/gmap/views/marker.js.coffee +72 -0
  49. data/lib/assets/javascripts/socmap_adf/modules/gmap/views/marker_with_label.js +566 -0
  50. data/lib/assets/javascripts/socmap_adf/modules/gmap/views/overlay.js.coffee +237 -0
  51. data/lib/assets/javascripts/socmap_adf/modules/gmap/views/overlay_view.js.coffee +143 -0
  52. data/lib/assets/javascripts/socmap_adf/modules/gmap/views/polygon.js.coffee +107 -0
  53. data/lib/assets/javascripts/socmap_adf/modules/image_uploader/init.js.coffee +7 -0
  54. data/lib/assets/javascripts/socmap_adf/modules/image_uploader/templates/main.jst.eco +10 -0
  55. data/lib/assets/javascripts/socmap_adf/modules/image_uploader/views/main.js.coffee +69 -0
  56. data/lib/assets/javascripts/socmap_adf/modules/map/.DS_Store +0 -0
  57. data/lib/assets/javascripts/socmap_adf/modules/map/init.js.coffee +9 -0
  58. data/lib/assets/javascripts/socmap_adf/modules/map/models/custom_map.js.coffee +1 -0
  59. data/lib/assets/javascripts/socmap_adf/modules/map/models/map.js.coffee +63 -0
  60. data/lib/assets/javascripts/socmap_adf/modules/map/templates/main.jst.eco +1 -0
  61. data/lib/assets/javascripts/socmap_adf/modules/map/templates/moving_pin.jst.eco +11 -0
  62. data/lib/assets/javascripts/socmap_adf/modules/map/templates/tooltip.jst.eco +1 -0
  63. data/lib/assets/javascripts/socmap_adf/modules/map/views/google_marker_clusterer.js.coffee +11 -0
  64. data/lib/assets/javascripts/socmap_adf/modules/map/views/main.js.coffee +79 -0
  65. data/lib/assets/javascripts/socmap_adf/modules/map/views/moving_pin.js.coffee +47 -0
  66. data/lib/assets/javascripts/socmap_adf/modules/map/views/tooltip.js.coffee +46 -0
  67. data/lib/assets/javascripts/socmap_adf/modules/marker/init.js.coffee +6 -0
  68. data/lib/assets/javascripts/socmap_adf/modules/marker/views/.DS_Store +0 -0
  69. data/lib/assets/javascripts/socmap_adf/modules/marker/views/main.js.coffee +132 -0
  70. data/lib/assets/javascripts/socmap_adf/modules/minimap/init.js.coffee +9 -0
  71. data/lib/assets/javascripts/socmap_adf/modules/minimap/models/minimap.js.coffee +36 -0
  72. data/lib/assets/javascripts/socmap_adf/modules/minimap/templates/moving_pin.jst.eco +11 -0
  73. data/lib/assets/javascripts/socmap_adf/modules/minimap/templates/tooltip.jst.eco +1 -0
  74. data/lib/assets/javascripts/socmap_adf/modules/minimap/views/main.js.coffee +68 -0
  75. data/lib/assets/javascripts/socmap_adf/modules/minimap/views/moving_pin.js.coffee +55 -0
  76. data/lib/assets/javascripts/socmap_adf/modules/minimap/views/tooltip.js.coffee +47 -0
  77. data/lib/assets/javascripts/socmap_adf/modules/mvc/init.js.coffee +6 -0
  78. data/lib/assets/javascripts/socmap_adf/modules/mvc/views/base.js.coffee +5 -0
  79. data/lib/assets/javascripts/socmap_adf/modules/overlay/.DS_Store +0 -0
  80. data/lib/assets/javascripts/socmap_adf/modules/overlay/init.js.coffee +10 -0
  81. data/lib/assets/javascripts/socmap_adf/modules/overlay/models/overlay.js.coffee +4 -0
  82. data/lib/assets/javascripts/socmap_adf/modules/overlay/templates/main.jst.eco +1 -0
  83. data/lib/assets/javascripts/socmap_adf/modules/overlay/templates/polygon_label.jst.eco +1 -0
  84. data/lib/assets/javascripts/socmap_adf/modules/overlay/views/.DS_Store +0 -0
  85. data/lib/assets/javascripts/socmap_adf/modules/overlay/views/main.js.coffee +6 -0
  86. data/lib/assets/javascripts/socmap_adf/modules/overlay/views/overlay.js.coffee +55 -0
  87. data/lib/assets/javascripts/socmap_adf/modules/overlay/views/polygon_label.js.coffee +17 -0
  88. data/lib/assets/javascripts/socmap_adf/modules/overlay_push/init.js.coffee +8 -0
  89. data/lib/assets/javascripts/socmap_adf/modules/overlay_push/templates/colibration.jst.eco +4 -0
  90. data/lib/assets/javascripts/socmap_adf/modules/overlay_push/views/new.js.coffee +32 -0
  91. data/lib/assets/javascripts/socmap_adf/modules/popup/init.js.coffee +7 -0
  92. data/lib/assets/javascripts/socmap_adf/modules/popup/templates/base.jst.eco +5 -0
  93. data/lib/assets/javascripts/socmap_adf/modules/popup/templates/basic.jst.eco +5 -0
  94. data/lib/assets/javascripts/socmap_adf/modules/popup/views/base.js.coffee +98 -0
  95. data/lib/assets/javascripts/socmap_adf/modules/popup/views/basic.js.coffee +86 -0
  96. data/lib/assets/javascripts/socmap_adf/modules/sidebar/collections/empty +0 -0
  97. data/lib/assets/javascripts/socmap_adf/modules/sidebar/init.js.coffee +11 -0
  98. data/lib/assets/javascripts/socmap_adf/modules/sidebar/models/slice.js.coffee +0 -0
  99. data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/bottomlink.jst.eco +1 -0
  100. data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/bottomlinkaction.jst.eco +2 -0
  101. data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/content.jst.eco +2 -0
  102. data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/sidebar.jst.eco +3 -0
  103. data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/tab.jst.eco +3 -0
  104. data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/tabs.jst.eco +3 -0
  105. data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/bottomlink.js.coffee +41 -0
  106. data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/content.js.coffee +63 -0
  107. data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/sidebar.js.coffee +163 -0
  108. data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tab.js.coffee +52 -0
  109. data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tabcontent.js.coffee +23 -0
  110. data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tabs.js.coffee +63 -0
  111. data/lib/assets/javascripts/socmap_adf/modules/zone/collections/points.js.coffee +1 -0
  112. data/lib/assets/javascripts/socmap_adf/modules/zone/collections/zones.js.coffee +2 -0
  113. data/lib/assets/javascripts/socmap_adf/modules/zone/init.js.coffee +11 -0
  114. data/lib/assets/javascripts/socmap_adf/modules/zone/models/polygon.js.coffee +72 -0
  115. data/lib/assets/javascripts/socmap_adf/modules/zone/templates/main.jst.eco +0 -0
  116. data/lib/assets/javascripts/socmap_adf/modules/zone/views/main.js.coffee +6 -0
  117. data/lib/assets/javascripts/socmap_adf/modules/zone/views/test.js.coffee +17 -0
  118. data/lib/assets/javascripts/socmap_adf/requiress.js.coffee.erb +3 -0
  119. data/lib/generators/install_generator.rb +15 -0
  120. data/lib/generators/templates/socmap.rb.erb +9 -0
  121. data/lib/socmap_adf/engine.rb +5 -0
  122. data/lib/socmap_adf/version.rb +3 -0
  123. data/lib/socmap_adf.rb +17 -0
  124. data/lib/tasks/socmap-adf_tasks.rake +4 -0
  125. data/socmap_adf.gemspec +26 -0
  126. data/test/socmap-adf_test.rb +7 -0
  127. data/test/test_helper.rb +15 -0
  128. metadata +202 -0
@@ -0,0 +1,237 @@
1
+ class ADF.GMap.Views.Overlay extends google.maps.OverlayView
2
+
3
+ hidden: true
4
+ topPoint: null
5
+ zindex: 1
6
+ body: "body"
7
+
8
+ constructor: (map, view) ->
9
+ @map = map
10
+ @view = view
11
+ @setMap(@map)
12
+ @hidden = @view.hidden
13
+ @clickable = @view.clickable
14
+ @hoverable = @view.hoverable
15
+ @showAfterDrag = @view.showAfterDrag
16
+ @view.overlay = @
17
+ @body = @view.body if @view.body?
18
+ @initMarker()
19
+ @bindMapEvents()
20
+
21
+ # = Marker Methods
22
+ initMarker: () ->
23
+ @options =
24
+ position: @view.point,
25
+ map: @map
26
+ draggable: @view.draggable
27
+ zIndex: 1
28
+ if @view.getCustomMarker()
29
+ @options.icon = @view.getCustomMarker().getIcon()
30
+ @options.shadow = @view.getCustomMarker().getShadow()
31
+ @options.shape = @view.getCustomMarker().getShape()
32
+ else
33
+ @options.icon = @view.icon if @view.icon
34
+ @options.shadow = @view.shadow if @view.shadow
35
+ @options.shape = @view.shape if @view.shape
36
+
37
+ @options.cursor = "hand"
38
+ if @view.draggable
39
+ @options.cursor = "move"
40
+ if @clickable
41
+ @options.cursor = "pointer"
42
+
43
+ if @view.label != null
44
+ @options.labelContent = @view.label
45
+ @options.labelClass = @view.labelClass
46
+ @options.labelAnchor = new google.maps.Point(60, 0)
47
+ @marker = new MarkerWithLabel @options
48
+ else
49
+ @marker = new google.maps.Marker @options
50
+ @view.setMarker(@marker)
51
+ @bindMarkerEvents()
52
+
53
+ setDraggable: (draggable) ->
54
+ @options.draggable = draggable
55
+ @options.cursor = "hand"
56
+ if @view.draggable
57
+ @options.cursor = "move"
58
+ if @clickable
59
+ @options.cursor = "pointer"
60
+
61
+ @marker.setOptions @options
62
+
63
+ setLabel: () ->
64
+ @marker.setMap(null)
65
+ @initMarker()
66
+
67
+ setMarkerIcon: () ->
68
+ @marker.setIcon(@view.icon)
69
+
70
+ getMarkerIcon: () ->
71
+ @marker.getIcon()
72
+
73
+ redrawMarker: () ->
74
+ @marker.setMap(null) if @marker
75
+ @initMarker()
76
+
77
+ getMarker: () =>
78
+ @marker
79
+
80
+ isClustering: () ->
81
+ @view.isClustering()
82
+
83
+ getData: () ->
84
+ @view.getData()
85
+
86
+ bindMarkerEvents: () ->
87
+ @markerDragstartEvent = google.maps.event.addListener @marker, 'dragstart', (e) =>
88
+ @hide()
89
+
90
+ @markerDragendEvent = google.maps.event.addListener @marker, 'dragend', (e) =>
91
+ @view.point = e.latLng
92
+ if @showAfterDrag
93
+ @show()
94
+ @draw()
95
+ @view.onMarkerMoved(@view.point)
96
+
97
+ @markerClickEvent = google.maps.event.addDomListener @marker, 'click', (e) =>
98
+ if @view.clickable
99
+ @view.beforeMarkerClicked()
100
+ if @hidden
101
+ @show()
102
+ @draw()
103
+
104
+ @markerMouseoverEvent = google.maps.event.addDomListener @marker, 'mouseover', (e) =>
105
+ if @view.hoverable
106
+ @view.onMarkerMouseOver()
107
+
108
+ @markerMouseoutEvent = google.maps.event.addDomListener @marker, 'mouseout', (e) =>
109
+ if @view.hoverable
110
+ @view.onMarkerMouseOut()
111
+
112
+ bindMapEvents: () ->
113
+ @dragstartEvent = google.maps.event.addListener @map, 'dragstart', () =>
114
+ @draw()
115
+
116
+ @dragendEvent = google.maps.event.addListener @map, 'dragend', () =>
117
+ @draw()
118
+
119
+ @centerChangedEvent = google.maps.event.addListener @map, 'center_changed', () =>
120
+ @draw()
121
+
122
+ unbindMapEvents: () =>
123
+ google.maps.event.removeListener(@dragstartEvent)
124
+ google.maps.event.removeListener(@dragendEvent)
125
+ google.maps.event.removeListener(@centerChangedEvent)
126
+
127
+ unbindMarkerEvents: () =>
128
+ google.maps.event.removeListener(@markerClickEvent)
129
+ google.maps.event.removeListener(@markerMouseoverEvent)
130
+ google.maps.event.removeListener(@markerMouseoutEvent)
131
+ google.maps.event.clearListeners(@getMarker(), "click")
132
+ google.maps.event.clearListeners(@getMarker(), "mouseover")
133
+ google.maps.event.clearListeners(@getMarker(), "mouseout")
134
+
135
+ # = Show or Hide overlay
136
+ show: ( animation = false ) ->
137
+ @view.beforeOverlayShowed()
138
+ if animation
139
+ $(@div).fadeIn("fast")
140
+ else
141
+ $(@div).show()
142
+ @hidden = false
143
+ @view.onOverlayShowed()
144
+
145
+ hide: ( animation = false ) ->
146
+ $(@div).hide()
147
+ @hidden = true
148
+
149
+ hideMarker: () ->
150
+ @hide()
151
+ if @marker
152
+ @marker.setMap(null)
153
+
154
+ showMarker: () ->
155
+ @show()
156
+ @marker.setMap(@map)
157
+
158
+ # = Set new position
159
+ setPosition: (point) ->
160
+ @view.point = point
161
+ @marker.setPosition(point)
162
+ @draw()
163
+
164
+ getPosition: () ->
165
+ @view.point
166
+
167
+ # = From OverlayView
168
+ onAdd: ->
169
+ @div = @view.render().el
170
+ if @view.asLabel
171
+ @pane = @getPanes().overlayLayer
172
+ @pane.appendChild(@div)
173
+ else
174
+ $(@body).append(@div)
175
+ @view.onMarkerAdded(@view.point)
176
+
177
+ draw: () ->
178
+ overlayProjection = @getProjection()
179
+ if (overlayProjection != null && overlayProjection != undefined && @view.point)
180
+ if @view.asLabel
181
+ divPixel = overlayProjection.fromLatLngToDivPixel(@view.point)
182
+ else
183
+ divPixel = overlayProjection.fromLatLngToContainerPixel(@view.point)
184
+
185
+ @left = divPixel.x + @view.left - (@view.getWidth() / 2)
186
+
187
+ if @view.overlayPositionVertical == "top"
188
+ @top = divPixel.y + @view.top - @view.getHeight()
189
+ else
190
+ @top = divPixel.y + @view.top
191
+
192
+ if @top < 0
193
+ point = new google.maps.Point(@left, (@top / 2) + ($(window).height() / 2))
194
+ @topPoint = overlayProjection.fromDivPixelToLatLng(point)
195
+ else
196
+ @topPoint = @view.point
197
+
198
+ if (@div != null)
199
+ $(@div).css({position: "absolute", left: @left, top: @top, "z-index" : @zindex})
200
+
201
+ if @hidden
202
+ $(@div).hide()
203
+
204
+ if !@hidden
205
+ @show()
206
+
207
+ onRemove: () ->
208
+ @unbindMapEvents()
209
+ @unbindMarkerEvents()
210
+ $(@div).remove()
211
+ @getMarker().setMap(null)
212
+ @onMap = false
213
+
214
+ setInFront: () ->
215
+ @zindex = @zindex + 1
216
+ @draw()
217
+
218
+ setBack: () ->
219
+ @zindex = @zindex - 1
220
+ @draw()
221
+
222
+ centerToOverlay: () ->
223
+ if @topPoint
224
+ @map.setCenter(@topPoint)
225
+ else
226
+ @map.setCenter(@view.point)
227
+
228
+ centerPanToOverlay: (x = 0, y = 0) ->
229
+ @map.panTo(@view.point)
230
+ @map.panBy(x, y)
231
+
232
+ centerToMarker: () ->
233
+ @map.setCenter(@view.point)
234
+
235
+ redraw: (event) ->
236
+ @view.point = event.latLng
237
+ @draw()
@@ -0,0 +1,143 @@
1
+ class ADF.GMap.Views.OverlayView extends ADF.MVC.Views.Base
2
+
3
+ top: -60
4
+ overlayPositionVertical: "top"
5
+ left: 0
6
+ hidden: true
7
+ overlay: null
8
+ icon: false
9
+ shadow: false
10
+ shape: false
11
+ draggable: false
12
+ point: false
13
+ label: null
14
+ labelClass: "marker_label"
15
+ customMarker: null
16
+ zindex: 1
17
+ clickable: true
18
+ asLabel: false
19
+ showAfterDrag: false
20
+ clustering: false
21
+ data: 1
22
+
23
+ constructor: (options) ->
24
+ super(options)
25
+ @map = options.map
26
+ @point = options.point
27
+ @clickable = options.clickable if options.clickable?
28
+ @hidden = options.hidden if options.hidden?
29
+ @data = options.data if options.data?
30
+
31
+ setTop: (top) ->
32
+ @top = top
33
+ @redraw()
34
+
35
+ setPosition: (top, left) ->
36
+ @top = top
37
+ @left = left
38
+ @redraw()
39
+
40
+ render: () ->
41
+ if @model
42
+ $(@el).html(@template(@model.toJSON()))
43
+ else
44
+ $(@el).html(@template)
45
+ @initResize()
46
+ @onRenderCompleted()
47
+ @
48
+
49
+ hide: () ->
50
+ @overlay.hide() if @overlay
51
+
52
+ show: () ->
53
+ @overlay.show() if @overlay
54
+
55
+ hideAll: () ->
56
+ @hide()
57
+ if @marker
58
+ @marker.setMap(null)
59
+
60
+ showAll: () ->
61
+ @show()
62
+ @overlay.initMarker()
63
+
64
+ redraw: () ->
65
+ @overlay.draw()
66
+
67
+
68
+ isClustering: () ->
69
+ @clustering
70
+
71
+ getData: () ->
72
+ @data
73
+
74
+ pushOverlay: () ->
75
+ @overlay = new ADF.GMap.Views.Overlay(@map.getGMap(), @)
76
+ @map.addOverlay(@overlay)
77
+
78
+ addOrChangeLocation: (point) ->
79
+ @point = point
80
+ if @overlay
81
+ @overlay.setMap(null)
82
+ else
83
+ @unbindMap()
84
+ @pushOverlay()
85
+
86
+ setMarkerIcon: (icon) ->
87
+ @icon = icon
88
+ @overlay.setMarkerIcon()
89
+
90
+ setDraggable: (draggable) ->
91
+ @draggable = draggable
92
+ @overlay.setDraggable(@draggable)
93
+
94
+ setLabel: (label) ->
95
+ @label = label
96
+ @overlay.setLabel()
97
+
98
+ remove: () ->
99
+ @overlay.setMap(null) if @overlay
100
+ @point = false
101
+ @overlay = null
102
+
103
+ getCustomMarker: () ->
104
+ @customMarker
105
+
106
+ setCustomMarker: (customMarker) ->
107
+ @customMarker = customMarker
108
+ @overlay.redrawMarker()
109
+
110
+ getMarker: () ->
111
+ @overlay.getMarker()
112
+
113
+ getHeight: () ->
114
+ $(@el).children(":first").height()
115
+
116
+ getWidth: () ->
117
+ $(@el).children(":first").width()
118
+
119
+ initResize: () ->
120
+ $(@el).children(":first").resize @onResize
121
+
122
+ onResize: (e) =>
123
+ @redraw()
124
+
125
+ centerMap: () ->
126
+ @overlay.centerToOverlay()
127
+
128
+ centerPanMap: (x = 0, y = 0) ->
129
+ @overlay.centerPanToOverlay(x, y)
130
+
131
+ setMarker: (marker) ->
132
+ @marker = marker
133
+
134
+ # Callback methods
135
+ onRenderCompleted: () ->
136
+ onMarkerAdded: () ->
137
+ beforeMarkerClicked: () ->
138
+ beforeOverlayShowed: () ->
139
+ onMarkerMouseOver: () ->
140
+ onMarkerMouseOut: () ->
141
+ onOverlayShowed: () ->
142
+ onMarkerMoved: (point) ->
143
+ unbindMap: () ->
@@ -0,0 +1,107 @@
1
+ class ADF.GMap.Views.Polygon extends ADF.MVC.Views.Base
2
+
3
+ initialize: () ->
4
+ @mapView = @options.mapView
5
+ @zone = @options.model
6
+ @onShapeClickedCallback = @options.onShapeClicked
7
+ @onPolygonDrawCompleted = @options.onPolygonDrawCompleted
8
+ @onPolygonDrawStarted = @options.onPolygonDrawStarted
9
+ @pathChanged = if typeof @options.pathChanged == 'function' then @options.pathChanged
10
+ @initialized = false
11
+
12
+ initZone: (allowDraw) ->
13
+ @initialized = true
14
+ @map = @mapView.getMap().getGMap()
15
+ if @zone.isNew() && allowDraw
16
+ @startDrawing()
17
+ else
18
+ @zone.setPolygonMap( @map )
19
+ @onPolygonDrawCompleted() if @onPolygonDrawCompleted? && allowDraw
20
+ @setPolygonHandlers()
21
+ @mapView.getMap().addOverlay(@)
22
+
23
+ isClustering: () ->
24
+ false
25
+
26
+ setLabel: ( label ) ->
27
+ bounds = new google.maps.LatLngBounds();
28
+
29
+ i = 0
30
+ while i < @zone.getPolygon().getPath().length
31
+ bounds.extend(@zone.getPolygon().getPath().getAt(i))
32
+ i++
33
+ point = bounds.getCenter()
34
+
35
+ unless @labelView
36
+ @labelView = new ADF.Map.Views.PolygonLabel
37
+ point: point
38
+ map : @mapView.getMap()
39
+ model: @zone
40
+ hidden: false
41
+ label: label
42
+ else
43
+ @labelView.point = point
44
+ @labelView.label = label
45
+ @labelView.render()
46
+
47
+ startDrawing: ->
48
+ return if @zone.readOnly
49
+ @drawingManager = new google.maps.drawing.DrawingManager
50
+ drawingMode: google.maps.drawing.OverlayType.POLYGON
51
+ polygonOptions: @zone.mapObject.polygon_options_defaults
52
+ map: @map
53
+ drawingControl: false
54
+
55
+ @onPolygonStartDrawing()
56
+ @onPolygonDrawStarted() if @onPolygonDrawStarted?
57
+ google.maps.event.addListener @drawingManager, 'polygoncomplete', @polygonCompleteHandler
58
+
59
+ # stopDrawing: ->
60
+ # @drawingManager.setMap(null) if @drawingManager
61
+
62
+ setFirstCoordinate: (latLng) ->
63
+ @first_coordinate = latLng
64
+
65
+ getFirstCoordinate: ->
66
+ if @first_coordinate? then @first_coordinate else false
67
+
68
+ stopDrawing: ->
69
+ @drawingManager.setDrawingMode null if @drawingManager
70
+
71
+ getZone: ->
72
+ @zone
73
+
74
+ setMap: (map) ->
75
+ @zone.setPolygonMap(map)
76
+
77
+ removeFromMap: () ->
78
+ @zone.removeFromMap()
79
+ @labelView.remove() if @labelView
80
+
81
+ polygonCompleteHandler: ( newShape ) =>
82
+ @zone.setPolygon( newShape )
83
+ @setPolygonHandlers()
84
+ @onPolygonDrawComplete()
85
+ @onPolygonDrawCompleted() if @onPolygonDrawCompleted?
86
+
87
+ setPolygonHandlers: () ->
88
+ google.maps.event.addListener @zone.getPolygon(), 'click', @newShapeClickHandler
89
+ google.maps.event.addListener @map, 'click', @clearSelection
90
+ google.maps.event.addListener @zone.getPolygon().getPath(), 'set_at', @pathChanged
91
+ google.maps.event.addListener @zone.getPolygon().getPath(), 'insert_at', @pathChanged
92
+ google.maps.event.addListener @zone.getPolygon().getPath(), 'remove_at', @pathChanged
93
+ @zone.setEditable()
94
+
95
+ clearSelection: =>
96
+ @zone.setUnEditable( )
97
+
98
+ newShapeClickHandler: ( e ) =>
99
+ @zone.setEditable()
100
+ @onShapeClicked()
101
+ @onShapeClickedCallback() if @onShapeClickedCallback?
102
+
103
+ # Callback Methods
104
+ onPolygonDrawComplete: ->
105
+ onPolygonStartDrawing: ->
106
+ onShapeClicked: ->
107
+ pathChanged: =>
@@ -0,0 +1,7 @@
1
+ # Default requires for ADF modules
2
+ #= require_self
3
+ #= require_tree ./templates
4
+ #= require_tree ./views
5
+
6
+ ADF.ImageUploader =
7
+ Views: {}
@@ -0,0 +1,10 @@
1
+ <div class="file_upload_wrap clear">
2
+ <a href="#" class="btn_close">X</a>
3
+ <div class="button_upload_pic qq-upload-button qq-upload-drop-area">
4
+ <img class="uploaded_picture" width="auto" width="122" height="82" style="display: none;" src="" alt="Picture" />
5
+ <img class="loading button_upload_pic" width="122" height="82" style="display: none;" src="/assets/loading.gif" alt="Loading" />
6
+ <img class="image_holder" src="/assets/bg_pic_add.png" height="82" style="display: block;" width="122" alt="Holder" />
7
+ </div>
8
+ <p>Tu vari augšuplādēt līdz <strong>2MB</strong> lielus attēlus <strong>.jpg</strong>, <strong>.jpeg</strong>, <strong>.gif</strong> un <strong>.png</strong> formātos.</p>
9
+ <ul class="qq-upload-list"></ul>
10
+ </div>
@@ -0,0 +1,69 @@
1
+ class ADF.ImageUploader.Views.Main extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/image_uploader/templates/main']
4
+ image: null
5
+ events:
6
+ "click .btn_close" : "onCloseClicked"
7
+
8
+
9
+ initialize: () ->
10
+ _.bindAll(this, 'render')
11
+ @onComplete = @options.onComplete if @options.onComplete
12
+ @onCancel = @options.onCancel if @options.onComplete
13
+ @image = @options.image if @options.image
14
+
15
+ render: () ->
16
+ options =
17
+ element: $(@el).get(0)
18
+ action: '/api/images'
19
+ multiple: false
20
+ debug: true
21
+ allowedExtensions: ['jpg', 'jpeg', 'png', 'gif']
22
+ onComplete: @onFileUploaded
23
+ onProgress: @onProgress
24
+ template: @template()
25
+ sizeLimit: 2024000
26
+ messages:
27
+ typeError: "Failam {file} ir nepareizs formāts. Tikai {extensions} formāti ir atļauti."
28
+ sizeError: "Fails {file} ir pārāk liels. Faila maksimālais lielums {sizeLimit}."
29
+ minSizeError: "Faila {file} izmērs ir par mazu, minimums {minSizeLimit}."
30
+ emptyError: "Fails {file} ir tukšs."
31
+ onLeave: "Fails nav pabeidzis augšuplādi. Vai tiešām vēlaties pamest aplikāciju?"
32
+
33
+ if !@uploader
34
+ @uploader = new qq.FileUploader options
35
+ @$("ul").hide()
36
+
37
+ if @image
38
+ @showImage(@image)
39
+ else
40
+ @$(".btn_close").hide()
41
+ @$(".image_holder").show()
42
+ @
43
+
44
+ onProgress: () =>
45
+ @$(".btn_close").hide()
46
+ @$(".image_holder").hide()
47
+ @$('.loading').show()
48
+
49
+ onFileUploaded: (id, fileName, responseJSON) =>
50
+ @$('.loading').hide()
51
+ @$(".image_holder").hide()
52
+ @image = responseJSON.uploader_url
53
+ @showImage(@image)
54
+ @$(".btn_close").show()
55
+ if @onComplete
56
+ @onComplete(responseJSON)
57
+
58
+ onCloseClicked: () ->
59
+ @$(".uploaded_picture").hide()
60
+ @$(".btn_close").hide()
61
+ @$(".image_holder").show()
62
+ if @onCancel
63
+ @onCancel()
64
+ return false
65
+
66
+ showImage: (image_url) ->
67
+ @$(".image_holder").hide()
68
+ @$(".uploaded_picture").attr("src", image_url)
69
+ @$(".uploaded_picture").show()
@@ -0,0 +1,9 @@
1
+ # Default requires for ADF modules
2
+ #= require_self
3
+ #= require_tree ./templates
4
+ #= require_tree ./models
5
+ #= require_tree ./views
6
+
7
+ ADF.Map =
8
+ Models: {}
9
+ Views: {}
@@ -0,0 +1 @@
1
+ class google.maps.CustomMap extends google.maps.Map
@@ -0,0 +1,63 @@
1
+ class ADF.Map.Models.Map extends Backbone.Model
2
+
3
+ overlays: []
4
+ clustered_overlays: []
5
+
6
+ maxZoomLevelForClustering: 21
7
+ maxZoomOnClick: 18
8
+
9
+ defaults:
10
+ center: new google.maps.LatLng(57,25)
11
+ zoom: 7
12
+ mapTypeId: google.maps.MapTypeId.HYBRID
13
+ mapTypeControl: false
14
+ zoomControl: true
15
+ zoomControlOptions:
16
+ style: google.maps.ZoomControlStyle.SMALL
17
+ position: google.maps.ControlPosition.RIGHT_TOP
18
+ panControl: false
19
+ streetViewControl: false
20
+
21
+ clusterDefaults:
22
+ "maxZoom": 21
23
+ "maxZoomOnClick": 21
24
+ "clusterShowType": "chart"
25
+
26
+ constructor: (options, clusterOptions) ->
27
+ super(options)
28
+ @clusterOptions = $.extend(@clusterDefaults, clusterOptions)
29
+
30
+ initGMap: (mapElement) ->
31
+ @map = new google.maps.Map(document.getElementById(mapElement), @attributes)
32
+ @markerClusterer = new ADF.Cluster.Views.MarkerClusterer(@map, null, @clusterOptions)
33
+ return @map
34
+
35
+ getGMap: () ->
36
+ return @map
37
+
38
+ addOverlay: (overlay, clustering = false) ->
39
+ @overlays.push(overlay)
40
+ @clusterOverlay(overlay) if clustering || overlay.isClustering()
41
+
42
+ setCenter: (latLng) ->
43
+ @map.setCenter(latLng)
44
+
45
+ hideZoomControl: () ->
46
+ @map.setOptions({zoomControl: false})
47
+
48
+ showZoomControl: () ->
49
+ @map.setOptions({zoomControl: true})
50
+
51
+ fitBounds: (bounds) ->
52
+ @map.fitBounds(bounds)
53
+
54
+ clearMap: () ->
55
+ for overlay in @overlays
56
+ overlay.marker.setMap(null) if overlay.marker?
57
+ overlay.setMap(null)
58
+ @markerClusterer.removeMarker(overlay) if @markerClusterer && overlay.isClustering()
59
+ @overlays = []
60
+ @markerClusterer.clearMarkers()
61
+
62
+ clusterOverlay: (overlay) ->
63
+ @markerClusterer.addMarker(overlay) if @markerClusterer
@@ -0,0 +1 @@
1
+ <div id="adf_map_canvas"></div>
@@ -0,0 +1,11 @@
1
+ <div style="position:relative;">
2
+ <% if @label: %>
3
+ <div class="content <%= @color %>">
4
+ <div class="label_block">
5
+ <%= @label %>
6
+ </div>
7
+ <div class="background"></div>
8
+ </div>
9
+ <% end %>
10
+ <div class="new_marker"><img src="<%= @pin %>" /></div>
11
+ </div>
@@ -0,0 +1,11 @@
1
+ class ADF.Map.Views.GoogleMarkerClusterer extends google.maps.OverlayView
2
+
3
+ onAdd: () ->
4
+ @setReady_ true
5
+
6
+ draw: () ->
7
+
8
+ onRemove: () ->
9
+
10
+ constructor: (map, opt_markers, opt_options) ->
11
+ @map_ = map