subduino 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. data/Readme.textile +48 -2
  2. data/VERSION +1 -1
  3. data/bin/subduino +21 -5
  4. data/duino/Makefile +53 -50
  5. data/duino/duino.pde +271 -5
  6. data/lib/subduino.rb +1 -1
  7. data/lib/subduino/parse.rb +23 -34
  8. data/lib/subduino/parse/bool.rb +13 -0
  9. data/lib/subduino/parse/lux.rb +13 -0
  10. data/lib/subduino/parse/temp.rb +17 -0
  11. data/lib/subduino/scaffold/Makefile +59 -51
  12. data/lib/subduino/store.rb +21 -12
  13. data/subduino.gemspec +88 -2
  14. data/webapp/config.yml +20 -0
  15. data/webapp/lib/app.rb +2 -2
  16. data/webapp/lib/duino.rb +9 -16
  17. data/webapp/public/custom.js +187 -0
  18. data/webapp/public/date_input.css +149 -0
  19. data/webapp/public/facebox.css +83 -0
  20. data/webapp/public/facebox.js +319 -0
  21. data/webapp/public/favicon.ico +0 -0
  22. data/webapp/public/icons/current.png +0 -0
  23. data/webapp/public/icons/day.png +0 -0
  24. data/webapp/public/icons/door-big.png +0 -0
  25. data/webapp/public/icons/favicon.png +0 -0
  26. data/webapp/public/icons/irrigation.png +0 -0
  27. data/webapp/public/icons/lamp-big.png +0 -0
  28. data/webapp/public/icons/lightbulb_off.png +0 -0
  29. data/webapp/public/icons/locked.png +0 -0
  30. data/webapp/public/icons/lux.png +0 -0
  31. data/webapp/public/icons/night.png +0 -0
  32. data/webapp/public/icons/noise.png +0 -0
  33. data/webapp/public/icons/onoff.png +0 -0
  34. data/webapp/public/icons/rain.png +0 -0
  35. data/webapp/public/icons/refrigeration.png +0 -0
  36. data/webapp/public/icons/temp.png +0 -0
  37. data/webapp/public/icons/unlocked.png +0 -0
  38. data/webapp/public/images/ajax-loader.gif +0 -0
  39. data/webapp/public/images/b.png +0 -0
  40. data/webapp/public/images/bendl.gif +0 -0
  41. data/webapp/public/images/bendr.gif +0 -0
  42. data/webapp/public/images/bendsb.gif +0 -0
  43. data/webapp/public/images/bg.jpg +0 -0
  44. data/webapp/public/images/bhead.gif +0 -0
  45. data/webapp/public/images/bheadl.gif +0 -0
  46. data/webapp/public/images/bheadr.gif +0 -0
  47. data/webapp/public/images/bl.png +0 -0
  48. data/webapp/public/images/bnd.gif +0 -0
  49. data/webapp/public/images/br.png +0 -0
  50. data/webapp/public/images/bread.gif +0 -0
  51. data/webapp/public/images/btnb.gif +0 -0
  52. data/webapp/public/images/btnb_.gif +0 -0
  53. data/webapp/public/images/btnm.gif +0 -0
  54. data/webapp/public/images/btnm_.gif +0 -0
  55. data/webapp/public/images/btns.gif +0 -0
  56. data/webapp/public/images/btns_.gif +0 -0
  57. data/webapp/public/images/cal.jpg +0 -0
  58. data/webapp/public/images/close.png +0 -0
  59. data/webapp/public/images/closelabel.gif +0 -0
  60. data/webapp/public/images/error.gif +0 -0
  61. data/webapp/public/images/ft.gif +0 -0
  62. data/webapp/public/images/hdr.gif +0 -0
  63. data/webapp/public/images/hdrl.gif +0 -0
  64. data/webapp/public/images/hdrr.gif +0 -0
  65. data/webapp/public/images/hld.jpg +0 -0
  66. data/webapp/public/images/imgb.gif +0 -0
  67. data/webapp/public/images/imgo.gif +0 -0
  68. data/webapp/public/images/imgt.gif +0 -0
  69. data/webapp/public/images/info.gif +0 -0
  70. data/webapp/public/images/jquery.wysiwyg.gif +0 -0
  71. data/webapp/public/images/li.gif +0 -0
  72. data/webapp/public/images/mbg.png +0 -0
  73. data/webapp/public/images/nsp.gif +0 -0
  74. data/webapp/public/images/phs.gif +0 -0
  75. data/webapp/public/images/sdd.jpg +0 -0
  76. data/webapp/public/images/sdd_.jpg +0 -0
  77. data/webapp/public/images/sidebar.gif +0 -0
  78. data/webapp/public/images/sorta.gif +0 -0
  79. data/webapp/public/images/sortd.gif +0 -0
  80. data/webapp/public/images/srch.gif +0 -0
  81. data/webapp/public/images/srch_.gif +0 -0
  82. data/webapp/public/images/success.gif +0 -0
  83. data/webapp/public/images/thumb1.jpg +0 -0
  84. data/webapp/public/images/thumb2.jpg +0 -0
  85. data/webapp/public/images/thumb3.jpg +0 -0
  86. data/webapp/public/images/tiny.gif +0 -0
  87. data/webapp/public/images/tiny_.gif +0 -0
  88. data/webapp/public/images/tl.png +0 -0
  89. data/webapp/public/images/tr.png +0 -0
  90. data/webapp/public/images/upload.gif +0 -0
  91. data/webapp/public/images/warning.gif +0 -0
  92. data/webapp/public/jquery.img.preload.js +152 -0
  93. data/webapp/public/jquery.sparkline.js +85 -0
  94. data/webapp/public/jquery.tablesorter.min.js +2 -0
  95. data/webapp/public/jquery.visualize.js +452 -0
  96. data/webapp/public/jquery.wysiwyg.css +56 -0
  97. data/webapp/public/style.css +881 -0
  98. data/webapp/public/visualize.css +32 -0
  99. data/webapp/views/index.haml +365 -49
  100. data/webapp/views/layout.haml +78 -7
  101. data/webapp/views/template.haml +676 -0
  102. metadata +89 -3
