diff --git a/src/panel-triggers/triggers_panel_ctrl.js b/src/panel-triggers/triggers_panel_ctrl.js index 72156a4..5f3a31c 100644 --- a/src/panel-triggers/triggers_panel_ctrl.js +++ b/src/panel-triggers/triggers_panel_ctrl.js @@ -90,7 +90,6 @@ export class TriggerPanelCtrl extends PanelCtrl { this.defaultTimeFormat = DEFAULT_TIME_FORMAT; this.pageIndex = 0; this.triggerList = []; - this.currentTriggersPage = []; this.datasources = {}; this.range = {}; @@ -206,7 +205,6 @@ export class TriggerPanelCtrl extends PanelCtrl { triggers = triggers.slice(0, this.panel.limit || PANEL_DEFAULTS.limit); this.triggerList = triggers; - this.getCurrentTriggersPage(); return this.$timeout(() => { return super.render(this.triggerList); @@ -499,32 +497,6 @@ export class TriggerPanelCtrl extends PanelCtrl { this.refresh(); } - switchComment(trigger) { - trigger.showComment = !trigger.showComment; - } - - acknowledgeTrigger(trigger, message) { - let eventid = trigger.lastEvent ? trigger.lastEvent.eventid : null; - let grafana_user = this.contextSrv.user.name; - let ack_message = grafana_user + ' (Grafana): ' + message; - return this.datasourceSrv.get(trigger.datasource) - .then(datasource => { - const userIsEditor = this.contextSrv.isEditor || this.contextSrv.isGrafanaAdmin; - if (datasource.disableReadOnlyUsersAck && !userIsEditor) { - return Promise.reject({message: 'You have no permissions to acknowledge events.'}); - } - if (eventid) { - return datasource.zabbix.acknowledgeEvent(eventid, ack_message); - } else { - return Promise.reject({message: 'Trigger has no events. Nothing to acknowledge.'}); - } - }) - .then(this.onRefresh.bind(this)) - .catch((err) => { - this.setPanelError(err); - }); - } - getProblemEvents(trigger) { const triggerids = [trigger.triggerid]; const timeFrom = Math.ceil(dateMath.parse(this.range.from) / 1000); @@ -535,22 +507,6 @@ export class TriggerPanelCtrl extends PanelCtrl { }); } - getCurrentTriggersPage() { - let pageSize = this.panel.pageSize || PANEL_DEFAULTS.pageSize; - let startPos = this.pageIndex * pageSize; - let endPos = Math.min(startPos + pageSize, this.triggerList.length); - this.currentTriggersPage = this.triggerList.slice(startPos, endPos); - return this.currentTriggersPage; - } - - handlePageSizeChange(pageSize, pageIndex) { - this.panel.pageSize = pageSize; - this.pageIndex = pageIndex; - this.scope.$apply(() => { - this.render(); - }); - } - formatHostName(trigger) { let host = ""; if (this.panel.hostField && this.panel.hostTechNameField) { @@ -575,57 +531,6 @@ export class TriggerPanelCtrl extends PanelCtrl { return groupNames; } - getAlertIconClass(trigger) { - let iconClass = ''; - if (trigger.value === '1') { - if (trigger.priority >= 3) { - iconClass = 'icon-gf-critical'; - } else { - iconClass = 'icon-gf-warning'; - } - } else { - iconClass = 'icon-gf-online'; - } - - if (this.panel.highlightNewEvents && this.isNewTrigger(trigger)) { - iconClass += ' zabbix-trigger--blinked'; - } - return iconClass; - } - - getAlertIconClassBySeverity(triggerSeverity) { - let iconClass = 'icon-gf-warning'; - if (triggerSeverity.priority >= 3) { - iconClass = 'icon-gf-critical'; - } - return iconClass; - } - - getAlertStateClass(trigger) { - let statusClass = ''; - - if (trigger.value === '1') { - statusClass = 'alert-state-critical'; - } else { - statusClass = 'alert-state-ok'; - } - - if (this.panel.highlightNewEvents && this.isNewTrigger(trigger)) { - statusClass += ' zabbix-trigger--blinked'; - } - - return statusClass; - } - - getBackground(trigger) { - const mainColor = trigger.color; - const secondColor = this.contextSrv.user.lightTheme ? '#dde4ed' : '#262628'; - if (this.contextSrv.user.lightTheme) { - return `linear-gradient(135deg, ${secondColor}, ${mainColor})`; - } - return `linear-gradient(135deg, ${mainColor}, ${secondColor})`; - } - isNewTrigger(trigger) { try { const highlightIntervalMs = utils.parseInterval(this.panel.highlightNewerThan || PANEL_DEFAULTS.highlightNewerThan); @@ -636,98 +541,47 @@ export class TriggerPanelCtrl extends PanelCtrl { } } + acknowledgeTrigger(trigger, message) { + let eventid = trigger.lastEvent ? trigger.lastEvent.eventid : null; + let grafana_user = this.contextSrv.user.name; + let ack_message = grafana_user + ' (Grafana): ' + message; + return this.datasourceSrv.get(trigger.datasource) + .then(datasource => { + const userIsEditor = this.contextSrv.isEditor || this.contextSrv.isGrafanaAdmin; + if (datasource.disableReadOnlyUsersAck && !userIsEditor) { + return Promise.reject({message: 'You have no permissions to acknowledge events.'}); + } + if (eventid) { + return datasource.zabbix.acknowledgeEvent(eventid, ack_message); + } else { + return Promise.reject({message: 'Trigger has no events. Nothing to acknowledge.'}); + } + }) + .then(this.onRefresh.bind(this)) + .catch((err) => { + this.setPanelError(err); + }); + } + + handlePageSizeChange(pageSize, pageIndex) { + this.panel.pageSize = pageSize; + this.pageIndex = pageIndex; + this.scope.$apply(() => { + this.render(); + }); + } + link(scope, elem, attrs, ctrl) { let panel = ctrl.panel; - let pageCount = 0; let triggerList = ctrl.triggerList; - scope.$watchGroup(['ctrl.currentTriggersPage', 'ctrl.triggerList'], renderPanel); - elem.on('click', '.triggers-panel-page-link', switchPage); + scope.$watchGroup(['ctrl.triggerList'], renderPanel); ctrl.events.on('render', (renderData) => { triggerList = renderData || triggerList; renderPanel(); }); - function getContentHeight() { - let panelHeight = ctrl.height; - if (pageCount > 1) { - panelHeight -= 36; - } - return panelHeight + 'px'; - } - - function switchPage(e) { - let el = $(e.currentTarget); - ctrl.pageIndex = (parseInt(el.text(), 10)-1); - - let pageSize = panel.pageSize || 10; - let startPos = ctrl.pageIndex * pageSize; - let endPos = Math.min(startPos + pageSize, triggerList.length); - ctrl.currentTriggersPage = triggerList.slice(startPos, endPos); - - scope.$apply(() => { - renderPanel(); - }); - } - - function appendPaginationControls(footerElem) { - footerElem.empty(); - - let pageSize = panel.pageSize || 5; - pageCount = Math.ceil(triggerList.length / pageSize); - if (pageCount === 1) { - return; - } - - let startPage = Math.max(ctrl.pageIndex - 3, 0); - let endPage = Math.min(pageCount, startPage + 9); - - let paginationList = $('