columbus3 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +4 -4
  2. data/README.textile +62 -0
  3. data/bower_components/flot/.bower.json +19 -0
  4. data/bower_components/flot/.gitignore +3 -0
  5. data/bower_components/flot/.travis.yml +3 -0
  6. data/bower_components/flot/API.md +1498 -0
  7. data/bower_components/flot/CONTRIBUTING.md +98 -0
  8. data/bower_components/flot/FAQ.md +75 -0
  9. data/bower_components/flot/LICENSE.txt +22 -0
  10. data/bower_components/flot/Makefile +12 -0
  11. data/bower_components/flot/NEWS.md +1026 -0
  12. data/bower_components/flot/PLUGINS.md +143 -0
  13. data/bower_components/flot/README.md +110 -0
  14. data/bower_components/flot/component.json +8 -0
  15. data/bower_components/flot/examples/ajax/data-eu-gdp-growth-1.json +4 -0
  16. data/bower_components/flot/examples/ajax/data-eu-gdp-growth-2.json +4 -0
  17. data/bower_components/flot/examples/ajax/data-eu-gdp-growth-3.json +4 -0
  18. data/bower_components/flot/examples/ajax/data-eu-gdp-growth-4.json +4 -0
  19. data/bower_components/flot/examples/ajax/data-eu-gdp-growth-5.json +4 -0
  20. data/bower_components/flot/examples/ajax/data-eu-gdp-growth.json +4 -0
  21. data/bower_components/flot/examples/ajax/data-japan-gdp-growth.json +4 -0
  22. data/bower_components/flot/examples/ajax/data-usa-gdp-growth.json +4 -0
  23. data/bower_components/flot/examples/ajax/index.html +173 -0
  24. data/bower_components/flot/examples/annotating/index.html +87 -0
  25. data/bower_components/flot/examples/axes-interacting/index.html +97 -0
  26. data/bower_components/flot/examples/axes-multiple/index.html +77 -0
  27. data/bower_components/flot/examples/axes-time-zones/date.js +893 -0
  28. data/bower_components/flot/examples/axes-time-zones/index.html +114 -0
  29. data/bower_components/flot/examples/axes-time-zones/tz/africa +1181 -0
  30. data/bower_components/flot/examples/axes-time-zones/tz/antarctica +413 -0
  31. data/bower_components/flot/examples/axes-time-zones/tz/asia +2717 -0
  32. data/bower_components/flot/examples/axes-time-zones/tz/australasia +1719 -0
  33. data/bower_components/flot/examples/axes-time-zones/tz/backward +117 -0
  34. data/bower_components/flot/examples/axes-time-zones/tz/etcetera +81 -0
  35. data/bower_components/flot/examples/axes-time-zones/tz/europe +2856 -0
  36. data/bower_components/flot/examples/axes-time-zones/tz/factory +10 -0
  37. data/bower_components/flot/examples/axes-time-zones/tz/iso3166.tab +276 -0
  38. data/bower_components/flot/examples/axes-time-zones/tz/leapseconds +100 -0
  39. data/bower_components/flot/examples/axes-time-zones/tz/northamerica +3235 -0
  40. data/bower_components/flot/examples/axes-time-zones/tz/pacificnew +28 -0
  41. data/bower_components/flot/examples/axes-time-zones/tz/solar87 +390 -0
  42. data/bower_components/flot/examples/axes-time-zones/tz/solar88 +390 -0
  43. data/bower_components/flot/examples/axes-time-zones/tz/solar89 +395 -0
  44. data/bower_components/flot/examples/axes-time-zones/tz/southamerica +1711 -0
  45. data/bower_components/flot/examples/axes-time-zones/tz/systemv +38 -0
  46. data/bower_components/flot/examples/axes-time-zones/tz/yearistype.sh +38 -0
  47. data/bower_components/flot/examples/axes-time-zones/tz/zone.tab +441 -0
  48. data/bower_components/flot/examples/axes-time/index.html +137 -0
  49. data/bower_components/flot/examples/background.png +0 -0
  50. data/bower_components/flot/examples/basic-options/index.html +91 -0
  51. data/bower_components/flot/examples/basic-usage/index.html +57 -0
  52. data/bower_components/flot/examples/canvas/index.html +75 -0
  53. data/bower_components/flot/examples/categories/index.html +64 -0
  54. data/bower_components/flot/examples/examples.css +97 -0
  55. data/bower_components/flot/examples/image/hs-2004-27-a-large-web.jpg +0 -0
  56. data/bower_components/flot/examples/image/index.html +69 -0
  57. data/bower_components/flot/examples/index.html +80 -0
  58. data/bower_components/flot/examples/interacting/index.html +118 -0
  59. data/bower_components/flot/examples/navigate/arrow-down.gif +0 -0
  60. data/bower_components/flot/examples/navigate/arrow-left.gif +0 -0
  61. data/bower_components/flot/examples/navigate/arrow-right.gif +0 -0
  62. data/bower_components/flot/examples/navigate/arrow-up.gif +0 -0
  63. data/bower_components/flot/examples/navigate/index.html +153 -0
  64. data/bower_components/flot/examples/percentiles/index.html +79 -0
  65. data/bower_components/flot/examples/realtime/index.html +122 -0
  66. data/bower_components/flot/examples/resize/index.html +76 -0
  67. data/bower_components/flot/examples/selection/index.html +152 -0
  68. data/bower_components/flot/examples/series-errorbars/index.html +150 -0
  69. data/bower_components/flot/examples/series-pie/index.html +818 -0
  70. data/bower_components/flot/examples/series-toggle/index.html +121 -0
  71. data/bower_components/flot/examples/series-types/index.html +90 -0
  72. data/bower_components/flot/examples/shared/jquery-ui/jquery-ui.min.css +6 -0
  73. data/bower_components/flot/examples/stacking/index.html +107 -0
  74. data/bower_components/flot/examples/symbols/index.html +76 -0
  75. data/bower_components/flot/examples/threshold/index.html +76 -0
  76. data/bower_components/flot/examples/tracking/index.html +135 -0
  77. data/bower_components/flot/examples/visitors/index.html +147 -0
  78. data/bower_components/flot/examples/zooming/index.html +144 -0
  79. data/bower_components/flot/excanvas.js +1428 -0
  80. data/bower_components/flot/excanvas.min.js +1 -0
  81. data/bower_components/flot/flot.jquery.json +27 -0
  82. data/bower_components/flot/jquery.colorhelpers.js +180 -0
  83. data/bower_components/flot/jquery.flot.canvas.js +345 -0
  84. data/bower_components/flot/jquery.flot.categories.js +190 -0
  85. data/bower_components/flot/jquery.flot.crosshair.js +176 -0
  86. data/bower_components/flot/jquery.flot.errorbars.js +353 -0
  87. data/bower_components/flot/jquery.flot.fillbetween.js +226 -0
  88. data/bower_components/flot/jquery.flot.image.js +241 -0
  89. data/bower_components/flot/jquery.flot.js +3168 -0
  90. data/bower_components/flot/jquery.flot.navigate.js +346 -0
  91. data/bower_components/flot/jquery.flot.pie.js +820 -0
  92. data/bower_components/flot/jquery.flot.resize.js +59 -0
  93. data/bower_components/flot/jquery.flot.selection.js +360 -0
  94. data/bower_components/flot/jquery.flot.stack.js +188 -0
  95. data/bower_components/flot/jquery.flot.symbol.js +71 -0
  96. data/bower_components/flot/jquery.flot.threshold.js +142 -0
  97. data/bower_components/flot/jquery.flot.time.js +432 -0
  98. data/bower_components/flot/jquery.js +9472 -0
  99. data/bower_components/flot/package.json +11 -0
  100. data/bower_components/jquery/.bower.json +38 -0
  101. data/bower_components/jquery/MIT-LICENSE.txt +21 -0
  102. data/bower_components/jquery/bower.json +28 -0
  103. data/bower_components/jquery/dist/jquery.js +9210 -0
  104. data/bower_components/jquery/dist/jquery.min.js +5 -0
  105. data/bower_components/jquery/dist/jquery.min.map +1 -0
  106. data/bower_components/jquery/src/ajax.js +786 -0
  107. data/bower_components/jquery/src/ajax/jsonp.js +89 -0
  108. data/bower_components/jquery/src/ajax/load.js +75 -0
  109. data/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  110. data/bower_components/jquery/src/ajax/parseXML.js +28 -0
  111. data/bower_components/jquery/src/ajax/script.js +64 -0
  112. data/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  113. data/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  114. data/bower_components/jquery/src/ajax/xhr.js +136 -0
  115. data/bower_components/jquery/src/attributes.js +11 -0
  116. data/bower_components/jquery/src/attributes/attr.js +141 -0
  117. data/bower_components/jquery/src/attributes/classes.js +158 -0
  118. data/bower_components/jquery/src/attributes/prop.js +94 -0
  119. data/bower_components/jquery/src/attributes/support.js +35 -0
  120. data/bower_components/jquery/src/attributes/val.js +161 -0
  121. data/bower_components/jquery/src/callbacks.js +205 -0
  122. data/bower_components/jquery/src/core.js +502 -0
  123. data/bower_components/jquery/src/core/access.js +60 -0
  124. data/bower_components/jquery/src/core/init.js +123 -0
  125. data/bower_components/jquery/src/core/parseHTML.js +39 -0
  126. data/bower_components/jquery/src/core/ready.js +97 -0
  127. data/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  128. data/bower_components/jquery/src/css.js +450 -0
  129. data/bower_components/jquery/src/css/addGetHookIf.js +22 -0
  130. data/bower_components/jquery/src/css/curCSS.js +57 -0
  131. data/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  132. data/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  133. data/bower_components/jquery/src/css/support.js +96 -0
  134. data/bower_components/jquery/src/css/swap.js +28 -0
  135. data/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  136. data/bower_components/jquery/src/css/var/getStyles.js +12 -0
  137. data/bower_components/jquery/src/css/var/isHidden.js +13 -0
  138. data/bower_components/jquery/src/css/var/rmargin.js +3 -0
  139. data/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  140. data/bower_components/jquery/src/data.js +178 -0
  141. data/bower_components/jquery/src/data/Data.js +181 -0
  142. data/bower_components/jquery/src/data/accepts.js +20 -0
  143. data/bower_components/jquery/src/data/var/data_priv.js +5 -0
  144. data/bower_components/jquery/src/data/var/data_user.js +5 -0
  145. data/bower_components/jquery/src/deferred.js +149 -0
  146. data/bower_components/jquery/src/deprecated.js +13 -0
  147. data/bower_components/jquery/src/dimensions.js +50 -0
  148. data/bower_components/jquery/src/effects.js +648 -0
  149. data/bower_components/jquery/src/effects/Tween.js +114 -0
  150. data/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  151. data/bower_components/jquery/src/event.js +868 -0
  152. data/bower_components/jquery/src/event/ajax.js +13 -0
  153. data/bower_components/jquery/src/event/alias.js +39 -0
  154. data/bower_components/jquery/src/event/support.js +9 -0
  155. data/bower_components/jquery/src/exports/amd.js +24 -0
  156. data/bower_components/jquery/src/exports/global.js +32 -0
  157. data/bower_components/jquery/src/intro.js +44 -0
  158. data/bower_components/jquery/src/jquery.js +37 -0
  159. data/bower_components/jquery/src/manipulation.js +580 -0
  160. data/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  161. data/bower_components/jquery/src/manipulation/support.js +32 -0
  162. data/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  163. data/bower_components/jquery/src/offset.js +207 -0
  164. data/bower_components/jquery/src/outro.js +1 -0
  165. data/bower_components/jquery/src/queue.js +142 -0
  166. data/bower_components/jquery/src/queue/delay.js +22 -0
  167. data/bower_components/jquery/src/selector-native.js +172 -0
  168. data/bower_components/jquery/src/selector-sizzle.js +14 -0
  169. data/bower_components/jquery/src/selector.js +1 -0
  170. data/bower_components/jquery/src/serialize.js +111 -0
  171. data/bower_components/jquery/src/sizzle/dist/sizzle.js +2067 -0
  172. data/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  173. data/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  174. data/bower_components/jquery/src/traversing.js +199 -0
  175. data/bower_components/jquery/src/traversing/findFilter.js +100 -0
  176. data/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  177. data/bower_components/jquery/src/var/arr.js +3 -0
  178. data/bower_components/jquery/src/var/class2type.js +4 -0
  179. data/bower_components/jquery/src/var/concat.js +5 -0
  180. data/bower_components/jquery/src/var/hasOwn.js +5 -0
  181. data/bower_components/jquery/src/var/indexOf.js +5 -0
  182. data/bower_components/jquery/src/var/pnum.js +3 -0
  183. data/bower_components/jquery/src/var/push.js +5 -0
  184. data/bower_components/jquery/src/var/rnotwhite.js +3 -0
  185. data/bower_components/jquery/src/var/slice.js +5 -0
  186. data/bower_components/jquery/src/var/strundefined.js +3 -0
  187. data/bower_components/jquery/src/var/support.js +4 -0
  188. data/bower_components/jquery/src/var/toString.js +5 -0
  189. data/bower_components/jquery/src/wrap.js +79 -0
  190. data/columbus3.gemspec +1 -1
  191. data/exe/columbus3 +72 -7
  192. data/lib/columbus3.rb +2 -1
  193. data/lib/columbus3/metadata/sidecar.rb +10 -1
  194. data/lib/columbus3/renderer/flot_renderer.rb +66 -0
  195. data/lib/columbus3/renderer/{renderer.rb → leaflet_renderer.rb} +0 -0
  196. data/lib/columbus3/version.rb +1 -1
  197. data/lib/html/flot.html.erb +106 -0
  198. metadata +194 -5
  199. data/README.md +0 -41
