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.
- checksums.yaml +4 -4
- data/README.md +36 -4
- data/dashing-contrib.gemspec +4 -1
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/FontAwesome.otf +0 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.svg +504 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_bordered-pulled.scss +16 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_core.scss +12 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_fixed-width.scss +6 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_icons.scss +506 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_larger.scss +13 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_list.scss +19 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_mixins.scss +20 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_path.scss +14 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_rotated-flipped.scss +9 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_spinning.scss +32 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_stacked.scss +20 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/_variables.scss +515 -0
- data/lib/dashing-contrib/assets/stylesheets/font-awesome/scss/font-awesome.scss +17 -0
- data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.coffee +12 -0
- data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.html +44 -0
- data/lib/dashing-contrib/assets/widgets/pingdom_uptime/pingdom_uptime.scss +89 -0
- data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.coffee +1 -0
- data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.html +8 -0
- data/lib/dashing-contrib/assets/widgets/sidekiq/sidekiq.scss +58 -0
- data/lib/dashing-contrib/assets/widgets.scss +2 -1
- data/lib/dashing-contrib/bottles/pingdom/checks.rb +21 -0
- data/lib/dashing-contrib/bottles/pingdom/client.rb +23 -0
- data/lib/dashing-contrib/bottles/pingdom/credentials.rb +29 -0
- data/lib/dashing-contrib/bottles/pingdom/uptime.rb +33 -0
- data/lib/dashing-contrib/bottles/pingdom.rb +5 -0
- data/lib/dashing-contrib/bottles/time.rb +12 -0
- data/lib/dashing-contrib/history.rb +1 -0
- data/lib/dashing-contrib/version.rb +1 -1
- data/lib/dashing-contrib.rb +3 -0
- 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
|
+
}
|
@@ -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
|
data/lib/dashing-contrib.rb
CHANGED
@@ -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.
|
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-
|
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
|