dashing-contrib 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -4
  3. data/dashing-contrib.gemspec +4 -1
  4. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/FontAwesome.otf +0 -0
  5. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  6. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.svg +504 -0
  7. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  8. data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  9. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_bordered-pulled.scss +16 -0
  10. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_core.scss +12 -0
  11. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_fixed-width.scss +6 -0
  12. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_icons.scss +506 -0
  13. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_larger.scss +13 -0
  14. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_list.scss +19 -0
  15. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_mixins.scss +20 -0
  16. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_path.scss +14 -0
  17. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_rotated-flipped.scss +9 -0
  18. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_spinning.scss +32 -0
  19. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_stacked.scss +20 -0
  20. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_variables.scss +515 -0
  21. data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/font-awesome.scss +17 -0
  22. data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.coffee +12 -0
  23. data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.html +44 -0
  24. data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.scss +89 -0
  25. data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.coffee +1 -0
  26. data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.html +8 -0
  27. data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.scss +58 -0
  28. data/lib/dashing-contrib/assets/widgets.scss +2 -1
  29. data/lib/dashing-contrib/bottles/pingdom/checks.rb +21 -0
  30. data/lib/dashing-contrib/bottles/pingdom/client.rb +23 -0
  31. data/lib/dashing-contrib/bottles/pingdom/credentials.rb +29 -0
  32. data/lib/dashing-contrib/bottles/pingdom/uptime.rb +33 -0
  33. data/lib/dashing-contrib/bottles/pingdom.rb +5 -0
  34. data/lib/dashing-contrib/bottles/time.rb +12 -0
  35. data/lib/dashing-contrib/history.rb +1 -0
  36. data/lib/dashing-contrib/version.rb +1 -1
  37. data/lib/dashing-contrib.rb +3 -0
  38. metadata +88 -2
@@ -0,0 +1,89 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Sass declarations
3
+ // ----------------------------------------------------------------------------
4
+ $background-color: #2A2A2A;
5
+ $value-color: #73AA3A;
6
+
7
+ $title-color: #8b8b8b;
8
+ $moreinfo-color: rgba(255, 255, 255, 0.7);
9
+
10
+ // ----------------------------------------------------------------------------
11
+ // Widget styles
12
+ // ----------------------------------------------------------------------------
13
+ .widget-pingdom-uptime {
14
+ //refreshing default widget definition
15
+ vertical-align: baseline !important;
16
+ padding:0px !important;
17
+
18
+ background-color: $background-color;
19
+
20
+ header{
21
+ background-color: #272727;
22
+ text-transform: uppercase;
23
+ padding: 5px 0px 5px 0px;
24
+ font-weight: 700;
25
+ font-size: 12px;
26
+ text-shadow: 1px 1px #0e0e0e;
27
+ }
28
+ .title {
29
+ color: $title-color;
30
+ font-size: inherit;
31
+ }
32
+
33
+ .body {
34
+ padding: 16px;
35
+ color: #d3d4d4;
36
+ text-shadow: 1px 1px #0e0e0e;
37
+ font-family: Helvetica, Arial, sans-serif;
38
+ z-index: 1;
39
+
40
+ .row {
41
+ width:100%;
42
+ }
43
+ .left {
44
+ float:left;
45
+ width:50%;
46
+ }
47
+ .right {
48
+ float:right;
49
+ width:49%;
50
+ border-left: 1px dotted #8b8b8b;
51
+ }
52
+ }
53
+
54
+ .current-status-container {
55
+ padding: 10px;
56
+ font-size: 35px;
57
+ text-shadow: none;
58
+ &.status-up {
59
+ color: #9ACA3C;
60
+ }
61
+ &.status-down {
62
+ color: #C32026;
63
+ }
64
+
65
+ i.fa {
66
+ font-size: 55px;
67
+ }
68
+ }
69
+
70
+ .value {
71
+ font-size: 60px;
72
+ }
73
+
74
+ .more-info {
75
+ color: $moreinfo-color;
76
+ p {
77
+ font-size:12px;
78
+ color: #8b8b8b;
79
+ }
80
+ .figure {
81
+ font-size:18px;
82
+ color: #CECFCF;
83
+ }
84
+ &.past-status {
85
+ bottom: 80px;
86
+ }
87
+ }
88
+
89
+ }
@@ -0,0 +1 @@
1
+ class Dashing.Sidekiq extends Dashing.Widget
@@ -0,0 +1,8 @@
1
+ <h1 class="title" data-bind="title"></h1>
2
+ <ul>
3
+ <li data-foreach-metric="metrics">
4
+ <span class="label" data-bind="metric.label"></span>
5
+ <span class="value" data-bind="metric.value"></span>
6
+ </li>
7
+ </ul>
8
+ <p class="updated-at" data-bind="updatedAtMessage"></p>
@@ -0,0 +1,58 @@
1
+ // ----------------------------------------------------------------------------
2
+ // Sass declarations
3
+ // ----------------------------------------------------------------------------
4
+ $background-color: #f0f0f0;
5
+
6
+ $value-color: #636466;
7
+
8
+
9
+ // ----------------------------------------------------------------------------
10
+ // Widget-sidekiq styles
11
+ // ----------------------------------------------------------------------------
12
+ .widget-sidekiq {
13
+ $background-image-url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAABVCAYAAADnu9JFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0iREMzRTU4OEUzN0ZDRUJEMzMyQ0REM0VDODYwRkNCQzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUVFODE1RkVGOUU4MTFFMTkyMjhBOTJFMTRGRjU0QjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUVFODE1RkRGOUU4MTFFMTkyMjhBOTJFMTRGRjU0QjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGODdGMTE3NDA3MjA2ODExODA4M0I0QjMyM0I1QzJCRiIgc3RSZWY6ZG9jdW1lbnRJRD0iREMzRTU4OEUzN0ZDRUJEMzMyQ0REM0VDODYwRkNCQzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4g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";
14
+
15
+ background: $background-color url($background-image-url) 20px 25px no-repeat;
16
+
17
+ &.large h3 {
18
+ font-size: 65px;
19
+ }
20
+
21
+ .title {
22
+ color: $value-color;
23
+ }
24
+
25
+ .more-info {
26
+ color: $value-color;
27
+ }
28
+
29
+ .updated-at {
30
+ color: rgba(0, 0, 0, 1);
31
+ }
32
+
33
+ ul {
34
+ margin: 0 15px;
35
+ text-align: left;
36
+ color: $value-color;
37
+ }
38
+
39
+ li {
40
+ margin-bottom: 5px;
41
+ }
42
+
43
+ .list-nostyle {
44
+ list-style: none;
45
+ }
46
+
47
+ .label {
48
+ color: $value-color;
49
+ }
50
+
51
+ .value {
52
+ float: right;
53
+ margin-left: 12px;
54
+ font-weight: 600;
55
+ color: $value-color;
56
+ }
57
+
58
+ }
@@ -1,2 +1,3 @@
1
1
  //=require_tree ./widgets
