my_dashboard 0.4.1
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.
- checksums.yaml +7 -0
- data/.gitignore +13 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +23 -0
- data/Gemfile +20 -0
- data/MIT-LICENSE +20 -0
- data/README.md +223 -0
- data/Rakefile +7 -0
- data/app/assets/javascripts/my_dashboard/application.js +17 -0
- data/app/assets/javascripts/my_dashboard/my_dashboard.coffee +0 -0
- data/app/assets/stylesheets/my_dashboard/application.css +13 -0
- data/app/controllers/my_dashboard/application_controller.rb +23 -0
- data/app/controllers/my_dashboard/dashboards_controller.rb +31 -0
- data/app/controllers/my_dashboard/events_controller.rb +28 -0
- data/app/controllers/my_dashboard/widgets_controller.rb +45 -0
- data/app/helpers/my_dashboard/application_helper.rb +4 -0
- data/app/views/layouts/my_dashboard/dashboard.html.erb +30 -0
- data/app/views/my_dashboard/widgets/clock.html +2 -0
- data/app/views/my_dashboard/widgets/comments.html +7 -0
- data/app/views/my_dashboard/widgets/graph.html +5 -0
- data/app/views/my_dashboard/widgets/iframe.html +1 -0
- data/app/views/my_dashboard/widgets/image.html +1 -0
- data/app/views/my_dashboard/widgets/list.html +18 -0
- data/app/views/my_dashboard/widgets/meter.html +7 -0
- data/app/views/my_dashboard/widgets/number.html +11 -0
- data/app/views/my_dashboard/widgets/text.html +7 -0
- data/bin/rails +8 -0
- data/config/routes.rb +15 -0
- data/lib/assets/javascripts/my_dashboard.gridster.coffee +0 -0
- data/lib/generators/my_dashboard/install_generator.rb +36 -0
- data/lib/generators/my_dashboard/job_generator.rb +15 -0
- data/lib/generators/my_dashboard/widget_generator.rb +17 -0
- data/lib/generators/templates/dashboards/sample.html.erb +28 -0
- data/lib/generators/templates/initializer.rb +58 -0
- data/lib/generators/templates/jobs/new.rb +3 -0
- data/lib/generators/templates/jobs/sample.rb +9 -0
- data/lib/generators/templates/layouts/dashboard.html.erb +30 -0
- data/lib/generators/templates/widgets/index.css +12 -0
- data/lib/generators/templates/widgets/index.js +13 -0
- data/lib/generators/templates/widgets/new.coffee +9 -0
- data/lib/generators/templates/widgets/new.html +1 -0
- data/lib/generators/templates/widgets/new.scss +10 -0
- data/lib/my_dashboard.rb +50 -0
- data/lib/my_dashboard/configuration.rb +63 -0
- data/lib/my_dashboard/engine.rb +7 -0
- data/lib/my_dashboard/railtie.rb +31 -0
- data/lib/my_dashboard/version.rb +3 -0
- data/lib/tasks/my_dashboard_tasks.rake +4 -0
- data/my_dashboard.gemspec +31 -0
- data/spec/controllers/my_dashboard/application_controller_spec.rb +21 -0
- data/spec/controllers/my_dashboard/dashboards_controller_spec.rb +46 -0
- data/spec/controllers/my_dashboard/events_controller_spec.rb +11 -0
- data/spec/controllers/my_dashboard/widgets_controller_spec.rb +72 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/images/.keep +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/javascripts/my_dashboard/widgets/foo.coffee +0 -0
- data/spec/dummy/app/assets/javascripts/my_dashboard/widgets/index.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/assets/stylesheets/my_dashboard/widgets/foo.scss +0 -0
- data/spec/dummy/app/assets/stylesheets/my_dashboard/widgets/index.css +12 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/controllers/concerns/.keep +0 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/jobs/sample.rb +9 -0
- data/spec/dummy/app/mailers/.keep +0 -0
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/app/models/concerns/.keep +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/layouts/my_dashboard/dashboard.html.erb +30 -0
- data/spec/dummy/app/views/my_dashboard/dashboards/foo.erb +0 -0
- data/spec/dummy/app/views/my_dashboard/dashboards/sample.html.erb +28 -0
- data/spec/dummy/app/views/my_dashboard/widgets/foo.html +0 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +23 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/my_dashboard.rb +58 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +3 -0
- data/spec/dummy/lib/assets/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
- data/spec/dummy/public/404.html +58 -0
- data/spec/dummy/public/422.html +58 -0
- data/spec/dummy/public/500.html +57 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/lib/generators/widget_generator_spec.rb +26 -0
- data/spec/lib/my_dashboard/configuration_spec.rb +66 -0
- data/spec/lib/my_dashboard_spec.rb +55 -0
- data/spec/spec_helper.rb +52 -0
- data/spec/support/controller_spec_helpers.rb +9 -0
- data/vendor/assets/fonts/my_dashboard/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/my_dashboard/fontawesome-webfont.svg +414 -0
- data/vendor/assets/fonts/my_dashboard/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/my_dashboard/fontawesome-webfont.woff +0 -0
- data/vendor/assets/javascripts/my_dashboard/batman.jquery.js +163 -0
- data/vendor/assets/javascripts/my_dashboard/batman.js +13680 -0
- data/vendor/assets/javascripts/my_dashboard/d3-3.2.8.min.js +5 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/clock.coffee +18 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/comments.coffee +24 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/graph.coffee +37 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/iframe.coffee +9 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/image.coffee +9 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/index.js +13 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/list.coffee +6 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/meter.coffee +14 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/number.coffee +25 -0
- data/vendor/assets/javascripts/my_dashboard/default_widgets/text.coffee +1 -0
- data/vendor/assets/javascripts/my_dashboard/es5-shim.js +1021 -0
- data/vendor/assets/javascripts/my_dashboard/index.js +21 -0
- data/vendor/assets/javascripts/my_dashboard/jquery.gridster.js +3987 -0
- data/vendor/assets/javascripts/my_dashboard/jquery.js +4 -0
- data/vendor/assets/javascripts/my_dashboard/jquery.knob.js +646 -0
- data/vendor/assets/javascripts/my_dashboard/jquery.leanModal.min.js +5 -0
- data/vendor/assets/javascripts/my_dashboard/jquery.timeago.js +184 -0
- data/vendor/assets/javascripts/my_dashboard/moment.min.js +6 -0
- data/vendor/assets/javascripts/my_dashboard/my_dashboard.coffee +0 -0
- data/vendor/assets/javascripts/my_dashboard/rickshaw-1.5.1.min.js +3 -0
- data/vendor/assets/stylesheets/my_dashboard/font-awesome.scss +1338 -0
- data/vendor/assets/stylesheets/my_dashboard/index.css +15 -0
- data/vendor/assets/stylesheets/my_dashboard/jquery.gridster.css +121 -0
- data/vendor/assets/stylesheets/my_dashboard/my_dashboard.scss +302 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/clock.scss +13 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/comments.scss +33 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/graph.scss +65 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/iframe.scss +8 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/image.scss +13 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/index.css +12 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/list.scss +60 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/meter.scss +35 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/number.scss +39 -0
- data/vendor/assets/stylesheets/my_dashboard/widgets/text.scss +32 -0
- metadata +373 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
module MyDashboard
|
2
|
+
class WidgetsController < ApplicationController
|
3
|
+
|
4
|
+
before_filter :check_accessibility, only: :update
|
5
|
+
before_filter :check_widget_name, only: [:show, :update]
|
6
|
+
before_filter :prepend_view_paths, only: :show
|
7
|
+
|
8
|
+
rescue_from ActionView::MissingTemplate, with: :template_not_found
|
9
|
+
|
10
|
+
def show
|
11
|
+
render file: widget_path, layout: false
|
12
|
+
end
|
13
|
+
|
14
|
+
def update
|
15
|
+
data = params[:widget] || {}
|
16
|
+
hash = data.merge(id: params[:name], updatedAt: Time.now.utc.to_i)
|
17
|
+
MyDashboard.redis.publish("#{MyDashboard.config.redis_namespace}.create", hash.to_json)
|
18
|
+
|
19
|
+
render nothing: true
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def check_widget_name
|
25
|
+
raise 'bad widget name' unless params[:name] =~ /\A[a-zA-z0-9_\-]+\z/
|
26
|
+
end
|
27
|
+
|
28
|
+
def widget_path
|
29
|
+
params[:name]
|
30
|
+
end
|
31
|
+
|
32
|
+
def prepend_view_paths
|
33
|
+
prepend_view_path main_app_view_path
|
34
|
+
end
|
35
|
+
|
36
|
+
def main_app_view_path
|
37
|
+
MyDashboard.config.widgets_views_path
|
38
|
+
end
|
39
|
+
|
40
|
+
def template_not_found
|
41
|
+
raise "Count not find template for widget #{params[:name]}. Define your widget in #{main_app_view_path}"
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8"/>
|
5
|
+
<meta name="description" content="">
|
6
|
+
<meta name="viewport" content="width=device-width">
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
8
|
+
|
9
|
+
<title><%= yield :title %></title>
|
10
|
+
|
11
|
+
<%= javascript_include_tag 'my_dashboard/application' %>
|
12
|
+
<%= stylesheet_link_tag 'my_dashboard/application' %>
|
13
|
+
|
14
|
+
<link href='//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700' rel='stylesheet' type='text/css'>
|
15
|
+
<link rel="icon" href="/favicon.ico">
|
16
|
+
</head>
|
17
|
+
<body>
|
18
|
+
<div id="container">
|
19
|
+
<%= yield %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<% if Rails.env.development? %>
|
23
|
+
<div id="saving-instructions">
|
24
|
+
<p>Paste the following at the top of <i><%= params[:dashboard] %>.erb</i></p>
|
25
|
+
<textarea id="gridster-code"></textarea>
|
26
|
+
</div>
|
27
|
+
<a href="#saving-instructions" id="save-gridster">Save this layout</a>
|
28
|
+
<% end %>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<h1 class="title" data-bind="title"></h1>
|
2
|
+
<div class="comment-container">
|
3
|
+
<h3><img data-bind-src='current_comment.avatar'/><span data-bind='current_comment.name' class="name"></span></h3>
|
4
|
+
<p class="comment" data-bind='quote'></p>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<p class="more-info" data-bind="moreinfo"></p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<iframe data-bind-src="url" frameborder=0></iframe>
|
@@ -0,0 +1 @@
|
|
1
|
+
<img data-bind-src="image | prepend '/assets'" data-bind-width="width"/>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<h1 class="title" data-bind="title"></h1>
|
2
|
+
|
3
|
+
<ol>
|
4
|
+
<li data-foreach-item="items">
|
5
|
+
<span class="label" data-bind="item.label"></span>
|
6
|
+
<span class="value" data-bind="item.value"></span>
|
7
|
+
</li>
|
8
|
+
</ol>
|
9
|
+
|
10
|
+
<ul class="list-nostyle">
|
11
|
+
<li data-foreach-item="items">
|
12
|
+
<span class="label" data-bind="item.label"></span>
|
13
|
+
<span class="value" data-bind="item.value"></span>
|
14
|
+
</li>
|
15
|
+
</ul>
|
16
|
+
|
17
|
+
<p class="more-info" data-bind="moreinfo"></p>
|
18
|
+
<p class="updated-at" data-bind="updatedAtMessage"></p>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<h1 class="title" data-bind="title"></h1>
|
2
|
+
|
3
|
+
<input class="meter" data-angleOffset=-125 data-angleArc=250 data-width=200 data-readOnly=true data-bind-value="value | shortenedNumber" data-bind-data-min="min" data-bind-data-max="max">
|
4
|
+
|
5
|
+
<p class="more-info" data-bind="moreinfo"></p>
|
6
|
+
|
7
|
+
<p class="updated-at" data-bind="updatedAtMessage"></p>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<h1 class="title" data-bind="title"></h1>
|
2
|
+
|
3
|
+
<h2 class="value" data-bind="current | shortenedNumber | prepend prefix | append suffix"></h2>
|
4
|
+
|
5
|
+
<p class="change-rate">
|
6
|
+
<i data-bind-class="arrow"></i><span data-bind="difference"></span>
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<p class="more-info" data-bind="moreinfo"></p>
|
10
|
+
|
11
|
+
<p class="updated-at" data-bind="updatedAtMessage"></p>
|
data/bin/rails
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
|
3
|
+
|
4
|
+
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
5
|
+
ENGINE_PATH = File.expand_path('../../lib/my_dashboard/engine', __FILE__)
|
6
|
+
|
7
|
+
require 'rails/all'
|
8
|
+
require 'rails/engine/commands'
|
data/config/routes.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
MyDashboard::Engine.routes.draw do
|
2
|
+
|
3
|
+
resources :events, only: :index
|
4
|
+
|
5
|
+
resources :dashboards, only: :index do
|
6
|
+
get '/:name', action: :show, on: :collection
|
7
|
+
end
|
8
|
+
|
9
|
+
resources :widgets, only: [] do
|
10
|
+
get '/:name', action: :show, on: :collection
|
11
|
+
put '/:name', action: :update, on: :collection
|
12
|
+
end
|
13
|
+
|
14
|
+
root to: 'dashboards#index'
|
15
|
+
end
|
File without changes
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module MyDashboard
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < ::Rails::Generators::Base
|
4
|
+
|
5
|
+
source_root File.expand_path('../../templates', __FILE__)
|
6
|
+
|
7
|
+
desc 'Creates a MyDashboard initializer for your application.'
|
8
|
+
|
9
|
+
def install
|
10
|
+
route 'mount MyDashboard::Engine, at: MyDashboard.config.engine_path'
|
11
|
+
end
|
12
|
+
|
13
|
+
def copy_initializer
|
14
|
+
template 'initializer.rb', 'config/initializers/my_dashboard.rb'
|
15
|
+
end
|
16
|
+
|
17
|
+
def copy_layout
|
18
|
+
template 'layouts/dashboard.html.erb', 'app/views/layouts/my_dashboard/dashboard.html.erb'
|
19
|
+
end
|
20
|
+
|
21
|
+
def copy_dashboard
|
22
|
+
template 'dashboards/sample.html.erb', 'app/views/my_dashboard/dashboards/sample.html.erb'
|
23
|
+
end
|
24
|
+
|
25
|
+
def copy_widget_manifests
|
26
|
+
template 'widgets/index.css', 'app/assets/stylesheets/my_dashboard/widgets/index.css'
|
27
|
+
template 'widgets/index.js', 'app/assets/javascripts/my_dashboard/widgets/index.js'
|
28
|
+
end
|
29
|
+
|
30
|
+
def copy_job
|
31
|
+
template 'jobs/sample.rb', 'app/jobs/sample.rb'
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module MyDashboard
|
2
|
+
module Generators
|
3
|
+
class JobGenerator < ::Rails::Generators::NamedBase
|
4
|
+
|
5
|
+
source_root File.expand_path('../../templates', __FILE__)
|
6
|
+
|
7
|
+
desc 'Creates a new MyDashboard job.'
|
8
|
+
|
9
|
+
def job
|
10
|
+
template 'jobs/new.rb', "app/jobs/#{file_name}.rb"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module MyDashboard
|
2
|
+
module Generators
|
3
|
+
class WidgetGenerator < ::Rails::Generators::NamedBase
|
4
|
+
|
5
|
+
source_root File.expand_path('../../templates', __FILE__)
|
6
|
+
|
7
|
+
desc 'Creates a new MyDashboard widget.'
|
8
|
+
|
9
|
+
def widget
|
10
|
+
template 'widgets/new.html', MyDashboard.config.widgets_views_path.join("#{file_name}.html")
|
11
|
+
template 'widgets/new.scss', MyDashboard.config.widgets_css_path.join('widgets', "#{file_name}.scss")
|
12
|
+
template 'widgets/new.coffee', MyDashboard.config.widgets_js_path.join('widgets', "#{file_name}.coffee")
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<% content_for :title do %>
|
2
|
+
My dashboard, so cool!
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<div class="gridster">
|
6
|
+
<ul>
|
7
|
+
<li data-row="1" data-col="1" data-sizex="2" data-sizey="1">
|
8
|
+
<div data-id="welcome" data-view="Text" data-title="HUEHUE" data-text="MyDashboard is awesome!." data-moreinfo="Protip: You can drag the widgets around!"></div>
|
9
|
+
</li>
|
10
|
+
|
11
|
+
<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
|
12
|
+
<div data-id="synergy" data-view="Meter" data-title="Synergy" data-min="0" data-max="100"></div>
|
13
|
+
</li>
|
14
|
+
|
15
|
+
<li data-row="1" data-col="1" data-sizex="1" data-sizey="2">
|
16
|
+
<div data-id="buzzwords" data-view="List" data-unordered="true" data-title="Buzzwords" data-moreinfo="# of times said around the office"></div>
|
17
|
+
</li>
|
18
|
+
|
19
|
+
<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
|
20
|
+
<div data-id="valuation" data-view="Number" data-title="Current Valuation" data-moreinfo="In billions" data-prefix="$"></div>
|
21
|
+
</li>
|
22
|
+
|
23
|
+
<li data-row="1" data-col="1" data-sizex="2" data-sizey="1">
|
24
|
+
<div data-id="convergence" data-view="Graph" data-title="Convergence" style="background-color:#ff9618"></div>
|
25
|
+
</li>
|
26
|
+
</ul>
|
27
|
+
<center><div style="font-size: 12px">Try this: curl -X PUT 'http://<%= request.host %>:<%= request.port %>/my_dashboard/widgets/welcome' --data "widget%5Btext%5D=MyDashboard+is+awesomecurl"</div></center>
|
28
|
+
</div>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# Use this hook to configure MyDashboard bahaviors.
|
2
|
+
MyDashboard.configure do |config|
|
3
|
+
# Scheduler instance.
|
4
|
+
# config.scheduler = ::Rufus::Scheduler.new
|
5
|
+
|
6
|
+
# Redis credentials.
|
7
|
+
# See https://devcenter.heroku.com/articles/redistogo to configure redis for heroku.
|
8
|
+
# config.redis_host = '127.0.0.1'
|
9
|
+
# config.redis_port = '6379'
|
10
|
+
# config.redis_password = nil
|
11
|
+
# config.redis_timeout = 3
|
12
|
+
|
13
|
+
# Redis namespace when pushing new data.
|
14
|
+
# config.redis_namespace = 'my_dashboard_events'
|
15
|
+
|
16
|
+
# MyDashboard come with default widgets using css and coffeescript.
|
17
|
+
# You can create your own widgets by adding the following files:
|
18
|
+
#
|
19
|
+
# A widget is composed of:
|
20
|
+
# - an HTML file used for layout and bindings - app/views/my_dashboard/widgets/foo.html
|
21
|
+
# - a SCSS file for styles - app/assets/stylesheets/my_dashboard/widgets/foo.scss
|
22
|
+
# - a coffeescript file which allows you to handle incoming data & functionality - app/assets/javascripts/my_dashboard/widgets/foo.coffee
|
23
|
+
#
|
24
|
+
# CSS and JS file will be added to the asset path and the asset pipeline automatically.
|
25
|
+
#
|
26
|
+
# More information at http://shopify.github.io/dashing/
|
27
|
+
#
|
28
|
+
# You can change default views and assets paths with the following config:
|
29
|
+
#
|
30
|
+
# config.widgets_views_path = Rails.root.join('app', 'views', 'my_dashboard', 'widgets')
|
31
|
+
# config.widgets_js_path = Rails.root.join('app', 'assets', 'javascripts', 'my_dashboard')
|
32
|
+
# config.widgets_css_path = Rails.root.join('app', 'assets', 'stylesheets', 'my_dashboard')
|
33
|
+
|
34
|
+
# rufus-scheduler worker path
|
35
|
+
# config.jobs_path = Rails.root.join('app', 'jobs')
|
36
|
+
|
37
|
+
# Engine path to use for accessing engine's routes.
|
38
|
+
# Ex: http://your_app/my_dashboard/dashboard/my_dashboard_name
|
39
|
+
# config.engine_path = '/my_dashboard'
|
40
|
+
|
41
|
+
# The dashboards views path used to find dashboards.
|
42
|
+
# config.dashboards_views_path = Rails.root.join('app', 'views', 'my_dashboard', 'dashboards')
|
43
|
+
|
44
|
+
# The MyDashboard layout used to display metrics.
|
45
|
+
# config.dashboard_layout_path = 'my_dashboard/dashboard'
|
46
|
+
|
47
|
+
# Default dashboard name to load when going to /my_dashboard/dashboards
|
48
|
+
# config.default_dashboard = nil
|
49
|
+
|
50
|
+
# A secure random string to authenticate with for curl requests.
|
51
|
+
# Put nil if you don't want to use authentication.
|
52
|
+
# You can use SecureRandom.hex to generate a hex.
|
53
|
+
# config.auth_token = nil
|
54
|
+
|
55
|
+
# List of Devise models that should access the whole dashboard.
|
56
|
+
# List the models. E.g: '[:user, :admin]'
|
57
|
+
# config.devise_allowed_models = []
|
58
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
current_valuation = 0
|
2
|
+
|
3
|
+
MyDashboard.scheduler.every '2s' do
|
4
|
+
last_valuation = current_valuation
|
5
|
+
current_valuation = rand(100)
|
6
|
+
|
7
|
+
MyDashboard.send_event('valuation', { current: current_valuation, last: last_valuation })
|
8
|
+
MyDashboard.send_event('synergy', { value: rand(100) })
|
9
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8"/>
|
5
|
+
<meta name="description" content="">
|
6
|
+
<meta name="viewport" content="width=device-width">
|
7
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
8
|
+
|
9
|
+
<title><%%= yield :title %></title>
|
10
|
+
|
11
|
+
<%%= javascript_include_tag 'my_dashboard/application' %>
|
12
|
+
<%%= stylesheet_link_tag 'my_dashboard/application' %>
|
13
|
+
|
14
|
+
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700' rel='stylesheet' type='text/css'>
|
15
|
+
<link rel="icon" href="/favicon.ico">
|
16
|
+
</head>
|
17
|
+
<body>
|
18
|
+
<div id="container">
|
19
|
+
<%%= yield %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<%% if Rails.env.development? %>
|
23
|
+
<div id="saving-instructions">
|
24
|
+
<p>Paste the following at the top of <i><%%= params[:dashboard] %>.erb</i></p>
|
25
|
+
<textarea id="gridster-code"></textarea>
|
26
|
+
</div>
|
27
|
+
<a href="#saving-instructions" id="save-gridster">Save this layout</a>
|
28
|
+
<%% end %>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require_tree .
|
12
|
+
*/
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// the compiled file.
|
9
|
+
//
|
10
|
+
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
|
+
// GO AFTER THE REQUIRES BELOW.
|
12
|
+
//
|
13
|
+
//= require_tree .
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class MyDashboard.<%= class_name.capitalize %> extends MyDashboard.Widget
|
2
|
+
|
3
|
+
ready: ->
|
4
|
+
# This is fired when the widget is done being rendered
|
5
|
+
|
6
|
+
onData: (data) ->
|
7
|
+
# Handle incoming data
|
8
|
+
# You can access the html node of this widget with `@node`
|
9
|
+
# Example: $(@node).fadeOut().fadeIn() will make the node flash each time data comes in.
|