subduino 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
  ]