socmap_adf 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,65 @@
1
+ class ADF.Form.Models.Validator
2
+
3
+ valid: false
4
+
5
+ constructor: (model, attribute, validationType, options) ->
6
+ @model = model
7
+ @attribute = attribute
8
+ @validationType = validationType
9
+ @settings =
10
+ extra: null
11
+ message: " data not valid of " + @validationType
12
+ size: null
13
+ $.extend @settings, options
14
+ @model.on "change", @onValueChanged
15
+
16
+ onValueChanged: () =>
17
+ if @model.hasChanged @attribute
18
+ @validate()
19
+ @model.onValueChanged()
20
+
21
+ validate: () ->
22
+ switch @validationType
23
+ when "present" then error = @checkPresent()
24
+ when "size" then error = @checkSize()
25
+ when "email" then error = @checkEmail()
26
+ when "number" then error = @checkNumber()
27
+ when "alpha" then error = @checkAlpha()
28
+ when "regexp" then error = @checkRegexp()
29
+ when "confirm" then error = @checkConfirm()
30
+ if error
31
+ @model.errors.push new ADF.Form.Models.Error(@validationType, @settings.message, @attribute, @model.get(@attribute))
32
+ @valid = false
33
+ else
34
+ @valid = true
35
+
36
+ checkPresent: () ->
37
+ !(@model.get(@attribute) && @model.get(@attribute) != null && @model.get(@attribute).toString().length > 0)
38
+
39
+ checkSize: () ->
40
+ !(@model.get(@attribute) && @model.get(@attribute) != null && @model.get(@attribute).toString().length >= @settings.size)
41
+
42
+ checkConfirm: () ->
43
+ @model.get(@attribute) != @model.get(@settings.confirm_field)
44
+
45
+ checkEmail: () ->
46
+ return false if not @model.get(@attribute)?
47
+ reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/
48
+ !reg.test @model.get(@attribute).toString()
49
+
50
+ checkNumber: () ->
51
+ if !isNaN(parseFloat(@model.get(@attribute))) && isFinite(@model.get(@attribute)) then false else true
52
+
53
+ checkAlpha: () ->
54
+ return false if not @model.get(@attribute)?
55
+ reg = /[^a-zāčēģīķļņšūž ]/gi
56
+ reg.test @model.get(@attribute).toString()
57
+
58
+ checkRegexp:() ->
59
+ if @settings.regexp.test @model.get(@attribute).toString() then false else true
60
+
61
+ isValid: () ->
62
+ @valid
63
+
64
+ getAttribute: () ->
65
+ @attribute
@@ -0,0 +1,7 @@
1
+ <li style="display: none;" class="error_placeholder">
2
+ <div class="tab_wrap_all error">
3
+ <div class="field_wrap_all clear">
4
+ <p class="error error_message">Kļūda!</p>
5
+ </div>
6
+ </div>
7
+ </li>
@@ -0,0 +1,6 @@
1
+ <div class="tab_wrap_all">
2
+ <div class="tab_wrap"><span class="tab_title"></span></div>
3
+ <div class="field_wrap_all clear">
4
+ <span class="tab_set_content"></span>
5
+ </div>
6
+ </div>
@@ -0,0 +1 @@
1
+ <div class="btn_input grey"><input type="button" name="next_step" value="Nākamais solis" disabled="disabled"/></div>
@@ -0,0 +1,2 @@
1
+ <ul class="form_tabs">
2
+ </ul>
@@ -0,0 +1,9 @@
1
+ class ADF.Form.Views.Base extends ADF.MVC.Views.Base
2
+
3
+ constructor: (options) ->
4
+ super(options)
5
+ @model.setView(@) if @model
6
+
7
+ # Callbacks
8
+ onDataValid: () ->
9
+ onDataInvalid: () ->
@@ -0,0 +1,88 @@
1
+ class ADF.Form.Views.FieldSet extends ADF.Form.Views.Base
2
+
3
+ tabSetContainer: JST['socmap_adf/modules/form/templates/field_set']
4
+ title: " - "
5
+ index: 0
6
+
7
+ constructor: (options) ->
8
+ super(options)
9
+ @done = false
10
+ @expanded = false
11
+ @changeToClose()
12
+
13
+ @fieldSetsObject = null
14
+ options.model.setView(@) if options.model
15
+ if options.closed == false
16
+ @changeToOpen()
17
+
18
+ render: () ->
19
+ $(@el).html(@tabSetContainer)
20
+ @$(".tab_set_content").html(@template(@model.toJSON()))
21
+ @$(".field_wrap_all").hide()
22
+ @$(".tab_title").text(@title)
23
+ @bindFieldTab()
24
+ @onBind()
25
+ return this
26
+
27
+ getIndex: () ->
28
+ @index
29
+
30
+ setIndex: (index) ->
31
+ @index = index
32
+
33
+ bindFieldTab: () ->
34
+ @$(".tab_wrap").bind "click", @onTabClicked
35
+
36
+ onTabClicked: () =>
37
+ if @expanded
38
+ @contract()
39
+ else
40
+ @expand()
41
+
42
+ setFieldSetsObject: (obj) =>
43
+ @fieldSetsObject = obj
44
+
45
+ expand: () =>
46
+ if !@closed
47
+ @expanded = true
48
+ @fieldSetsObject.onFieldSetExpand(@)
49
+ @$(".field_wrap_all").slideDown("normal", @onExpand)
50
+ @$(".tab_wrap_all").addClass("open")
51
+
52
+ changeToOpen: () ->
53
+ @closed = false
54
+ @$(".tab_wrap").css("cursor", "pointer")
55
+
56
+ changeToClose: () ->
57
+ @closed = true
58
+ @$(".tab_wrap").css("cursor", "default")
59
+
60
+ contract: () =>
61
+ @$(".field_wrap_all").slideUp()
62
+ @expanded = false
63
+ @$(".tab_wrap_all").removeClass("open")
64
+ @onContract()
65
+
66
+ openNextFieldSet: () ->
67
+ @setDone()
68
+ @fieldSetsObject.openNextFieldSet()
69
+
70
+ setDone: () =>
71
+ @done = true
72
+ @onDone()
73
+ @$(".tab_wrap_all").addClass("done")
74
+
75
+ getModel: () ->
76
+ @model
77
+
78
+ showError: (message) ->
79
+ @fieldSetsObject.showError(message) if @fieldSetsObject
80
+
81
+ hideError: () ->
82
+ @fieldSetsObject.hideError() if @fieldSetsObject
83
+
84
+ # Callbacks
85
+ onDone: () ->
86
+ onBind: () ->
87
+ onExpand: () ->
88
+ onContract: () ->
@@ -0,0 +1,38 @@
1
+ class ADF.Form.Views.FieldSetWithButton extends ADF.Form.Views.FieldSet
2
+
3
+ fieldSetButton: JST['socmap_adf/modules/form/templates/field_set_button']
4
+
5
+ constructor: (options) ->
6
+ super(options)
7
+ @buttonTitle = options.buttonTitle
8
+
9
+ render: () ->
10
+ $(@el).html(@tabSetContainer())
11
+ @$(".tab_set_content").html(@template( @model.toJSON() ))
12
+ @$(".tab_set_content").append(@fieldSetButton)
13
+ @$(".field_wrap_all").hide()
14
+ @$(".tab_title").text(@title)
15
+ @$(".btn_input input").val(@buttonTitle) if @buttonTitle?
16
+ @bindFieldTab()
17
+ @bindButton()
18
+ @onBind()
19
+ @
20
+
21
+ bindButton: () ->
22
+ @$(".btn_input input").bind "mousedown", @onInputClicked
23
+
24
+ onDataValid: () ->
25
+ @$(".btn_input").removeClass("grey")
26
+ @$(".btn_input").addClass("green")
27
+ @$(".btn_input").find("input").removeAttr("disabled")
28
+ @hideError()
29
+
30
+ onDataInvalid: () ->
31
+ @$(".btn_input").removeClass("green")
32
+ @$(".btn_input").addClass("grey")
33
+ @$(".btn_input").find("input").attr("disabled", "disabled")
34
+
35
+ onInputClicked: () =>
36
+ @hideError()
37
+ if @model.isValid()
38
+ @openNextFieldSet()
@@ -0,0 +1,81 @@
1
+ class ADF.Form.Views.FieldSets extends ADF.MVC.Views.Base
2
+
3
+ template: JST['socmap_adf/modules/form/templates/field_sets']
4
+ errorTemplate: JST['socmap_adf/modules/form/templates/error_field']
5
+
6
+ constructor: (options) ->
7
+ super(options)
8
+ @current = 0
9
+ @count = 0
10
+ @fieldSets = []
11
+ @done = false
12
+
13
+ render: () ->
14
+ $(@el).html(@template)
15
+ @onBind()
16
+ @checkFieldSets()
17
+ @openFieldSet(0)
18
+ @addErrorField()
19
+ return this
20
+
21
+ showError: (message) ->
22
+ @$(".error_message").html(message)
23
+ @$(".error_placeholder").show()
24
+
25
+ hideError: () ->
26
+ @$(".error_placeholder").hide()
27
+
28
+ addErrorField: () ->
29
+ @$(".form_tabs").append(@errorTemplate)
30
+
31
+ addFieldSet: (fieldSet) ->
32
+ fieldSet.setFieldSetsObject(@)
33
+ fieldSet.setElement(@make("li"))
34
+ fieldSet.setIndex(@count)
35
+ @fieldSets.push(fieldSet)
36
+ @$(".form_tabs").append(fieldSet.render().el)
37
+ @count++
38
+
39
+ checkFieldSets: () ->
40
+ for fieldSet in @fieldSets
41
+ if fieldSet.getModel().validateFields()
42
+ fieldSet.changeToOpen()
43
+ fieldSet.setDone()
44
+ @checkDone()
45
+
46
+ else
47
+ break
48
+ # @openFieldSet(@current)
49
+
50
+ openFieldSet: (index) ->
51
+ @current = index
52
+ fieldSet = @fieldSets[index]
53
+ if fieldSet
54
+ fieldSet.getModel().validateFields()
55
+ fieldSet.changeToOpen()
56
+ fieldSet.expand()
57
+
58
+ checkDone: () ->
59
+ if @current + 1 < @fieldSets.length
60
+ @current++
61
+ else
62
+ @setDone()
63
+
64
+ openNextFieldSet: () ->
65
+ @checkDone()
66
+ @openFieldSet @current
67
+
68
+ onFieldSetExpand: (expandFieldSet) ->
69
+ current = expandFieldSet
70
+ @current = current.getIndex()
71
+ for fieldSet in @fieldSets
72
+ if fieldSet != expandFieldSet
73
+ fieldSet.contract()
74
+
75
+ setDone: () ->
76
+ @done = true
77
+ @onDone()
78
+
79
+ # Callbacks
80
+ onBind: () ->
81
+ onDone: () ->
@@ -0,0 +1,6 @@
1
+ # Default requires for ADF modules
2
+ #= require_self
3
+ #= require_tree ./views
4
+
5
+ ADF.GMap =
6
+ Views: {}
@@ -0,0 +1,36 @@
1
+ class ADF.GMap.Views.CustomMarker
2
+
3
+ icon: null
4
+ iconUrl: 'assets/markers/green_marker.png'
5
+ iconSize: new google.maps.Size(29,50)
6
+ iconOrigin: new google.maps.Point(0,0)
7
+ iconAnchor: new google.maps.Point(15,50)
8
+
9
+ shadow: null
10
+ shadowUrl: 'assets/markers/green_marker_shadow.png'
11
+ shadowSize: new google.maps.Size(57,50)
12
+ shadowOrigin: new google.maps.Point(0,0)
13
+ shadowAnchor: new google.maps.Point(15,50)
14
+
15
+ shape: null
16
+ shapeCoord: [17,0,20,1,22,2,23,3,24,4,25,5,26,6,26,7,27,8,27,9,28,10,28,11,28,12,28,13,28,14,28,15,28,16,28,17,28,18,27,19,27,20,27,21,26,22,25,23,25,24,24,25,23,26,23,27,22,28,21,29,21,30,21,31,22,32,23,33,23,34,24,35,24,36,25,37,25,38,25,39,25,40,25,41,25,42,24,43,24,44,23,45,23,46,22,47,21,48,19,49,10,49,8,48,7,47,7,46,6,45,5,44,4,43,4,42,4,41,4,40,4,39,4,38,4,37,4,36,4,35,5,34,6,33,6,32,8,31,8,30,7,29,6,28,6,27,5,26,4,25,4,24,3,23,2,22,2,21,1,20,1,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,1,10,1,9,1,8,2,7,2,6,3,5,4,4,5,3,6,2,8,1,11,0,17,0]
17
+
18
+ constructor: () ->
19
+ @initMarkerImages()
20
+
21
+ initMarkerImages: () ->
22
+ @icon = new google.maps.MarkerImage(@iconUrl, @iconSize, @iconOrigin, @iconAnchor)
23
+ @shadow = new google.maps.MarkerImage(@shadowUrl, @shadowSize, @shadowOrigin, @shadowAnchor) if @shadowUrl
24
+ @shape = {
25
+ coord: @shapeCoord
26
+ type: 'poly'
27
+ }
28
+
29
+ getIcon: () ->
30
+ @icon
31
+
32
+ getShadow: () ->
33
+ @shadow
34
+
35
+ getShape: () ->
36
+ @shape
@@ -0,0 +1,72 @@
1
+ class ADF.GMap.Views.Marker extends google.maps.OverlayView
2
+
3
+ in_zoom: false
4
+
5
+ constructor: (map, point, content, width, height) ->
6
+ @setMap(map)
7
+ @point = point
8
+ @content = content
9
+ @width = width
10
+ @height = height
11
+ @bindMapEvents()
12
+
13
+ onAdd: () =>
14
+ @div = document.createElement("div")
15
+ @div.innerHTML = this.content
16
+
17
+ @div.style.border = "none"
18
+ @div.style.borderWidth = "0px"
19
+ @div.style.position = "absolute"
20
+
21
+ @getPanes().overlayMouseTarget.appendChild(@div)
22
+
23
+ draw: () =>
24
+ if !@in_zoom
25
+ overlayProjection = @getProjection()
26
+ div_pixel = overlayProjection.fromLatLngToDivPixel(@point)
27
+
28
+ left = div_pixel.x - (@width / 2)
29
+ @div.style.left = left + 'px'
30
+ top = div_pixel.y - (@height)
31
+ @div.style.top = top + 'px'
32
+ @show()
33
+
34
+ change_point: (point) ->
35
+ @point = point
36
+ @draw()
37
+
38
+ onRemove: () =>
39
+ @div.parentNode.removeChild(@div)
40
+ @div = null
41
+ google.maps.event.removeListener(@zoom_changed_event)
42
+ google.maps.event.removeListener(@idle_event)
43
+
44
+ get_content: () ->
45
+ return @div
46
+
47
+ get_content_parent: () ->
48
+ return $(@div).parent()
49
+
50
+ hide: () ->
51
+ $(@div).hide();
52
+
53
+ show: () ->
54
+ $(@div).show();
55
+
56
+ bindMapEvents: () ->
57
+ set_in_zoom = @set_in_zoom
58
+ draw = @draw
59
+ hide = @hide
60
+ @idle_event = google.maps.event.addListener @map, 'tilesloaded', ->
61
+ set_in_zoom(false)
62
+ draw()
63
+
64
+ @zoom_changed_event = google.maps.event.addListener @map, 'zoom_changed', ->
65
+ set_in_zoom(true)
66
+ hide()
67
+
68
+ set_in_zoom: (val) ->
69
+ @in_zoom = val
70
+
71
+ is_in_zoom: () ->
72
+ return @in_zoom