data/lib/subduino.rb CHANGED
@@ -22,7 +22,7 @@ Thread.current.abort_on_exception = false
22
22
  module Subduino
23
23
  Log = Logger.new("out.log")
24
24
  BAUDS = 115200 #BAUDS = 9600
25
- # BAUDS = [300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200]
25
+ # BAUDS = [300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200]
26
26
  Sensors = [:temp, :lux]
27
27
  # DATA_BITS = 8
28
28
  # DATA_STOP = 1
@@ -2,15 +2,33 @@
2
2
  module Subduino
3
3
  module Parse
4
4
 
5
- def self.work(klass, v)
6
- const_get(klass).new(v)
5
+ def self.work(klass, v, name=nil, id=nil)
6
+ const_get(klass).new(v, name, id)
7
7
  end
8
8
 
9
9
  class DigParser
10
- def initialize(v); @v = v.to_i; end
10
+ def initialize(v,n=nil,id=nil)
11
+ @v = v.to_i
12
+ @id = id
13
+ @name = n
14
+ end
11
15
  def digital?; true; end
12
16
  def to_s; @v.to_s; end
17
+ def name; @name; end
18
+ def type
19
+ self.class.to_s.split("::")[-1].downcase # ugly
20
+ end
13
21
  def raw; @v; end
22
+
23
+ def sparkline(range = [-50, -1])
24
+ Store.redis.lrange "#{@id}_log", *range
25
+ end
26
+
27
+ def graph(period)
28
+ Store.redis
29
+ end
30
+
31
+
14
32
  end
15
33
 
16
34
  class AnaParser < DigParser
@@ -22,40 +40,11 @@ module Subduino
22
40
  end
23
41
  end
24
42
 
25
- class Bool < DigParser
26
- def parse
27
- @v.zero? ? false : true
28
- end
29
-
30
- def to_s
31
- parse ? "ON" : "OFF"
32
- end
33
- end
34
-
35
43
  class Knob < AnaParser
36
44
  end
37
45
 