data/columbus3.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = %q{Manage V900 and V990 GPS tracks from the command line.}
13
13
  spec.description = %q{Some simple command line commands to manage tracks generated by the V900 family of GPS loggers (CSV format).}
14
- spec.homepage = "http://ict4g.net/adolfo/columbus3"
14
+ spec.homepage = "http://www.github.com/avillafiorita/columbus3"
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
data/exe/columbus3 CHANGED
@@ -24,8 +24,43 @@ tracks on a map.
24
24
  EXAMPLES
25
25
  #{appname} -h # get syntax of each command
26
26
  columbus3 process 11010101.CSV # generate a sidecar file
27
- columbus3 search ...
28
- columbus3 show 11010101.CSV 11010201.CSV # show tracks
27
+ columbus3 search 'location ~ "USA"' # track in the USA
28
+ columbus3 show 11010101.CSV 11010201.CSV # show tracks on a map (_show.html)
29
+ columbus3 graph 11010101.CSV # show info about a track (_graph.html)
30
+
31
+ SEARCH SYNTAX
32
+
33
+ >>> DON'T FORGET TO EMBED YOUR QUERY IN SINGLE QUOTES <<<
34
+
35
+ Terms you can search for:
36
+ location, start_location, end_location
37
+ date, start_date, end_date
38
+ year
39
+ duration
40
+ max_speed
41
+ min_height
42
+ max_height
43
+
44
+ Numerical operators:
45
+ <, <=, ==, >=, >
46
+
47
+ String operators (locations):
48
+ ~ (contains), == (is exactly)
49
+
50
+ Complex Terms:
51
+ Use "and" and "or" to build complex queries
52
+
53
+ Examples of simple searches
54
+ 'location ~ "USA"' any track whose start or end location contains USA
55
+ 'date > 2015-02-14' any track whose start or end date is after Feb 14, 2015
56
+ 'year == 2015' any track whose start or end date is in 2015
57
+ 'duration <= 01:02:03' any track with a duration of less than 1h, 2min, and 3secs
58
+ 'max_speed > 120' any track with a max speed greater than 120 km/h
59
+ 'min_height == 10' any track with a min height lower than 10 meters
60
+
61
+ Examplex of more more complex searches
62
+ 'location ~ "USA" and start_date >= 2015-01-01' tracks in the USA after or on Jan 1, 2015
63
+ 'start_location ~ "Trenton" and end_location ~ "New York"' trips from Trenton to New York
29
64
 
