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.
- data/.gitignore +10 -0
- data/.rvmrc +81 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +17 -0
- data/MIT-LICENSE +20 -0
- data/README.md +3 -0
- data/Rakefile +36 -0
- data/lib/assets/.gitkeep +0 -0
- data/lib/assets/javascripts/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/init.js.coffee.erb +9 -0
- data/lib/assets/javascripts/socmap_adf/lib/adf_delegate.js.coffee +13 -0
- data/lib/assets/javascripts/socmap_adf/lib/adf_view.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/init.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/lib/elycharts.js +3769 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/lib/raphael.js +5815 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/templates/chart.jst.eco +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/chart.js.coffee +107 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/chart_icon.js.coffee +106 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/cluster.js.coffee +127 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/default_icon.js.coffee +170 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/main.js.coffee +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/cluster/views/marker_clusterer.js.coffee +358 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/init.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/existing_file.jst.eco +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/file.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/main.jst.eco +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/templates/uploading.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/file_uploader/views/main.js.coffee +76 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/init.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/base.js.coffee +73 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/error.js.coffee +12 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/field_binder.js.coffee +104 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/models/validator.js.coffee +65 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/error_field.jst.eco +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_set.jst.eco +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_set_button.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/templates/field_sets.jst.eco +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/base.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/field_set.js.coffee +88 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/field_set_with_button.js.coffee +38 -0
- data/lib/assets/javascripts/socmap_adf/modules/form/views/field_sets.js.coffee +81 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/init.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/custom_marker.js.coffee +36 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/marker.js.coffee +72 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/marker_with_label.js +566 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/overlay.js.coffee +237 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/overlay_view.js.coffee +143 -0
- data/lib/assets/javascripts/socmap_adf/modules/gmap/views/polygon.js.coffee +107 -0
- data/lib/assets/javascripts/socmap_adf/modules/image_uploader/init.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/image_uploader/templates/main.jst.eco +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/image_uploader/views/main.js.coffee +69 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/init.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/models/custom_map.js.coffee +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/models/map.js.coffee +63 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/templates/main.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/templates/moving_pin.jst.eco +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/templates/tooltip.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/google_marker_clusterer.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/main.js.coffee +79 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/moving_pin.js.coffee +47 -0
- data/lib/assets/javascripts/socmap_adf/modules/map/views/tooltip.js.coffee +46 -0
- data/lib/assets/javascripts/socmap_adf/modules/marker/init.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/marker/views/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/marker/views/main.js.coffee +132 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/init.js.coffee +9 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/models/minimap.js.coffee +36 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/templates/moving_pin.jst.eco +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/templates/tooltip.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/views/main.js.coffee +68 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/views/moving_pin.js.coffee +55 -0
- data/lib/assets/javascripts/socmap_adf/modules/minimap/views/tooltip.js.coffee +47 -0
- data/lib/assets/javascripts/socmap_adf/modules/mvc/init.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/mvc/views/base.js.coffee +5 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/init.js.coffee +10 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/models/overlay.js.coffee +4 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/templates/main.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/templates/polygon_label.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/.DS_Store +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/main.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/overlay.js.coffee +55 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay/views/polygon_label.js.coffee +17 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay_push/init.js.coffee +8 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay_push/templates/colibration.jst.eco +4 -0
- data/lib/assets/javascripts/socmap_adf/modules/overlay_push/views/new.js.coffee +32 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/init.js.coffee +7 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/templates/base.jst.eco +5 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/templates/basic.jst.eco +5 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/views/base.js.coffee +98 -0
- data/lib/assets/javascripts/socmap_adf/modules/popup/views/basic.js.coffee +86 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/collections/empty +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/init.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/models/slice.js.coffee +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/bottomlink.jst.eco +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/bottomlinkaction.jst.eco +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/content.jst.eco +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/sidebar.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/tab.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/templates/tabs.jst.eco +3 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/bottomlink.js.coffee +41 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/content.js.coffee +63 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/sidebar.js.coffee +163 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tab.js.coffee +52 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tabcontent.js.coffee +23 -0
- data/lib/assets/javascripts/socmap_adf/modules/sidebar/views/tabs.js.coffee +63 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/collections/points.js.coffee +1 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/collections/zones.js.coffee +2 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/init.js.coffee +11 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/models/polygon.js.coffee +72 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/templates/main.jst.eco +0 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/views/main.js.coffee +6 -0
- data/lib/assets/javascripts/socmap_adf/modules/zone/views/test.js.coffee +17 -0
- data/lib/assets/javascripts/socmap_adf/requiress.js.coffee.erb +3 -0
- data/lib/generators/install_generator.rb +15 -0
- data/lib/generators/templates/socmap.rb.erb +9 -0
- data/lib/socmap_adf/engine.rb +5 -0
- data/lib/socmap_adf/version.rb +3 -0
- data/lib/socmap_adf.rb +17 -0
- data/lib/tasks/socmap-adf_tasks.rake +4 -0
- data/socmap_adf.gemspec +26 -0
- data/test/socmap-adf_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- 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,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()
|
|
Binary file
|
|
@@ -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 @@
|
|
|
1
|
+
<span></span>
|