columbus3 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.textile +62 -0
- data/bower_components/flot/.bower.json +19 -0
- data/bower_components/flot/.gitignore +3 -0
- data/bower_components/flot/.travis.yml +3 -0
- data/bower_components/flot/API.md +1498 -0
- data/bower_components/flot/CONTRIBUTING.md +98 -0
- data/bower_components/flot/FAQ.md +75 -0
- data/bower_components/flot/LICENSE.txt +22 -0
- data/bower_components/flot/Makefile +12 -0
- data/bower_components/flot/NEWS.md +1026 -0
- data/bower_components/flot/PLUGINS.md +143 -0
- data/bower_components/flot/README.md +110 -0
- data/bower_components/flot/component.json +8 -0
- data/bower_components/flot/examples/ajax/data-eu-gdp-growth-1.json +4 -0
- data/bower_components/flot/examples/ajax/data-eu-gdp-growth-2.json +4 -0
- data/bower_components/flot/examples/ajax/data-eu-gdp-growth-3.json +4 -0
- data/bower_components/flot/examples/ajax/data-eu-gdp-growth-4.json +4 -0
- data/bower_components/flot/examples/ajax/data-eu-gdp-growth-5.json +4 -0
- data/bower_components/flot/examples/ajax/data-eu-gdp-growth.json +4 -0
- data/bower_components/flot/examples/ajax/data-japan-gdp-growth.json +4 -0
- data/bower_components/flot/examples/ajax/data-usa-gdp-growth.json +4 -0
- data/bower_components/flot/examples/ajax/index.html +173 -0
- data/bower_components/flot/examples/annotating/index.html +87 -0
- data/bower_components/flot/examples/axes-interacting/index.html +97 -0
- data/bower_components/flot/examples/axes-multiple/index.html +77 -0
- data/bower_components/flot/examples/axes-time-zones/date.js +893 -0
- data/bower_components/flot/examples/axes-time-zones/index.html +114 -0
- data/bower_components/flot/examples/axes-time-zones/tz/africa +1181 -0
- data/bower_components/flot/examples/axes-time-zones/tz/antarctica +413 -0
- data/bower_components/flot/examples/axes-time-zones/tz/asia +2717 -0
- data/bower_components/flot/examples/axes-time-zones/tz/australasia +1719 -0
- data/bower_components/flot/examples/axes-time-zones/tz/backward +117 -0
- data/bower_components/flot/examples/axes-time-zones/tz/etcetera +81 -0
- data/bower_components/flot/examples/axes-time-zones/tz/europe +2856 -0
- data/bower_components/flot/examples/axes-time-zones/tz/factory +10 -0
- data/bower_components/flot/examples/axes-time-zones/tz/iso3166.tab +276 -0
- data/bower_components/flot/examples/axes-time-zones/tz/leapseconds +100 -0
- data/bower_components/flot/examples/axes-time-zones/tz/northamerica +3235 -0
- data/bower_components/flot/examples/axes-time-zones/tz/pacificnew +28 -0
- data/bower_components/flot/examples/axes-time-zones/tz/solar87 +390 -0
- data/bower_components/flot/examples/axes-time-zones/tz/solar88 +390 -0
- data/bower_components/flot/examples/axes-time-zones/tz/solar89 +395 -0
- data/bower_components/flot/examples/axes-time-zones/tz/southamerica +1711 -0
- data/bower_components/flot/examples/axes-time-zones/tz/systemv +38 -0
- data/bower_components/flot/examples/axes-time-zones/tz/yearistype.sh +38 -0
- data/bower_components/flot/examples/axes-time-zones/tz/zone.tab +441 -0
- data/bower_components/flot/examples/axes-time/index.html +137 -0
- data/bower_components/flot/examples/background.png +0 -0
- data/bower_components/flot/examples/basic-options/index.html +91 -0
- data/bower_components/flot/examples/basic-usage/index.html +57 -0
- data/bower_components/flot/examples/canvas/index.html +75 -0
- data/bower_components/flot/examples/categories/index.html +64 -0
- data/bower_components/flot/examples/examples.css +97 -0
- data/bower_components/flot/examples/image/hs-2004-27-a-large-web.jpg +0 -0
- data/bower_components/flot/examples/image/index.html +69 -0
- data/bower_components/flot/examples/index.html +80 -0
- data/bower_components/flot/examples/interacting/index.html +118 -0
- data/bower_components/flot/examples/navigate/arrow-down.gif +0 -0
- data/bower_components/flot/examples/navigate/arrow-left.gif +0 -0
- data/bower_components/flot/examples/navigate/arrow-right.gif +0 -0
- data/bower_components/flot/examples/navigate/arrow-up.gif +0 -0
- data/bower_components/flot/examples/navigate/index.html +153 -0
- data/bower_components/flot/examples/percentiles/index.html +79 -0
- data/bower_components/flot/examples/realtime/index.html +122 -0
- data/bower_components/flot/examples/resize/index.html +76 -0
- data/bower_components/flot/examples/selection/index.html +152 -0
- data/bower_components/flot/examples/series-errorbars/index.html +150 -0
- data/bower_components/flot/examples/series-pie/index.html +818 -0
- data/bower_components/flot/examples/series-toggle/index.html +121 -0
- data/bower_components/flot/examples/series-types/index.html +90 -0
- data/bower_components/flot/examples/shared/jquery-ui/jquery-ui.min.css +6 -0
- data/bower_components/flot/examples/stacking/index.html +107 -0
- data/bower_components/flot/examples/symbols/index.html +76 -0
- data/bower_components/flot/examples/threshold/index.html +76 -0
- data/bower_components/flot/examples/tracking/index.html +135 -0
- data/bower_components/flot/examples/visitors/index.html +147 -0
- data/bower_components/flot/examples/zooming/index.html +144 -0
- data/bower_components/flot/excanvas.js +1428 -0
- data/bower_components/flot/excanvas.min.js +1 -0
- data/bower_components/flot/flot.jquery.json +27 -0
- data/bower_components/flot/jquery.colorhelpers.js +180 -0
- data/bower_components/flot/jquery.flot.canvas.js +345 -0
- data/bower_components/flot/jquery.flot.categories.js +190 -0
- data/bower_components/flot/jquery.flot.crosshair.js +176 -0
- data/bower_components/flot/jquery.flot.errorbars.js +353 -0
- data/bower_components/flot/jquery.flot.fillbetween.js +226 -0
- data/bower_components/flot/jquery.flot.image.js +241 -0
- data/bower_components/flot/jquery.flot.js +3168 -0
- data/bower_components/flot/jquery.flot.navigate.js +346 -0
- data/bower_components/flot/jquery.flot.pie.js +820 -0
- data/bower_components/flot/jquery.flot.resize.js +59 -0
- data/bower_components/flot/jquery.flot.selection.js +360 -0
- data/bower_components/flot/jquery.flot.stack.js +188 -0
- data/bower_components/flot/jquery.flot.symbol.js +71 -0
- data/bower_components/flot/jquery.flot.threshold.js +142 -0
- data/bower_components/flot/jquery.flot.time.js +432 -0
- data/bower_components/flot/jquery.js +9472 -0
- data/bower_components/flot/package.json +11 -0
- data/bower_components/jquery/.bower.json +38 -0
- data/bower_components/jquery/MIT-LICENSE.txt +21 -0
- data/bower_components/jquery/bower.json +28 -0
- data/bower_components/jquery/dist/jquery.js +9210 -0
- data/bower_components/jquery/dist/jquery.min.js +5 -0
- data/bower_components/jquery/dist/jquery.min.map +1 -0
- data/bower_components/jquery/src/ajax.js +786 -0
- data/bower_components/jquery/src/ajax/jsonp.js +89 -0
- data/bower_components/jquery/src/ajax/load.js +75 -0
- data/bower_components/jquery/src/ajax/parseJSON.js +13 -0
- data/bower_components/jquery/src/ajax/parseXML.js +28 -0
- data/bower_components/jquery/src/ajax/script.js +64 -0
- data/bower_components/jquery/src/ajax/var/nonce.js +5 -0
- data/bower_components/jquery/src/ajax/var/rquery.js +3 -0
- data/bower_components/jquery/src/ajax/xhr.js +136 -0
- data/bower_components/jquery/src/attributes.js +11 -0
- data/bower_components/jquery/src/attributes/attr.js +141 -0
- data/bower_components/jquery/src/attributes/classes.js +158 -0
- data/bower_components/jquery/src/attributes/prop.js +94 -0
- data/bower_components/jquery/src/attributes/support.js +35 -0
- data/bower_components/jquery/src/attributes/val.js +161 -0
- data/bower_components/jquery/src/callbacks.js +205 -0
- data/bower_components/jquery/src/core.js +502 -0
- data/bower_components/jquery/src/core/access.js +60 -0
- data/bower_components/jquery/src/core/init.js +123 -0
- data/bower_components/jquery/src/core/parseHTML.js +39 -0
- data/bower_components/jquery/src/core/ready.js +97 -0
- data/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
- data/bower_components/jquery/src/css.js +450 -0
- data/bower_components/jquery/src/css/addGetHookIf.js +22 -0
- data/bower_components/jquery/src/css/curCSS.js +57 -0
- data/bower_components/jquery/src/css/defaultDisplay.js +70 -0
- data/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
- data/bower_components/jquery/src/css/support.js +96 -0
- data/bower_components/jquery/src/css/swap.js +28 -0
- data/bower_components/jquery/src/css/var/cssExpand.js +3 -0
- data/bower_components/jquery/src/css/var/getStyles.js +12 -0
- data/bower_components/jquery/src/css/var/isHidden.js +13 -0
- data/bower_components/jquery/src/css/var/rmargin.js +3 -0
- data/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
- data/bower_components/jquery/src/data.js +178 -0
- data/bower_components/jquery/src/data/Data.js +181 -0
- data/bower_components/jquery/src/data/accepts.js +20 -0
- data/bower_components/jquery/src/data/var/data_priv.js +5 -0
- data/bower_components/jquery/src/data/var/data_user.js +5 -0
- data/bower_components/jquery/src/deferred.js +149 -0
- data/bower_components/jquery/src/deprecated.js +13 -0
- data/bower_components/jquery/src/dimensions.js +50 -0
- data/bower_components/jquery/src/effects.js +648 -0
- data/bower_components/jquery/src/effects/Tween.js +114 -0
- data/bower_components/jquery/src/effects/animatedSelector.js +13 -0
- data/bower_components/jquery/src/event.js +868 -0
- data/bower_components/jquery/src/event/ajax.js +13 -0
- data/bower_components/jquery/src/event/alias.js +39 -0
- data/bower_components/jquery/src/event/support.js +9 -0
- data/bower_components/jquery/src/exports/amd.js +24 -0
- data/bower_components/jquery/src/exports/global.js +32 -0
- data/bower_components/jquery/src/intro.js +44 -0
- data/bower_components/jquery/src/jquery.js +37 -0
- data/bower_components/jquery/src/manipulation.js +580 -0
- data/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
- data/bower_components/jquery/src/manipulation/support.js +32 -0
- data/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
- data/bower_components/jquery/src/offset.js +207 -0
- data/bower_components/jquery/src/outro.js +1 -0
- data/bower_components/jquery/src/queue.js +142 -0
- data/bower_components/jquery/src/queue/delay.js +22 -0
- data/bower_components/jquery/src/selector-native.js +172 -0
- data/bower_components/jquery/src/selector-sizzle.js +14 -0
- data/bower_components/jquery/src/selector.js +1 -0
- data/bower_components/jquery/src/serialize.js +111 -0
- data/bower_components/jquery/src/sizzle/dist/sizzle.js +2067 -0
- data/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
- data/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
- data/bower_components/jquery/src/traversing.js +199 -0
- data/bower_components/jquery/src/traversing/findFilter.js +100 -0
- data/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
- data/bower_components/jquery/src/var/arr.js +3 -0
- data/bower_components/jquery/src/var/class2type.js +4 -0
- data/bower_components/jquery/src/var/concat.js +5 -0
- data/bower_components/jquery/src/var/hasOwn.js +5 -0
- data/bower_components/jquery/src/var/indexOf.js +5 -0
- data/bower_components/jquery/src/var/pnum.js +3 -0
- data/bower_components/jquery/src/var/push.js +5 -0
- data/bower_components/jquery/src/var/rnotwhite.js +3 -0
- data/bower_components/jquery/src/var/slice.js +5 -0
- data/bower_components/jquery/src/var/strundefined.js +3 -0
- data/bower_components/jquery/src/var/support.js +4 -0
- data/bower_components/jquery/src/var/toString.js +5 -0
- data/bower_components/jquery/src/wrap.js +79 -0
- data/columbus3.gemspec +1 -1
- data/exe/columbus3 +72 -7
- data/lib/columbus3.rb +2 -1
- data/lib/columbus3/metadata/sidecar.rb +10 -1
- data/lib/columbus3/renderer/flot_renderer.rb +66 -0
- data/lib/columbus3/renderer/{renderer.rb → leaflet_renderer.rb} +0 -0
- data/lib/columbus3/version.rb +1 -1
- data/lib/html/flot.html.erb +106 -0
- metadata +194 -5
- 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://
|
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
|
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.
|
83
|
-
|
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/
|
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"
|
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
|
File without changes
|
data/lib/columbus3/version.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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/
|
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://
|
328
|
+
homepage: http://www.github.com/avillafiorita/columbus3
|
140
329
|
licenses:
|
141
330
|
- MIT
|
142
331
|
metadata: {}
|