38
- class Temp < AnaParser
39
- def parse
40
- @v * 0.035
41
- end
42
-
43
- def to_s
44
- "%0.2f°C" % parse
45
- end
46
- end
47
-
48
- class Lux < AnaParser
49
- def parse
50
- (@v * 0.5).to_i
51
- end
52
-
53
- def to_s
54
- "#{parse} L"
55
- end
56
- end
57
-
58
-
59
46
 
60
47
  end
61
48
  end
49
+
50
+ Dir[File.dirname(__FILE__) + "/parse/*.rb"].each { |f| require f}
@@ -0,0 +1,13 @@
1
+ module Subduino
2
+ module Parse
3
+ class Bool < DigParser
4
+ def parse
5
+ @v.zero? ? false : true
6
+ end
7
+
8
+ def to_s
9
+ parse ? "ON" : "OFF"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Subduino
2
+ module Parse
3
+ class Lux < AnaParser
4
+ def parse
5
+ (@v * 0.5).to_i
6
+ end
7
+
8
+ def to_s
9
+ "#{parse} L"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ # -*- coding: utf-8 -*-
2
+ module Subduino
3
+ module Parse
4
+
5
+ class Temp < AnaParser
6
+ def parse
7
+ @v * 0.035
8
+ end
9
+
10
+ def to_s
11
+ "%0.2f°C" % parse
12
+ end
13
+ end
14
+
15
+
16
+ end
17
+ end
@@ -1,62 +1,35 @@
1
- ########################################################################
2
1
  #
3
- # Arduino command line tools Makefile
4
- # System part (i.e. project independent)
5
2
  #
6
- # Copyright (C) 2010 Martin Oldfield <m@mjo.tc>, based on work that is
7
- # Copyright Nicholas Zambetti, David A. Mellis & Hernando Barragan
3
+ # !!SCAFFOLD!! Arduino command line tools Makefile
8
4
  #
9
- # This file is free software; you can redistribute it and/or modify it
10
- # under the terms of the GNU Lesser General Public License as
11
- # published by the Free Software Foundation; either version 2.1 of the
12
- # License, or (at your option) any later version.
13
- #
14
- # Adapted from Arduino 0011 Makefile by M J Oldfield
15
- #
16
- # Original Arduino adaptation by mellis, eighthave, oli.keller
17
- #
18
- # Version 0.1 17.ii.2009 M J Oldfield
19
- #
20
- # 0.2 22.ii.2009 M J Oldfield
21
- # - fixes so that the Makefile actually works!
22
- # - support for uploading via ISP
23
- # - orthogonal choices of using the Arduino for
24
- # tools, libraries and uploading
25
- #
26
- # 0.3 21.v.2010 M J Oldfield
27
- # - added proper license statement
28
- # - added code from Philip Hands to reset
29
- # Arduino prior to upload
30
- #
31
- # 0.4 25.v.2010 M J Oldfield
32
- # - tweaked reset target on Philip Hands' advice
33
5
  #
34
- ########################################################################
35
- #
36
- # STANDARD ARDUINO WORKFLOW
6
+ # Copyright (C) 2010 Martin Oldfield <m@mjo.tc>, based on work that is
7
+ # Copyright Nicholas Zambetti, David A. Mellis & Hernando Barragan
37
8
  #
38
- # Given a normal sketch directory, all you need to do is to create
39
- # a small Makefile which defines a few things, and then includes this one.
9
+ # See footer for copyright/changelog....
10
+ #
11
+
40
12
  #
41
- # For example:
13
+ # CONFIGURATION [EDIT ME]
42
14
  #
15
+ TARGET = !!SCAFFOLD!!
43
16
  ARDUINO_DIR = /usr/share/arduino
44
- #
45
- TARGET = DUINO
46
17
  ARDUINO_LIBS = Messenger
47
18
 
19
+ # Board
48
20
  MCU = atmega328p
49
21
  F_CPU = 16000000
50
- ARDUINO_PORT = /dev/ttyUSB* #cu.usb*
22
+ ARDUINO_PORT = /dev/ttyUSB*
51
23
 
52
24
  # Linux