30
65
  VERSION
31
66
  This is version #{version}
@@ -33,12 +68,12 @@ VERSION
33
68
  LICENSE
34
69
  MIT
35
70
 
36
- Columbus3 uses leaflet and leafleft-providers to diplay tracks. They
71
+ Columbus3 uses leaflet, leafleft-providers, flot, and jquery. They
37
72
  are distributed under a different license: see their websites for more
38
73
  details (or have a look at the license file shipped with the Gem)
39
74
 
40
75
  SEE ALSO
41
- If you are looking for a graphical client, you might want to
76
+ If you are looking for a full graphical client, you might want to
42
77
  download Columbus from http://www.minimalbit.com
43
78
 
44
79
  https://github.com/avillafiorita/columbus3
@@ -73,14 +108,21 @@ opts = Slop.parse :help => true do
73
108
  banner "#{appname} process [--help] [track ...]"
74
109
  description "Generate a sidecar file for the specified tracks"
75
110
 
111
+ on "--force", "Overwrite existing sidecar files"
112
+
76
113
  run do |opts, args|
77
114
  cmd ="process"
78
-
115
+ force = opts.to_hash[:force]
116
+
79
117
  args.each do |arg|
80
118
  track = V900Track.new arg
81
119
  sidecar = Columbus3::Sidecar.new arg
