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.
Files changed (153) hide show
  1. data/CHANGELOG.md +0 -0
  2. data/README.md +9 -0
  3. data/bin/sensu-dashboard +8 -7
  4. data/lib/sensu-dashboard.rb +3 -0
  5. data/lib/sensu-dashboard/assets/javascripts/app.js +38 -0
  6. data/lib/sensu-dashboard/assets/javascripts/application.coffee +21 -0
  7. data/lib/sensu-dashboard/assets/javascripts/bootstrapper.coffee +39 -0
  8. data/lib/sensu-dashboard/assets/javascripts/collections/base.coffee +22 -0
  9. data/lib/sensu-dashboard/assets/javascripts/collections/checks.coffee +8 -0
  10. data/lib/sensu-dashboard/assets/javascripts/collections/clients.coffee +83 -0
  11. data/lib/sensu-dashboard/assets/javascripts/collections/events.coffee +184 -0
  12. data/lib/sensu-dashboard/assets/javascripts/collections/stashes.coffee +37 -0
  13. data/lib/sensu-dashboard/assets/javascripts/config/states.coffee +30 -0
  14. data/lib/sensu-dashboard/assets/javascripts/handlebars_helpers.coffee +2 -0
  15. data/lib/sensu-dashboard/assets/javascripts/libs/backbone-min.js +4 -0
  16. data/lib/sensu-dashboard/assets/javascripts/libs/bootstrap.min.js +7 -0
  17. data/lib/sensu-dashboard/assets/javascripts/libs/jquery-1.9.1.min.js +5 -0
  18. data/lib/sensu-dashboard/assets/javascripts/libs/liquid.metal.js +107 -0
  19. data/lib/sensu-dashboard/assets/javascripts/libs/lodash.underscore.min.js +34 -0
  20. data/lib/sensu-dashboard/assets/javascripts/libs/retina.js +3 -0
  21. data/lib/sensu-dashboard/assets/javascripts/libs/scroll.into.view.js +32 -0
  22. data/lib/sensu-dashboard/assets/javascripts/libs/toastr.min.js +1 -0
  23. data/lib/sensu-dashboard/assets/javascripts/libs/token.field.coffee +173 -0
  24. data/lib/sensu-dashboard/assets/javascripts/matcher.coffee +34 -0
  25. data/lib/sensu-dashboard/assets/javascripts/models/check.coffee +11 -0
  26. data/lib/sensu-dashboard/assets/javascripts/models/client.coffee +58 -0
  27. data/lib/sensu-dashboard/assets/javascripts/models/event.coffee +78 -0
  28. data/lib/sensu-dashboard/assets/javascripts/models/info.coffee +58 -0
  29. data/lib/sensu-dashboard/assets/javascripts/models/metadata/events.coffee +21 -0
  30. data/lib/sensu-dashboard/assets/javascripts/models/stash.coffee +34 -0
  31. data/lib/sensu-dashboard/assets/javascripts/namespace.coffee +17 -0
  32. data/lib/sensu-dashboard/assets/javascripts/state.coffee +33 -0
  33. data/lib/sensu-dashboard/assets/javascripts/state_manager.coffee +52 -0
  34. data/lib/sensu-dashboard/assets/javascripts/states/main_state.coffee +6 -0
  35. data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_check_item.hbs +1 -0
  36. data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_check_token.hbs +1 -0
  37. data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_client_item.hbs +1 -0
  38. data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_client_token.hbs +1 -0
  39. data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_query_item.hbs +1 -0
  40. data/lib/sensu-dashboard/assets/javascripts/templates/autocomplete/results_query_token.hbs +1 -0
  41. data/lib/sensu-dashboard/assets/javascripts/templates/checks/index.hbs +10 -0
  42. data/lib/sensu-dashboard/assets/javascripts/templates/checks/list.hbs +12 -0
  43. data/lib/sensu-dashboard/assets/javascripts/templates/checks/list_item.hbs +5 -0
  44. data/lib/sensu-dashboard/assets/javascripts/templates/clients/counts.hbs +6 -0
  45. data/lib/sensu-dashboard/assets/javascripts/templates/clients/index.hbs +26 -0
  46. data/lib/sensu-dashboard/assets/javascripts/templates/clients/list.hbs +12 -0
  47. data/lib/sensu-dashboard/assets/javascripts/templates/clients/list_item.hbs +14 -0
  48. data/lib/sensu-dashboard/assets/javascripts/templates/clients/modal.hbs +30 -0
  49. data/lib/sensu-dashboard/assets/javascripts/templates/empty_list.hbs +4 -0
  50. data/lib/sensu-dashboard/assets/javascripts/templates/error.hbs +5 -0
  51. data/lib/sensu-dashboard/assets/javascripts/templates/events/counts.hbs +9 -0
  52. data/lib/sensu-dashboard/assets/javascripts/templates/events/index.hbs +33 -0
  53. data/lib/sensu-dashboard/assets/javascripts/templates/events/list.hbs +11 -0
  54. data/lib/sensu-dashboard/assets/javascripts/templates/events/list_item.hbs +18 -0
  55. data/lib/sensu-dashboard/assets/javascripts/templates/events/modal.hbs +47 -0
  56. data/lib/sensu-dashboard/assets/javascripts/templates/info/index.hbs +54 -0
  57. data/lib/sensu-dashboard/assets/javascripts/templates/modal.hbs +17 -0
  58. data/lib/sensu-dashboard/assets/javascripts/templates/stashes/counts.hbs +6 -0
  59. data/lib/sensu-dashboard/assets/javascripts/templates/stashes/index.hbs +22 -0
  60. data/lib/sensu-dashboard/assets/javascripts/templates/stashes/list.hbs +10 -0
  61. data/lib/sensu-dashboard/assets/javascripts/templates/stashes/list_item.hbs +5 -0
  62. data/lib/sensu-dashboard/assets/javascripts/templates/stashes/modal.hbs +25 -0
  63. data/lib/sensu-dashboard/assets/javascripts/views/auto_complete/auto_complete_field.coffee +133 -0
  64. data/lib/sensu-dashboard/assets/javascripts/views/auto_complete/auto_complete_results.coffee +135 -0
  65. data/lib/sensu-dashboard/assets/javascripts/views/auto_complete/auto_complete_token.coffee +31 -0
  66. data/lib/sensu-dashboard/assets/javascripts/views/base.coffee +16 -0
  67. data/lib/sensu-dashboard/assets/javascripts/views/checks/index.coffee +18 -0
  68. data/lib/sensu-dashboard/assets/javascripts/views/checks/list.coffee +48 -0
  69. data/lib/sensu-dashboard/assets/javascripts/views/checks/list_item.coffee +17 -0
  70. data/lib/sensu-dashboard/assets/javascripts/views/clients/counts.coffee +13 -0
  71. data/lib/sensu-dashboard/assets/javascripts/views/clients/index.coffee +83 -0
  72. data/lib/sensu-dashboard/assets/javascripts/views/clients/list.coffee +56 -0
  73. data/lib/sensu-dashboard/assets/javascripts/views/clients/list_item.coffee +20 -0
  74. data/lib/sensu-dashboard/assets/javascripts/views/clients/modal.coffee +83 -0
  75. data/lib/sensu-dashboard/assets/javascripts/views/error.coffee +17 -0
  76. data/lib/sensu-dashboard/assets/javascripts/views/events/counts.coffee +12 -0
  77. data/lib/sensu-dashboard/assets/javascripts/views/events/index.coffee +143 -0
  78. data/lib/sensu-dashboard/assets/javascripts/views/events/list.coffee +52 -0
  79. data/lib/sensu-dashboard/assets/javascripts/views/events/list_item.coffee +25 -0
  80. data/lib/sensu-dashboard/assets/javascripts/views/events/modal.coffee +129 -0
  81. data/lib/sensu-dashboard/assets/javascripts/views/info/index.coffee +13 -0
  82. data/lib/sensu-dashboard/assets/javascripts/views/list.coffee +44 -0
  83. data/lib/sensu-dashboard/assets/javascripts/views/list_item.coffee +14 -0
  84. data/lib/sensu-dashboard/assets/javascripts/views/modal.coffee +25 -0
  85. data/lib/sensu-dashboard/assets/javascripts/views/stashes/counts.coffee +13 -0
  86. data/lib/sensu-dashboard/assets/javascripts/views/stashes/index.coffee +49 -0
  87. data/lib/sensu-dashboard/assets/javascripts/views/stashes/list.coffee +45 -0
  88. data/lib/sensu-dashboard/assets/javascripts/views/stashes/list_item.coffee +28 -0
  89. data/lib/sensu-dashboard/assets/javascripts/views/stashes/modal.coffee +46 -0
  90. data/lib/sensu-dashboard/assets/stylesheets/app.css +5 -0
  91. data/lib/sensu-dashboard/assets/stylesheets/libs/bootstrap.min.css +717 -0
  92. data/lib/sensu-dashboard/assets/stylesheets/libs/font-awesome.less +537 -0
  93. data/lib/sensu-dashboard/assets/stylesheets/libs/toastr.min.css +1 -0
  94. data/lib/sensu-dashboard/assets/stylesheets/main.sass +414 -0
  95. data/lib/sensu-dashboard/constants.rb +7 -0
  96. data/lib/sensu-dashboard/public/favicon.ico +0 -0
  97. data/lib/sensu-dashboard/public/font/FontAwesome.otf +0 -0
  98. data/lib/sensu-dashboard/public/font/fontawesome-webfont.eot +0 -0
  99. data/lib/sensu-dashboard/public/font/fontawesome-webfont.svg +284 -0
  100. data/lib/sensu-dashboard/public/font/fontawesome-webfont.ttf +0 -0
  101. data/lib/sensu-dashboard/public/font/fontawesome-webfont.woff +0 -0
  102. data/lib/sensu-dashboard/public/img/favicon_114.png +0 -0
  103. data/lib/sensu-dashboard/public/img/favicon_144.png +0 -0
  104. data/lib/sensu-dashboard/public/img/favicon_57.png +0 -0
  105. data/lib/sensu-dashboard/public/img/favicon_64.png +0 -0
  106. data/lib/sensu-dashboard/public/img/favicon_72.png +0 -0
  107. data/lib/sensu-dashboard/public/img/glyphicons-halflings-white.png +0 -0
  108. data/lib/sensu-dashboard/public/img/glyphicons-halflings.png +0 -0
  109. data/lib/sensu-dashboard/public/img/loading.gif +0 -0
  110. data/lib/sensu-dashboard/public/img/logo.png +0 -0
  111. data/lib/sensu-dashboard/public/img/logo@2x.png +0 -0
  112. data/lib/sensu-dashboard/server.rb +337 -0
  113. data/lib/sensu-dashboard/views/layout.slim +49 -0
  114. data/lib/sensu-dashboard/views/main.slim +3 -0
  115. data/sensu-dashboard.gemspec +21 -11
  116. metadata +308 -120
  117. data/.gitignore +0 -6
  118. data/Gemfile +0 -4
  119. data/README.org +0 -4
  120. data/Rakefile +0 -1
  121. data/lib/sensu-dashboard/app.rb +0 -439
  122. data/lib/sensu-dashboard/public/css/autoSuggest.css +0 -217
  123. data/lib/sensu-dashboard/public/css/style.css +0 -177
  124. data/lib/sensu-dashboard/public/img/cross.png +0 -0
  125. data/lib/sensu-dashboard/public/img/footer_bg.png +0 -0
  126. data/lib/sensu-dashboard/public/img/header_bg.png +0 -0
  127. data/lib/sensu-dashboard/public/img/loading_circle.gif +0 -0
  128. data/lib/sensu-dashboard/public/img/main_content_bg.png +0 -0
  129. data/lib/sensu-dashboard/public/img/megaphone_icon.png +0 -0
  130. data/lib/sensu-dashboard/public/img/megaphone_icon_off.png +0 -0
  131. data/lib/sensu-dashboard/public/js/FABridge.js +0 -604
  132. data/lib/sensu-dashboard/public/js/functions.js +0 -367
  133. data/lib/sensu-dashboard/public/js/jquery-1.5.1.min.js +0 -16
  134. data/lib/sensu-dashboard/public/js/jquery.autoSuggest.js +0 -375
  135. data/lib/sensu-dashboard/public/js/jquery.leanModal.min.js +0 -1
  136. data/lib/sensu-dashboard/public/js/jquery.sortElements.js +0 -69
  137. data/lib/sensu-dashboard/public/js/jquery.tmpl.min.js +0 -1
  138. data/lib/sensu-dashboard/public/js/jquery.zclip.min.js +0 -12
  139. data/lib/sensu-dashboard/public/js/modernizr-1.7.min.js +0 -2
  140. data/lib/sensu-dashboard/public/js/swfobject.js +0 -4
  141. data/lib/sensu-dashboard/public/js/web_socket.js +0 -312
  142. data/lib/sensu-dashboard/public/js/webtoolkit.sha1.js +0 -174
  143. data/lib/sensu-dashboard/public/swf/WebSocketMain.swf +0 -0
  144. data/lib/sensu-dashboard/public/swf/ZeroClipboard.swf +0 -0
  145. data/lib/sensu-dashboard/version.rb +0 -5
  146. data/lib/sensu-dashboard/views/client_templates.erb +0 -67
  147. data/lib/sensu-dashboard/views/clients.erb +0 -36
  148. data/lib/sensu-dashboard/views/event_templates.erb +0 -185
  149. data/lib/sensu-dashboard/views/index.erb +0 -48
  150. data/lib/sensu-dashboard/views/layout.erb +0 -132
  151. data/lib/sensu-dashboard/views/sonian.sass +0 -213
  152. data/lib/sensu-dashboard/views/stash_templates.erb +0 -44
  153. 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
- begin
3
- require 'sensu-dashboard/app.rb'
4
- rescue LoadError => e
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,3 @@
1
+ module Sensu
2
+ # A front-end dashboard for the Sensu monitoring framework.
3
+ end
@@ -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,8 @@
1
+ namespace "SensuDashboard.Collections", (exports) ->
2
+
3
+ class exports.Checks extends SensuDashboard.Collections.Base
4
+ model: SensuDashboard.Models.Check,
5
+ url: "/checks"
6
+
7
+ comparator: (event) ->
8
+ event.get "name"
@@ -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)