53
25
  AVR_TOOLS_PATH = /usr/bin
54
26
  AVRDUDE_CONF = /usr/share/arduino/hardware/tools/avrdude.conf
55
27
 
56
- # INC_DIRS = ./vendor/Messenger
28
+ # AVRDUDE
29
+ AVRDUDE_ARD_PROGRAMMER = stk500v1
30
+ AVRDUDE_ARD_BAUDRATE = 57600
57
31
 
58
- #
59
- # include /usr/local/share/Arduino.mk
32
+ # INC_DIRS = ./vendor/Messenger
60
33
  #
61
34
  # Hopefully these will be self-explanatory but in case they're not:
62
35
  #
@@ -70,6 +43,14 @@ AVRDUDE_CONF = /usr/share/arduino/hardware/tools/avrdude.conf
70
43
  # ARDUINO_PORT - The port where the Arduino can be found (only needed
71
44
  # when uploading
72
45
  #
46
+ # ARDUINO WITH OTHER TOOLS
47
+ #
48
+ # If the tools aren't in the Arduino distribution, then you need to
49
+ # specify their location:
50
+ #
51
+ # AVR_TOOLS_PATH = /usr/bin
52
+ # AVRDUDE_CONF = /etc/avrdude/avrdude.conf
53
+
73
54
  # Once this file has been created the typical workflow is just
74
55
  #
75
56
  # $ make upload
@@ -90,16 +71,6 @@ AVRDUDE_CONF = /usr/share/arduino/hardware/tools/avrdude.conf
90
71
  #
91
72
  ########################################################################
92
73
  #
93
- # ARDUINO WITH OTHER TOOLS
94
- #
95
- # If the tools aren't in the Arduino distribution, then you need to
96
- # specify their location:
97
- #
98
- # AVR_TOOLS_PATH = /usr/bin
99
- # AVRDUDE_CONF = /etc/avrdude/avrdude.conf
100
- #
101
- ########################################################################
102
- #
103
74
  # ARDUINO WITH ISP
104
75
  #
105
76
  # You need to specify some details of your ISP programmer and might
@@ -399,3 +370,40 @@ depends: $(DEPS)
399
370
  .PHONY: all clean depends upload raw_upload reset
400
371
 
401
372
  include $(DEP_FILE)
373
+
374
+ ########################################################################
375
+ #
376
+ # This makefile is from:
377
+ # http://mjo.tc/atelier/2009/02/arduino-cli.html
378
+ #
379
+ # With some help:
380
+ #
381
+ # http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1265576847
382
+ # http://johanneshoff.com/arduino-command-line/Makefile
383
+ #
384
+ # This file is free software; you can redistribute it and/or modify it
385
+ # under the terms of the GNU Lesser General Public License as
386
+ # published by the Free Software Foundation; either version 2.1 of the
387
+ # License, or (at your option) any later version.
388
+ #
389
+ # Adapted from Arduino 0011 Makefile by M J Oldfield
390
+ #
391
+ # Original Arduino adaptation by mellis, eighthave, oli.keller
392
+ #
393
+ # Version 0.1 17.ii.2009 M J Oldfield
394
+ #
395
+ # 0.2 22.ii.2009 M J Oldfield
396
+ # - fixes so that the Makefile actually works!
397
+ # - support for uploading via ISP
398
+ # - orthogonal choices of using the Arduino for
399
+ # tools, libraries and uploading
400
+ #
401
+ # 0.3 21.v.2010 M J Oldfield
402
+ # - added proper license statement
403
+ # - added code from Philip Hands to reset
404
+ # Arduino prior to upload
405
+ #
406
+ # 0.4 25.v.2010 M J Oldfield
407
+ # - tweaked reset target on Philip Hands' advice
408
+ #
409
+ ########################################################################
@@ -13,35 +13,44 @@ module Subduino
13
13
  @redis ||= Redis.new(:timeout => 0) rescue false
14
14
  end
15
15
 
16
-
17
16
  def read(key)
18
17
  redis.get key
19
18
  end
20
19
 