2
- //=require_tree ./javascripts
2
+ //=require_tree ./javascripts
3
+ //=require ./stylesheets/font-awesome/scss/font-awesome
@@ -0,0 +1,21 @@
1
+ require 'rest-client'
2
+ require 'cgi'
3
+
4
+ module DashingContrib
5
+ module Pingdom
6
+ module Checks
7
+ extend self
8
+
9
+ def fetch(credentials, id)
10
+ make_request(credentials, id)
11
+ end
12
+
13
+ private
14
+ def make_request(credentials, id)
15
+ request_url = "https://#{credentials.username}:#{credentials.password}@api.pingdom.com/api/2.0/checks/#{id}"
16
+ response = RestClient.get(request_url, { 'App-Key' => credentials.api_key })
17
+ MultiJson.load(response.body, { symbolize_keys: true })
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ require 'rest-client'
2
+ require_relative './credentials'
3
+
4
+ module DashingContrib
5
+ module Pingdom
6
+ class Client
7
+ # Initialize Pingdom client
8
+ attr_accessor :credentials
9
+
10
+ def initialize(options)
11
+ @credentials = ::DashingContrib::Pingdom::Credentials.new(options)
12
+ end
13
+
14
+ def checks(id)
15
+ ::DashingContrib::Pingdom::Checks.fetch(credentials, id)
16
+ end
17
+
18
+ def uptime(id, from_time, to_time)
19
+ ::DashingContrib::Pingdom::Uptime.calc(credentials, id, from_time, to_time)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ require 'cgi'
2
+
3
+ module DashingContrib
4
+ module Pingdom
5
+ class Credentials
6
+ attr_accessor :api_key, :username, :password
7
+
8
+ def initialize(options = {})
9
+ user_options = default_options.merge(options)
10
+ @api_key = user_options[:api_key] || missing_args(:api_key)
11
+ @password = CGI.escape(user_options[:password]) || missing_args(:password)
12
+ @username = CGI.escape(user_options[:username]) || missing_args(:username)
13
+ end
14
+
15
+ private
16
+ def default_options
17
+ {
18
+ api_key: '',
19
+ password: '',
20
+ username: ''
21
+ }
22
+ end
23
+
24
+ def missing_args(name)
25
+ raise "Pingdom credentials requires #{name.to_s}"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,33 @@
1
+ require 'rest-client'
2
+ require 'multi_json'
3
+ require 'cgi'
4
+
5
+ module DashingContrib
6
+ module Pingdom
7
+ module Uptime
8
+ extend self
9
+
10
+ def calc(credentials, id, from_time, to_time, rounding = 2)
11
+ payload = make_request(credentials, id, from_time, to_time)
12
+ summary = payload[:summary][:status]
13
+ up = summary[:totalup]
14
+ unkown = summary[:totalunknown]
15
+ down = summary[:totaldown]
16
+
17
+ uptime = (up.to_f - (unkown.to_f + down.to_f)) * 100 / up.to_f
18
+ uptime.round(rounding)
19
+ end
20
+
21
+ private
22
+ def make_request(credentials, id, from_time, to_time)
23
+ request_url = uptime_request_url(credentials, id, from_time, to_time)
24
+ response = RestClient.get(request_url, { 'App-Key' => credentials.api_key })
25
+ MultiJson.load(response.body, { symbolize_keys: true })
26
+ end
27
+
28
+ def uptime_request_url(credentials, id, from_time, to_time)
29
+ "https://#{credentials.username}:#{credentials.password}@api.pingdom.com/api/2.0/summary.average/#{id}?from=#{from_time}&to=#{to_time}&includeuptime=true"
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ require 'dashing-contrib/bottles/pingdom/credentials'
2
+ require 'dashing-contrib/bottles/pingdom/checks'
3
+ require 'dashing-contrib/bottles/pingdom/uptime'
4
+
5
+ require 'dashing-contrib/bottles/pingdom/client'
@@ -0,0 +1,12 @@
1
+ require 'time_diff'
2
+
3
+ module DashingContrib
4
+ class Time
5
+ class << self
6
+ def readable_diff(old_time, new_time = ::Time.now)
7
+ t = ::Time.diff(new_time, old_time)
8
+ "#{t[:day]}d #{t[:hour]}h #{t[:minute]}m"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -10,6 +10,7 @@ module DashingContrib
10
10
  end
