foliage 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +9 -0
  4. data/app/assets/images/.keep +0 -0
  5. data/app/assets/images/map/marker/icon-2x.png +0 -0
  6. data/app/assets/images/map/marker/icon.png +0 -0
  7. data/app/assets/images/map/marker/icon.svg +67 -0
  8. data/app/assets/images/map/marker/shadow.png +0 -0
  9. data/app/assets/javascripts/core_ext.js.coffee +61 -0
  10. data/app/assets/javascripts/foliage.js.coffee +23 -0
  11. data/app/assets/javascripts/foliage/band.js.coffee +99 -0
  12. data/app/assets/javascripts/foliage/bubbles.js.coffee +77 -0
  13. data/app/assets/javascripts/foliage/categories.js.coffee +70 -0
  14. data/app/assets/javascripts/foliage/choropleth.js.coffee +51 -0
  15. data/app/assets/javascripts/foliage/color.js.coffee +39 -0
  16. data/app/assets/javascripts/foliage/gradient.js.coffee +72 -0
  17. data/app/assets/javascripts/foliage/heatmap.js.coffee +49 -0
  18. data/app/assets/javascripts/foliage/leaf.js.coffee +422 -0
  19. data/app/assets/javascripts/foliage/path.js.coffee +76 -0
  20. data/app/assets/javascripts/foliage/paths.js.coffee +131 -0
  21. data/app/assets/javascripts/foliage/point_group.js.coffee +83 -0
  22. data/app/assets/javascripts/foliage/points.js.coffee +79 -0
  23. data/app/assets/javascripts/foliage/simple.js.coffee +35 -0
  24. data/app/assets/javascripts/leaflet/geographic_util.js.coffee +23 -0
  25. data/app/assets/javascripts/leaflet/ghost_label.js.coffee +100 -0
  26. data/app/assets/javascripts/leaflet/ghost_label_cluster.js.coffee +192 -0
  27. data/app/assets/javascripts/leaflet/layers_scheduler.js.coffee +57 -0
  28. data/app/assets/javascripts/leaflet/reactive_measure.js.coffee +414 -0
  29. data/app/assets/stylesheets/all.scss +16 -0
  30. data/app/assets/stylesheets/application.css +15 -0
  31. data/app/assets/stylesheets/compass/reset.scss +3 -0
  32. data/app/assets/stylesheets/compass/reset/utilities.scss +142 -0
  33. data/app/assets/stylesheets/leaflet.scss +1093 -0
  34. data/app/assets/stylesheets/leaflet/label.scss +40 -0
  35. data/app/assets/stylesheets/leaflet/tooltip.scss +42 -0
  36. data/app/assets/stylesheets/mixins.scss +131 -0
  37. data/app/assets/stylesheets/reset.scss +89 -0
  38. data/app/assets/stylesheets/variables.scss +47 -0
  39. data/app/helpers/foliage_helper.rb +23 -0
  40. data/lib/foliage.rb +9 -0
  41. data/lib/foliage/leaf.rb +235 -0
  42. data/lib/foliage/rails.rb +2 -0
  43. data/lib/foliage/rails/engine.rb +7 -0
  44. data/lib/foliage/rails/integration.rb +8 -0
  45. data/lib/foliage/version.rb +3 -0
  46. data/vendor/assets/javascripts/.keep +0 -0
  47. data/vendor/assets/javascripts/autosize.js +211 -0
  48. data/vendor/assets/javascripts/geographiclib.js +3074 -0
  49. data/vendor/assets/javascripts/leaflet.js.erb +9175 -0
  50. data/vendor/assets/javascripts/leaflet/draw.js +3573 -0
  51. data/vendor/assets/javascripts/leaflet/easy-button.js +366 -0
  52. data/vendor/assets/javascripts/leaflet/fullscreen.js +162 -0
  53. data/vendor/assets/javascripts/leaflet/heatmap.js +142 -0
  54. data/vendor/assets/javascripts/leaflet/label.js +545 -0
  55. data/vendor/assets/javascripts/leaflet/measure.js +6966 -0
  56. data/vendor/assets/javascripts/leaflet/modal.js +364 -0
  57. data/vendor/assets/javascripts/leaflet/providers.js +479 -0
  58. data/vendor/assets/javascripts/rbush.js +621 -0
  59. data/vendor/assets/stylesheets/.keep +0 -0
  60. data/vendor/assets/stylesheets/bootstrap/mixins.scss +55 -0
  61. data/vendor/assets/stylesheets/bootstrap/variables.scss +10 -0
  62. data/vendor/assets/stylesheets/leaflet.scss +479 -0
  63. data/vendor/assets/stylesheets/leaflet/draw.scss +282 -0
  64. data/vendor/assets/stylesheets/leaflet/easy-button.scss +56 -0
  65. data/vendor/assets/stylesheets/leaflet/fullscreen.scss +2 -0
  66. data/vendor/assets/stylesheets/leaflet/measure.scss +168 -0
  67. data/vendor/assets/stylesheets/leaflet/modal.scss +85 -0
  68. metadata +171 -0
