dashing 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/README.md +2 -7
  2. data/javascripts/batman.jquery.js +52 -0
  3. data/javascripts/batman.js +3863 -3307
  4. data/javascripts/dashing.coffee +19 -6
  5. data/lib/dashing.rb +3 -1
  6. data/templates/project/Gemfile +1 -1
  7. data/templates/project/assets/images/logo.png +0 -0
  8. data/templates/project/assets/javascripts/application.coffee +6 -6
  9. data/templates/project/assets/stylesheets/application.scss +33 -7
  10. data/templates/project/dashboards/sample.erb +3 -3
  11. data/templates/project/dashboards/sampletv.erb +56 -0
  12. data/templates/project/jobs/buzzwords.rb +1 -1
  13. data/templates/project/jobs/convergence.rb +1 -0
  14. data/templates/project/jobs/sample.rb +4 -0
  15. data/templates/project/jobs/twitter.rb +17 -0
  16. data/templates/project/widgets/clock/clock.coffee +18 -0
  17. data/templates/project/widgets/clock/clock.html +2 -0
  18. data/templates/project/widgets/clock/clock.scss +13 -0
  19. data/templates/project/widgets/comments/comments.coffee +24 -0
  20. data/templates/project/widgets/comments/comments.html +7 -0
  21. data/templates/project/widgets/comments/comments.scss +33 -0
  22. data/templates/project/widgets/graph/graph.coffee +12 -3
  23. data/templates/project/widgets/graph/graph.html +2 -2
  24. data/templates/project/widgets/graph/graph.scss +25 -11
  25. data/templates/project/widgets/iframe/iframe.coffee +9 -0
  26. data/templates/project/widgets/iframe/iframe.html +1 -0
  27. data/templates/project/widgets/iframe/iframe.scss +8 -0
  28. data/templates/project/widgets/image/image.coffee +9 -0
  29. data/templates/project/widgets/image/image.html +1 -0
  30. data/templates/project/widgets/image/image.scss +13 -0
  31. data/templates/project/widgets/list/list.coffee +4 -11
  32. data/templates/project/widgets/list/list.html +4 -1
  33. data/templates/project/widgets/list/list.scss +11 -3
  34. data/templates/project/widgets/meter/meter.html +3 -1
  35. data/templates/project/widgets/meter/meter.scss +9 -11
  36. data/templates/project/widgets/number/number.coffee +2 -4
  37. data/templates/project/widgets/number/number.html +5 -3
  38. data/templates/project/widgets/number/number.scss +9 -5
  39. data/templates/project/widgets/text/text.html +4 -2
  40. data/templates/project/widgets/text/text.scss +12 -5
  41. data/templates/widget/%name%/%name%.coffee.tt +1 -2
  42. metadata +41 -23
  43. data/templates/project/lib/.empty_directory +0 -1
  44. data/templates/project/public/.empty_directory +0 -1
@@ -1,5 +1,5 @@
1
1
  <h1 class="title" data-bind="title"></h1>
2
2
 
3
- <h2 class="value" data-bind="current | prettyNumber"></h2>
3
+ <h2 class="value" data-bind="current | prettyNumber | prepend prefix"></h2>
4
4
 
5
- <p class="text-moreinfo" data-bind="moreinfo"></p>
5
+ <p class="more-info" data-bind="moreinfo"></p>
@@ -1,13 +1,12 @@
1
1
  // ----------------------------------------------------------------------------
2
2
  // Sass declarations
3
3
  // ----------------------------------------------------------------------------
4
- $background-color: #2e864f;
5
- $value-color: #fff;
4
+ $background-color: #dc5945;
6
5
 
7
- $title-color: lighten($background-color, 75%);
8
- $moreinfo-color: lighten($background-color, 45%);
6
+ $title-color: rgba(255, 255, 255, 0.7);
7
+ $moreinfo-color: rgba(255, 255, 255, 0.3);
8
+ $tick-color: rgba(0, 0, 0, 0.4);
9
9
 
10
- $graph_color: lighten($background-color, 75%);
11
10
 
12
11
  // ----------------------------------------------------------------------------
13
12
  // Widget-graph styles
@@ -17,14 +16,13 @@ $graph_color: lighten($background-color, 75%);
17
16
  background-color: $background-color;