11
11
 
12
12
  def raw_event(event_name)
13
+ return nil if history[event_name].nil?
13
14
  history[event_name].gsub(/^data:/, '')
14
15
  rescue
15
16
  nil
@@ -1,3 +1,3 @@
1
1
  module DashingContrib
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -2,6 +2,8 @@ require 'dashing-contrib/version'
2
2
  require 'dashing-contrib/configuration'
3
3
  require 'dashing-contrib/history'
4
4
  require 'dashing-contrib/routes'
5
+ require 'dashing-contrib/bottles/time'
6
+ require 'dotenv'
5
7
 
6
8
  module DashingContrib
7
9
  class << self
@@ -15,6 +17,7 @@ module DashingContrib
15
17
  def self.configure
16
18
  yield configuration if block_given?
17
19
  self.configure_sprockets
20
+ Dotenv.load
18
21
  end
19
22
 
20
23
  private
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dashing-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jing Dong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-12 00:00:00.000000000 Z
11
+ date: 2014-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -38,6 +38,62 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.18.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: rest-client
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.6.7
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.6.7
55
+ - !ruby/object:Gem::Dependency
56
+ name: multi_json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.10.1
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.10.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: time_diff
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.3.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: sidekiq
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 3.0.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 3.0.0
41
97
  - !ruby/object:Gem::Dependency
42
98
  name: rake
43
99
  requirement: !ruby/object:Gem::Requirement
@@ -68,13 +124,43 @@ files:
68
124
  - dashing-contrib.gemspec
69
125
  - lib/dashing-contrib.rb
70
126
  - lib/dashing-contrib/assets/javascripts/rickshaw/rickshaw.min.js
127
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/FontAwesome.otf
128
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.eot
129
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.svg
130
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.ttf
131
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.woff
132
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_bordered-pulled.scss
133
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_core.scss
134
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_fixed-width.scss
135
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_icons.scss
136
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_larger.scss
137
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_list.scss
138
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_mixins.scss
139
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_path.scss
140
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_rotated-flipped.scss
141
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_spinning.scss
142
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_stacked.scss
143
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_variables.scss
144
+ - lib/dashing-contrib/assets/stylesheets/font-awesome/scss/font-awesome.scss
71
145
  - lib/dashing-contrib/assets/widgets.coffee
72
146
  - lib/dashing-contrib/assets/widgets.scss
147
+ - lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.coffee
148
+ - lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.html
149
+ - lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.scss
73
150
  - lib/dashing-contrib/assets/widgets/rickshawgraph/rickshawgraph.coffee
74
151
  - lib/dashing-contrib/assets/widgets/rickshawgraph/rickshawgraph.html
75
152
  - lib/dashing-contrib/assets/widgets/rickshawgraph/rickshawgraph.scss
153
+ - lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.coffee
154
+ - lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.html
155
+ - lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.scss
76
156
  - lib/dashing-contrib/bottles/nagios.rb
77
157
  - lib/dashing-contrib/bottles/nagios/client.rb
158
+ - lib/dashing-contrib/bottles/pingdom.rb
159
+ - lib/dashing-contrib/bottles/pingdom/checks.rb
160
+ - lib/dashing-contrib/bottles/pingdom/client.rb
161
+ - lib/dashing-contrib/bottles/pingdom/credentials.rb
162
+ - lib/dashing-contrib/bottles/pingdom/uptime.rb
163
+ - lib/dashing-contrib/bottles/time.rb
78
164
  - lib/dashing-contrib/configuration.rb
79
165
  - lib/dashing-contrib/history.rb
80
166
  - lib/dashing-contrib/routes.rb