sensu-dashboard 0.9.8 → 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +0 -0
- data/README.md +9 -0
- data/bin/sensu-dashboard +8 -7
- data/lib/sensu-dashboard.rb +3 -0
- data/lib/sensu-dashboard/assets/javascripts/app.js +38 -0
- data/lib/sensu-dashboard/assets/javascripts/application.coffee +21 -0
- data/lib/sensu-dashboard/assets/javascripts/bootstrapper.coffee +39 -0
- data/lib/sensu-dashboard/assets/javascripts/collections/base.coffee +22 -0
- data/lib/sensu-dashboard/assets/javascripts/collections/checks.coffee +8 -0
- data/lib/sensu-dashboard/assets/javascripts/collections/clients.coffee +83 -0
- data/lib/sensu-dashboard/assets/javascripts/collections/events.coffee +184 -0
- data/lib/sensu-dashboard/assets/javascripts/collections/stashes.coffee +37 -0
- data/lib/sensu-dashboard/assets/javascripts/config/states.coffee +30 -0
- data/lib/sensu-dashboard/assets/javascripts/handlebars_helpers.coffee +2 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/backbone-min.js +4 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/bootstrap.min.js +7 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/jquery-1.9.1.min.js +5 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/liquid.metal.js +107 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/lodash.underscore.min.js +34 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/retina.js +3 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/scroll.into.view.js +32 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/toastr.min.js +1 -0
- data/lib/sensu-dashboard/assets/javascripts/libs/token.field.coffee +173 -0
- data/lib/sensu-dashboard/assets/javascripts/matcher.coffee +34 -0
- data/lib/sensu-dashboard/assets/javascripts/models/check.coffee +11 -0
- data/lib/sensu-dashboard/assets/javascripts/models/client.coffee +58 -0
- data/lib/sensu-dashboard/assets/javascripts/models/event.coffee +78 -0
- data/lib/sensu-dashboard/assets/javascripts/models/info.coffee +58 -0
- data/lib/sensu-dashboard/assets/javascripts/models/metadata/events.coffee +21 -0
- data/lib/sensu-dashboard/assets/javascripts/models/stash.coffee +34 -0
- data/lib/sensu-dashboard/assets/javascripts/namespace.coffee +17 -0
- data/lib/sensu-dashboard/assets/javascripts/state.coffee +33 -0
- data/lib/sensu-dashboard/assets/javascripts/state_manager.coffee +52 -0
- data/lib/sensu-dashboard/assets/javascripts/states/main_state.coffee +6 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_check_item.hbs +1 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_check_token.hbs +1 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_client_item.hbs +1 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_client_token.hbs +1 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_query_item.hbs +1 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_query_token.hbs +1 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/checks/index.hbs +10 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/checks/list.hbs +12 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/checks/list_item.hbs +5 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/clients/counts.hbs +6 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/clients/index.hbs +26 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/clients/list.hbs +12 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/clients/list_item.hbs +14 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/clients/modal.hbs +30 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/empty_list.hbs +4 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/error.hbs +5 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/events/counts.hbs +9 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/events/index.hbs +33 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/events/list.hbs +11 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/events/list_item.hbs +18 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/events/modal.hbs +47 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/info/index.hbs +54 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/modal.hbs +17 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/stashes/counts.hbs +6 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/stashes/index.hbs +22 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/stashes/list.hbs +10 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/stashes/list_item.hbs +5 -0
- data/lib/sensu-dashboard/assets/javascripts/templates/stashes/modal.hbs +25 -0
- data/lib/sensu-dashboard/assets/javascripts/views/auto_complete/auto_complete_field.coffee +133 -0
- data/lib/sensu-dashboard/assets/javascripts/views/auto_complete/auto_complete_results.coffee +135 -0
- data/lib/sensu-dashboard/assets/javascripts/views/auto_complete/auto_complete_token.coffee +31 -0
- data/lib/sensu-dashboard/assets/javascripts/views/base.coffee +16 -0
- data/lib/sensu-dashboard/assets/javascripts/views/checks/index.coffee +18 -0
- data/lib/sensu-dashboard/assets/javascripts/views/checks/list.coffee +48 -0
- data/lib/sensu-dashboard/assets/javascripts/views/checks/list_item.coffee +17 -0
- data/lib/sensu-dashboard/assets/javascripts/views/clients/counts.coffee +13 -0
- data/lib/sensu-dashboard/assets/javascripts/views/clients/index.coffee +83 -0
- data/lib/sensu-dashboard/assets/javascripts/views/clients/list.coffee +56 -0
- data/lib/sensu-dashboard/assets/javascripts/views/clients/list_item.coffee +20 -0
- data/lib/sensu-dashboard/assets/javascripts/views/clients/modal.coffee +83 -0
- data/lib/sensu-dashboard/assets/javascripts/views/error.coffee +17 -0
- data/lib/sensu-dashboard/assets/javascripts/views/events/counts.coffee +12 -0
- data/lib/sensu-dashboard/assets/javascripts/views/events/index.coffee +143 -0
- data/lib/sensu-dashboard/assets/javascripts/views/events/list.coffee +52 -0
- data/lib/sensu-dashboard/assets/javascripts/views/events/list_item.coffee +25 -0
- data/lib/sensu-dashboard/assets/javascripts/views/events/modal.coffee +129 -0
- data/lib/sensu-dashboard/assets/javascripts/views/info/index.coffee +13 -0
- data/lib/sensu-dashboard/assets/javascripts/views/list.coffee +44 -0
- data/lib/sensu-dashboard/assets/javascripts/views/list_item.coffee +14 -0
- data/lib/sensu-dashboard/assets/javascripts/views/modal.coffee +25 -0
- data/lib/sensu-dashboard/assets/javascripts/views/stashes/counts.coffee +13 -0
- data/lib/sensu-dashboard/assets/javascripts/views/stashes/index.coffee +49 -0
- data/lib/sensu-dashboard/assets/javascripts/views/stashes/list.coffee +45 -0
- data/lib/sensu-dashboard/assets/javascripts/views/stashes/list_item.coffee +28 -0
- data/lib/sensu-dashboard/assets/javascripts/views/stashes/modal.coffee +46 -0
- data/lib/sensu-dashboard/assets/stylesheets/app.css +5 -0
- data/lib/sensu-dashboard/assets/stylesheets/libs/bootstrap.min.css +717 -0
- data/lib/sensu-dashboard/assets/stylesheets/libs/font-awesome.less +537 -0
- data/lib/sensu-dashboard/assets/stylesheets/libs/toastr.min.css +1 -0
- data/lib/sensu-dashboard/assets/stylesheets/main.sass +414 -0
- data/lib/sensu-dashboard/constants.rb +7 -0
- data/lib/sensu-dashboard/public/favicon.ico +0 -0
- data/lib/sensu-dashboard/public/font/FontAwesome.otf +0 -0
- data/lib/sensu-dashboard/public/font/fontawesome-webfont.eot +0 -0
- data/lib/sensu-dashboard/public/font/fontawesome-webfont.svg +284 -0
- data/lib/sensu-dashboard/public/font/fontawesome-webfont.ttf +0 -0
- data/lib/sensu-dashboard/public/font/fontawesome-webfont.woff +0 -0
- data/lib/sensu-dashboard/public/img/favicon_114.png +0 -0
- data/lib/sensu-dashboard/public/img/favicon_144.png +0 -0
- data/lib/sensu-dashboard/public/img/favicon_57.png +0 -0
- data/lib/sensu-dashboard/public/img/favicon_64.png +0 -0
- data/lib/sensu-dashboard/public/img/favicon_72.png +0 -0
- data/lib/sensu-dashboard/public/img/glyphicons-halflings-white.png +0 -0
- data/lib/sensu-dashboard/public/img/glyphicons-halflings.png +0 -0
- data/lib/sensu-dashboard/public/img/loading.gif +0 -0
- data/lib/sensu-dashboard/public/img/logo.png +0 -0
- data/lib/sensu-dashboard/public/img/logo@2x.png +0 -0
- data/lib/sensu-dashboard/server.rb +337 -0
- data/lib/sensu-dashboard/views/layout.slim +49 -0
- data/lib/sensu-dashboard/views/main.slim +3 -0
- data/sensu-dashboard.gemspec +21 -11
- metadata +308 -120
- data/.gitignore +0 -6
- data/Gemfile +0 -4
- data/README.org +0 -4
- data/Rakefile +0 -1
- data/lib/sensu-dashboard/app.rb +0 -439
- data/lib/sensu-dashboard/public/css/autoSuggest.css +0 -217
- data/lib/sensu-dashboard/public/css/style.css +0 -177
- data/lib/sensu-dashboard/public/img/cross.png +0 -0
- data/lib/sensu-dashboard/public/img/footer_bg.png +0 -0
- data/lib/sensu-dashboard/public/img/header_bg.png +0 -0
- data/lib/sensu-dashboard/public/img/loading_circle.gif +0 -0
- data/lib/sensu-dashboard/public/img/main_content_bg.png +0 -0
- data/lib/sensu-dashboard/public/img/megaphone_icon.png +0 -0
- data/lib/sensu-dashboard/public/img/megaphone_icon_off.png +0 -0
- data/lib/sensu-dashboard/public/js/FABridge.js +0 -604
- data/lib/sensu-dashboard/public/js/functions.js +0 -367
- data/lib/sensu-dashboard/public/js/jquery-1.5.1.min.js +0 -16
- data/lib/sensu-dashboard/public/js/jquery.autoSuggest.js +0 -375
- data/lib/sensu-dashboard/public/js/jquery.leanModal.min.js +0 -1
- data/lib/sensu-dashboard/public/js/jquery.sortElements.js +0 -69
- data/lib/sensu-dashboard/public/js/jquery.tmpl.min.js +0 -1
- data/lib/sensu-dashboard/public/js/jquery.zclip.min.js +0 -12
- data/lib/sensu-dashboard/public/js/modernizr-1.7.min.js +0 -2
- data/lib/sensu-dashboard/public/js/swfobject.js +0 -4
- data/lib/sensu-dashboard/public/js/web_socket.js +0 -312
- data/lib/sensu-dashboard/public/js/webtoolkit.sha1.js +0 -174
- data/lib/sensu-dashboard/public/swf/WebSocketMain.swf +0 -0
- data/lib/sensu-dashboard/public/swf/ZeroClipboard.swf +0 -0
- data/lib/sensu-dashboard/version.rb +0 -5
- data/lib/sensu-dashboard/views/client_templates.erb +0 -67
- data/lib/sensu-dashboard/views/clients.erb +0 -36
- data/lib/sensu-dashboard/views/event_templates.erb +0 -185
- data/lib/sensu-dashboard/views/index.erb +0 -48
- data/lib/sensu-dashboard/views/layout.erb +0 -132
- data/lib/sensu-dashboard/views/sonian.sass +0 -213
- data/lib/sensu-dashboard/views/stash_templates.erb +0 -44
- data/lib/sensu-dashboard/views/stashes.erb +0 -32
data/CHANGELOG.md
ADDED
File without changes
|
data/README.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
![sensu](https://raw.github.com/sensu/sensu/master/sensu-logo.png)
|
2
|
+
|
3
|
+
A front-end dashboard for the Sensu monitoring framework.
|
4
|
+
|
5
|
+
## Documentation
|
6
|
+
Please refer to the [Sensu Wiki](https://github.com/sensu/sensu-dashboard/wiki).
|
7
|
+
|
8
|
+
## License
|
9
|
+
Sensu is released under the [MIT license](https://raw.github.com/sensu/sensu-dashboard/master/MIT-LICENSE.txt).
|
data/bin/sensu-dashboard
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
path = File.expand_path '../../lib', __FILE__
|
7
|
-
$:.unshift(path) if File.directory?(path) && !$:.include?(path)
|
8
|
-
require 'sensu-dashboard/app.rb'
|
2
|
+
|
3
|
+
unless $:.include?(File.dirname(__FILE__) + '/../lib/')
|
4
|
+
$: << File.dirname(__FILE__) + '/../lib'
|
9
5
|
end
|
6
|
+
|
7
|
+
require 'sensu-dashboard/server'
|
8
|
+
|
9
|
+
options = Sensu::CLI.read
|
10
|
+
Sensu::Dashboard::Server.run(options)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
//= require ./libs/jquery-1.9.1.min.js
|
2
|
+
//= require ./libs/lodash.underscore.min.js
|
3
|
+
//= require ./libs/backbone-min.js
|
4
|
+
//= require ./libs/bootstrap.min.js
|
5
|
+
//= require ./libs/retina.js
|
6
|
+
//= require ./libs/toastr.min.js
|
7
|
+
//= require ./libs/liquid.metal.js
|
8
|
+
//= require ./libs/scroll.into.view.js
|
9
|
+
//= require ./libs/token.field
|
10
|
+
|
11
|
+
//= require handlebars.runtime
|
12
|
+
//= require handlebars_helpers
|
13
|
+
//= require_tree ./templates
|
14
|
+
|
15
|
+
//= require namespace
|
16
|
+
|
17
|
+
//= require_directory ./models
|
18
|
+
|
19
|
+
//= require_tree ./collections
|
20
|
+
|
21
|
+
//= require_directory ./models/metadata
|
22
|
+
|
23
|
+
//= require_directory ./views
|
24
|
+
//= require_tree ./views/auto_complete
|
25
|
+
//= require_tree ./views/clients
|
26
|
+
//= require_tree ./views/events
|
27
|
+
//= require_tree ./views/stashes
|
28
|
+
//= require_tree ./views/info
|
29
|
+
//= require_tree ./views/checks
|
30
|
+
|
31
|
+
//= require state_manager
|
32
|
+
//= require state
|
33
|
+
//= require_tree ./states
|
34
|
+
//= require_tree ./config
|
35
|
+
|
36
|
+
//= require matcher
|
37
|
+
//= require bootstrapper
|
38
|
+
//= require application
|
@@ -0,0 +1,21 @@
|
|
1
|
+
namespace "SensuDashboard", (exports) ->
|
2
|
+
|
3
|
+
class Application
|
4
|
+
|
5
|
+
constructor: ->
|
6
|
+
$.ajaxSetup(cache: false)
|
7
|
+
|
8
|
+
bootstrapper = new SensuDashboard.Bootstrapper
|
9
|
+
success: =>
|
10
|
+
@boot()
|
11
|
+
|
12
|
+
error: =>
|
13
|
+
new SensuDashboard.Views.Error
|
14
|
+
toastr.error("Error during bootstrap. Is Sensu API running?"
|
15
|
+
, "Bootstrap Error"
|
16
|
+
, { positionClass: "toast-bottom-right" })
|
17
|
+
|
18
|
+
boot: ->
|
19
|
+
Backbone.history.start()
|
20
|
+
|
21
|
+
exports.App = new Application() # Initialize app
|
@@ -0,0 +1,39 @@
|
|
1
|
+
namespace "SensuDashboard", (exports) ->
|
2
|
+
|
3
|
+
class exports.Bootstrapper
|
4
|
+
|
5
|
+
constructor: (options = {}) ->
|
6
|
+
@successCallback = options.success
|
7
|
+
@errorCallback = options.error
|
8
|
+
|
9
|
+
try
|
10
|
+
$.ajax
|
11
|
+
type: "GET"
|
12
|
+
url: "/all"
|
13
|
+
context: this
|
14
|
+
dataType: "json"
|
15
|
+
success: (data, textStatus, jqXHR) ->
|
16
|
+
SensuDashboard.PollFrequency = data.info.sensu_dashboard.poll_frequency
|
17
|
+
SensuDashboard.Stashes = new SensuDashboard.Collections.Stashes(data.stashes)
|
18
|
+
SensuDashboard.Events = new SensuDashboard.Collections.Events(data.events)
|
19
|
+
SensuDashboard.Clients = new SensuDashboard.Collections.Clients(data.clients)
|
20
|
+
SensuDashboard.Checks = new SensuDashboard.Collections.Checks(data.checks)
|
21
|
+
SensuDashboard.EventsMetadata = new SensuDashboard.Models.Metadata.Events
|
22
|
+
SensuDashboard.Info = new SensuDashboard.Models.Info(data.info)
|
23
|
+
|
24
|
+
SensuDashboard.Stashes.startLongPolling(SensuDashboard.PollFrequency)
|
25
|
+
SensuDashboard.Events.startLongPolling(SensuDashboard.PollFrequency)
|
26
|
+
SensuDashboard.Clients.startLongPolling(SensuDashboard.PollFrequency)
|
27
|
+
SensuDashboard.Checks.startLongPolling(SensuDashboard.PollFrequency)
|
28
|
+
SensuDashboard.Info.startLongPolling(SensuDashboard.PollFrequency)
|
29
|
+
|
30
|
+
@successCallback.call(this)
|
31
|
+
error: (jqXHR, textStatus, errorThrown) ->
|
32
|
+
@error()
|
33
|
+
|
34
|
+
catch error
|
35
|
+
@error()
|
36
|
+
|
37
|
+
error: ->
|
38
|
+
@errorCallback.call(this)
|
39
|
+
return
|
@@ -0,0 +1,22 @@
|
|
1
|
+
namespace "SensuDashboard.Collections", (exports) ->
|
2
|
+
|
3
|
+
class exports.Base extends Backbone.Collection
|
4
|
+
longPolling: false
|
5
|
+
|
6
|
+
intervalSeconds: 10
|
7
|
+
|
8
|
+
startLongPolling: (intervalSeconds) =>
|
9
|
+
@longPolling = true
|
10
|
+
@intervalSeconds = intervalSeconds if intervalSeconds
|
11
|
+
@executeLongPolling()
|
12
|
+
|
13
|
+
stopLongPolling: =>
|
14
|
+
@longPolling = false
|
15
|
+
|
16
|
+
executeLongPolling: =>
|
17
|
+
@fetch
|
18
|
+
success: =>
|
19
|
+
@onFetch()
|
20
|
+
|
21
|
+
onFetch: =>
|
22
|
+
setTimeout(@executeLongPolling, 1000 * @intervalSeconds) if @longPolling
|
@@ -0,0 +1,83 @@
|
|
1
|
+
namespace "SensuDashboard.Collections", (exports) ->
|
2
|
+
|
3
|
+
class exports.Clients extends SensuDashboard.Collections.Base
|
4
|
+
model: SensuDashboard.Models.Client,
|
5
|
+
url: "/clients"
|
6
|
+
|
7
|
+
comparator: (event) ->
|
8
|
+
event.get("name")
|
9
|
+
|
10
|
+
getSelected: ->
|
11
|
+
@where(selected: true)
|
12
|
+
|
13
|
+
toggleSelected: ->
|
14
|
+
selected = true
|
15
|
+
selected = false if @getSelected().length == @length
|
16
|
+
@each (client) ->
|
17
|
+
client.set(selected: selected)
|
18
|
+
|
19
|
+
getSilenced: ->
|
20
|
+
@where(silenced: true)
|
21
|
+
|
22
|
+
getUnsilenced: ->
|
23
|
+
@where(silenced: false)
|
24
|
+
|
25
|
+
getSelectedSilenced: ->
|
26
|
+
@where(silenced: true, selected: true)
|
27
|
+
|
28
|
+
getSelectedUnsilenced: ->
|
29
|
+
@where(silenced: false, selected: true)
|
30
|
+
|
31
|
+
selectAll: ->
|
32
|
+
@each (client) ->
|
33
|
+
client.set(selected: true)
|
34
|
+
|
35
|
+
selectNone: ->
|
36
|
+
@each (client) ->
|
37
|
+
client.set(selected: false)
|
38
|
+
|
39
|
+
selectSilenced: ->
|
40
|
+
clients = @getSilenced()
|
41
|
+
clients_selected = @getSelectedSilenced()
|
42
|
+
for client in clients
|
43
|
+
selected = true
|
44
|
+
selected = false if clients_selected.length == clients.length
|
45
|
+
client.set(selected: selected)
|
46
|
+
|
47
|
+
selectUnsilenced: ->
|
48
|
+
clients = @getUnsilenced()
|
49
|
+
clients_selected = @getSelectedUnsilenced()
|
50
|
+
for client in clients
|
51
|
+
selected = true
|
52
|
+
selected = false if clients_selected.length == clients.length
|
53
|
+
client.set(selected: selected)
|
54
|
+
|
55
|
+
silenceSelected: (options = {}) ->
|
56
|
+
@successCallback = options.success
|
57
|
+
@errorCallback = options.error
|
58
|
+
for client in @getSelected()
|
59
|
+
client.silence
|
60
|
+
success: (model, response, opts) =>
|
61
|
+
@successCallback.call(this, model) if @successCallback
|
62
|
+
error: (model, xhr, opts) =>
|
63
|
+
@errorCallback.call(this, model) if @errorCallback
|
64
|
+
|
65
|
+
unsilenceSelected: (options = {}) ->
|
66
|
+
@successCallback = options.success
|
67
|
+
@errorCallback = options.error
|
68
|
+
for client in @getSelected()
|
69
|
+
client.unsilence
|
70
|
+
success: (model, xhr, opts) =>
|
71
|
+
@successCallback.call(this, model) if @successCallback
|
72
|
+
error: (model, xhr, opts) =>
|
73
|
+
@errorCallback.call(this, model) if @errorCallback
|
74
|
+
|
75
|
+
removeSelected: (options = {}) ->
|
76
|
+
@successCallback = options.success
|
77
|
+
@errorCallback = options.error
|
78
|
+
for client in @getSelected()
|
79
|
+
client.remove
|
80
|
+
success: (model, response, opts) =>
|
81
|
+
@successCallback.call(this, model) if @successCallback
|
82
|
+
error: (model, xhr, opts) =>
|
83
|
+
@errorCallback.call(this, model) if @errorCallback
|
@@ -0,0 +1,184 @@
|
|
1
|
+
namespace "SensuDashboard.Collections", (exports) ->
|
2
|
+
|
3
|
+
class exports.Events extends SensuDashboard.Collections.Base
|
4
|
+
model: SensuDashboard.Models.Event,
|
5
|
+
url: "/events"
|
6
|
+
|
7
|
+
comparator: (event) ->
|
8
|
+
event.get("status_name")
|
9
|
+
|
10
|
+
getSelected: ->
|
11
|
+
@where(selected: true)
|
12
|
+
|
13
|
+
getSelectedClients: ->
|
14
|
+
_.map(@getSelected(), (event) -> event.get("client"))
|
15
|
+
|
16
|
+
getUniqueSelectedClients: ->
|
17
|
+
clients = _.uniq(@getSelectedClients())
|
18
|
+
|
19
|
+
getCriticals: ->
|
20
|
+
@where(status: 2)
|
21
|
+
|
22
|
+
getUnknowns: ->
|
23
|
+
@filter (event) ->
|
24
|
+
status = event.get("status")
|
25
|
+
return status != 1 && status != 2
|
26
|
+
|
27
|
+
getWarnings: ->
|
28
|
+
@where(status: 1)
|
29
|
+
|
30
|
+
getSilenced: ->
|
31
|
+
@where(silenced: true)
|
32
|
+
|
33
|
+
getSilencedClients: ->
|
34
|
+
@where(client_silenced: true)
|
35
|
+
|
36
|
+
getUnsilenced: ->
|
37
|
+
@where(silenced: false)
|
38
|
+
|
39
|
+
getUnsilencedClients: ->
|
40
|
+
@where(client_silenced: false)
|
41
|
+
|
42
|
+
getSelectedCriticals: ->
|
43
|
+
@where(status: 2, selected: true)
|
44
|
+
|
45
|
+
getSelectedUnknowns: ->
|
46
|
+
@filter (event) ->
|
47
|
+
status = event.get("status")
|
48
|
+
selected = event.get("selected")
|
49
|
+
return status != 1 && status != 2 && selected == true
|
50
|
+
|
51
|
+
getSelectedWarnings: ->
|
52
|
+
@where(status: 1, selected: true)
|
53
|
+
|
54
|
+
getSelectedSilenced: ->
|
55
|
+
@where(silenced: true, selected: true)
|
56
|
+
|
57
|
+
getSelectedSilencedClients: ->
|
58
|
+
@where(client_silenced: true, selected: true)
|
59
|
+
|
60
|
+
getSelectedUnsilenced: ->
|
61
|
+
@where(silenced: false, selected: true)
|
62
|
+
|
63
|
+
getSelectedUnsilencedClients: ->
|
64
|
+
@where(client_silenced: false, selected: true)
|
65
|
+
|
66
|
+
toggleSelected: ->
|
67
|
+
selected = true
|
68
|
+
selected = false if @getSelected().length == @length
|
69
|
+
@each (event) ->
|
70
|
+
event.set(selected: selected)
|
71
|
+
|
72
|
+
selectAll: ->
|
73
|
+
@each (event) ->
|
74
|
+
event.set(selected: true)
|
75
|
+
|
76
|
+
selectNone: ->
|
77
|
+
@each (event) ->
|
78
|
+
event.set(selected: false)
|
79
|
+
|
80
|
+
selectCritical: ->
|
81
|
+
events = @getCriticals()
|
82
|
+
events_selected = @getSelectedCriticals()
|
83
|
+
for event in events
|
84
|
+
selected = true
|
85
|
+
selected = false if events_selected.length == events.length
|
86
|
+
event.set(selected: selected)
|
87
|
+
|
88
|
+
selectUnknown: ->
|
89
|
+
events = @getUnknowns()
|
90
|
+
events_selected = @getSelectedUnknowns()
|
91
|
+
for event in events
|
92
|
+
selected = true
|
93
|
+
selected = false if events_selected.length == events.length
|
94
|
+
event.set(selected: selected)
|
95
|
+
|
96
|
+
selectWarning: ->
|
97
|
+
events = @getWarnings()
|
98
|
+
events_selected = @getSelectedWarnings()
|
99
|
+
for event in events
|
100
|
+
selected = true
|
101
|
+
selected = false if events_selected.length == events.length
|
102
|
+
event.set(selected: selected)
|
103
|
+
|
104
|
+
selectSilenced: ->
|
105
|
+
events = @getSilenced()
|
106
|
+
events_selected = @getSelectedSilenced()
|
107
|
+
for event in events
|
108
|
+
selected = true
|
109
|
+
selected = false if events_selected.length == events.length
|
110
|
+
event.set(selected: selected)
|
111
|
+
|
112
|
+
selectSilencedClients: ->
|
113
|
+
events = @getSilencedClients()
|
114
|
+
events_selected = @getSelectedSilencedClients()
|
115
|
+
for event in events
|
116
|
+
selected = true
|
117
|
+
selected = false if events_selected.length == events.length
|
118
|
+
event.set(selected: selected)
|
119
|
+
|
120
|
+
selectUnsilenced: ->
|
121
|
+
events = @getUnsilenced()
|
122
|
+
events_selected = @getSelectedUnsilenced()
|
123
|
+
for event in events
|
124
|
+
selected = true
|
125
|
+
selected = false if events_selected.length == events.length
|
126
|
+
event.set(selected: selected)
|
127
|
+
|
128
|
+
selectUnsilencedClients: ->
|
129
|
+
events = @getUnsilencedClients()
|
130
|
+
events_selected = @getSelectedUnsilencedClients()
|
131
|
+
for event in events
|
132
|
+
selected = true
|
133
|
+
selected = false if events_selected.length == events.length
|
134
|
+
event.set(selected: selected)
|
135
|
+
|
136
|
+
resolveSelected: (options = {}) ->
|
137
|
+
@successCallback = options.success
|
138
|
+
@errorCallback = options.error
|
139
|
+
for event in @getSelected()
|
140
|
+
event.resolve
|
141
|
+
success: (model, response, opts) =>
|
142
|
+
@successCallback.call(this, model) if @successCallback
|
143
|
+
error: (model, xhr, opts) =>
|
144
|
+
@errorCallback.call(this, model) if @errorCallback
|
145
|
+
|
146
|
+
silenceSelectedChecks: (options = {}) ->
|
147
|
+
@successCallback = options.success
|
148
|
+
@errorCallback = options.error
|
149
|
+
for event in @getSelected()
|
150
|
+
event.silence
|
151
|
+
success: (model, response, opts) =>
|
152
|
+
@successCallback.call(this, model) if @successCallback
|
153
|
+
error: (model, xhr, opts) =>
|
154
|
+
@errorCallback.call(this, model) if @errorCallback
|
155
|
+
|
156
|
+
unsilenceSelectedChecks: (options = {}) ->
|
157
|
+
@successCallback = options.success
|
158
|
+
@errorCallback = options.error
|
159
|
+
for event in @getSelected()
|
160
|
+
event.unsilence
|
161
|
+
success: (model, response, opts) =>
|
162
|
+
@successCallback.call(this, model) if @successCallback
|
163
|
+
error: (model, xhr, opts) =>
|
164
|
+
@errorCallback.call(this, model) if @errorCallback
|
165
|
+
|
166
|
+
silenceSelectedClients: (options = {}) ->
|
167
|
+
@successCallback = options.success
|
168
|
+
@errorCallback = options.error
|
169
|
+
for client in @getUniqueSelectedClients()
|
170
|
+
SensuDashboard.Clients.get(client).silence
|
171
|
+
success: (model, response, opts) =>
|
172
|
+
@successCallback.call(this, model) if @successCallback
|
173
|
+
error: (model, xhr, opts) =>
|
174
|
+
@errorCallback.call(this, model) if @errorCallback
|
175
|
+
|
176
|
+
unsilenceSelectedClients: (options = {}) ->
|
177
|
+
@successCallback = options.success
|
178
|
+
@errorCallback = options.error
|
179
|
+
for client in @getUniqueSelectedClients()
|
180
|
+
SensuDashboard.Clients.get(client).unsilence
|
181
|
+
success: (model, response, opts) =>
|
182
|
+
@successCallback.call(this, model) if @successCallback
|
183
|
+
error: (model, xhr, opts) =>
|
184
|
+
@errorCallback.call(this, model) if @errorCallback
|
@@ -0,0 +1,37 @@
|
|
1
|
+
namespace "SensuDashboard.Collections", (exports) ->
|
2
|
+
|
3
|
+
class exports.Stashes extends SensuDashboard.Collections.Base
|
4
|
+
model: SensuDashboard.Models.Stash,
|
5
|
+
url: "/stashes"
|
6
|
+
|
7
|
+
getSelected: ->
|
8
|
+
@where(selected: true)
|
9
|
+
|
10
|
+
toggleSelected: ->
|
11
|
+
selected = true
|
12
|
+
selected = false if @getSelected().length == @length
|
13
|
+
@each (stash) ->
|
14
|
+
stash.set(selected: selected)
|
15
|
+
|
16
|
+
selectAll: ->
|
17
|
+
@each (stash) ->
|
18
|
+
stash.set(selected: true)
|
19
|
+
|
20
|
+
selectNone: ->
|
21
|
+
@each (stash) ->
|
22
|
+
stash.set(selected: false)
|
23
|
+
|
24
|
+
removeSelected: (options = {}) ->
|
25
|
+
@successCallback = options.success
|
26
|
+
@errorCallback = options.error
|
27
|
+
for stash in @getSelected()
|
28
|
+
stash.remove
|
29
|
+
success: (model, xhr, opts) =>
|
30
|
+
@successCallback.call(this, model) if @successCallback
|
31
|
+
error: (model, xhr, opts) =>
|
32
|
+
@errorCallback.call(this, model) if @errorCallback
|
33
|
+
|
34
|
+
create: (attributes, options) ->
|
35
|
+
options ||= {}
|
36
|
+
options.wait = true
|
37
|
+
Backbone.Collection.prototype.create.call(this, attributes, options)
|