21
- def write(key, val=nil)
20
+ def timestamp
21
+ Time.now.to_i.to_s
22
+ end
23
+
24
+ def write(k, v, stamp = false)
25
+ return unless redis #.connected?
26
+ stamp ? redis.rpush("#{k}_log", "#{timestamp}:#{v}") : redis.set(k, v)
27
+ end
28
+
29
+
30
+ def add_to_store(key, val=nil)
22
31
  if val
23
- add_to_store key, val
32
+ write key, val
24
33
  else
25
34
  key.each do |k,v|
26
- add_to_store k, v
35
+ write k, v
27
36
  end
28
37
  end
29
38
  end
30
39
 
31
- def add_to_store(k, v)
32
- return unless redis.connected?
33
- redis.set k, v
34
- redis.rpush "#{k}_log", v
35
- end
36
-
37
- def add_csv_to_store(csv)
40
+ def add_csv_to_store(csv, stamp = false)
38
41
  Log.info "[STORE] CSV #{Time.now.to_i}"
39
42
  csv.split(",").each do |d|
40
43
  comm, value = d.split(":")
41
- write(comm, value)
44
+ write(comm, value, stamp)
42
45
  end
43
46
  end
44
47
 
48
+ # SORT key [BY pattern] [LIMIT start count] [GET pattern]
49
+ # [ASC|DESC] [ALPHA] [STORE dstkey]
50
+ def read_hist(key, period, offset = 0, max = 100)
51
+ redis.sort key, { :order => 'desc', :limit => [offset, max] }
52
+ end
53
+
45
54
  def count
46
55
  redis.dbsize
47
56
  end
data/subduino.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{subduino}
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marcos Piccinini"]
12
- s.date = %q{2010-09-11}
12
+ s.date = %q{2010-09-18}
13
13
  s.description = %q{Interface, compile, upload, play with arduino/ruby}
14
14
  s.email = %q{x@nofxx.com}
15
15
  s.executables = ["subduino-cli", "subduino"]
@@ -31,6 +31,9 @@ Gem::Specification.new do |s|
31
31
  "lib/subduino/ard_ps.rb",
32
32
  "lib/subduino/arduino.rb",
33
33
  "lib/subduino/parse.rb",
34
+ "lib/subduino/parse/bool.rb",
35
+ "lib/subduino/parse/lux.rb",
36
+ "lib/subduino/parse/temp.rb",
34
37
  "lib/subduino/scaffold/Makefile",
35
38
  "lib/subduino/scaffold/Makefile2",
36
39
  "lib/subduino/scaffold/generator.rb",
@@ -51,12 +54,18 @@ Gem::Specification.new do |s|
51
54
  "webapp/Rakefile",
52
55
  "webapp/Readme.textile",
53
56
  "webapp/VERSION",
57
+ "webapp/config.yml",
54
58
  "webapp/lib/app.rb",
55
59
  "webapp/lib/duino.rb",
56
60
  "webapp/lib/environment.rb",
57
61
  "webapp/lib/messenger.rb",
58
62
  "webapp/public/app.css",
59
63
  "webapp/public/app.js",
64
+ "webapp/public/custom.js",
65
+ "webapp/public/date_input.css",
66
+ "webapp/public/facebox.css",
67
+ "webapp/public/facebox.js",
68
+ "webapp/public/favicon.ico",
60
69
  "webapp/public/faye.js",
61
70
  "webapp/public/icons/alarm-clock-blue.png",
62
71
  "webapp/public/icons/alarm-clock.png",
@@ -87,9 +96,12 @@ Gem::Specification.new do |s|
87
96
  "webapp/public/icons/cpus.png",
88
97
  "webapp/public/icons/credit-card.png",
89
98
  "webapp/public/icons/cross-small.png",
99
+ "webapp/public/icons/current.png",
90
100
  "webapp/public/icons/dashboard.png",
91
101
  "webapp/public/icons/database.png",
92
102
  "webapp/public/icons/databases.png",
103
+ "webapp/public/icons/day.png",
104
+ "webapp/public/icons/door-big.png",
93
105
  "webapp/public/icons/door-open-in.png",
