sensu-dashboard 0.9.8 → 0.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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)