18
17
  position: relative;
19
18
 
19
+
20
20
  svg {
21
- color: $graph_color;
21
+ position: absolute;
22
22
  opacity: 0.4;
23
23
  fill-opacity: 0.4;
24
- position: absolute;
25
- bottom: 0;
26
- left: 0;
27
- right: 0;
24
+ left: 0px;
25
+ top: 0px;
28
26
  }
29
27
 
30
28
  .title, .value {
@@ -36,7 +34,7 @@ $graph_color: lighten($background-color, 75%);
36
34
  color: $title-color;
37
35
  }
38
36
 
39
- .text-moreinfo {
37
+ .more-info {
40
38
  color: $moreinfo-color;
41
39
  font-weight: 600;
42
40
  font-size: 20px;
@@ -46,6 +44,22 @@ $graph_color: lighten($background-color, 75%);
46
44
  .x_tick {
47
45
  position: absolute;
48
46
  bottom: 0;
47
+ .title {
48
+ font-size: 20px;
49
+ color: $tick-color;
50
+ opacity: 0.5;
51
+ padding-bottom: 3px;
52
+ }
53
+ }
54
+
55
+ .y_ticks {
56
+ font-size: 20px;
57
+ fill: $tick-color;
58
+ fill-opacity: 1;
59
+ }
60
+
61
+ .domain {
62
+ display: none;
49
63
  }
50
64
 
51
65
  }
@@ -0,0 +1,9 @@
1
+ class Dashing.Iframe extends Dashing.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.
@@ -0,0 +1 @@
1
+ <iframe data-bind-src="url" frameborder=0></iframe>
@@ -0,0 +1,8 @@
1
+ .widget-iframe {
2
+ padding: 3px 0px 0px 0px !important;
3
+
4
+ iframe {
5
+ width: 100%;
6
+ height: 100%;
7
+ }
8
+ }
@@ -0,0 +1,9 @@
1
+ class Dashing.Image extends Dashing.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.
@@ -0,0 +1 @@
1
+ <img data-bind-src="image | prepend '/assets'" data-bind-width="width"/>
@@ -0,0 +1,13 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Sass declarations
3
+ // ----------------------------------------------------------------------------
4
+ $background-color: #4b4b4b;
5
+
6
+ // ----------------------------------------------------------------------------
7
+ // Widget-image styles
8
+ // ----------------------------------------------------------------------------
9
+ .widget-image {
10
+
11
+ background-color: $background-color;
12
+
13
+ }
@@ -1,13 +1,6 @@
1
1
  class Dashing.List extends Dashing.Widget
2
- @accessor 'current', Dashing.AnimatedValue
3
-
4
- @accessor 'arrow', ->
5
- if @get('last')
6
- if parseInt(@get('current')) > parseInt(@get('last')) then 'arrow-up' else 'arrow-down'
7
-
8
2
  ready: ->
9
- Batman.setImmediate =>
10
- if @get('unordered')
11
- $(@node).find('ol').remove()
12
- else
13
- $(@node).find('ul').remove()
3
+ if @get('unordered')
4
+ $(@node).find('ol').remove()
5
+ else
6
+ $(@node).find('ul').remove()
@@ -12,4 +12,7 @@
12
12
  <span class="label" data-bind="item.label"></span>
13
13
  <span class="value" data-bind="item.value"></span>
14
14
  </li>
15
- </ul>
15
+ </ul>
16
+
17
+ <p class="more-info" data-bind="moreinfo"></p>
18
+ <p class="updated-at" data-bind="updatedAtMessage"></p>
@@ -1,12 +1,12 @@
1
1
  // ----------------------------------------------------------------------------
2
2
  // Sass declarations
3
3
  // ----------------------------------------------------------------------------
4
-
5
4
  $background-color: #12b0c5;
6
5
  $value-color: #fff;
7
6
 
8
- $title-color: lighten($background-color, 45%);
9
- $label-color: lighten($background-color, 45%);
7
+ $title-color: rgba(255, 255, 255, 0.7);
8
+ $label-color: rgba(255, 255, 255, 0.7);
9
+ $moreinfo-color: rgba(255, 255, 255, 0.7);
10
10
 
11
11
  // ----------------------------------------------------------------------------
12
12
  // Widget-list styles
@@ -49,4 +49,12 @@ $label-color: lighten($background-color, 45%);
49
49
  color: $value-color;
50
50
  }