82
- sidecar.metadata = track.metadata
83
- sidecar.save
120
+ if sidecar.exist? and not force
121
+ puts "Sidecar file for #{track} already exists. Use --force if you want to overwrite it."
122
+ else
123
+ sidecar.metadata = track.metadata
124
+ sidecar.save
125
+ end
84
126
  end
85
127
  end
86
128
  end
@@ -139,6 +181,29 @@ opts = Slop.parse :help => true do
139
181
  end
140
182
  end
141
183
 
184
+ ##############################################################################
185
+ command :graph do
186
+ banner "#{appname} show [--help] [--filename filename] [--force] track"
187
+ description "Plot speed and height profile of track"
188
+
189
+ on "--force", "Force rewriting of the js file, even if it already exists"
190
+
191
+ run do |opts, args|
192
+ cmd ="graph"
193
+
194
+ filename = opts.to_hash[:filename] || "_graph.html"
195
+ force = opts.to_hash[:force]
196
+
197
+ input_filename = args[0]
198
+ if input_filename
199
+ Columbus3::FlotRenderer::to_graph_data input_filename, force
200
+ Columbus3::FlotRenderer::show filename, input_filename
201
+ else
202
+ puts "Error: please specify a track file"
203
+ end
204
+ end
205
+ end
206
+
142
207
  ##############################################################################
143
208
  command :export do
144
209
  banner "#{appname} export [--help] [track ...]"
data/lib/columbus3.rb CHANGED
@@ -3,4 +3,5 @@ require "columbus3/metadata/query_parser.tab"
3
3
  require "columbus3/metadata/sidecar"
4
4
  require "columbus3/v900track/v900track"
5
5
  require "columbus3/v900track/v900waypoint"
6
- require "columbus3/renderer/renderer"
6
+ require "columbus3/renderer/leaflet_renderer"
7
+ require "columbus3/renderer/flot_renderer"
@@ -22,7 +22,7 @@ module Columbus3
22
22
  end
23
23
 
24
24
  def load
25
- YAML.load(File.read(@metadata[:filename] + ".yaml", "r"))
25
+ @metadata = YAML.load(File.read(@metadata[:filename] + ".yaml"))
26
26
  end
27
27
 
28
28
  def save
@@ -30,6 +30,15 @@ module Columbus3
30
30
  file << @metadata.to_yaml
31
31
  end
32
32
  end
33
+
34
+ def exists?
35
+ File.exists?(@metadata[:filename] + ".yaml")
36
+ end
37
+
38
+ # an alias
39
+ def exist?
40
+ exists?
41
+ end
33
42
  end
34
43
 
35
44
  class SidecarSearch
