acts_as_dashboard 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +54 -0
  5. data/Rakefile +23 -0
  6. data/VERSION +1 -0
  7. data/acts_as_dashboard.gemspec +166 -0
  8. data/generators/dashboard/USAGE +23 -0
  9. data/generators/dashboard/dashboard_generator.rb +105 -0
  10. data/generators/dashboard/templates/controller.erb +39 -0
  11. data/generators/dashboard/templates/dashboard.css +66 -0
  12. data/generators/dashboard/templates/dashboard.js +305 -0
  13. data/generators/dashboard/templates/jqplot-0.9.7/jquery.jqplot.min.js +14 -0
  14. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.barRenderer.js +404 -0
  15. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.barRenderer.min.js +14 -0
  16. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisLabelRenderer.js +200 -0
  17. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisLabelRenderer.min.js +14 -0
  18. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisTickRenderer.js +232 -0
  19. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisTickRenderer.min.js +14 -0
  20. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasTextRenderer.js +408 -0
  21. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasTextRenderer.min.js +14 -0
  22. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.categoryAxisRenderer.js +238 -0
  23. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.categoryAxisRenderer.min.js +14 -0
  24. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.cursor.js +812 -0
  25. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.cursor.min.js +14 -0
  26. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dateAxisRenderer.js +313 -0
  27. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dateAxisRenderer.min.js +14 -0
  28. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dragable.js +203 -0
  29. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dragable.min.js +14 -0
  30. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.highlighter.js +359 -0
  31. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.highlighter.min.js +14 -0
  32. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.logAxisRenderer.js +434 -0
  33. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.logAxisRenderer.min.js +14 -0
  34. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoAxisRenderer.js +595 -0
  35. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoAxisRenderer.min.js +14 -0
  36. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoRenderer.js +308 -0
  37. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoRenderer.min.js +14 -0
  38. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.ohlcRenderer.js +343 -0
  39. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.ohlcRenderer.min.js +14 -0
  40. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pieRenderer.js +333 -0
  41. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pieRenderer.min.js +14 -0
  42. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.js +307 -0
  43. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.js.orig +273 -0
  44. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.min.js +14 -0
  45. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.trendline.js +208 -0
  46. data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.trendline.min.js +14 -0
  47. data/generators/dashboard/templates/jquery.jqplot.min.css +1 -0
  48. data/generators/dashboard/templates/js.class-2.1.4/CHANGELOG +269 -0
  49. data/generators/dashboard/templates/js.class-2.1.4/MIT-LICENSE +30 -0
  50. data/generators/dashboard/templates/js.class-2.1.4/README +30 -0
  51. data/generators/dashboard/templates/js.class-2.1.4/min/command.js +1 -0
  52. data/generators/dashboard/templates/js.class-2.1.4/min/comparable.js +1 -0
  53. data/generators/dashboard/templates/js.class-2.1.4/min/constant_scope.js +1 -0
  54. data/generators/dashboard/templates/js.class-2.1.4/min/core.js +1 -0
  55. data/generators/dashboard/templates/js.class-2.1.4/min/decorator.js +1 -0
  56. data/generators/dashboard/templates/js.class-2.1.4/min/enumerable.js +1 -0
  57. data/generators/dashboard/templates/js.class-2.1.4/min/forwardable.js +1 -0
  58. data/generators/dashboard/templates/js.class-2.1.4/min/hash.js +1 -0
  59. data/generators/dashboard/templates/js.class-2.1.4/min/linked_list.js +1 -0
  60. data/generators/dashboard/templates/js.class-2.1.4/min/loader.js +1 -0
  61. data/generators/dashboard/templates/js.class-2.1.4/min/method_chain.js +1 -0
  62. data/generators/dashboard/templates/js.class-2.1.4/min/observable.js +1 -0
  63. data/generators/dashboard/templates/js.class-2.1.4/min/package.js +1 -0
  64. data/generators/dashboard/templates/js.class-2.1.4/min/proxy.js +1 -0
  65. data/generators/dashboard/templates/js.class-2.1.4/min/ruby.js +1 -0
  66. data/generators/dashboard/templates/js.class-2.1.4/min/set.js +1 -0
  67. data/generators/dashboard/templates/js.class-2.1.4/min/stack_trace.js +1 -0
  68. data/generators/dashboard/templates/js.class-2.1.4/min/state.js +1 -0
  69. data/generators/dashboard/templates/js.class-2.1.4/min/stdlib.js +16 -0
  70. data/generators/dashboard/templates/js.class-2.1.4/src/command.js +93 -0
  71. data/generators/dashboard/templates/js.class-2.1.4/src/comparable.js +37 -0
  72. data/generators/dashboard/templates/js.class-2.1.4/src/constant_scope.js +48 -0
  73. data/generators/dashboard/templates/js.class-2.1.4/src/core.js +1060 -0
  74. data/generators/dashboard/templates/js.class-2.1.4/src/decorator.js +50 -0
  75. data/generators/dashboard/templates/js.class-2.1.4/src/enumerable.js +505 -0
  76. data/generators/dashboard/templates/js.class-2.1.4/src/forwardable.js +22 -0
  77. data/generators/dashboard/templates/js.class-2.1.4/src/hash.js +334 -0
  78. data/generators/dashboard/templates/js.class-2.1.4/src/linked_list.js +114 -0
  79. data/generators/dashboard/templates/js.class-2.1.4/src/loader.js +458 -0
  80. data/generators/dashboard/templates/js.class-2.1.4/src/method_chain.js +172 -0
  81. data/generators/dashboard/templates/js.class-2.1.4/src/observable.js +55 -0
  82. data/generators/dashboard/templates/js.class-2.1.4/src/package.js +377 -0
  83. data/generators/dashboard/templates/js.class-2.1.4/src/proxy.js +58 -0
  84. data/generators/dashboard/templates/js.class-2.1.4/src/ruby.js +44 -0
  85. data/generators/dashboard/templates/js.class-2.1.4/src/set.js +332 -0
  86. data/generators/dashboard/templates/js.class-2.1.4/src/stack_trace.js +151 -0
  87. data/generators/dashboard/templates/js.class-2.1.4/src/state.js +95 -0
  88. data/generators/dashboard/templates/js.class-2.1.4/src/stdlib.js +2517 -0
  89. data/generators/dashboard/templates/show.html.erb +67 -0
  90. data/lib/acts_as_dashboard/app/views/dashboards/show.html.erb +67 -0
  91. data/lib/acts_as_dashboard/class_methods.rb +58 -0
  92. data/lib/acts_as_dashboard/config.rb +25 -0
  93. data/lib/acts_as_dashboard/instance_methods.rb +32 -0
  94. data/lib/acts_as_dashboard/line_graph_widget.rb +68 -0
  95. data/lib/acts_as_dashboard/public/javascripts/dashboard.js +305 -0
  96. data/lib/acts_as_dashboard/public/stylesheets/dashboard.css +66 -0
  97. data/lib/acts_as_dashboard/short_messages_widget.rb +25 -0
  98. data/lib/acts_as_dashboard/widget.rb +55 -0
  99. data/lib/acts_as_dashboard.rb +17 -0
  100. data/spec/acts_as_dashboard/class_method_specs.rb +188 -0
  101. data/spec/acts_as_dashboard/config_spec.rb +57 -0
  102. data/spec/acts_as_dashboard/instance_methods_spec.rb +134 -0
  103. data/spec/acts_as_dashboard/line_graph_widget_spec.rb +165 -0
  104. data/spec/acts_as_dashboard/short_messages_widget_spec.rb +69 -0
  105. data/spec/acts_as_dashboard/widget_spec.rb +6 -0
  106. data/spec/acts_as_dashboard_spec.rb +15 -0
  107. data/spec/shared/widget_behaviours.rb +171 -0
  108. data/spec/spec.opts +1 -0
  109. data/spec/spec_helper.rb +10 -0
  110. data/tasks/install.rake +8 -0
  111. data/tasks/install_javascript.rake +7 -0
  112. data/tasks/install_stylesheets.rake +7 -0
  113. metadata +209 -0
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Nick Hoffman
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,54 @@
1
+ = ActsAsDashboard
2
+
3
+ == Description
4
+
5
+ ActsAsDashboard makes it easy to create dashboards in Rails apps.
6
+
7
+
8
+ == Usage
9
+
10
+ 1. Install the gem.
11
+
12
+ 2. Run the generator. Eg:
13
+ script/generate dashboard
14
+
15
+ 3. Fire up your web server. Eg:
16
+ $ script/server
17
+
18
+ 4. Browse to http://localhost:3000/dashboard and watch the magic!
19
+
20
+ 5. Customize the dashboard's widgets in app/controllers/dashboards_controller.rb .
21
+
22
+ 6. Reload the dashboard in your web browser.
23
+
24
+
25
+ == To Do
26
+
27
+ * Make LineGraphWidget#line_colours accept a string or array.
28
+ * Decide if routes should added to config/routes.rb , or loaded by ActsAsDashboard using ActionController::Routing::RouteSet#add_route .
29
+ * Make the "show" view template sexy.
30
+ * Add more widget types.
31
+ * If getting a new value for a widget fails, keep the last value, and mark the widget as failing.
32
+ * Set a default value for the Widget class' "update_interval" attribute.
33
+ * Generate the value for the Widget class' "name" attribute automatically so that the user needn't specify it.
34
+
35
+
36
+ == Bugs
37
+
38
+ * At the moment, if there's a single-quote (') in a widget's name or title, the JSON that is used to build the dashboard is invalid. This breaks all of the JavaScript functionality in the dashboard. This needs to be fixed in AAD::InstanceMethods#show .
39
+
40
+
41
+ == Note On Patches/Pull Requests
42
+
43
+ * Fork the project.
44
+ * Make your feature addition or bug fix.
45
+ * Add RSpec specs for it. This is important so I don't break it in a
46
+ future version unintentionally.
47
+ * Commit, do not mess with rakefile, version, or history.
48
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
49
+ * Send me a pull request. Bonus points for topic branches.
50
+
51
+
52
+ == Copyright
53
+
54
+ Copyright (c) 2010 Nick Hoffman. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gemspec|
7
+ gemspec.name = "acts_as_dashboard"
8
+ gemspec.summary = %Q{Create dashboards in Rails apps easily.}
9
+ gemspec.description = %Q{ActsAsDashboard makes it easy to create dashboards in Rails apps. Very little configuration is required. Read the docs to get started.}
10
+ gemspec.email = "nick@deadorange.com"
11
+ gemspec.homepage = "http://github.com/nickhoffman/acts_as_dashboard"
12
+ gemspec.authors = ["Nick Hoffman"]
13
+
14
+ gemspec.add_development_dependency "rspec", ">= 1.2.9"
15
+ gemspec.add_development_dependency "rspec-rails", ">= 1.3.2"
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+
19
+ Jeweler::GemcutterTasks.new
20
+ rescue LoadError
21
+ puts "Jeweler (or a dependency) is not available. Install it with: gem install jeweler"
22
+ end
23
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,166 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{acts_as_dashboard}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Nick Hoffman"]
12
+ s.date = %q{2010-08-01}
13
+ s.description = %q{ActsAsDashboard makes it easy to create dashboards in Rails apps. Very little configuration is required. Read the docs to get started.}
14
+ s.email = %q{nick@deadorange.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "acts_as_dashboard.gemspec",
27
+ "generators/dashboard/USAGE",
28
+ "generators/dashboard/dashboard_generator.rb",
29
+ "generators/dashboard/templates/controller.erb",
30
+ "generators/dashboard/templates/dashboard.css",
31
+ "generators/dashboard/templates/dashboard.js",
32
+ "generators/dashboard/templates/jqplot-0.9.7/jquery.jqplot.min.js",
33
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.barRenderer.js",
34
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.barRenderer.min.js",
35
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisLabelRenderer.js",
36
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisLabelRenderer.min.js",
37
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisTickRenderer.js",
38
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisTickRenderer.min.js",
39
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasTextRenderer.js",
40
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasTextRenderer.min.js",
41
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.categoryAxisRenderer.js",
42
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.categoryAxisRenderer.min.js",
43
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.cursor.js",
44
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.cursor.min.js",
45
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dateAxisRenderer.js",
46
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dateAxisRenderer.min.js",
47
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dragable.js",
48
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dragable.min.js",
49
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.highlighter.js",
50
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.highlighter.min.js",
51
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.logAxisRenderer.js",
52
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.logAxisRenderer.min.js",
53
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoAxisRenderer.js",
54
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoAxisRenderer.min.js",
55
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoRenderer.js",
56
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoRenderer.min.js",
57
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.ohlcRenderer.js",
58
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.ohlcRenderer.min.js",
59
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pieRenderer.js",
60
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pieRenderer.min.js",
61
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.js",
62
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.js.orig",
63
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.min.js",
64
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.trendline.js",
65
+ "generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.trendline.min.js",
66
+ "generators/dashboard/templates/jquery.jqplot.min.css",
67
+ "generators/dashboard/templates/js.class-2.1.4/CHANGELOG",
68
+ "generators/dashboard/templates/js.class-2.1.4/MIT-LICENSE",
69
+ "generators/dashboard/templates/js.class-2.1.4/README",
70
+ "generators/dashboard/templates/js.class-2.1.4/min/command.js",
71
+ "generators/dashboard/templates/js.class-2.1.4/min/comparable.js",
72
+ "generators/dashboard/templates/js.class-2.1.4/min/constant_scope.js",
73
+ "generators/dashboard/templates/js.class-2.1.4/min/core.js",
74
+ "generators/dashboard/templates/js.class-2.1.4/min/decorator.js",
75
+ "generators/dashboard/templates/js.class-2.1.4/min/enumerable.js",
76
+ "generators/dashboard/templates/js.class-2.1.4/min/forwardable.js",
77
+ "generators/dashboard/templates/js.class-2.1.4/min/hash.js",
78
+ "generators/dashboard/templates/js.class-2.1.4/min/linked_list.js",
79
+ "generators/dashboard/templates/js.class-2.1.4/min/loader.js",
80
+ "generators/dashboard/templates/js.class-2.1.4/min/method_chain.js",
81
+ "generators/dashboard/templates/js.class-2.1.4/min/observable.js",
82
+ "generators/dashboard/templates/js.class-2.1.4/min/package.js",
83
+ "generators/dashboard/templates/js.class-2.1.4/min/proxy.js",
84
+ "generators/dashboard/templates/js.class-2.1.4/min/ruby.js",
85
+ "generators/dashboard/templates/js.class-2.1.4/min/set.js",
86
+ "generators/dashboard/templates/js.class-2.1.4/min/stack_trace.js",
87
+ "generators/dashboard/templates/js.class-2.1.4/min/state.js",
88
+ "generators/dashboard/templates/js.class-2.1.4/min/stdlib.js",
89
+ "generators/dashboard/templates/js.class-2.1.4/src/command.js",
90
+ "generators/dashboard/templates/js.class-2.1.4/src/comparable.js",
91
+ "generators/dashboard/templates/js.class-2.1.4/src/constant_scope.js",
92
+ "generators/dashboard/templates/js.class-2.1.4/src/core.js",
93
+ "generators/dashboard/templates/js.class-2.1.4/src/decorator.js",
94
+ "generators/dashboard/templates/js.class-2.1.4/src/enumerable.js",
95
+ "generators/dashboard/templates/js.class-2.1.4/src/forwardable.js",
96
+ "generators/dashboard/templates/js.class-2.1.4/src/hash.js",
97
+ "generators/dashboard/templates/js.class-2.1.4/src/linked_list.js",
98
+ "generators/dashboard/templates/js.class-2.1.4/src/loader.js",
99
+ "generators/dashboard/templates/js.class-2.1.4/src/method_chain.js",
100
+ "generators/dashboard/templates/js.class-2.1.4/src/observable.js",
101
+ "generators/dashboard/templates/js.class-2.1.4/src/package.js",
102
+ "generators/dashboard/templates/js.class-2.1.4/src/proxy.js",
103
+ "generators/dashboard/templates/js.class-2.1.4/src/ruby.js",
104
+ "generators/dashboard/templates/js.class-2.1.4/src/set.js",
105
+ "generators/dashboard/templates/js.class-2.1.4/src/stack_trace.js",
106
+ "generators/dashboard/templates/js.class-2.1.4/src/state.js",
107
+ "generators/dashboard/templates/js.class-2.1.4/src/stdlib.js",
108
+ "generators/dashboard/templates/show.html.erb",
109
+ "lib/acts_as_dashboard.rb",
110
+ "lib/acts_as_dashboard/app/views/dashboards/show.html.erb",
111
+ "lib/acts_as_dashboard/class_methods.rb",
112
+ "lib/acts_as_dashboard/config.rb",
113
+ "lib/acts_as_dashboard/instance_methods.rb",
114
+ "lib/acts_as_dashboard/line_graph_widget.rb",
115
+ "lib/acts_as_dashboard/public/javascripts/dashboard.js",
116
+ "lib/acts_as_dashboard/public/stylesheets/dashboard.css",
117
+ "lib/acts_as_dashboard/short_messages_widget.rb",
118
+ "lib/acts_as_dashboard/widget.rb",
119
+ "spec/acts_as_dashboard/class_method_specs.rb",
120
+ "spec/acts_as_dashboard/config_spec.rb",
121
+ "spec/acts_as_dashboard/instance_methods_spec.rb",
122
+ "spec/acts_as_dashboard/line_graph_widget_spec.rb",
123
+ "spec/acts_as_dashboard/short_messages_widget_spec.rb",
124
+ "spec/acts_as_dashboard/widget_spec.rb",
125
+ "spec/acts_as_dashboard_spec.rb",
126
+ "spec/shared/widget_behaviours.rb",
127
+ "spec/spec.opts",
128
+ "spec/spec_helper.rb",
129
+ "tasks/install.rake",
130
+ "tasks/install_javascript.rake",
131
+ "tasks/install_stylesheets.rake"
132
+ ]
133
+ s.homepage = %q{http://github.com/nickhoffman/acts_as_dashboard}
134
+ s.rdoc_options = ["--charset=UTF-8"]
135
+ s.require_paths = ["lib"]
136
+ s.rubygems_version = %q{1.3.6}
137
+ s.summary = %q{Create dashboards in Rails apps easily.}
138
+ s.test_files = [
139
+ "spec/acts_as_dashboard_spec.rb",
140
+ "spec/spec_helper.rb",
141
+ "spec/shared/widget_behaviours.rb",
142
+ "spec/acts_as_dashboard/line_graph_widget_spec.rb",
143
+ "spec/acts_as_dashboard/config_spec.rb",
144
+ "spec/acts_as_dashboard/class_method_specs.rb",
145
+ "spec/acts_as_dashboard/short_messages_widget_spec.rb",
146
+ "spec/acts_as_dashboard/instance_methods_spec.rb",
147
+ "spec/acts_as_dashboard/widget_spec.rb"
148
+ ]
149
+
150
+ if s.respond_to? :specification_version then
151
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
152
+ s.specification_version = 3
153
+
154
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
155
+ s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
156
+ s.add_development_dependency(%q<rspec-rails>, [">= 1.3.2"])
157
+ else
158
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
159
+ s.add_dependency(%q<rspec-rails>, [">= 1.3.2"])
160
+ end
161
+ else
162
+ s.add_dependency(%q<rspec>, [">= 1.2.9"])
163
+ s.add_dependency(%q<rspec-rails>, [">= 1.3.2"])
164
+ end
165
+ end
166
+
@@ -0,0 +1,23 @@
1
+ Description:
2
+ The dashboard generator creates the files and configuration for a "dashboard"
3
+ powered by ActsAsDashboard.
4
+
5
+ The generator takes an optional controller name as its argument. The controller
6
+ name may be given in CamelCase or snake_case. It should not be suffixed with
7
+ anything. For example, if the controller is to be named "StatsController",
8
+ specify "Stats" rather than "StatsController".
9
+
10
+ If the optional controller name is not provided, it will default to "Dashboard",
11
+ and a controller named DashboardsController will be created.
12
+
13
+ Example:
14
+ script/generate dashboard
15
+
16
+ This will create a "dashboard" named "dashboard" that can be accessed at
17
+ http://localhost:3000/dashboard .
18
+
19
+ Example:
20
+ script/generate dashboard overview
21
+
22
+ This will create a "dashboard" named "overview" that can be accessed at
23
+ http://localhost:3000/overview .
@@ -0,0 +1,105 @@
1
+ class DashboardGenerator < Rails::Generator::Base
2
+ attr_reader :base_name, :controller_name, :controller_filename
3
+
4
+ @@default_name = 'dashboard'
5
+ @@show_view_file = 'show.html.erb'
6
+ @@dashboard_js_file = 'dashboard.js'
7
+ @@dashboard_css_file = 'dashboard.css'
8
+ @@jqplot_css_file = 'jquery.jqplot.min.css'
9
+ @@jqplot_js_dir = 'jqplot-0.9.7'
10
+ @@jsclass_js_dir = 'js.class-2.1.4'
11
+ @@public_js_dir = File.join Rails.public_path, 'javascripts/'
12
+
13
+ def manifest
14
+ build_names args[0]
15
+ build_routes @controller_name
16
+
17
+ record do |m|
18
+ m.directory File.join('app', 'views', @base_name)
19
+
20
+ m.file @@show_view_file, File.join('app', 'views', @base_name, @@show_view_file)
21
+ m.file @@dashboard_js_file, File.join('public', 'javascripts', @@dashboard_js_file )
22
+ m.file @@dashboard_css_file, File.join('public', 'stylesheets', @@dashboard_css_file )
23
+ m.file @@jqplot_css_file, File.join('public', 'stylesheets', @@jqplot_css_file )
24
+
25
+ m.template 'controller.erb',
26
+ File.join('app', 'controllers', controller_filename),
27
+ :assigns => {:controller_name => controller_name}
28
+
29
+ if options[:command] == :create
30
+ logger.directory File.join('public', 'javascripts', @@jqplot_js_dir , '/')
31
+ FileUtils.cp_r source_path(@@jqplot_js_dir ), @@public_js_dir unless options[:pretend]
32
+
33
+ logger.directory File.join('public', 'javascripts', @@jsclass_js_dir , '/')
34
+ FileUtils.cp_r source_path(@@jsclass_js_dir ), @@public_js_dir unless options[:pretend]
35
+
36
+ # This is commented out because ActsAsDashboard::ClassMethods#acts_as_dashboard creates
37
+ # routes at run-time.
38
+ # add_dashboard_routes controller_name
39
+ elsif options[:command] == :destroy
40
+ app_jqplot_js_dir = File.join(@@public_js_dir, @@jqplot_js_dir)
41
+ app_jsclass_js_dir = File.join(@@public_js_dir, @@jsclass_js_dir)
42
+
43
+ if File.directory? app_jqplot_js_dir and not options[:pretend]
44
+ logger.rm File.join('public', 'javascripts', @@jqplot_js_dir , '/')
45
+ FileUtils.rm_r app_jqplot_js_dir
46
+ end
47
+
48
+ if File.directory? app_jsclass_js_dir and not options[:pretend]
49
+ logger.rm File.join('public', 'javascripts', @@jsclass_js_dir , '/')
50
+ FileUtils.rm_r app_jsclass_js_dir
51
+ end
52
+
53
+ # This is commented out because ActsAsDashboard::ClassMethods#acts_as_dashboard creates
54
+ # routes at run-time.
55
+ # remove_dashboard_routes controller_name
56
+ end
57
+ end
58
+ end
59
+
60
+ protected
61
+
62
+ def banner # {{{
63
+ "Usage: #{$0} #{spec.name} [ControllerName]"
64
+ end # }}}
65
+
66
+ def build_names(original_name) # {{{
67
+ @base_name = (original_name || @@default_name).pluralize.downcase
68
+ @controller_name = @base_name.camelize + 'Controller'
69
+ @controller_filename = @base_name.underscore + '_controller.rb'
70
+ end # }}}
71
+
72
+ def build_routes(controller_name) # {{{
73
+ controller = controller_name.downcase.gsub /controller$/, ''
74
+ @singleton_resource = %Q(map.resource :#{controller}, :only => :show)
75
+ @widgets_route = %Q(map.connect '#{controller}/widgets/*path', :controller => :#{controller.pluralize}, :action => 'widget_data')
76
+ end # }}}
77
+
78
+ def add_dashboard_routes(controller_name) # {{{
79
+ logger.route @singleton_resource
80
+ logger.route @widgets_route
81
+
82
+ return if options[:pretend]
83
+
84
+ gsub_file 'config/routes.rb', /^end$/mi do |match|
85
+ "\n #{@singleton_resource}\n #{@widgets_route}\n#{match}"
86
+ end
87
+ end # }}}
88
+
89
+ def remove_dashboard_routes(controller_name) # {{{
90
+ logger.route @singleton_resource
91
+ logger.route @widgets_route
92
+
93
+ return if options[:pretend]
94
+
95
+ gsub_file 'config/routes.rb', / #{Regexp.escape @singleton_resource}\n/mi, ''
96
+ gsub_file 'config/routes.rb', / #{Regexp.escape @widgets_route}\n/mi, ''
97
+ end # }}}
98
+
99
+ # Found in lib/rails_generator/commands.rb in Rails 2.3.5 .
100
+ def gsub_file(relative_destination, regexp, *args, &block) # {{{
101
+ path = destination_path(relative_destination)
102
+ content = File.read(path).gsub(regexp, *args, &block)
103
+ File.open(path, 'wb') { |file| file.write(content) }
104
+ end # }}}
105
+ end
@@ -0,0 +1,39 @@
1
+ class <%= controller_name -%> < ApplicationController
2
+ # NOTE: Remove this line if you don't mind restarting the server after modifying this class.
3
+ include ActsAsDashboard
4
+
5
+ acts_as_dashboard
6
+
7
+ dashboard_number do |d|
8
+ d.name = :seconds
9
+ d.title = 'Seconds This Minute'
10
+ d.update_interval = '5s'
11
+ d.data {Time.now.strftime '%S'}
12
+ end
13
+
14
+ dashboard_short_messages do |d|
15
+ d.name = :todays_full_date
16
+ d.title = 'Todays Full Date'
17
+ d.update_interval = '10s'
18
+ d.data {Time.now.to_s}
19
+ end
20
+
21
+ dashboard_line_graph do |d|
22
+ d.name = :random_dates_and_numbers
23
+ d.title = 'Random Dates and Numbers'
24
+ d.update_interval = '15s'
25
+ d.line_colours = %w(blue)
26
+ d.x_axis = :dates
27
+ d.data do
28
+ (0..10).map do
29
+ year = Time.now.year
30
+ month = sprintf '%02d', rand(12) + 1
31
+ day = sprintf '%02d', rand(31) + 1
32
+ date = "#{year}-#{month}-#{day}"
33
+ data_point = rand(20) + 1
34
+
35
+ [date, data_point]
36
+ end.to_json
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,66 @@
1
+ body {
2
+ background-color: black;
3
+ color: white;
4
+ }
5
+
6
+ .dashboard-clear {
7
+ clear: both;
8
+ }
9
+
10
+ #dashboard {
11
+ width: 100%;
12
+ }
13
+ #dashboard .widget {
14
+ }
15
+
16
+ #dashboard .dashboard-numbers {
17
+ }
18
+ #dashboard .dashboard-numbers .number-widget {
19
+ float: left;
20
+ padding: 0.5em;
21
+ margin: 1em;
22
+ text-align: center;
23
+ }
24
+ #dashboard .dashboard-numbers .number-widget .widget-title {
25
+ font-weight: bold;
26
+ font-size: 1em;
27
+ }
28
+ #dashboard .dashboard-numbers .number-widget .widget-data {
29
+ font-size: 4em;
30
+ }
31
+
32
+ /* dashboard-short-message is not complete */
33
+ #dashboard .dashboard-short-messages {
34
+ }
35
+ #dashboard .dashboard-short-messages .short-messages-widget {
36
+ float: left;
37
+ margin: 1em;
38
+ }
39
+ #dashboard .dashboard-short-messages .short-messages-widget .widget-title {
40
+ border: 2px solid white;
41
+ padding: 0.5em;
42
+ text-align: center;
43
+ font-weight: bold;
44
+ }
45
+ #dashboard .dashboard-short-messages .short-messages-widget .widget-data {
46
+ margin: 0;
47
+ padding: 0;
48
+ }
49
+ #dashboard .dashboard-short-messages .short-messages-widget .widget-data ul {
50
+ margin: 0;
51
+ padding: 0;
52
+ }
53
+ #dashboard .dashboard-short-messages .short-messages-widget .widget-data li {
54
+ border: 1px solid white;
55
+ margin-top: 4px;
56
+ padding: 0.5em;
57
+ list-style-type: none;
58
+ font-size: 0.8em;
59
+ }
60
+
61
+ #dashboard .dashboard-line-graphs {
62
+ }
63
+ #dashboard .dashboard-line-graphs .line-graph-widget {
64
+ float: left;
65
+ margin: 1em;
66
+ }