51
51
 
52
+ .updated-at {
53
+ color: rgba(0, 0, 0, 0.3);
54
+ }
55
+
56
+ .more-info {
57
+ color: $moreinfo-color;
58
+ }
59
+
52
60
  }
@@ -2,4 +2,6 @@
2
2
 
3
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
4
 
5
- <p class="text-moreinfo" data-bind="moreinfo"></p>
5
+ <p class="more-info" data-bind="moreinfo"></p>
6
+
7
+ <p class="updated-at" data-bind="updatedAtMessage"></p>
@@ -1,15 +1,12 @@
1
1
  // ----------------------------------------------------------------------------
2
2
  // Sass declarations
3
3
  // ----------------------------------------------------------------------------
4
-
5
4
  $background-color: #9c4274;
6
- $value-color: #fff;
7
5
 
8
- $title-color: lighten($background-color, 75%);
9
- $moreinfo-color: lighten($background-color, 45%);
6
+ $title-color: rgba(255, 255, 255, 0.7);
7
+ $moreinfo-color: rgba(255, 255, 255, 0.3);
10
8
 
11
- $meter-background: darken($background-color, 10%);
12
- $meter-foreground: lighten($background-color, 75%);
9
+ $meter-background: darken($background-color, 15%);
13
10
 
14
11
  // ----------------------------------------------------------------------------
15
12
  // Widget-meter styles
@@ -20,18 +17,19 @@ $meter-foreground: lighten($background-color, 75%);
20
17
 
21
18
  input.meter {
22
19
  background-color: $meter-background;
23
- color: $meter-foreground;
20
+ color: #fff;
24
21
  }
25
22
 
26
23
  .title {
27
24
  color: $title-color;
28
25
  }
29
26
 
30
- .text-moreinfo {
27
+ .more-info {
31
28
  color: $moreinfo-color;
32
- font-weight: 600;
33
- font-size: 20px;
34
- margin-top: 0;
29
+ }
30
+
31
+ .updated-at {
32
+ color: rgba(0, 0, 0, 0.3);
35
33
  }
36
34
 
37
35
  }
@@ -8,18 +8,16 @@ class Dashing.Number extends Dashing.Widget
8
8
  if last != 0
9
9
  diff = Math.abs(Math.round((current - last) / last * 100))
10
10
  "#{diff}%"
11
+ else
12
+ ""
11
13
 
12
14
  @accessor 'arrow', ->
13
15
  if @get('last')
14
16
  if parseInt(@get('current')) > parseInt(@get('last')) then 'icon-arrow-up' else 'icon-arrow-down'
15
17
 
16
- @accessor 'statusStyle', ->
17
- "status-#{@get('status')}"
18
-
19
18
  @accessor 'needsAttention', ->
20
19
  @get('status') == 'warning' || @get('status') == 'danger'
21
20
 
22
21
  onData: (data) ->
23
- super
24
22
  if data.status
25
23
  $(@get('node')).addClass("status-#{data.status}")
@@ -1,9 +1,11 @@
1
1
  <h1 class="title"><i data-showif="needsAttention" class="icon-warning-sign"></i><span data-bind="title"></span></h1>
2
2
 
3
- <h2 class="value" data-bind="current | prettyNumber"></h2>
3
+ <h2 class="value" data-bind="current | shortenedNumber | prepend prefix"></h2>
4
4
 
5
5
  <p class="change-rate">
6
- <i data-bind-class="arrow"></i><span data-bind="difference">50%</span>
6
+ <i data-bind-class="arrow"></i><span data-bind="difference"></span>
7
7
  </p>
8
8
 
9
- <p class="text-moreinfo" data-bind="moreinfo">2012-07-26 10:59AM</p>
9
+ <p class="more-info" data-bind="moreinfo | raw"></p>
10
+
11
+ <p class="updated-at" data-bind="updatedAtMessage"></p>
@@ -1,11 +1,11 @@
1
1
  // ----------------------------------------------------------------------------
2
2
  // Sass declarations
3
3
  // ----------------------------------------------------------------------------