@@ -0,0 +1,66 @@
1
+ require 'erb'
2
+ require 'yaml'
3
+
4
+ module Columbus3
5
+ # make a track into a flot graph (speed and height)
6
+ module FlotRenderer
7
+ # apply the ERB in html/flot.html.erb
8
+ # and save it in the current directory, under _flot.html
9
+ def self.show filename, file
10
+ template = File.join(File.dirname(__FILE__), "/../../html/flot.html.erb")
11
+ renderer = ERB.new(File.read(template))
12
+
13
+ # context: location of css and js + list of files to show
14
+ bower_dir = File.join(File.dirname(__FILE__), "/../../../bower_components")
15
+ @flot_js = [File.join(bower_dir, 'jquery/dist/jquery.min.js'),
16
+ File.join(bower_dir, 'flot/jquery.flot.js'),
17
+ File.join(bower_dir, 'flot/jquery.flot.resize.js'),
18
+ File.join(bower_dir, 'flot/jquery.flot.time.js'),
19
+ File.join(bower_dir, 'flot/jquery.flot.selection.js')
20
+ ]
21
+ @file = file
22
+ # TODO: manage the case of sidecar not existing
23
+ @track_info = Sidecar.new @file
24
+ @track_info.load
25
+
26
+ # generate the output
27
+ html = renderer.result(binding)
28
+
29
+ # save it to file
30
+ File.open(filename, "w") do |file|
31
+ file << html
32
+ end
33
+ end
34
+
35
+ # make a v900 track into a graph layer cached to disk
36
+ def self.to_graph_data filename, force = false
37
+ target = to_graph_filename filename
38
+
39
+ if force or not File.exists? target
40
+ track = V900Track.new filename
41
+ File.open(target, "w") do |file|
42
+ id = sanitize filename
43
+
44
+ file.printf <<EOS
45
+ min_time_#{id} = #{track.first.time.to_i * 1000};\n
46
+ max_time_#{id} = #{track.last.time.to_i * 1000};\n
47
+ speed_#{id} = #{track.range.each.map { |i| [track[i].time.to_i * 1000, track[i].speed] }};\n
48
+ height_#{id} = #{track.range.each.map { |i|[track[i].time.to_i * 1000, track[i].height] }};\n
49
+ EOS
50
+ end
51
+ end
52
+
53
+ end
54
+
55
+ def self.to_graph_filename filename
56
+ filename + "_graph.js"
57
+ end
58
+
59
+ private
60
+
61
+ def self.sanitize filename
62
+ filename.gsub(/[^0-9A-Za-z\-]/, "_")
63
+ end
64
+
65
+ end
66
+ end
@@ -1,3 +1,3 @@
1
1
  module Columbus3
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,106 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>Columbus 3 - Show Graph</title>
5
+ <meta charset="utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
8
+ <link rel="stylesheet" href="<%= @flot_css %>" />
9
+ <% @flot_js.each do |file| %>
10
+ <script src="<%= file %>"></script>
11
+ <% end %>
12
+ <style>
13
+ #chart {
14
+ width: 100%;
15
+ height: 300px;
16
+ }
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <h1>Showing data for <%= @file %></h1>
21
+
22
+ <h2>Plot</h2>
23
+ <div id="chart" style="padding:20px"></div>
24
+ <a href="#" onclick="javascript:resetZoom()">Reset Zoom</a>
25
+ <div id="tooltip" style="position: absolute; display: none; border: 1px solid rgb(255, 221, 221); padding: 6px; background-color: rgb(10, 10, 10); color: rgb(255,255,255); opacity: 0.8; font-size: 12px;"></div>
26
+
27
+ <h2>Info</h2>
28
+
29
+ <div id="info">
30
+ <% @track_info.metadata.keys.each do |key| %>
31
+ <p>
32
+ <b><%= key.to_s %>:</b>
33
+ <%= @track_info.metadata[key] %>
34
+ </p>
35
+ <% end %>
36
+ </div>
37
+
38
+ <script src="<%= to_graph_filename @file %>"></script>
39
+ <script>
40
+ // required by plot for tooltips (it moves the tooltip, appending it directly to body
41
+ $("<div id='tooltip'></div>").appendTo("body");
42
+
43
+ // the plot and its options
44
+ var plot;
45
+
46
+ var options = {
47
+ series: {
48
+ lines: { show: true },
49
+ points: { show: true, radius: 2 },
50
+ shadowSize: 0
51
+ },
52
+ xaxis: { mode: "time", timeformat: "%H:%M:%S"},
53
+ yaxes: [ { }, { position: "right" } ],
54
+ grid: { hoverable: true, clickable: true, borderWidth: 1, borderColor: "#CCCCCC" },
55
+ selection: { mode: "x" },
56
+ };
57
+
58
+ // required for tooltips
59
+ $("#chart").bind("plothover", function (event, pos, item) {
60
+ if (item) {
61
+ var x = item.datapoint[0].toFixed(2), y = item.datapoint[1].toFixed(2);
62
+ var d = new Date(parseInt(x));
63
+ var curr_hour = d.getUTCHours();
64
+ var curr_min = d.getMinutes();
65
+ var curr_sec = d.getSeconds();
66
+ var time = " " + (curr_hour <= 9 ? "0" + curr_hour : curr_hour) + ":" +
67
+ (curr_min <= 9 ? "0" + curr_min : curr_min) + ":" +
68
+ (curr_sec <= 9 ? "0" + curr_sec : curr_sec);
69
+
70
+ $("#tooltip").html(item.series.label + " at " + time + " (point " + (item.dataIndex + 1) + "): " + y)
71
+ .css({top: item.pageY+5, left: item.pageX+5})
72
+ .fadeIn(200);
73
+ } else {
74
+ $("#tooltip").hide();
75
+ }
76
+ });
77
+
78
+ $("#chart").bind("plotselected", function (event, ranges) {
79
+ $.each(plot.getXAxes(), function(_, axis) {
80
+ var opts = axis.options;
81
+ opts.min = ranges.xaxis.from;
82
+ opts.max = ranges.xaxis.to;
83
+ });
84
+ plot.setupGrid();
85
+ plot.draw();
86
+ plot.clearSelection();
87
+ });
88
+
89
+ function resetZoom() {
90
+ $.each(plot.getXAxes(), function(_, axis) {
91
+ var opts = axis.options;
92
+ opts.min = min_time_<%= sanitize @file %>;
93
+ opts.max = max_time_<%= sanitize @file %>;
94
+ });
95
+ plot.setupGrid();
96
+ plot.draw();
97
+ plot.clearSelection();
98
+ }
99
+
100
+ plot = $.plot('#chart',
101
+ [{ label: "Speed", data: <%= "speed_" + sanitize(@file) %>, color: "#F04124" },
102
+ { label: "Height", data: <%= "height_" + sanitize(@file) %>, yaxis: 2, color: "#4C9ED9" }],
103
+ options)
104
+ </script>
105
+ </body>
106
+ </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: columbus3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adolfo Villafiorita
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-26 00:00:00.000000000 Z
11
+ date: 2015-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -93,10 +93,197 @@ files:
93
93
  - ".travis.yml"
