definition_details.hbs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. {{!
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. }}
  18. {{#if view.isLoaded}}
  19. <div id="alert-definition-details">
  20. <div class="alert-definition-details-header row-fluid">
  21. <div class="span8">
  22. {{! Alert Definition Name }}
  23. <div class="definition-name row-fluid">
  24. {{#if controller.editing.label.isEditing}}
  25. <div {{bindAttr class="controller.editing.label.isError:error :span5 :name-text-field :control-group"}}>
  26. {{view Em.TextField valueBinding="controller.editing.label.value"}}
  27. </div>
  28. <div class="edit-buttons">
  29. <button {{action cancelEdit controller.editing.label target="controller"}}
  30. class="btn cancel-button">{{t common.cancel}}</button>
  31. <button {{bindAttr disabled="controller.editing.label.isError"}} {{action saveEdit controller.editing.label target="controller"}}
  32. class="btn btn-primary save-button">{{t common.save}}
  33. </button>
  34. </div>
  35. {{else}}
  36. <span>
  37. {{controller.content.label}}
  38. </span>
  39. {{/if}}
  40. {{#unless controller.editing.label.isEditing}}
  41. {{#isAuthorized "SERVICE.TOGGLE_ALERTS"}}
  42. <a {{action edit controller.editing.label target="controller"}} class="edit-description-button"><i
  43. class="icon-pencil"></i></a>
  44. {{/isAuthorized}}
  45. {{/unless}}
  46. </div>
  47. {{! Alert Definition Name end }}
  48. <div><a href="javascript:void(null)" data-toggle="modal" {{action back}}><i
  49. class="icon-arrow-left"></i>&nbsp;{{t common.back}}</a>
  50. </div>
  51. </div>
  52. <div class="status span4">
  53. {{view App.AlertDefinitionSummary contentBinding="view.controller.content"}}
  54. </div>
  55. </div>
  56. <div class="row-fluid" style="display: flex; align-items: stretch;">
  57. {{! Left column }}
  58. {{! Alert Definition Configs }}
  59. <div class="box span8">
  60. <div class="box-header">
  61. <div class="pull-left">
  62. <h4>{{t common.configuration}}</h4>
  63. </div>
  64. <div class="pull-right span5 row-fluid" style="padding:0 10px;">
  65. {{#isAuthorized "SERVICE.TOGGLE_ALERTS"}}
  66. {{#unless App.router.mainAlertDefinitionConfigsController.canEdit}}
  67. <a {{action editConfigs target="App.router.mainAlertDefinitionConfigsController"}}
  68. class="pull-right edit-link">
  69. {{t common.edit}}
  70. </a>
  71. {{/unless}}
  72. {{/isAuthorized}}
  73. </div>
  74. </div>
  75. {{view App.AlertDefinitionConfigsView contentBinding="view.controller.content" alertDefinitionTypeBinding="view.controller.content.type" canEdit=false}}
  76. {{#if App.router.mainAlertDefinitionConfigsController.canEdit}}
  77. <div class="edit-buttons">
  78. <button {{action cancelEditConfigs target="App.router.mainAlertDefinitionConfigsController"}}
  79. class="btn">{{t common.cancel}}</button>
  80. <button {{bindAttr disabled="App.router.mainAlertDefinitionConfigsController.hasErrors"}} {{action saveConfigs target="App.router.mainAlertDefinitionConfigsController"}}
  81. class="btn btn-primary">{{t common.save}}
  82. </button>
  83. </div>
  84. {{/if}}
  85. </div>
  86. {{! Alert Definition Configs end }}
  87. {{! Left column end }}
  88. {{! Right column }}
  89. <div class="span4 right-column">
  90. <div class="properties-list background-text">
  91. <div class="row-fluid">
  92. <div class="span6 property-name">{{t alerts.table.state}}:</div>
  93. <div class="span6">
  94. {{#if controller.content.enabled}}
  95. {{#isAuthorized "SERVICE.TOGGLE_ALERTS"}}
  96. <a href="#" {{action "toggleState" controller.content target="controller"}} {{bindAttr class="controller.content.enabled:alert-definition-enable:alert-definition-disable"}}>
  97. <span
  98. class="enable-disable-button" {{translateAttr data-original-title="alerts.table.state.enabled.tooltip"}}>
  99. {{view.enabledDisplay}}
  100. </span>
  101. </a>
  102. {{else}}
  103. {{view.enabledDisplay}}
  104. {{/isAuthorized}}
  105. {{else}}
  106. {{#isAuthorized "SERVICE.TOGGLE_ALERTS"}}
  107. <a href="#" {{action "toggleState" controller.content target="controller"}} {{bindAttr class="controller.content.enabled:alert-definition-enable:alert-definition-disable"}}>
  108. <span
  109. class="enable-disable-button" {{translateAttr data-original-title="alerts.table.state.disabled.tooltip"}}>
  110. {{view.disabledDisplay}}
  111. </span>
  112. </a>
  113. {{else}}
  114. {{view.disabledDisplay}}
  115. {{/isAuthorized}}
  116. {{/if}}
  117. </div>
  118. </div>
  119. {{#if controller.content.serviceDisplayName}}
  120. <div class="row-fluid">
  121. <div class="span6 property-name">{{t common.service}}:</div>
  122. <div class="span6"><span>{{controller.content.serviceDisplayName}}</span></div>
  123. </div>
  124. {{/if}}
  125. {{#if controller.content.componentNameFormatted}}
  126. <div class="row-fluid">
  127. <div class="span6 property-name">{{t common.component}}:</div>
  128. <div class="span6">{{controller.content.componentNameFormatted}}</div>
  129. </div>
  130. {{/if}}
  131. <div class="row-fluid">
  132. <div class="span6 property-name">{{t common.type}}:</div>
  133. <div class="span6">
  134. <span {{bindAttr class=":type-icon controller.content.typeIconClass"}}></span> {{controller.content.type}}
  135. </div>
  136. </div>
  137. {{#if controller.groupsList.length}}
  138. <div class="row-fluid">
  139. <div class="span6 property-name">{{t alerts.definition.details.groups}}:</div>
  140. <div class="span6">
  141. <ul>
  142. {{#each groupName in controller.groupsList}}
  143. <li>{{groupName}}</li>
  144. {{/each}}
  145. </ul>
  146. </div>
  147. </div>
  148. {{/if}}
  149. <div class="row-fluid">
  150. <div class="span6 property-name">{{t alerts.table.header.lastTrigger}}:</div>
  151. <div class="span6">{{controller.content.lastTriggeredFormatted}}</div>
  152. </div>
  153. {{#unless controller.content.isTypeAggregate}}
  154. <div class="row-fluid">
  155. <div class="span6 property-name">{{t alerts.table.header.repeatTolerance}}:</div>
  156. <div class="span6">
  157. {{#if controller.content.repeat_tolerance_enabled}}
  158. <span>
  159. {{controller.content.repeat_tolerance}}
  160. </span>
  161. {{else}}
  162. <span>
  163. {{controller.globalAlertsRepeatTolerance}}
  164. {{t alerts.table.header.default}}
  165. </span>
  166. {{/if}}
  167. {{#isAuthorized "SERVICE.TOGGLE_ALERTS"}}
  168. <a {{action editRepeatTolerance target="controller"}} class="edit-description-button">
  169. <i class="icon-pencil"></i>
  170. </a>
  171. {{/isAuthorized}}
  172. </div>
  173. </div>
  174. {{/unless}}
  175. </div>
  176. </div>
  177. </div>
  178. {{! Right column end }}
  179. {{! List of alerts }}
  180. <div class="definition-details-block">
  181. <span class="background-text">
  182. <strong>{{t alerts.definition.details.instances}}</strong>
  183. </span>
  184. <hr>
  185. <div>
  186. {{#if App.router.mainAlertInstancesController.isLoaded}}
  187. <table class="table advanced-header-table table-bordered table-striped alerts-table" id="alert-instances-table">
  188. <thead>
  189. {{#view view.sortView classNames="label-row" contentBinding="view.filteredContent"}}
  190. {{view view.parentView.serviceSort class="first service-sorting"}}
  191. {{view view.parentView.hostNameSort class="host-sorting"}}
  192. {{view view.parentView.stateSort class="state-sorting"}}
  193. <th>{{t alerts.definition.details.24-hour}}</th>
  194. <th>{{t alerts.table.header.check.response}}</th>
  195. {{/view}}
  196. <tr class="filter-row">
  197. <th class="first">{{view view.serviceFilterView}}</th>
  198. <th>{{view view.hostNameFilterView}}</th>
  199. <th>{{view view.stateFilterView }}</th>
  200. <th>{{!}}</th>
  201. <th>{{!}}</th>
  202. </tr>
  203. </thead>
  204. <tbody>
  205. {{#if view.pageContent}}
  206. {{#each instance in view.pageContent}}
  207. {{#view view.instanceTableRow}}
  208. <td class="first">
  209. {{#if instance.serviceDisplayName}}
  210. {{#if instance.service.isLoaded}}
  211. <a {{action goToService instance.service target="view"}}
  212. href="#">{{instance.serviceDisplayName}}</a>
  213. {{else}}
  214. {{instance.serviceDisplayName}}
  215. {{/if}}
  216. {{/if}}
  217. </td>
  218. <td>
  219. {{#if instance.hostName}}
  220. <a {{action goToHostAlerts instance.host target="view"}} href="#">
  221. {{instance.hostName}}
  222. </a>
  223. {{/if}}
  224. </td>
  225. <td>
  226. {{view App.AlertInstanceStateView instanceBinding="instance"}}
  227. </td>
  228. <td>{{view view.parentView.lastDayCount hostNameBinding="instance.hostName"}}</td>
  229. <td>
  230. <a href="#" class="alert-text" {{action openFullResponse instance target="view"}} {{bindAttr data-original-title="instance.text"}}>
  231. {{instance.text}}
  232. </a>
  233. </td>
  234. {{/view}}
  235. {{/each}}
  236. {{else}}
  237. <tr>
  238. <td class="first" colspan="5">
  239. {{t alerts.definition.details.noAlerts}}
  240. </td>
  241. </tr>
  242. {{/if}}
  243. </tbody>
  244. </table>
  245. <div class="page-bar">
  246. <div class="filtered-info span4">
  247. {{#if view.showFilteredContent}}
  248. <label>{{view.filteredContentInfo}} - <a {{action clearFilters target="view"}}
  249. href="#">{{t tableView.filters.clearAllFilters}}</a></label>
  250. {{/if}}
  251. </div>
  252. <div class="items-on-page">
  253. <label>{{t common.show}}: {{view view.rowsPerPageSelectView selectionBinding="view.displayLength"}}</label>
  254. </div>
  255. <div class="info">{{view.paginationInfo}}</div>
  256. <div class="paging_two_button">
  257. <a {{bindAttr class="view.paginationLeftClass"}}{{action previousPage target="view"}}><i
  258. class="icon-arrow-left"></i></a>
  259. <a {{bindAttr class="view.paginationRightClass"}}{{action nextPage target="view"}}><i
  260. class="icon-arrow-right"></i></a>
  261. </div>
  262. </div>
  263. {{else}}
  264. {{view App.SpinnerView}}
  265. {{/if}}
  266. </div>
  267. </div>
  268. {{! List of alerts end }}
  269. </div>
  270. {{else}}
  271. {{view App.SpinnerView}}
  272. {{/if}}