@@ -0,0 +1,282 @@
1
+ /* ================================================================== */
2
+ /* Toolbars
3
+ /* ================================================================== */
4
+
5
+ .leaflet-draw-section {
6
+ position: relative;
7
+ }
8
+
9
+ .leaflet-draw-toolbar {
10
+ margin-top: 12px;
11
+ }
12
+
13
+ .leaflet-draw-toolbar-top {
14
+ margin-top: 0;
15
+ }
16
+
17
+ .leaflet-draw-toolbar-notop a:first-child {
18
+ border-top-right-radius: 0;
19
+ }
20
+
21
+ .leaflet-draw-toolbar-nobottom a:last-child {
22
+ border-bottom-right-radius: 0;
23
+ }
24
+
25
+ .leaflet-draw-toolbar a {
26
+ background-image: url('measure/spritesheet.png');
27
+ background-repeat: no-repeat;
28
+ }
29
+
30
+ .leaflet-retina .leaflet-draw-toolbar a {
31
+ background-image: url('measure/spritesheet-2x.png');
32
+ background-size: 270px 30px;
33
+ }
34
+
35
+ .leaflet-draw a {
36
+ display: block;
37
+ text-align: center;
38
+ text-decoration: none;
39
+ }
40
+
41
+ /* ================================================================== */
42
+ /* Toolbar actions menu
43
+ /* ================================================================== */
44
+
45
+ .leaflet-draw-actions {
46
+ display: none;
47
+ list-style: none;
48
+ margin: 0;
49
+ padding: 0;
50
+ position: absolute;
51
+ left: 26px;
52
+ /* leaflet-draw-toolbar.left + leaflet-draw-toolbar.width */
53
+ top: 0;
54
+ white-space: nowrap;
55
+ }
56
+
57
+ .leaflet-right .leaflet-draw-actions {
58
+ right: 26px;
59
+ left: auto;
60
+ }
61
+
62
+ .leaflet-draw-actions li {
63
+ display: inline-block;
64
+ &:first-child a {
65
+ border-left: none;
66
+ }
67
+ &:last-child a {
68
+ -webkit-border-radius: 0 4px 4px 0;
69
+ border-radius: 0 4px 4px 0;
70
+ }
71
+ }
72
+
73
+ .leaflet-right .leaflet-draw-actions li {
74
+ &:last-child a {
75
+ -webkit-border-radius: 0;
76
+ border-radius: 0;
77
+ }
78
+ &:first-child a {
79
+ -webkit-border-radius: 4px 0 0 4px;
80
+ border-radius: 4px 0 0 4px;
81
+ }
82
+ }
83
+
84
+ .leaflet-draw-actions a {
85
+ background-color: #919187;
86
+ border-left: 1px solid #AAA;
87
+ color: #FFF;
88
+ font: 11px/19px "Helvetica Neue", Arial, Helvetica, sans-serif;
89
+ line-height: 28px;
90
+ text-decoration: none;
91
+ padding-left: 10px;
92
+ padding-right: 10px;
93
+ height: 28px;
94
+ }
95
+
96
+ .leaflet-draw-actions-bottom {
97
+ margin-top: 0;
98
+ }
99
+
100
+ .leaflet-draw-actions-top {
101
+ margin-top: 1px;
102
+ a {
103
+ height: 27px;
104
+ line-height: 27px;
105
+ }
106
+ }
107
+
108
+ .leaflet-draw-actions-bottom a {
109
+ height: 27px;
110
+ line-height: 27px;
111
+ }
112
+
113
+ .leaflet-draw-actions a:hover {
114
+ background-color: #A0A098;
115
+ }
116
+
117
+ .leaflet-draw-actions-top.leaflet-draw-actions-bottom a {
118
+ height: 26px;
119
+ line-height: 26px;
120
+ }
121
+
122
+ /* ================================================================== */
123
+ /* Draw toolbar
124
+ /* ================================================================== */
125
+
126
+ .leaflet-draw-toolbar {
127
+ .leaflet-draw-draw-polyline {
128
+ background-position: -2px -2px;
129
+ }
130
+ .leaflet-draw-draw-polygon {
131
+ background-position: -31px -2px;
132
+ }
133
+ .leaflet-draw-draw-rectangle {
134
+ background-position: -62px -2px;
135
+ }
136
+ .leaflet-draw-draw-circle {
137
+ background-position: -92px -2px;
138
+ }
139
+ .leaflet-draw-draw-marker {
140
+ background-position: -122px -2px;
141
+ }
142
+ .leaflet-draw-edit-edit {
143
+ background-position: -152px -2px;
144
+ }
145
+ .leaflet-draw-edit-remove {
146
+ background-position: -182px -2px;
147
+ }
148
+ .leaflet-draw-edit-edit.leaflet-disabled {
149
+ background-position: -212px -2px;
150
+ }
151
+ .leaflet-draw-edit-remove.leaflet-disabled {
152
+ background-position: -242px -2px;
153
+ }
154
+ }
155
+
156
+ /* ================================================================== */
157
+ /* Edit toolbar
158
+ /* ================================================================== */
159
+
160
+ /* ================================================================== */
161
+ /* Drawing styles
162
+ /* ================================================================== */
163
+
164
+ .leaflet-mouse-marker {
165
+ background-color: #fff;
166
+ cursor: crosshair;
167
+ }
168
+
169
+ .leaflet-draw-tooltip {
170
+ background: rgb(54, 54, 54);
171
+ background: rgba(0, 0, 0, 0.5);
172
+ border: 1px solid transparent;
173
+ -webkit-border-radius: 4px;
174
+ border-radius: 4px;
175
+ color: #fff;
176
+ font: 12px/18px "Helvetica Neue", Arial, Helvetica, sans-serif;
177
+ margin-left: 20px;
178
+ margin-top: -21px;
179
+ padding: 4px 8px;
180
+ position: absolute;
181
+ visibility: hidden;
182
+ white-space: nowrap;
183
+ z-index: 6;
184
+ &:before {
185
+ border-right: 6px solid black;
186
+ border-right-color: rgba(0, 0, 0, 0.5);
187
+ border-top: 6px solid transparent;
188
+ border-bottom: 6px solid transparent;
189
+ content: "";
190
+ position: absolute;
191
+ top: 7px;
192
+ left: -7px;
193
+ }
194
+ }
195
+
196
+ .leaflet-error-draw-tooltip {
197
+ background-color: #F2DEDE;
198
+ border: 1px solid #E6B6BD;
199
+ color: #B94A48;
200
+ &:before {
201
+ border-right-color: #E6B6BD;
202
+ }
203
+ }
204
+
205
+ .leaflet-draw-tooltip-single {
206
+ margin-top: -12px;
207
+ }
208
+
209
+ .leaflet-draw-tooltip-subtext {
210
+ color: #f8d5e4;
211
+ }
212
+
213
+ .leaflet-draw-guide-dash {
214
+ font-size: 1%;
215
+ opacity: 0.6;
216
+ position: absolute;
217
+ width: 5px;
218
+ height: 5px;
219
+ }
220
+
221
+ /* ================================================================== */
222
+ /* Edit styles
223
+ /* ================================================================== */
224
+
225
+ .leaflet-edit-marker-selected {
226
+ background: rgba(254, 87, 161, 0.1);
227
+ border: 4px dashed rgba(254, 87, 161, 0.6);
228
+ -webkit-border-radius: 4px;
229
+ border-radius: 4px;
230
+ }
231
+
232
+ .leaflet-edit-move {
233
+ cursor: move;
234
+ }
235
+
236
+ .leaflet-edit-resize {
237
+ cursor: pointer;
238
+ }
239
+
240
+ /* ================================================================== */
241
+ /* Old IE styles
242
+ /* ================================================================== */
243
+
244
+ .leaflet-oldie {
245
+ .leaflet-draw-toolbar {
246
+ border: 3px solid #999;
247
+ a {
248
+ background-color: #eee;
249
+ &:hover {
250
+ background-color: #fff;
251
+ }
252
+ }
253
+ }
254
+ .leaflet-draw-actions {
255
+ left: 32px;
256
+ margin-top: 3px;
257
+ li {
258
+ display: inline;
259
+ zoom: 1;
260
+ }
261
+ }
262
+ .leaflet-edit-marker-selected {
263
+ border: 4px dashed #fe93c2;
264
+ }
265
+ .leaflet-draw-actions a {
266
+ background-color: #999;
267
+ &:hover {
268
+ background-color: #a5a5a5;
269
+ }
270
+ }
271
+ .leaflet-draw-actions-top a {
272
+ margin-top: 1px;
273
+ }
274
+ .leaflet-draw-actions-bottom a {
275
+ height: 28px;
276
+ line-height: 28px;
277
+ }
278
+ .leaflet-draw-actions-top.leaflet-draw-actions-bottom a {
279
+ height: 27px;
280
+ line-height: 27px;
281
+ }
282
+ }
@@ -0,0 +1,56 @@
1
+ .leaflet-bar button,
2
+ .leaflet-bar button:hover {
3
+ background-color: #fff;
4
+ border: none;
5
+ border-bottom: 1px solid #ccc;
6
+ width: 26px;
7
+ height: 26px;
8
+ line-height: 26px;
9
+ display: block;
10
+ text-align: center;
11
+ text-decoration: none;
12
+ color: black;
13
+ }
14
+
15
+ .leaflet-bar button {
16
+ background-position: 50% 50%;
17
+ background-repeat: no-repeat;
18
+ overflow: hidden;
19
+ display: block;
20
+ }
21
+
22
+ .leaflet-bar button:hover {
23
+ background-color: #f4f4f4;
24
+ }
25
+
26
+ .leaflet-bar button:first-of-type {
27
+ border-top-left-radius: 4px;
28
+ border-top-right-radius: 4px;
29
+ }
30
+
31
+ .leaflet-bar button:last-of-type {
32
+ border-bottom-left-radius: 4px;
33
+ border-bottom-right-radius: 4px;
34
+ border-bottom: none;
35
+ }
36
+
37
+ .leaflet-bar.disabled,
38
+ .leaflet-bar button.disabled {
39
+ cursor: default;
40
+ pointer-events: none;
41
+ opacity: .4;
42
+ }
43
+
44
+ .easy-button-button .button-state{
45
+ display: block;
46
+ width: 100%;
47
+ height: 100%;
48
+ position: relative;
49
+ }
50
+
51
+
52
+ .leaflet-touch .leaflet-bar button {
53
+ width: 30px;
54
+ height: 30px;
55
+ line-height: 30px;
56
+ }
@@ -0,0 +1,2 @@
1
+ .leaflet-container:-webkit-full-screen { width: 100% !important; height: 100% !important; z-index: 99999; }
2
+ .leaflet-pseudo-fullscreen { position: fixed !important; width: 100% !important; height: 100% !important; top: 0px !important; left: 0px !important; z-index: 99999; }
@@ -0,0 +1,168 @@
1
+ .leaflet-control-measure h3, .leaflet-measure-resultpopup h3 {
2
+ margin: 0 0 12px 0;
3
+ padding-bottom: 10px;
4
+ line-height: 1em;
5
+ font-weight: normal;
6
+ border-bottom: solid 1px #DDD
7
+ }
8
+
9
+ .leaflet-control-measure p, .leaflet-measure-resultpopup p {
10
+ margin: 10px 0 0;
11
+ line-height: 1em
12
+ }
13
+
14
+ .leaflet-control-measure p:first-child, .leaflet-measure-resultpopup p:first-child {
15
+ margin-top: 0
16
+ }
17
+
18
+ .leaflet-control-measure a, .leaflet-measure-resultpopup a {
19
+ color: #5E66CC;
20
+ text-decoration: none
21
+ }
22
+
23
+ .leaflet-control-measure a:hover, .leaflet-measure-resultpopup a:hover {
24
+ opacity: 0.5;
25
+ text-decoration: none
26
+ }
27
+
28
+ .leaflet-control-measure .tasks, .leaflet-measure-resultpopup .tasks {
29
+ margin: 12px 0 0;
30
+ padding: 10px 0 0;
31
+ border-top: solid 1px #DDD;
32
+ list-style: none;
33
+ list-style-image: none
34
+ }
35
+
36
+ .leaflet-control-measure .tasks li, .leaflet-measure-resultpopup .tasks li {
37
+ display: inline;
38
+ margin: 0 10px 0 0
39
+ }
40
+
41
+ .leaflet-control-measure .tasks li:last-child, .leaflet-measure-resultpopup .tasks li:last-child {
42
+ margin-right: 0
43
+ }
44
+
45
+ .leaflet-control-measure .coorddivider, .leaflet-measure-resultpopup .coorddivider {
46
+ color: #999
47
+ }
48
+
49
+ .leaflet-control-measure {
50
+ background: $menu-background;
51
+ border-bottom: $menu-border;
52
+ }
53
+
54
+ .leaflet-control-measure .leaflet-control-measure-toggle,
55
+ .leaflet-control-measure .leaflet-control-measure-toggle:hover {
56
+ @include is-icon;
57
+ @include use-icon(map-marker);
58
+ display: block;
59
+ width: $map-button-size;
60
+ height: $map-button-size;
61
+ line-height: $map-button-size;
62
+ overflow: hidden;
63
+ @include text-align(center);
64
+ text-decoration: none;
65
+ color: $active-link-color;
66
+ @include transition(background 0.2s);
67
+ }
68
+
69
+ .leaflet-retina .leaflet-control-measure .leaflet-control-measure-toggle, .leaflet-retina .leaflet-control-measure .leaflet-control-measure-toggle:hover {
70
+ background-image: url(measure/rulers_@2X.png);
71
+ background-size: 16px 16px
72
+ }
73
+
74
+ .leaflet-touch .leaflet-control-measure .leaflet-control-measure-toggle, .leaflet-touch .leaflet-control-measure .leaflet-control-measure-toggle:hover {
75
+ width: 44px;
76
+ height: 44px
77
+ }
78
+
79
+ .leaflet-control-measure .startprompt h3 {
80
+ margin-bottom: 10px
81
+ }
82
+
83
+ .leaflet-control-measure .startprompt .tasks {
84
+ margin-top: 0;
85
+ padding-top: 0;
86
+ border-top: 0
87
+ }
88
+
89
+ .leaflet-control-measure .leaflet-control-measure-interaction {
90
+ padding: 10px 12px
91
+ }
92
+
93
+ .leaflet-control-measure .results .group {
94
+ margin-top: 10px;
95
+ padding-top: 10px;
96
+ border-top: dotted 1px #eaeaea
97
+ }
98
+
99
+ .leaflet-control-measure .results .group:first-child {
100
+ margin-top: 0;
101
+ padding-top: 0;
102
+ border-top: 0
103
+ }
104
+
105
+ .leaflet-control-measure .results .heading {
106
+ margin-right: 5px;
107
+ color: #999
108
+ }
109
+
110
+ .leaflet-control-measure a.start {
111
+ padding-left: 18px;
112
+ background-repeat: no-repeat;
113
+ background-position: 0% 50%;
114
+ background-image: url(measure/start.png)
115
+ }
116
+
117
+ .leaflet-retina .leaflet-control-measure a.start {
118
+ background-image: url(measure/start_@2X.png);
119
+ background-size: 12px 12px
120
+ }
121
+
122
+ .leaflet-control-measure a.cancel {
123
+ padding-left: 18px;
124
+ background-repeat: no-repeat;
125
+ background-position: 0% 50%;
126
+ background-image: url(measure/cancel.png)
127
+ }
128
+
129
+ .leaflet-retina .leaflet-control-measure a.cancel {
130
+ background-image: url(measure/cancel_@2X.png);
131
+ background-size: 12px 12px
132
+ }
133
+
134
+ .leaflet-control-measure a.finish {
135
+ padding-left: 18px;
136
+ background-repeat: no-repeat;
137
+ background-position: 0% 50%;
138
+ background-image: url(measure/check.png)
139
+ }
140
+
141
+ .leaflet-retina .leaflet-control-measure a.finish {
142
+ background-image: url(measure/check_@2X.png);
143
+ background-size: 12px 12px
144
+ }
145
+
146
+ .leaflet-measure-resultpopup a.zoomto {
147
+ padding-left: 18px;
148
+ background-repeat: no-repeat;
149
+ background-position: 0% 50%;
150
+ background-image: url(measure/focus.png)
151
+ }
152
+
153
+ .leaflet-retina .leaflet-measure-resultpopup a.zoomto {
154
+ background-image: url(measure/focus_@2X.png);
155
+ background-size: 12px 12px
156
+ }
157
+
158
+ .leaflet-measure-resultpopup a.deletemarkup {
159
+ padding-left: 18px;
160
+ background-repeat: no-repeat;
161
+ background-position: 0% 50%;
162
+ background-image: url(measure/trash.png)
163
+ }
164
+
165
+ .leaflet-retina .leaflet-measure-resultpopup a.deletemarkup {
166
+ background-image: url(measure/trash_@2X.png);
167
+ background-size: 11px 12px
168
+ }