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,79 @@
1
+ class ADF.Map.Views.Main extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/map/templates/main']
4
+ left: 370
5
+ top: 0
6
+ heightOffset: 39
7
+ map_id: "adf_map_canvas"
8
+ mapOptions: {}
9
+ clusterOptions: {}
10
+
11
+ constructor: (options) ->
12
+ super(options)
13
+ @model = new ADF.Map.Models.Map(@mapOptions, @clusterOptions)
14
+ @map_id = options.map_id if options.map_id
15
+
16
+ render: () ->
17
+ @containerArea = @make("div", {"id" : @map_id} )
18
+ @setElement( @containerArea )
19
+ @
20
+
21
+ renderMap: ->
22
+ @bindResizeEvents()
23
+ @model.initGMap(@map_id)
24
+ @tooltip = new ADF.Map.Views.Tooltip({map: @getMap(), containerArea: @containerArea })
25
+ @resize()
26
+ @initTooltip()
27
+ @onRenderCompleted()
28
+
29
+ initTooltip: () ->
30
+ $("body").append( @tooltip.render().el )
31
+
32
+ bindResizeEvents: ->
33
+ $(window).resize =>
34
+ @resize()
35
+
36
+ $(document).ready =>
37
+ @resize()
38
+
39
+ resize: ->
40
+ height = $(window).height() - @heightOffset
41
+ width = $(window).width() - @left
42
+ $(@containerArea).css({"position" : "absolute", "top" : @top + "px", "left" : @left + "px", "height" : height + "px", "width" : width + "px"})
43
+ google.maps.event.trigger( @model.getGMap(), "resize") if @model.getGMap()
44
+
45
+ getMap: () ->
46
+ @model
47
+
48
+ setCenter: (latLng) ->
49
+ @model.setCenter(latLng)
50
+
51
+ setZoom: (zoom) ->
52
+ @getGMap().setZoom(zoom)
53
+
54
+ setCenterWithOffset: (position, offsetx, offsety) ->
55
+ @model.setCenter(position)
56
+ zoomLevel = @model.getGMap().getZoom()
57
+ max = Math.pow(2,zoomLevel) * 256;
58
+ lng = -(offsetx / max) * 100 + position.lng()
59
+ lat = -(offsety / max) * 100 + position.lat()
60
+ pos = new google.maps.LatLng(lat, lng)
61
+ @model.setCenter(pos)
62
+
63
+ getGMap: () ->
64
+ @model.getGMap()
65
+
66
+ getProjection: () ->
67
+ @getGMap().getProjection()
68
+
69
+ fitBounds: (bounds_array, centerWithOffset = false) ->
70
+ if bounds_array
71
+ bounds = new google.maps.LatLngBounds()
72
+ _.each bounds_array, (marker) =>
73
+ bounds.extend(new google.maps.LatLng(marker.lat, marker.lng))
74
+ @model.fitBounds(bounds)
75
+ @model.getGMap().setZoom(@model.getGMap().getZoom() - 1)
76
+ @setCenterWithOffset(@model.getGMap().getCenter(), 0, -300) if centerWithOffset
77
+
78
+ # Callback methods
79
+ onRenderCompleted: () ->
@@ -0,0 +1,47 @@
1
+ class ADF.Map.Views.MovingPin extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/map/templates/moving_pin']
4
+ offset_left: 0
5
+ offset_top: -91
6
+
7
+ initialize: =>
8
+ @map = @options.map
9
+ @containerArea = @options.containerArea
10
+ @label = @options.label
11
+ @pin = @options.pin
12
+ @color = @options.color
13
+ @setActive()
14
+
15
+ render: () ->
16
+ @setElement( @make("div", {"class":"mapitem_block", "style" : "display:none;"}) )
17
+ @$el.html(@template({color: @color, label: @label, pin: @pin }))
18
+ @
19
+
20
+ setInactive: () ->
21
+ $(@containerArea).unbind "mouseover"
22
+ $(@containerArea).unbind "mouseout"
23
+ $(@containerArea).unbind "mousemove"
24
+ @remove()
25
+
26
+ movingPinHeight: () ->
27
+ @$el.height()
28
+
29
+ remove: (e) =>
30
+ @$el.remove()
31
+
32
+ show: (e) =>
33
+ @$el.show()
34
+
35
+ hide: (e) =>
36
+ @$el.hide()
37
+
38
+ move: (e) =>
39
+ left = e.pageX + @offset_left - (@$el.width() / 2)
40
+ top = e.pageY + @offset_top - @movingPinHeight()
41
+ @$el.css("top", top+"px").css("left", left+"px")
42
+
43
+ setActive: () ->
44
+ $(@containerArea).bind "mouseover", @show
45
+ $(@containerArea).bind "mouseleave", @hide
46
+ $(@containerArea).bind "mousemove", @move
47
+ $(@containerArea).trigger("mousemove")
@@ -0,0 +1,46 @@
1
+ class ADF.Map.Views.Tooltip extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/map/templates/tooltip']
4
+
5
+ offset_left: 5
6
+ offset_top: 0
7
+ text: ""
8
+ active: false
9
+
10
+ initialize: =>
11
+ @map = @options.map
12
+ @containerArea = @options.containerArea
13
+
14
+ render: () ->
15
+ newElement = @make("div", {"class": "show_tip", "id" : "map_ballon", "style" : "display:none;position:absolute;"} )
16
+ @setElement( newElement )
17
+ @$el.html( @template )
18
+ @
19
+
20
+ setInactive: () ->
21
+ @active = false
22
+ $(@containerArea).unbind "mouseover"
23
+ $(@containerArea).unbind "mouseout"
24
+ $(@containerArea).unbind "mousemove"
25
+ @hide()
26
+
27
+ show: (e) =>
28
+ @move(e)
29
+ @$el.show()
30
+
31
+ hide: (e) =>
32
+ @$el.hide()
33
+
34
+ move: (e) =>
35
+ left = e.pageX + @offset_left
36
+ top = e.pageY + @offset_top
37
+ @$el.css("top", top+"px").css("left", left+"px")
38
+
39
+ setText: ( text ) ->
40
+ if not @active
41
+ @active = true
42
+ $(@containerArea).bind "mouseover", @show
43
+ $(@containerArea).bind "mouseleave", @hide
44
+ $(@containerArea).bind "mousemove", @move
45
+
46
+ @$("span").html(text)
@@ -0,0 +1,6 @@
1
+ # Default requires for ADF modules
2
+ #= require_self
3
+ #= require_tree ./views
4
+
5
+ ADF.Marker =
6
+ Views: {}
@@ -0,0 +1,132 @@
1
+ class ADF.Marker.Views.Main extends ADF.MVC.Views.Base
2
+
3
+ icon: false
4
+ shadow: false
5
+ shape: false
6
+ draggable: false
7
+ point: false
8
+ label: null
9
+ labelClass: "marker_label"
10
+ customMarker: null
11
+ clickable: true
12
+ asLabel: false
13
+ showAfterDrag: false
14
+ clustering: false
15
+ data: 1
16
+ zindex: 1
17
+
18
+ constructor: (options) ->
19
+ super(options)
20
+ @map = options.map
21
+ @point = options.point
22
+ @data = options.data if options.data?
23
+ @initMarker()
24
+
25
+ setMarkerIcon: (icon) ->
26
+ @icon = icon
27
+ @marker.setIcon(@icon)
28
+
29
+ getMarkerIcon: () ->
30
+ @icon
31
+
32
+ setCustomMarker: (customMarker) ->
33
+ @customMarker = customMarker
34
+ @marker.setMap(null)
35
+ @initMarker()
36
+
37
+ getCustomMarker: () ->
38
+ @customMarker
39
+
40
+ isClustering: () ->
41
+ @clustering
42
+
43
+ getData: () ->
44
+ @data
45
+
46
+ setDraggable: (draggable) ->
47
+ @draggable = draggable
48
+ @overlay.setDraggable(@draggable)
49
+
50
+ setLabel: (label) ->
51
+ @label = label
52
+ @overlay.setLabel()
53
+
54
+ setMap: (map) ->
55
+ @marker.setMap(map)
56
+
57
+ getPosition: () ->
58
+ @point
59
+
60
+ getMap: () ->
61
+ @marker.getMap()
62
+
63
+ getMarker: () ->
64
+ @marker
65
+
66
+ setLabel: (label) ->
67
+ @label = label
68
+ @marker.setMap(null)
69
+ @initMarker()
70
+
71
+ center: () ->
72
+ @map.getGMap().setCenter(@point)
73
+
74
+ centerPan: (x = 0, y = 0) ->
75
+ @map.getGMap().panTo(@point)
76
+ @map.getGMap().panBy(x, y)
77
+
78
+ initMarker: () ->
79
+ @options =
80
+ position: @point,
81
+ map: @map.getGMap()
82
+ draggable: @draggable
83
+ zIndex: 1
84
+ if @getCustomMarker()
85
+ @options.icon = @getCustomMarker().getIcon()
86
+ @options.shadow = @getCustomMarker().getShadow()
87
+ @options.shape = @getCustomMarker().getShape()
88
+ else
89
+ @options.icon = @icon if @icon
90
+ @options.shadow = @shadow if @shadow
91
+ @options.shape = @shape if @shape
92
+
93
+ @options.cursor = "hand"
94
+ if @draggable
95
+ @options.cursor = "move"
96
+ if @clickable
97
+ @options.cursor = "pointer"
98
+
99
+ if @label != null
100
+ @options.labelContent = @label
101
+ @options.labelClass = @labelClass
102
+ @options.labelAnchor = new google.maps.Point(60, 0)
103
+ @marker = new MarkerWithLabel @options
104
+ else
105
+ @marker = new google.maps.Marker @options
106
+ @bindMarkerEvents()
107
+ @map.addOverlay(@, true)
108
+
109
+ bindMarkerEvents: () ->
110
+ @markerDragstartEvent = google.maps.event.addListener @marker, 'dragstart', (e) =>
111
+ @hide()
112
+
113
+ @markerDragendEvent = google.maps.event.addListener @marker, 'dragend', (e) =>
114
+ @point = e.latLng
115
+ @onMarkerMoved(@point)
116
+
117
+ @markerClickEvent = google.maps.event.addDomListener @marker, 'click', (e) =>
118
+ if @clickable
119
+ @beforeMarkerClicked()
120
+
121
+ @markerMouseoverEvent = google.maps.event.addDomListener @marker, 'mouseover', (e) =>
122
+ if @hoverable
123
+ @onMarkerMouseOver()
124
+
125
+ @markerMouseoutEvent = google.maps.event.addDomListener @marker, 'mouseout', (e) =>
126
+ if @hoverable
127
+ @onMarkerMouseOut()
128
+
129
+ # Callback methods
130
+ beforeMarkerClicked: () ->
131
+ onMarkerMouseOver: () ->
132
+ onMarkerMouseOut: () ->
@@ -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.Minimap =
8
+ Models: {}
9
+ Views: {}
@@ -0,0 +1,36 @@
1
+ class ADF.Minimap.Models.Minimap extends Backbone.Model
2
+
3
+ overlays: []
4
+
5
+ defaults:
6
+ center: new google.maps.LatLng(57,25)
7
+ zoom: 7
8
+ mapTypeId: google.maps.MapTypeId.HYBRID
9
+ mapTypeControl: false
10
+ zoomControl: true
11
+ zoomControlOptions:
12
+ style: google.maps.ZoomControlStyle.SMALL
13
+ position: google.maps.ControlPosition.RIGHT_TOP
14
+ panControl: false
15
+ streetViewControl: false
16
+
17
+ initGMap: (mapElement) ->
18
+ @map = new google.maps.Map(document.getElementById(mapElement), @attributes)
19
+ return @map
20
+
21
+ getGMap: () ->
22
+ return @map
23
+
24
+ addOverlay: (overlay) ->
25
+ @overlays.push(overlay)
26
+
27
+ setCenter: (latLng) ->
28
+ @map.setCenter(latLng)
29
+
30
+ fitBounds: (bounds) ->
31
+ @map.fitBounds(bounds)
32
+
33
+ clearMap: () ->
34
+ for overlay in @overlays
35
+ overlay.setMap(null)
36
+ @overlays = []
@@ -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,68 @@
1
+ class ADF.Minimap.Views.Main extends ADF.MVC.Views.Base
2
+
3
+ mapOptions: {}
4
+ map_id: "adf_minimap_canvas"
5
+
6
+ constructor: (options) ->
7
+ super(options)
8
+ @model = new ADF.Minimap.Models.Minimap(@mapOptions)
9
+ @map_id = options.map_id if options.map_id
10
+
11
+ render: () ->
12
+ @containerArea = @make("div", {"id" : @map_id} )
13
+ @setElement( @containerArea )
14
+ @
15
+
16
+ return this
17
+
18
+ renderMap: ->
19
+ @bindResizeEvents()
20
+ @model.initGMap(@map_id)
21
+ @tooltip = new ADF.Minimap.Views.Tooltip({map: @getMap(), containerArea: @containerArea })
22
+ @resize()
23
+ @initTooltip()
24
+ @onRenderCompleted()
25
+
26
+ initTooltip: () ->
27
+ $(@containerArea).append( @tooltip.render().el )
28
+
29
+ bindResizeEvents: ->
30
+ $(window).resize =>
31
+ @resize()
32
+
33
+ $(document).ready =>
34
+ @resize()
35
+
36
+ resize: ->
37
+ $(@containerArea).css({"position" : "relative", "height" : "100%", "width" : "100%"})
38
+ google.maps.event.trigger( @model.getGMap(), "resize") if @model.getGMap()
39
+
40
+ getMap: () ->
41
+ @model
42
+
43
+ setCenter: (latLng) ->
44
+ @model.setCenter(latLng)
45
+
46
+ setCenterWithOffset: (position, offsetx, offsety) ->
47
+ @model.setCenter(position)
48
+ zoomLevel = @model.getGMap().getZoom()
49
+ max = Math.pow(2,zoomLevel) * 256;
50
+ lng = -(offsetx / max) * 100 + position.lng()
51
+ lat = -(offsety / max) * 100 + position.lat()
52
+ pos = new google.maps.LatLng(lat, lng)
53
+ @model.setCenter(pos)
54
+
55
+ getGMap: () ->
56
+ @model.getGMap()
57
+
58
+ fitBounds: (bounds_array, centerWithOffset) ->
59
+ if bounds_array
60
+ bounds = new google.maps.LatLngBounds()
61
+ _.each bounds_array, (marker) =>
62
+ bounds.extend(new google.maps.LatLng(marker.lat, marker.lng))
63
+ @model.fitBounds(bounds)
64
+ @model.getGMap().setZoom(@model.getGMap().getZoom() - 1)
65
+ @setCenterWithOffset(@model.getGMap().getCenter(), 0, -300) if centerWithOffset
66
+
67
+ # Callback methods
68
+ onRenderCompleted: () ->
@@ -0,0 +1,55 @@
1
+ class ADF.Minimap.Views.MovingPin extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/minimap/templates/moving_pin']
4
+ offset_left: 0
5
+ offset_top: -91
6
+ label: ""
7
+ offsetElement: {offset: ->
8
+ left: 0
9
+ right: 0}
10
+
11
+ initialize: =>
12
+ @map = @options.map
13
+ @containerArea = @options.containerArea
14
+ @label = @options.label if @options.label
15
+ @pin = @options.pin
16
+ @color = @options.color
17
+ @offsetElement = @options.offsetElement if @options.offsetElement
18
+ @offset_top = @options.offset_top if @options.offset_top?
19
+
20
+ render: () ->
21
+ @setElement( @make("div", {"class":"minimapitem_block", "style" : "display:none;position:absolute;"}) )
22
+ @$el.html(@template({color: @color, label: @label, pin: @pin }))
23
+ @setActive()
24
+ @
25
+
26
+ setInactive: () ->
27
+ $(@containerArea).unbind "mouseover"
28
+ $(@containerArea).unbind "mouseout"
29
+ $(@containerArea).unbind "mousemove"
30
+ @remove()
31
+
32
+ movingPinHeight: () ->
33
+ @$el.height()
34
+
35
+ remove: (e) =>
36
+ @$el.remove()
37
+
38
+ show: (e) =>
39
+ @$el.show()
40
+
41
+ hide: (e) =>
42
+ @$el.hide()
43
+
44
+ move: (e) =>
45
+ parentOffset = @offsetElement.offset()
46
+ left = e.pageX - parentOffset.left + @offset_left - (@$el.width() / 2)
47
+ top = e.pageY - parentOffset.top + @offset_top - @movingPinHeight()
48
+
49
+ @$el.css("top", top+"px").css("left", left+"px")
50
+
51
+ setActive: () ->
52
+ $(@containerArea).bind "mouseover", @show
53
+ $(@containerArea).bind "mouseleave", @hide
54
+ $(@containerArea).bind "mousemove", @move
55
+ $(@containerArea).trigger("mousemove")
@@ -0,0 +1,47 @@
1
+ class ADF.Minimap.Views.Tooltip extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/minimap/templates/tooltip']
4
+
5
+ offset_left: 5
6
+ offset_top: 0
7
+ text: ""
8
+ active: false
9
+
10
+ initialize: =>
11
+ @map = @options.map
12
+ @containerArea = @options.containerArea
13
+
14
+ render: () ->
15
+ newElement = @make("div", {"class": "show_tip", "id" : "minimap_ballon", "style" : "display:none;position:absolute;"} )
16
+ @setElement( newElement )
17
+ @$el.html( @template )
18
+ @
19
+
20
+ setInactive: () ->
21
+ @active = false
22
+ $(@containerArea).unbind "mouseover"
23
+ $(@containerArea).unbind "mouseout"
24
+ $(@containerArea).unbind "mousemove"
25
+ @hide()
26
+
27
+ show: (e) =>
28
+ @move(e)
29
+ @$el.show()
30
+
31
+ hide: (e) =>
32
+ @$el.hide()
33
+
34
+ move: (e) =>
35
+ parentOffset = @$el.parent().offset()
36
+ left = e.pageX - parentOffset.left + @offset_left
37
+ top = e.pageY - parentOffset.top + @offset_top
38
+ @$el.css("top", top+"px").css("left", left+"px")
39
+
40
+ setText: ( text ) ->
41
+ if not @active
42
+ @active = true
43
+ $(@containerArea).bind "mouseover", @show
44
+ $(@containerArea).bind "mouseleave", @hide
45
+ $(@containerArea).bind "mousemove", @move
46
+
47
+ @$("span").html(text)
@@ -0,0 +1,6 @@
1
+ # Default requires for ADF modules
2
+ #= require_self
3
+ #= require_tree ./views
4
+
5
+ ADF.MVC =
6
+ Views: {}
@@ -0,0 +1,5 @@
1
+ class ADF.MVC.Views.Base extends Backbone.View
2
+
3
+ constructor: (options) ->
4
+ @eventBus = window.eventBus
5
+ super(options)
@@ -0,0 +1,10 @@
1
+ # Default requires for ADF modules
2
+ #= require_self
3
+ #= require_tree ./templates
4
+ #= require_tree ./views
5
+ #= require_tree ./models
6
+
7
+ ADF.Overlay =
8
+ Models: {}
9
+ Collections: {}
10
+ Views: {}
@@ -0,0 +1,4 @@
1
+ class ADF.Overlay.Models.Overlay extends Backbone.Model
2
+
3
+ defaults:
4
+ title: null
@@ -0,0 +1 @@
1
+ <div class="polygon_label"><%= @label %></div>
@@ -0,0 +1,6 @@
1
+ class ADF.Overlay.Views.Main extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/overlay/templates/main']
4
+
5
+ initialize: () ->
6
+ _.bindAll(this, 'render')
@@ -0,0 +1,55 @@
1
+ class ADF.Overlay.Views.Overlay extends ADF.GMap.Views.OverlayView
2
+
3
+ constructor: (options) ->
4
+ super(options)
5
+ @map = options.map
6
+ @point = options.point
7
+ @pushOverlay()
8
+
9
+ setTop: (top) ->
10
+ @top = top
11
+ @redraw()
12
+
13
+ render: () ->
14
+ $(@el).html(@template)
15
+ @onRenderCompleted()
16
+ return this
17
+
18
+ hide: () ->
19
+ @overlay.hide() if @overlay
20
+
21
+ redraw: () ->
22
+ @overlay.draw()
23
+
24
+ pushOverlay: () ->
25
+ @overlay = new ADF.GMap.Views.Overlay( @map.getGMap(), @ )
26
+ @map.addOverlay(@overlay)
27
+
28
+ setMarkerIcon: (icon) ->
29
+ @icon = icon
30
+ @overlay.setMarkerIcon()
31
+
32
+ getMarkerIcon: () ->
33
+ @overlay.getMarkerIcon()
34
+
35
+ setLabel: (label) ->
36
+ @label = label
37
+ @overlay.setLabel()
38
+
39
+ remove: () ->
40
+ @overlay.setMap(null)
41
+
42
+ center: () ->
43
+ @overlay.map.setCenter(@point)
44
+
45
+ canterPan: (x = 0, y = 0) ->
46
+ @overlay.map.panTo(@point)
47
+ @overlay.map.panBy(x, y)
48
+
49
+
50
+ # Callback methods
51
+ onRenderCompleted: () ->
52
+ onMarkerAdded: () ->
53
+ beforeMarkerClicked: () ->
54
+ beforeOverlayShowed: () ->
55
+ onOverlayShowed: () ->
@@ -0,0 +1,17 @@
1
+ class ADF.Map.Views.PolygonLabel extends ADF.Overlay.Views.Overlay
2
+
3
+ template: JST['socmap_adf/modules/overlay/templates/polygon_label']
4
+ dontRenderMarker: true
5
+
6
+ initialize: () ->
7
+ super()
8
+ @label = @options.label
9
+
10
+ render: ->
11
+ $(@el).html( @template( {label: @label } ) )
12
+ @onRenderCompleted()
13
+ @left = 400
14
+ @top = 45
15
+ @initResize()
16
+ @redraw()
17
+ return this
@@ -0,0 +1,8 @@
1
+ # Default requires for ADF modules
2
+ #= require_self
3
+ #= require_tree ./views
4
+ #= require_tree ./templates
5
+
6
+ ADF.OverlayPush =
7
+ Models: {}
8
+ Views: {}