94
106
  "webapp/public/icons/door-open-out.png",
95
107
  "webapp/public/icons/door-open.png",
@@ -101,13 +113,16 @@ Gem::Specification.new do |s|
101
113
  "webapp/public/icons/eye-disable.png",
102
114
  "webapp/public/icons/eye.png",
103
115
  "webapp/public/icons/false.png",
116
+ "webapp/public/icons/favicon.png",
104
117
  "webapp/public/icons/gear-small.png",
105
118
  "webapp/public/icons/gear.png",
106
119
  "webapp/public/icons/groups.png",
107
120
  "webapp/public/icons/heart.png",
108
121
  "webapp/public/icons/heart_empty.png",
109
122
  "webapp/public/icons/info.png",
123
+ "webapp/public/icons/irrigation.png",
110
124
  "webapp/public/icons/key.png",
125
+ "webapp/public/icons/lamp-big.png",
111
126
  "webapp/public/icons/lightbulb.png",
112
127
  "webapp/public/icons/lightbulb_off.png",
113
128
  "webapp/public/icons/lightning-disable.png",
@@ -115,6 +130,8 @@ Gem::Specification.new do |s|
115
130
  "webapp/public/icons/lightning.png",
116
131
  "webapp/public/icons/lock-unlock.png",
117
132
  "webapp/public/icons/lock.png",
133
+ "webapp/public/icons/locked.png",
134
+ "webapp/public/icons/lux.png",
118
135
  "webapp/public/icons/marker.png",
119
136
  "webapp/public/icons/media-player-phone.png",
120
137
  "webapp/public/icons/megaphone.png",
@@ -122,12 +139,17 @@ Gem::Specification.new do |s|
122
139
  "webapp/public/icons/microphone.png",
123
140
  "webapp/public/icons/monitor.png",
124
141
  "webapp/public/icons/navigation.png",
142
+ "webapp/public/icons/night.png",
143
+ "webapp/public/icons/noise.png",
125
144
  "webapp/public/icons/off.png",
126
145
  "webapp/public/icons/on.png",
146
+ "webapp/public/icons/onoff.png",
127
147
  "webapp/public/icons/pin.png",
128
148
  "webapp/public/icons/plug--exclamation.png",
129
149
  "webapp/public/icons/plug-disable.png",
130
150
  "webapp/public/icons/plug.png",
151
+ "webapp/public/icons/rain.png",
152
+ "webapp/public/icons/refrigeration.png",
131
153
  "webapp/public/icons/restart.png",
132
154
  "webapp/public/icons/ruby.png",
133
155
  "webapp/public/icons/server.png",
@@ -145,6 +167,7 @@ Gem::Specification.new do |s|
145
167
  "webapp/public/icons/target.png",
146
168
  "webapp/public/icons/television-off.png",
147
169
  "webapp/public/icons/television.png",
170
+ "webapp/public/icons/temp.png",
148
171
  "webapp/public/icons/terminal.png",
149
172
  "webapp/public/icons/tick-small.png",
150
173
  "webapp/public/icons/traffic-light-off.png",
@@ -152,6 +175,7 @@ Gem::Specification.new do |s|
152
175
  "webapp/public/icons/traffic.png",
153
176
  "webapp/public/icons/true.png",
154
177
  "webapp/public/icons/umbrella.png",
178
+ "webapp/public/icons/unlocked.png",
155
179
  "webapp/public/icons/unmonitor.png",
156
180
  "webapp/public/icons/unmonitored.png",
157
181
  "webapp/public/icons/users.png",
@@ -170,6 +194,60 @@ Gem::Specification.new do |s|
170
194
  "webapp/public/icons/weather_sun.png",
171
195
  "webapp/public/icons/wrench-screwdriver.png",
172
196
  "webapp/public/icons/wrench.png",