94
94
  - Gemfile
95
95
  - LICENSE.txt
96
- - README.md
96
+ - README.textile
97
97
  - Rakefile
98
98
  - bin/console
99
99
  - bin/setup
100
+ - bower_components/flot/.bower.json
101
+ - bower_components/flot/.gitignore
102
+ - bower_components/flot/.travis.yml
103
+ - bower_components/flot/API.md
104
+ - bower_components/flot/CONTRIBUTING.md
105
+ - bower_components/flot/FAQ.md
106
+ - bower_components/flot/LICENSE.txt
107
+ - bower_components/flot/Makefile
108
+ - bower_components/flot/NEWS.md
109
+ - bower_components/flot/PLUGINS.md
110
+ - bower_components/flot/README.md
111
+ - bower_components/flot/component.json
112
+ - bower_components/flot/examples/ajax/data-eu-gdp-growth-1.json
113
+ - bower_components/flot/examples/ajax/data-eu-gdp-growth-2.json
114
+ - bower_components/flot/examples/ajax/data-eu-gdp-growth-3.json
115
+ - bower_components/flot/examples/ajax/data-eu-gdp-growth-4.json
116
+ - bower_components/flot/examples/ajax/data-eu-gdp-growth-5.json
117
+ - bower_components/flot/examples/ajax/data-eu-gdp-growth.json
118
+ - bower_components/flot/examples/ajax/data-japan-gdp-growth.json
119
+ - bower_components/flot/examples/ajax/data-usa-gdp-growth.json
120
+ - bower_components/flot/examples/ajax/index.html
121
+ - bower_components/flot/examples/annotating/index.html
122
+ - bower_components/flot/examples/axes-interacting/index.html
123
+ - bower_components/flot/examples/axes-multiple/index.html
124
+ - bower_components/flot/examples/axes-time-zones/date.js
125
+ - bower_components/flot/examples/axes-time-zones/index.html
126
+ - bower_components/flot/examples/axes-time-zones/tz/africa
127
+ - bower_components/flot/examples/axes-time-zones/tz/antarctica
128
+ - bower_components/flot/examples/axes-time-zones/tz/asia
129
+ - bower_components/flot/examples/axes-time-zones/tz/australasia
130
+ - bower_components/flot/examples/axes-time-zones/tz/backward
131
+ - bower_components/flot/examples/axes-time-zones/tz/etcetera
132
+ - bower_components/flot/examples/axes-time-zones/tz/europe
133
+ - bower_components/flot/examples/axes-time-zones/tz/factory
134
+ - bower_components/flot/examples/axes-time-zones/tz/iso3166.tab
135
+ - bower_components/flot/examples/axes-time-zones/tz/leapseconds
136
+ - bower_components/flot/examples/axes-time-zones/tz/northamerica
137
+ - bower_components/flot/examples/axes-time-zones/tz/pacificnew
138
+ - bower_components/flot/examples/axes-time-zones/tz/solar87
139
+ - bower_components/flot/examples/axes-time-zones/tz/solar88
140
+ - bower_components/flot/examples/axes-time-zones/tz/solar89
141
+ - bower_components/flot/examples/axes-time-zones/tz/southamerica
142
+ - bower_components/flot/examples/axes-time-zones/tz/systemv
143
+ - bower_components/flot/examples/axes-time-zones/tz/yearistype.sh
144
+ - bower_components/flot/examples/axes-time-zones/tz/zone.tab
145
+ - bower_components/flot/examples/axes-time/index.html
146
+ - bower_components/flot/examples/background.png
147
+ - bower_components/flot/examples/basic-options/index.html
148
+ - bower_components/flot/examples/basic-usage/index.html
149
+ - bower_components/flot/examples/canvas/index.html
150
+ - bower_components/flot/examples/categories/index.html
151
+ - bower_components/flot/examples/examples.css
152
+ - bower_components/flot/examples/image/hs-2004-27-a-large-web.jpg
153
+ - bower_components/flot/examples/image/index.html
154
+ - bower_components/flot/examples/index.html
155
+ - bower_components/flot/examples/interacting/index.html
156
+ - bower_components/flot/examples/navigate/arrow-down.gif
157
+ - bower_components/flot/examples/navigate/arrow-left.gif
158
+ - bower_components/flot/examples/navigate/arrow-right.gif
159
+ - bower_components/flot/examples/navigate/arrow-up.gif
160
+ - bower_components/flot/examples/navigate/index.html
161
+ - bower_components/flot/examples/percentiles/index.html
162
+ - bower_components/flot/examples/realtime/index.html
163
+ - bower_components/flot/examples/resize/index.html
164
+ - bower_components/flot/examples/selection/index.html
165
+ - bower_components/flot/examples/series-errorbars/index.html
166
+ - bower_components/flot/examples/series-pie/index.html
167
+ - bower_components/flot/examples/series-toggle/index.html
168
+ - bower_components/flot/examples/series-types/index.html
169
+ - bower_components/flot/examples/shared/jquery-ui/jquery-ui.min.css
170
+ - bower_components/flot/examples/stacking/index.html
171
+ - bower_components/flot/examples/symbols/index.html
172
+ - bower_components/flot/examples/threshold/index.html
173
+ - bower_components/flot/examples/tracking/index.html
174
+ - bower_components/flot/examples/visitors/index.html
175
+ - bower_components/flot/examples/zooming/index.html
176
+ - bower_components/flot/excanvas.js
177
+ - bower_components/flot/excanvas.min.js
178
+ - bower_components/flot/flot.jquery.json
179
+ - bower_components/flot/jquery.colorhelpers.js
180
+ - bower_components/flot/jquery.flot.canvas.js
181
+ - bower_components/flot/jquery.flot.categories.js
182
+ - bower_components/flot/jquery.flot.crosshair.js
183
+ - bower_components/flot/jquery.flot.errorbars.js
184
+ - bower_components/flot/jquery.flot.fillbetween.js
185
+ - bower_components/flot/jquery.flot.image.js
186
+ - bower_components/flot/jquery.flot.js
187
+ - bower_components/flot/jquery.flot.navigate.js
188
+ - bower_components/flot/jquery.flot.pie.js
189
+ - bower_components/flot/jquery.flot.resize.js
190
+ - bower_components/flot/jquery.flot.selection.js
191
+ - bower_components/flot/jquery.flot.stack.js
192
+ - bower_components/flot/jquery.flot.symbol.js
193
+ - bower_components/flot/jquery.flot.threshold.js
194
+ - bower_components/flot/jquery.flot.time.js
195
+ - bower_components/flot/jquery.js
196
+ - bower_components/flot/package.json
197
+ - bower_components/jquery/.bower.json
198
+ - bower_components/jquery/MIT-LICENSE.txt
199
+ - bower_components/jquery/bower.json
200
+ - bower_components/jquery/dist/jquery.js
201
+ - bower_components/jquery/dist/jquery.min.js
202
+ - bower_components/jquery/dist/jquery.min.map
203
+ - bower_components/jquery/src/ajax.js
204
+ - bower_components/jquery/src/ajax/jsonp.js
205
+ - bower_components/jquery/src/ajax/load.js
206
+ - bower_components/jquery/src/ajax/parseJSON.js
207
+ - bower_components/jquery/src/ajax/parseXML.js
208
+ - bower_components/jquery/src/ajax/script.js
209
+ - bower_components/jquery/src/ajax/var/nonce.js
210
+ - bower_components/jquery/src/ajax/var/rquery.js
211
+ - bower_components/jquery/src/ajax/xhr.js
212
+ - bower_components/jquery/src/attributes.js
213
+ - bower_components/jquery/src/attributes/attr.js
214
+ - bower_components/jquery/src/attributes/classes.js
215
+ - bower_components/jquery/src/attributes/prop.js
216
+ - bower_components/jquery/src/attributes/support.js
217
+ - bower_components/jquery/src/attributes/val.js
218
+ - bower_components/jquery/src/callbacks.js
219
+ - bower_components/jquery/src/core.js
220
+ - bower_components/jquery/src/core/access.js
221
+ - bower_components/jquery/src/core/init.js
222
+ - bower_components/jquery/src/core/parseHTML.js
223
+ - bower_components/jquery/src/core/ready.js
224
+ - bower_components/jquery/src/core/var/rsingleTag.js
225
+ - bower_components/jquery/src/css.js
226
+ - bower_components/jquery/src/css/addGetHookIf.js
227
+ - bower_components/jquery/src/css/curCSS.js
228
+ - bower_components/jquery/src/css/defaultDisplay.js
229
+ - bower_components/jquery/src/css/hiddenVisibleSelectors.js
230
+ - bower_components/jquery/src/css/support.js
231
+ - bower_components/jquery/src/css/swap.js
232
+ - bower_components/jquery/src/css/var/cssExpand.js
233
+ - bower_components/jquery/src/css/var/getStyles.js
234
+ - bower_components/jquery/src/css/var/isHidden.js
235
+ - bower_components/jquery/src/css/var/rmargin.js
236
+ - bower_components/jquery/src/css/var/rnumnonpx.js
237
+ - bower_components/jquery/src/data.js
238
+ - bower_components/jquery/src/data/Data.js
239
+ - bower_components/jquery/src/data/accepts.js
240
+ - bower_components/jquery/src/data/var/data_priv.js
241
+ - bower_components/jquery/src/data/var/data_user.js
242
+ - bower_components/jquery/src/deferred.js
243
+ - bower_components/jquery/src/deprecated.js
244
+ - bower_components/jquery/src/dimensions.js
245
+ - bower_components/jquery/src/effects.js
246
+ - bower_components/jquery/src/effects/Tween.js
247
+ - bower_components/jquery/src/effects/animatedSelector.js
248
+ - bower_components/jquery/src/event.js
249
+ - bower_components/jquery/src/event/ajax.js
250
+ - bower_components/jquery/src/event/alias.js
251
+ - bower_components/jquery/src/event/support.js
252
+ - bower_components/jquery/src/exports/amd.js
253
+ - bower_components/jquery/src/exports/global.js
254
+ - bower_components/jquery/src/intro.js
255
+ - bower_components/jquery/src/jquery.js
256
+ - bower_components/jquery/src/manipulation.js
257
+ - bower_components/jquery/src/manipulation/_evalUrl.js
258
+ - bower_components/jquery/src/manipulation/support.js
259
+ - bower_components/jquery/src/manipulation/var/rcheckableType.js
260
+ - bower_components/jquery/src/offset.js
261
+ - bower_components/jquery/src/outro.js
262
+ - bower_components/jquery/src/queue.js
263
+ - bower_components/jquery/src/queue/delay.js
264
+ - bower_components/jquery/src/selector-native.js
265
+ - bower_components/jquery/src/selector-sizzle.js
266
+ - bower_components/jquery/src/selector.js
267
+ - bower_components/jquery/src/serialize.js
268
+ - bower_components/jquery/src/sizzle/dist/sizzle.js
269
+ - bower_components/jquery/src/sizzle/dist/sizzle.min.js
270
+ - bower_components/jquery/src/sizzle/dist/sizzle.min.map
271
+ - bower_components/jquery/src/traversing.js
272
+ - bower_components/jquery/src/traversing/findFilter.js
273
+ - bower_components/jquery/src/traversing/var/rneedsContext.js
274
+ - bower_components/jquery/src/var/arr.js
275
+ - bower_components/jquery/src/var/class2type.js
276
+ - bower_components/jquery/src/var/concat.js
277
+ - bower_components/jquery/src/var/hasOwn.js
278
+ - bower_components/jquery/src/var/indexOf.js
279
+ - bower_components/jquery/src/var/pnum.js
280
+ - bower_components/jquery/src/var/push.js
281
+ - bower_components/jquery/src/var/rnotwhite.js
282
+ - bower_components/jquery/src/var/slice.js
283
+ - bower_components/jquery/src/var/strundefined.js
284
+ - bower_components/jquery/src/var/support.js
285
+ - bower_components/jquery/src/var/toString.js
286
+ - bower_components/jquery/src/wrap.js
100
287
  - bower_components/leaflet-providers/.bower.json
101
288
  - bower_components/leaflet-providers/CONTRIBUTING.md
102
289
  - bower_components/leaflet-providers/README.md
@@ -130,13 +317,15 @@ files:
130
317
  - lib/columbus3/metadata/query_parser.racc
131
318
  - lib/columbus3/metadata/query_parser.tab.rb
132
319
  - lib/columbus3/metadata/sidecar.rb
133
- - lib/columbus3/renderer/renderer.rb
320
+ - lib/columbus3/renderer/flot_renderer.rb
321
+ - lib/columbus3/renderer/leaflet_renderer.rb
134
322
  - lib/columbus3/v900track/v900track.rb
135
323
  - lib/columbus3/v900track/v900waypoint.rb
136
324
  - lib/columbus3/version.rb
325
+ - lib/html/flot.html.erb
137
326
  - lib/html/show.html.erb
138
327
  - lib/html/track.js.erb
139
- homepage: http://ict4g.net/adolfo/columbus3
328
+ homepage: http://www.github.com/avillafiorita/columbus3
140
329
  licenses:
141
330
  - MIT
142
331
  metadata: {}