acts_as_dashboard 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README.rdoc +54 -0
- data/Rakefile +23 -0
- data/VERSION +1 -0
- data/acts_as_dashboard.gemspec +166 -0
- data/generators/dashboard/USAGE +23 -0
- data/generators/dashboard/dashboard_generator.rb +105 -0
- data/generators/dashboard/templates/controller.erb +39 -0
- data/generators/dashboard/templates/dashboard.css +66 -0
- data/generators/dashboard/templates/dashboard.js +305 -0
- data/generators/dashboard/templates/jqplot-0.9.7/jquery.jqplot.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.barRenderer.js +404 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.barRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisLabelRenderer.js +200 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisLabelRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisTickRenderer.js +232 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasAxisTickRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasTextRenderer.js +408 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.canvasTextRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.categoryAxisRenderer.js +238 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.categoryAxisRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.cursor.js +812 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.cursor.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dateAxisRenderer.js +313 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dateAxisRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dragable.js +203 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.dragable.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.highlighter.js +359 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.highlighter.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.logAxisRenderer.js +434 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.logAxisRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoAxisRenderer.js +595 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoAxisRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoRenderer.js +308 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.mekkoRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.ohlcRenderer.js +343 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.ohlcRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pieRenderer.js +333 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pieRenderer.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.js +307 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.js.orig +273 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.pointLabels.min.js +14 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.trendline.js +208 -0
- data/generators/dashboard/templates/jqplot-0.9.7/plugins/jqplot.trendline.min.js +14 -0
- data/generators/dashboard/templates/jquery.jqplot.min.css +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/CHANGELOG +269 -0
- data/generators/dashboard/templates/js.class-2.1.4/MIT-LICENSE +30 -0
- data/generators/dashboard/templates/js.class-2.1.4/README +30 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/command.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/comparable.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/constant_scope.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/core.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/decorator.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/enumerable.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/forwardable.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/hash.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/linked_list.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/loader.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/method_chain.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/observable.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/package.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/proxy.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/ruby.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/set.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/stack_trace.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/state.js +1 -0
- data/generators/dashboard/templates/js.class-2.1.4/min/stdlib.js +16 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/command.js +93 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/comparable.js +37 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/constant_scope.js +48 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/core.js +1060 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/decorator.js +50 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/enumerable.js +505 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/forwardable.js +22 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/hash.js +334 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/linked_list.js +114 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/loader.js +458 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/method_chain.js +172 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/observable.js +55 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/package.js +377 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/proxy.js +58 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/ruby.js +44 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/set.js +332 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/stack_trace.js +151 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/state.js +95 -0
- data/generators/dashboard/templates/js.class-2.1.4/src/stdlib.js +2517 -0
- data/generators/dashboard/templates/show.html.erb +67 -0
- data/lib/acts_as_dashboard/app/views/dashboards/show.html.erb +67 -0
- data/lib/acts_as_dashboard/class_methods.rb +58 -0
- data/lib/acts_as_dashboard/config.rb +25 -0
- data/lib/acts_as_dashboard/instance_methods.rb +32 -0
- data/lib/acts_as_dashboard/line_graph_widget.rb +68 -0
- data/lib/acts_as_dashboard/public/javascripts/dashboard.js +305 -0
- data/lib/acts_as_dashboard/public/stylesheets/dashboard.css +66 -0
- data/lib/acts_as_dashboard/short_messages_widget.rb +25 -0
- data/lib/acts_as_dashboard/widget.rb +55 -0
- data/lib/acts_as_dashboard.rb +17 -0
- data/spec/acts_as_dashboard/class_method_specs.rb +188 -0
- data/spec/acts_as_dashboard/config_spec.rb +57 -0
- data/spec/acts_as_dashboard/instance_methods_spec.rb +134 -0
- data/spec/acts_as_dashboard/line_graph_widget_spec.rb +165 -0
- data/spec/acts_as_dashboard/short_messages_widget_spec.rb +69 -0
- data/spec/acts_as_dashboard/widget_spec.rb +6 -0
- data/spec/acts_as_dashboard_spec.rb +15 -0
- data/spec/shared/widget_behaviours.rb +171 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- data/tasks/install.rake +8 -0
- data/tasks/install_javascript.rake +7 -0
- data/tasks/install_stylesheets.rake +7 -0
- metadata +209 -0
data/.document
ADDED
data/.gitignore
ADDED
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
|
+
}
|