4
- $background-color: #00b1a4;
4
+ $background-color: #47bbb3;
5
5
  $value-color: #fff;
6
6
 
7
- $title-color: lighten($background-color, 75%);
8
- $moreinfo-color: lighten($background-color, 45%);
7
+ $title-color: rgba(255, 255, 255, 0.7);;
8
+ $moreinfo-color: rgba(255, 255, 255, 0.7);;
9
9
 
10
10
  // ----------------------------------------------------------------------------
11
11
  // Widget-number styles
@@ -23,13 +23,17 @@ $moreinfo-color: lighten($background-color, 45%);
23
23
  }
24
24
 
25
25
  .change-rate {
26
- font-weight: 300;
26
+ font-weight: 500;
27
27
  font-size: 30px;
28
28
  color: $value-color;
29
29
  }
30
30
 
31
- .text-moreinfo {
31
+ .more-info {
32
32
  color: $moreinfo-color;
33
33
  }
34
+
35
+ .updated-at {
36
+ color: rgba(0, 0, 0, 0.3);
37
+ }
34
38
 
35
39
  }
@@ -1,5 +1,7 @@
1
1
  <h1 class="title" data-bind="title"></h1>
2
2
 
3
- <h3 data-bind="text"></h3>
3
+ <h3 data-bind="text | raw"></h3>
4
4
 
5
- <p class="text-moreinfo" data-bind="moreinfo">2012-07-26 10:59AM</p>
5
+ <p class="more-info" data-bind="moreinfo | raw"></p>
6
+
7
+ <p class="updated-at" data-bind="updatedAtMessage"></p>
@@ -1,11 +1,10 @@
1
1
  // ----------------------------------------------------------------------------
2
2
  // Sass declarations
3
3
  // ----------------------------------------------------------------------------
4
- $background-color: #ec663c;;
5
- $value-color: #fff;
4
+ $background-color: #ec663c;
6
5
 
7
- $title-color: lighten($background-color, 40%);
8
- $moreinfo-color: lighten($background-color, 30%);
6
+ $title-color: rgba(255, 255, 255, 0.7);
7
+ $moreinfo-color: rgba(255, 255, 255, 0.7);
9
8
 
10
9
  // ----------------------------------------------------------------------------
11
10
  // Widget-text styles
@@ -18,8 +17,16 @@ $moreinfo-color: lighten($background-color, 30%);
18
17
  color: $title-color;
19
18
  }
20
19
 
21
- .text-moreinfo {
20
+ .more-info {
22
21
  color: $moreinfo-color;
23
22
  }
23
+
24
+ .updated-at {
25
+ color: rgba(255, 255, 255, 0.7);
26
+ }
24
27
 
28
+
29
+ &.large h3 {
30
+ font-size: 65px;
31
+ }
25
32
  }
@@ -6,5 +6,4 @@ class Dashing.<%= Thor::Util.camel_case(name) %> extends Dashing.Widget
6
6
  onData: (data) ->
7
7
  # Handle incoming data
8
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.
10
- super
9
+ # Example: $(@node).fadeOut().fadeIn() will make the node flash each time data comes in.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dashing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-24 00:00:00.000000000 Z
12
+ date: 2012-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sass
16
- requirement: &70362542014960 !ruby/object:Gem::Requirement
16
+ requirement: &70210076653740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70362542014960
24
+ version_requirements: *70210076653740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: coffee-script
27
- requirement: &70362542014520 !ruby/object:Gem::Requirement
27
+ requirement: &70210076653300 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70362542014520
35
+ version_requirements: *70210076653300
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: sinatra
38
- requirement: &70362541997720 !ruby/object:Gem::Requirement
38
+ requirement: &70210076652860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70362541997720
46
+ version_requirements: *70210076652860
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sinatra-contrib
49
- requirement: &70362541997120 !ruby/object:Gem::Requirement
49
+ requirement: &70210076652420 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70362541997120
57
+ version_requirements: *70210076652420
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: thin
60
- requirement: &70362541996320 !ruby/object:Gem::Requirement
60
+ requirement: &70210076652000 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70362541996320
68
+ version_requirements: *70210076652000
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rufus-scheduler
71
- requirement: &70362541995640 !ruby/object:Gem::Requirement
71
+ requirement: &70210076651580 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70362541995640
79
+ version_requirements: *70210076651580
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: thor
82
- requirement: &70362541995120 !ruby/object:Gem::Requirement
82
+ requirement: &70210076651160 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70362541995120
90
+ version_requirements: *70210076651160
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: sprockets
93
- requirement: &70362541994400 !ruby/object:Gem::Requirement
93
+ requirement: &70210076650740 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,8 +98,13 @@ dependencies:
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *70362541994400
102
- description: An elegant, simple, beautiful, & flexible framework for creating dashboards.
101
+ version_requirements: *70210076650740
102
+ description: This framework lets you build & easily layout dashboards with your own
103
+ custom widgets. Use it to make a status boards for your ops team, or use it to track
104
+ signups, conversion rates, or whatever else metrics you'd like to see in one spot.
105
+ Included with the framework are ready-made widgets for you to use or customize.
106
+ All of this code was extracted out of a project at Shopify that displays dashboards
107
+ on TVs around the office.
103
108
  email: daniel.beauchamp@shopify.com
