definition_details.hbs 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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. {{#isAccessible ADMIN}}
  42. <a {{action edit controller.editing.label target="controller"}} class="edit-description-button"><i
  43. class="icon-pencil"></i></a>
  44. {{/isAccessible}}
  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. {{{controller.content.status}}}
  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 span9">
  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. {{#isAccessible ADMIN}}
  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. {{/isAccessible}}
  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="span3 right-column">
  90. <div class="properties-list background-text">
  91. <div class="row-fluid">
  92. <div class="span4 property-name">{{t alerts.table.state}}:</div>
  93. <div class="span8">
  94. {{#if controller.content.enabled}}
  95. {{#isAccessible ADMIN}}
  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. {{/isAccessible}}
  103. {{#isAccessible NON_ADMIN}}
  104. <span {{bindAttr class="controller.content.enabled:alert-definition-enable:alert-definition-disable"}}>
  105. {{t alerts.table.state.enabled}}
  106. </span>
  107. {{/isAccessible}}
  108. {{else}}
  109. {{#isAccessible ADMIN}}
  110. <a href="#" {{action "toggleState" controller.content target="controller"}} {{bindAttr class="controller.content.enabled:alert-definition-enable:alert-definition-disable"}}>
  111. <span
  112. class="enable-disable-button" {{translateAttr data-original-title="alerts.table.state.disabled.tooltip"}}>
  113. {{view.disabledDisplay}}
  114. </span>
  115. </a>
  116. {{/isAccessible}}
  117. {{#isAccessible NON_ADMIN}}
  118. <span {{bindAttr class="controller.content.enabled:alert-definition-enable:alert-definition-disable"}}>
  119. {{t alerts.table.state.disabled}}
  120. </span>
  121. {{/isAccessible}}
  122. {{/if}}
  123. </div>
  124. </div>
  125. {{#if controller.content.serviceDisplayName}}
  126. <div class="row-fluid">
  127. <div class="span4 property-name">{{t common.service}}:</div>
  128. <div class="span8"><span>{{controller.content.serviceDisplayName}}</span></div>
  129. </div>
  130. {{/if}}
  131. {{#if controller.content.componentNameFormatted}}
  132. <div class="row-fluid">
  133. <div class="span4 property-name">{{t common.component}}:</div>
  134. <div class="span8">{{controller.content.componentNameFormatted}}</div>
  135. </div>
  136. {{/if}}
  137. <div class="row-fluid">
  138. <div class="span4 property-name">{{t common.type}}:</div>
  139. <div class="span8">
  140. <span {{bindAttr class=":type-icon controller.content.typeIconClass"}}></span> {{controller.content.type}}
  141. </div>
  142. </div>
  143. {{#if controller.groupsList.length}}
  144. <div class="row-fluid">
  145. <div class="span4 property-name">{{t alerts.definition.details.groups}}:</div>
  146. <div class="span8">
  147. <ul>
  148. {{#each groupName in controller.groupsList}}
  149. <li>{{groupName}}</li>
  150. {{/each}}
  151. </ul>
  152. </div>
  153. </div>
  154. {{/if}}
  155. <div class="row-fluid">
  156. <div class="span4 property-name">{{t alerts.table.header.lastTrigger}}:</div>
  157. <div class="span8">{{controller.content.lastTriggeredFormatted}}</div>
  158. </div>
  159. </div>
  160. </div>
  161. </div>
  162. {{! Right column end }}
  163. {{! List of alerts }}
  164. <div class="definition-details-block">
  165. <span class="background-text">
  166. <strong>{{t alerts.definition.details.instances}}</strong>
  167. </span>
  168. <hr>
  169. <div>
  170. {{#if App.router.mainAlertInstancesController.isLoaded}}
  171. <table class="table advanced-header-table table-bordered table-striped alerts-table" id="alert-instances-table">
  172. <thead>
  173. <tr>
  174. <th class="first">{{t alerts.definition.details.serviceHost}}</th>
  175. <th>{{t common.status}}</th>
  176. <th>{{t alerts.definition.details.24-hour}}</th>
  177. <th>{{t alerts.table.header.check.response}}</th>
  178. </tr>
  179. </thead>
  180. <tbody>
  181. {{#if view.pageContent}}
  182. {{#each instance in view.pageContent}}
  183. {{#view view.instanceTableRow}}
  184. <td class="first">
  185. {{view App.AlertInstanceServiceHostView instanceBinding="instance"}}
  186. </td>
  187. <td>{{{instance.status}}}
  188. <time class="timeago"
  189. rel="tooltip" {{bindAttr data-original-title="instance.statusChangedAndLastCheckedFormatted"}}>
  190. {{instance.lastTriggeredForFormatted}}
  191. </time>
  192. </td>
  193. <td>{{view view.parentView.lastDayCount hostNameBinding="instance.hostName"}}</td>
  194. <td>
  195. <span class="alert-text" {{bindAttr data-original-title="instance.text"}}>{{instance.text}}</span>
  196. </td>
  197. {{/view}}
  198. {{/each}}
  199. {{else}}
  200. <tr>
  201. <td class="first" colspan="5">
  202. {{t alerts.definition.details.noAlerts}}
  203. </td>
  204. </tr>
  205. {{/if}}
  206. </tbody>
  207. </table>
  208. <div class="page-bar">
  209. <div class="items-on-page">
  210. <label>{{t common.show}}: {{view view.rowsPerPageSelectView selectionBinding="view.displayLength"}}</label>
  211. </div>
  212. <div class="info">{{view.paginationInfo}}</div>
  213. <div class="paging_two_button">
  214. <a {{bindAttr class="view.paginationLeftClass"}}{{action previousPage target="view"}}><i
  215. class="icon-arrow-left"></i></a>
  216. <a {{bindAttr class="view.paginationRightClass"}}{{action nextPage target="view"}}><i
  217. class="icon-arrow-right"></i></a>
  218. </div>
  219. </div>
  220. {{else}}
  221. <div class="spinner"></div>
  222. {{/if}}
  223. </div>
  224. </div>
  225. {{! List of alerts end }}
  226. </div>
  227. {{else}}
  228. <div class="spinner"></div>
  229. {{/if}}