197
+ "webapp/public/images/ajax-loader.gif",
198
+ "webapp/public/images/b.png",
199
+ "webapp/public/images/bendl.gif",
200
+ "webapp/public/images/bendr.gif",
201
+ "webapp/public/images/bendsb.gif",
202
+ "webapp/public/images/bg.jpg",
203
+ "webapp/public/images/bhead.gif",
204
+ "webapp/public/images/bheadl.gif",
205
+ "webapp/public/images/bheadr.gif",
206
+ "webapp/public/images/bl.png",
207
+ "webapp/public/images/bnd.gif",
208
+ "webapp/public/images/br.png",
209
+ "webapp/public/images/bread.gif",
210
+ "webapp/public/images/btnb.gif",
211
+ "webapp/public/images/btnb_.gif",
212
+ "webapp/public/images/btnm.gif",
213
+ "webapp/public/images/btnm_.gif",
214
+ "webapp/public/images/btns.gif",
215
+ "webapp/public/images/btns_.gif",
216
+ "webapp/public/images/cal.jpg",
217
+ "webapp/public/images/close.png",
218
+ "webapp/public/images/closelabel.gif",
219
+ "webapp/public/images/error.gif",
220
+ "webapp/public/images/ft.gif",
221
+ "webapp/public/images/hdr.gif",
222
+ "webapp/public/images/hdrl.gif",
223
+ "webapp/public/images/hdrr.gif",
224
+ "webapp/public/images/hld.jpg",
225
+ "webapp/public/images/imgb.gif",
226
+ "webapp/public/images/imgo.gif",
227
+ "webapp/public/images/imgt.gif",
228
+ "webapp/public/images/info.gif",
229
+ "webapp/public/images/jquery.wysiwyg.gif",
230
+ "webapp/public/images/li.gif",
231
+ "webapp/public/images/mbg.png",
232
+ "webapp/public/images/nsp.gif",
233
+ "webapp/public/images/phs.gif",
234
+ "webapp/public/images/sdd.jpg",
235
+ "webapp/public/images/sdd_.jpg",
236
+ "webapp/public/images/sidebar.gif",
237
+ "webapp/public/images/sorta.gif",
238
+ "webapp/public/images/sortd.gif",
239
+ "webapp/public/images/srch.gif",
240
+ "webapp/public/images/srch_.gif",
241
+ "webapp/public/images/success.gif",
242
+ "webapp/public/images/thumb1.jpg",
243
+ "webapp/public/images/thumb2.jpg",
244
+ "webapp/public/images/thumb3.jpg",
245
+ "webapp/public/images/tiny.gif",
246
+ "webapp/public/images/tiny_.gif",
247
+ "webapp/public/images/tl.png",
248
+ "webapp/public/images/tr.png",
249
+ "webapp/public/images/upload.gif",
250
+ "webapp/public/images/warning.gif",
173
251
  "webapp/public/iui/backButton.png",
174
252
  "webapp/public/iui/blueButton.png",
175
253
  "webapp/public/iui/cancel.png",
@@ -194,11 +272,18 @@ Gem::Specification.new do |s|
194
272
  "webapp/public/iui/toolbar.png",
195
273
  "webapp/public/iui/whiteButton.png",
196
274
  "webapp/public/iui/yellowButton.png",
275
+ "webapp/public/jquery.img.preload.js",
197
276
  "webapp/public/jquery.js",
277
+ "webapp/public/jquery.sparkline.js",
278
+ "webapp/public/jquery.tablesorter.min.js",
279
+ "webapp/public/jquery.visualize.js",
280
+ "webapp/public/jquery.wysiwyg.css",
198
281
  "webapp/public/layout.css",
199
282
  "webapp/public/right.js",
200
283
  "webapp/public/rt.js",
201
284
  "webapp/public/sparkline.js",
285
+ "webapp/public/style.css",
286
+ "webapp/public/visualize.css",
202
287
  "webapp/spec/duino_spec.rb",
203
288
  "webapp/spec/spec_helper.rb",
204
289
  "webapp/views/command.haml",
@@ -207,6 +292,7 @@ Gem::Specification.new do |s|
207
292
  "webapp/views/layout.haml",
208
293
  "webapp/views/mobile.haml",
209
294
  "webapp/views/switch.haml",
295
+ "webapp/views/template.haml",
210
296
  "webapp/views/top.haml",
211
297
  "webapp/views/watch.haml"
212
298
  ]