104
109
  executables:
105
110
  - dashing
@@ -119,6 +124,7 @@ files:
119
124
  - templates/project/assets/fonts/fontawesome-webfont.ttf
120
125
  - templates/project/assets/fonts/fontawesome-webfont.woff
121
126
  - templates/project/assets/images/favicon.ico
127
+ - templates/project/assets/images/logo.png
122
128
  - templates/project/assets/javascripts/application.coffee
123
129
  - templates/project/assets/javascripts/d3.v2.min.js
124
130
  - templates/project/assets/javascripts/dashing.gridster.coffee
@@ -132,14 +138,28 @@ files:
132
138
  - templates/project/config.ru
133
139
  - templates/project/dashboards/layout.erb
134
140
  - templates/project/dashboards/sample.erb
141
+ - templates/project/dashboards/sampletv.erb
135
142
  - templates/project/Gemfile
136
143
  - templates/project/jobs/buzzwords.rb
137
144
  - templates/project/jobs/convergence.rb
138
145
  - templates/project/jobs/sample.rb
146
+ - templates/project/jobs/twitter.rb
139
147
  - templates/project/README.md
148
+ - templates/project/widgets/clock/clock.coffee
149
+ - templates/project/widgets/clock/clock.html
150
+ - templates/project/widgets/clock/clock.scss
151
+ - templates/project/widgets/comments/comments.coffee
152
+ - templates/project/widgets/comments/comments.html
153
+ - templates/project/widgets/comments/comments.scss
140
154
  - templates/project/widgets/graph/graph.coffee
141
155
  - templates/project/widgets/graph/graph.html
142
156
  - templates/project/widgets/graph/graph.scss
157
+ - templates/project/widgets/iframe/iframe.coffee
158
+ - templates/project/widgets/iframe/iframe.html
159
+ - templates/project/widgets/iframe/iframe.scss
160
+ - templates/project/widgets/image/image.coffee
161
+ - templates/project/widgets/image/image.html
162
+ - templates/project/widgets/image/image.scss
143
163
  - templates/project/widgets/list/list.coffee
144
164
  - templates/project/widgets/list/list.html
145
165
  - templates/project/widgets/list/list.scss
@@ -155,12 +175,10 @@ files:
155
175
  - templates/widget/%name%/%name%.coffee.tt
156
176
  - templates/widget/%name%/%name%.html
157
177
  - templates/widget/%name%/%name%.scss.tt
158
- - templates/project/lib/.empty_directory
159
- - templates/project/public/.empty_directory
160
178
  - lib/dashing.rb
161
179
  - !binary |-
162
180
  YmluL2Rhc2hpbmc=
163
- homepage: http://Dashing.shopify.com
181
+ homepage: http://dashing.shopify.com
164
182
  licenses: []
165
183
  post_install_message:
166
184
  rdoc_options: []
@@ -183,5 +201,5 @@ rubyforge_project:
183
201
  rubygems_version: 1.8.11
184
202
  signing_key:
185
203
  specification_version: 3
186
- summary: A simple & flexible framework for creating dashboards.
204
+ summary: A DIY framework for creating dashboards.
187
205
  test_files: []