From 001d91128245ec2f85271d4b7a0b59121a2cefa2 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Fri, 8 May 2020 15:11:55 +0300 Subject: [PATCH] Problems: fix tags add/remove --- src/datasource-zabbix/datasource.ts | 2 -- src/panel-triggers/migrations.ts | 14 ++++++++- src/panel-triggers/triggers_panel_ctrl.js | 37 ++++++++++++++--------- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/datasource-zabbix/datasource.ts b/src/datasource-zabbix/datasource.ts index ec1a224..317f077 100644 --- a/src/datasource-zabbix/datasource.ts +++ b/src/datasource-zabbix/datasource.ts @@ -456,8 +456,6 @@ export class ZabbixDatasource { return problemsPromises.then(problems => { const problemsDataFrame = problemsHandler.toDataFrame(problems); - console.log(problems); - console.log(problemsDataFrame); return problemsDataFrame; }); } diff --git a/src/panel-triggers/migrations.ts b/src/panel-triggers/migrations.ts index fc34323..834b2a6 100644 --- a/src/panel-triggers/migrations.ts +++ b/src/panel-triggers/migrations.ts @@ -1,10 +1,21 @@ import _ from 'lodash'; import { getNextRefIdChar } from './utils'; -import { getDefaultTarget } from './triggers_panel_ctrl'; // Actual schema version export const CURRENT_SCHEMA_VERSION = 8; +export const getDefaultTarget = (targets?) => { + return { + group: {filter: ""}, + host: {filter: ""}, + application: {filter: ""}, + trigger: {filter: ""}, + tags: {filter: ""}, + proxy: {filter: ""}, + refId: getNextRefIdChar(targets), + }; +}; + export function getDefaultTargetOptions() { return { hostsInMaintenance: true, @@ -89,6 +100,7 @@ export function migratePanelSchema(panel) { // set queryType to PROBLEMS target.queryType = 5; target.options = getDefaultTargetOptions(); + _.defaults(target, {tags: {filter: ""}}); } } diff --git a/src/panel-triggers/triggers_panel_ctrl.js b/src/panel-triggers/triggers_panel_ctrl.js index a91f0f3..9ce138d 100644 --- a/src/panel-triggers/triggers_panel_ctrl.js +++ b/src/panel-triggers/triggers_panel_ctrl.js @@ -266,25 +266,32 @@ export class TriggerPanelCtrl extends MetricsPanelCtrl { } addTagFilter(tag, datasource) { - const target = this.panel.targets.find(t => t.datasource === datasource); - let tagFilter = target.tags.filter; - let targetTags = this.parseTags(tagFilter); - let newTag = {tag: tag.tag, value: tag.value}; - targetTags.push(newTag); - targetTags = _.uniqWith(targetTags, _.isEqual); - let newFilter = this.tagsToString(targetTags); - target.tags.filter = newFilter; + for (const target of this.panel.targets) { + if (target.datasource === datasource || this.panel.datasource === datasource) { + let tagFilter = target.tags.filter; + let targetTags = this.parseTags(tagFilter); + let newTag = {tag: tag.tag, value: tag.value}; + targetTags.push(newTag); + targetTags = _.uniqWith(targetTags, _.isEqual); + let newFilter = this.tagsToString(targetTags); + target.tags.filter = newFilter; + } + } this.refresh(); } removeTagFilter(tag, datasource) { - const target = this.panel.targets.find(t => t.datasource === datasource); - let tagFilter = target.tags.filter; - let targetTags = this.parseTags(tagFilter); - _.remove(targetTags, t => t.tag === tag.tag && t.value === tag.value); - targetTags = _.uniqWith(targetTags, _.isEqual); - let newFilter = this.tagsToString(targetTags); - target.tags.filter = newFilter; + const matchTag = t => t.tag === tag.tag && t.value === tag.value; + for (const target of this.panel.targets) { + if (target.datasource === datasource || this.panel.datasource === datasource) { + let tagFilter = target.tags.filter; + let targetTags = this.parseTags(tagFilter); + _.remove(targetTags, matchTag); + targetTags = _.uniqWith(targetTags, _.isEqual); + let newFilter = this.tagsToString(targetTags); + target.tags.filter = newFilter; + } + } this.refresh(); }