diff --git a/dist/datasource-zabbix/query.controller.js b/dist/datasource-zabbix/query.controller.js index cbb49aa..246d4f1 100644 --- a/dist/datasource-zabbix/query.controller.js +++ b/dist/datasource-zabbix/query.controller.js @@ -91,7 +91,7 @@ System.register(['app/plugins/sdk', 'angular', 'lodash', './utils', './metricFun // Map functions for bs-typeahead _this.getGroupNames = _.bind(_this.getMetricNames, _this, 'groupList'); - _this.getHostNames = _.bind(_this.getMetricNames, _this, 'hostList'); + _this.getHostNames = _.bind(_this.getMetricNames, _this, 'hostList', true); _this.getApplicationNames = _.bind(_this.getMetricNames, _this, 'appList'); _this.getItemNames = _.bind(_this.getMetricNames, _this, 'itemList'); @@ -161,7 +161,7 @@ System.register(['app/plugins/sdk', 'angular', 'lodash', './utils', './metricFun } }, { key: 'getMetricNames', - value: function getMetricNames(metricList) { + value: function getMetricNames(metricList, addAllValue) { var metrics = _.uniq(_.map(this.metric[metricList], 'name')); // Add template variables @@ -169,6 +169,10 @@ System.register(['app/plugins/sdk', 'angular', 'lodash', './utils', './metricFun metrics.unshift('$' + variable.name); }); + if (addAllValue) { + metrics.unshift('/.*/'); + } + return metrics; } }, { diff --git a/dist/datasource-zabbix/query.controller.js.map b/dist/datasource-zabbix/query.controller.js.map index 7d47777..f55f5bd 100644 --- a/dist/datasource-zabbix/query.controller.js.map +++ b/dist/datasource-zabbix/query.controller.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/datasource-zabbix/query.controller.js"],"names":["QueryCtrl","angular","_","utils","metricFunctions","migrations","ZabbixQueryController","$scope","$injector","$rootScope","$sce","templateSrv","zabbix","datasource","replaceTemplateVars","editorModes","value","text","mode","getGroupNames","bind","getMetricNames","getHostNames","getApplicationNames","getItemNames","$on","onVariableChange","onTargetBlur","init","target","migrate","scopeDefaults","metric","oldTarget","cloneDeep","queryOptionsText","renderQueryOptionsText","defaults","targetDefaults","group","filter","host","application","item","functions","options","showDisabledItems","map","func","createFuncInstance","def","params","downsampleFunctionList","name","initFilters","slaPropertyList","property","itserviceList","updateITServiceList","itemtype","Promise","all","suggestGroups","suggestHosts","suggestApps","suggestItems","metricList","metrics","uniq","forEach","variables","unshift","variable","getAllGroups","then","groupList","groups","groupFilter","getAllHosts","hostList","hosts","hostFilter","getAllApps","appList","apps","appFilter","getAllItems","itemList","items","str","isRegex","isTemplateVariable","newTarget","isEqual","targetChanged","isContainsVariables","some","field","parseTarget","panelCtrl","refresh","funcDef","newFunc","added","push","moveAliasFuncLast","length","without","aliasFunc","find","showQueryOptions","optionsMap","forOwn","key","join","getITService","iteservices","concat","isEmpty","errors","copy","templateUrl"],"mappings":"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","file":"query.controller.js","sourcesContent":["import {QueryCtrl} from 'app/plugins/sdk';\nimport angular from 'angular';\nimport _ from 'lodash';\nimport * as utils from './utils';\nimport * as metricFunctions from './metricFunctions';\nimport * as migrations from './migrations';\n\nimport './add-metric-function.directive';\nimport './metric-function-editor.directive';\n\nimport './css/query-editor.css!';\n\nexport class ZabbixQueryController extends QueryCtrl {\n\n // ZabbixQueryCtrl constructor\n constructor($scope, $injector, $rootScope, $sce, templateSrv) {\n super($scope, $injector);\n this.zabbix = this.datasource.zabbix;\n\n // Use custom format for template variables\n this.replaceTemplateVars = this.datasource.replaceTemplateVars;\n this.templateSrv = templateSrv;\n\n this.editorModes = {\n 0: {value: 'num', text: 'Metrics', mode: 0},\n 1: {value: 'itservice', text: 'IT Services', mode: 1},\n 2: {value: 'text', text: 'Text', mode: 2}\n };\n\n // Map functions for bs-typeahead\n this.getGroupNames = _.bind(this.getMetricNames, this, 'groupList');\n this.getHostNames = _.bind(this.getMetricNames, this, 'hostList');\n this.getApplicationNames = _.bind(this.getMetricNames, this, 'appList');\n this.getItemNames = _.bind(this.getMetricNames, this, 'itemList');\n\n // Update metric suggestion when template variable was changed\n $rootScope.$on('template-variable-value-updated', () => this.onVariableChange());\n\n // Update metrics when item selected from dropdown\n $scope.$on('typeahead-updated', () => {\n this.onTargetBlur();\n });\n\n this.init = function() {\n var target = this.target;\n\n // Migrate old targets\n target = migrations.migrate(target);\n\n var scopeDefaults = {\n metric: {},\n oldTarget: _.cloneDeep(this.target),\n queryOptionsText: this.renderQueryOptionsText()\n };\n _.defaults(this, scopeDefaults);\n\n // Load default values\n var targetDefaults = {\n mode: 0,\n group: { filter: \"\" },\n host: { filter: \"\" },\n application: { filter: \"\" },\n item: { filter: \"\" },\n functions: [],\n options: {\n showDisabledItems: false\n }\n };\n _.defaults(target, targetDefaults);\n\n // Create function instances from saved JSON\n target.functions = _.map(target.functions, function(func) {\n return metricFunctions.createFuncInstance(func.def, func.params);\n });\n\n if (target.mode === 0 ||\n target.mode === 2) {\n\n this.downsampleFunctionList = [\n {name: \"avg\", value: \"avg\"},\n {name: \"min\", value: \"min\"},\n {name: \"max\", value: \"max\"}\n ];\n\n this.initFilters();\n }\n else if (target.mode === 1) {\n this.slaPropertyList = [\n {name: \"Status\", property: \"status\"},\n {name: \"SLA\", property: \"sla\"},\n {name: \"OK time\", property: \"okTime\"},\n {name: \"Problem time\", property: \"problemTime\"},\n {name: \"Down time\", property: \"downtimeTime\"}\n ];\n this.itserviceList = [{name: \"test\"}];\n this.updateITServiceList();\n }\n };\n\n this.init();\n }\n\n initFilters() {\n let itemtype = this.editorModes[this.target.mode].value;\n return Promise.all([\n this.suggestGroups(),\n this.suggestHosts(),\n this.suggestApps(),\n this.suggestItems(itemtype)\n ]);\n }\n\n // Get list of metric names for bs-typeahead directive\n getMetricNames(metricList) {\n let metrics = _.uniq(_.map(this.metric[metricList], 'name'));\n\n // Add template variables\n _.forEach(this.templateSrv.variables, variable => {\n metrics.unshift('$' + variable.name);\n });\n\n return metrics;\n }\n\n suggestGroups() {\n return this.zabbix.getAllGroups()\n .then(groups => {\n this.metric.groupList = groups;\n return groups;\n });\n }\n\n suggestHosts() {\n let groupFilter = this.replaceTemplateVars(this.target.group.filter);\n return this.zabbix.getAllHosts(groupFilter)\n .then(hosts => {\n this.metric.hostList = hosts;\n return hosts;\n });\n }\n\n suggestApps() {\n let groupFilter = this.replaceTemplateVars(this.target.group.filter);\n let hostFilter = this.replaceTemplateVars(this.target.host.filter);\n return this.zabbix.getAllApps(groupFilter, hostFilter)\n .then(apps => {\n this.metric.appList = apps;\n return apps;\n });\n }\n\n suggestItems(itemtype = 'num') {\n let groupFilter = this.replaceTemplateVars(this.target.group.filter);\n let hostFilter = this.replaceTemplateVars(this.target.host.filter);\n let appFilter = this.replaceTemplateVars(this.target.application.filter);\n let options = {\n itemtype: itemtype,\n showDisabledItems: this.target.options.showDisabledItems\n };\n\n return this.zabbix\n .getAllItems(groupFilter, hostFilter, appFilter, options)\n .then(items => {\n this.metric.itemList = items;\n return items;\n });\n }\n\n isRegex(str) {\n return utils.isRegex(str);\n }\n\n isVariable(str) {\n return utils.isTemplateVariable(str, this.templateSrv.variables);\n }\n\n onTargetBlur() {\n var newTarget = _.cloneDeep(this.target);\n if (!_.isEqual(this.oldTarget, this.target)) {\n this.oldTarget = newTarget;\n this.targetChanged();\n }\n }\n\n onVariableChange() {\n if (this.isContainsVariables()) {\n this.targetChanged();\n }\n }\n\n /**\n * Check query for template variables\n */\n isContainsVariables() {\n return _.some(['group', 'host', 'application'], field => {\n if (this.target[field] && this.target[field].filter) {\n return utils.isTemplateVariable(this.target[field].filter, this.templateSrv.variables);\n } else {\n return false;\n }\n });\n }\n\n parseTarget() {\n // Parse target\n }\n\n // Validate target and set validation info\n validateTarget() {\n // validate\n }\n\n targetChanged() {\n this.initFilters();\n this.parseTarget();\n this.panelCtrl.refresh();\n }\n\n addFunction(funcDef) {\n var newFunc = metricFunctions.createFuncInstance(funcDef);\n newFunc.added = true;\n this.target.functions.push(newFunc);\n\n this.moveAliasFuncLast();\n\n if (newFunc.params.length && newFunc.added ||\n newFunc.def.params.length === 0) {\n this.targetChanged();\n }\n }\n\n removeFunction(func) {\n this.target.functions = _.without(this.target.functions, func);\n this.targetChanged();\n }\n\n moveAliasFuncLast() {\n var aliasFunc = _.find(this.target.functions, function(func) {\n return func.def.name === 'alias' ||\n func.def.name === 'aliasByNode' ||\n func.def.name === 'aliasByMetric';\n });\n\n if (aliasFunc) {\n this.target.functions = _.without(this.target.functions, aliasFunc);\n this.target.functions.push(aliasFunc);\n }\n }\n\n toggleQueryOptions() {\n this.showQueryOptions = !this.showQueryOptions;\n }\n\n onQueryOptionChange() {\n this.queryOptionsText = this.renderQueryOptionsText();\n this.onTargetBlur();\n }\n\n renderQueryOptionsText() {\n var optionsMap = {\n showDisabledItems: \"Show disabled items\"\n };\n var options = [];\n _.forOwn(this.target.options, (value, key) => {\n if (value) {\n if (value === true) {\n // Show only option name (if enabled) for boolean options\n options.push(optionsMap[key]);\n } else {\n // Show \"option = value\" for another options\n options.push(optionsMap[key] + \" = \" + value);\n }\n }\n });\n return \"Options: \" + options.join(', ');\n }\n\n /**\n * Switch query editor to specified mode.\n * Modes:\n * 0 - items\n * 1 - IT services\n * 2 - Text metrics\n */\n switchEditorMode(mode) {\n this.target.mode = mode;\n this.init();\n }\n\n /////////////////\n // IT Services //\n /////////////////\n\n /**\n * Update list of IT services\n */\n updateITServiceList() {\n this.zabbix.getITService().then((iteservices) => {\n this.itserviceList = [];\n this.itserviceList = this.itserviceList.concat(iteservices);\n });\n }\n\n /**\n * Call when IT service is selected.\n */\n selectITService() {\n if (!_.isEqual(this.oldTarget, this.target) && _.isEmpty(this.target.errors)) {\n this.oldTarget = angular.copy(this.target);\n this.panelCtrl.refresh();\n }\n }\n}\n\n// Set templateUrl as static property\nZabbixQueryController.templateUrl = 'datasource-zabbix/partials/query.editor.html';\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/datasource-zabbix/query.controller.js"],"names":["QueryCtrl","angular","_","utils","metricFunctions","migrations","ZabbixQueryController","$scope","$injector","$rootScope","$sce","templateSrv","zabbix","datasource","replaceTemplateVars","editorModes","value","text","mode","getGroupNames","bind","getMetricNames","getHostNames","getApplicationNames","getItemNames","$on","onVariableChange","onTargetBlur","init","target","migrate","scopeDefaults","metric","oldTarget","cloneDeep","queryOptionsText","renderQueryOptionsText","defaults","targetDefaults","group","filter","host","application","item","functions","options","showDisabledItems","map","func","createFuncInstance","def","params","downsampleFunctionList","name","initFilters","slaPropertyList","property","itserviceList","updateITServiceList","itemtype","Promise","all","suggestGroups","suggestHosts","suggestApps","suggestItems","metricList","addAllValue","metrics","uniq","forEach","variables","unshift","variable","getAllGroups","then","groupList","groups","groupFilter","getAllHosts","hostList","hosts","hostFilter","getAllApps","appList","apps","appFilter","getAllItems","itemList","items","str","isRegex","isTemplateVariable","newTarget","isEqual","targetChanged","isContainsVariables","some","field","parseTarget","panelCtrl","refresh","funcDef","newFunc","added","push","moveAliasFuncLast","length","without","aliasFunc","find","showQueryOptions","optionsMap","forOwn","key","join","getITService","iteservices","concat","isEmpty","errors","copy","templateUrl"],"mappings":"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","file":"query.controller.js","sourcesContent":["import {QueryCtrl} from 'app/plugins/sdk';\nimport angular from 'angular';\nimport _ from 'lodash';\nimport * as utils from './utils';\nimport * as metricFunctions from './metricFunctions';\nimport * as migrations from './migrations';\n\nimport './add-metric-function.directive';\nimport './metric-function-editor.directive';\n\nimport './css/query-editor.css!';\n\nexport class ZabbixQueryController extends QueryCtrl {\n\n // ZabbixQueryCtrl constructor\n constructor($scope, $injector, $rootScope, $sce, templateSrv) {\n super($scope, $injector);\n this.zabbix = this.datasource.zabbix;\n\n // Use custom format for template variables\n this.replaceTemplateVars = this.datasource.replaceTemplateVars;\n this.templateSrv = templateSrv;\n\n this.editorModes = {\n 0: {value: 'num', text: 'Metrics', mode: 0},\n 1: {value: 'itservice', text: 'IT Services', mode: 1},\n 2: {value: 'text', text: 'Text', mode: 2}\n };\n\n // Map functions for bs-typeahead\n this.getGroupNames = _.bind(this.getMetricNames, this, 'groupList');\n this.getHostNames = _.bind(this.getMetricNames, this, 'hostList', true);\n this.getApplicationNames = _.bind(this.getMetricNames, this, 'appList');\n this.getItemNames = _.bind(this.getMetricNames, this, 'itemList');\n\n // Update metric suggestion when template variable was changed\n $rootScope.$on('template-variable-value-updated', () => this.onVariableChange());\n\n // Update metrics when item selected from dropdown\n $scope.$on('typeahead-updated', () => {\n this.onTargetBlur();\n });\n\n this.init = function() {\n var target = this.target;\n\n // Migrate old targets\n target = migrations.migrate(target);\n\n var scopeDefaults = {\n metric: {},\n oldTarget: _.cloneDeep(this.target),\n queryOptionsText: this.renderQueryOptionsText()\n };\n _.defaults(this, scopeDefaults);\n\n // Load default values\n var targetDefaults = {\n mode: 0,\n group: { filter: \"\" },\n host: { filter: \"\" },\n application: { filter: \"\" },\n item: { filter: \"\" },\n functions: [],\n options: {\n showDisabledItems: false\n }\n };\n _.defaults(target, targetDefaults);\n\n // Create function instances from saved JSON\n target.functions = _.map(target.functions, function(func) {\n return metricFunctions.createFuncInstance(func.def, func.params);\n });\n\n if (target.mode === 0 ||\n target.mode === 2) {\n\n this.downsampleFunctionList = [\n {name: \"avg\", value: \"avg\"},\n {name: \"min\", value: \"min\"},\n {name: \"max\", value: \"max\"}\n ];\n\n this.initFilters();\n }\n else if (target.mode === 1) {\n this.slaPropertyList = [\n {name: \"Status\", property: \"status\"},\n {name: \"SLA\", property: \"sla\"},\n {name: \"OK time\", property: \"okTime\"},\n {name: \"Problem time\", property: \"problemTime\"},\n {name: \"Down time\", property: \"downtimeTime\"}\n ];\n this.itserviceList = [{name: \"test\"}];\n this.updateITServiceList();\n }\n };\n\n this.init();\n }\n\n initFilters() {\n let itemtype = this.editorModes[this.target.mode].value;\n return Promise.all([\n this.suggestGroups(),\n this.suggestHosts(),\n this.suggestApps(),\n this.suggestItems(itemtype)\n ]);\n }\n\n // Get list of metric names for bs-typeahead directive\n getMetricNames(metricList, addAllValue) {\n let metrics = _.uniq(_.map(this.metric[metricList], 'name'));\n\n // Add template variables\n _.forEach(this.templateSrv.variables, variable => {\n metrics.unshift('$' + variable.name);\n });\n\n if (addAllValue) {\n metrics.unshift('/.*/');\n }\n\n return metrics;\n }\n\n suggestGroups() {\n return this.zabbix.getAllGroups()\n .then(groups => {\n this.metric.groupList = groups;\n return groups;\n });\n }\n\n suggestHosts() {\n let groupFilter = this.replaceTemplateVars(this.target.group.filter);\n return this.zabbix.getAllHosts(groupFilter)\n .then(hosts => {\n this.metric.hostList = hosts;\n return hosts;\n });\n }\n\n suggestApps() {\n let groupFilter = this.replaceTemplateVars(this.target.group.filter);\n let hostFilter = this.replaceTemplateVars(this.target.host.filter);\n return this.zabbix.getAllApps(groupFilter, hostFilter)\n .then(apps => {\n this.metric.appList = apps;\n return apps;\n });\n }\n\n suggestItems(itemtype = 'num') {\n let groupFilter = this.replaceTemplateVars(this.target.group.filter);\n let hostFilter = this.replaceTemplateVars(this.target.host.filter);\n let appFilter = this.replaceTemplateVars(this.target.application.filter);\n let options = {\n itemtype: itemtype,\n showDisabledItems: this.target.options.showDisabledItems\n };\n\n return this.zabbix\n .getAllItems(groupFilter, hostFilter, appFilter, options)\n .then(items => {\n this.metric.itemList = items;\n return items;\n });\n }\n\n isRegex(str) {\n return utils.isRegex(str);\n }\n\n isVariable(str) {\n return utils.isTemplateVariable(str, this.templateSrv.variables);\n }\n\n onTargetBlur() {\n var newTarget = _.cloneDeep(this.target);\n if (!_.isEqual(this.oldTarget, this.target)) {\n this.oldTarget = newTarget;\n this.targetChanged();\n }\n }\n\n onVariableChange() {\n if (this.isContainsVariables()) {\n this.targetChanged();\n }\n }\n\n /**\n * Check query for template variables\n */\n isContainsVariables() {\n return _.some(['group', 'host', 'application'], field => {\n if (this.target[field] && this.target[field].filter) {\n return utils.isTemplateVariable(this.target[field].filter, this.templateSrv.variables);\n } else {\n return false;\n }\n });\n }\n\n parseTarget() {\n // Parse target\n }\n\n // Validate target and set validation info\n validateTarget() {\n // validate\n }\n\n targetChanged() {\n this.initFilters();\n this.parseTarget();\n this.panelCtrl.refresh();\n }\n\n addFunction(funcDef) {\n var newFunc = metricFunctions.createFuncInstance(funcDef);\n newFunc.added = true;\n this.target.functions.push(newFunc);\n\n this.moveAliasFuncLast();\n\n if (newFunc.params.length && newFunc.added ||\n newFunc.def.params.length === 0) {\n this.targetChanged();\n }\n }\n\n removeFunction(func) {\n this.target.functions = _.without(this.target.functions, func);\n this.targetChanged();\n }\n\n moveAliasFuncLast() {\n var aliasFunc = _.find(this.target.functions, function(func) {\n return func.def.name === 'alias' ||\n func.def.name === 'aliasByNode' ||\n func.def.name === 'aliasByMetric';\n });\n\n if (aliasFunc) {\n this.target.functions = _.without(this.target.functions, aliasFunc);\n this.target.functions.push(aliasFunc);\n }\n }\n\n toggleQueryOptions() {\n this.showQueryOptions = !this.showQueryOptions;\n }\n\n onQueryOptionChange() {\n this.queryOptionsText = this.renderQueryOptionsText();\n this.onTargetBlur();\n }\n\n renderQueryOptionsText() {\n var optionsMap = {\n showDisabledItems: \"Show disabled items\"\n };\n var options = [];\n _.forOwn(this.target.options, (value, key) => {\n if (value) {\n if (value === true) {\n // Show only option name (if enabled) for boolean options\n options.push(optionsMap[key]);\n } else {\n // Show \"option = value\" for another options\n options.push(optionsMap[key] + \" = \" + value);\n }\n }\n });\n return \"Options: \" + options.join(', ');\n }\n\n /**\n * Switch query editor to specified mode.\n * Modes:\n * 0 - items\n * 1 - IT services\n * 2 - Text metrics\n */\n switchEditorMode(mode) {\n this.target.mode = mode;\n this.init();\n }\n\n /////////////////\n // IT Services //\n /////////////////\n\n /**\n * Update list of IT services\n */\n updateITServiceList() {\n this.zabbix.getITService().then((iteservices) => {\n this.itserviceList = [];\n this.itserviceList = this.itserviceList.concat(iteservices);\n });\n }\n\n /**\n * Call when IT service is selected.\n */\n selectITService() {\n if (!_.isEqual(this.oldTarget, this.target) && _.isEmpty(this.target.errors)) {\n this.oldTarget = angular.copy(this.target);\n this.panelCtrl.refresh();\n }\n }\n}\n\n// Set templateUrl as static property\nZabbixQueryController.templateUrl = 'datasource-zabbix/partials/query.editor.html';\n"]} \ No newline at end of file diff --git a/dist/test/datasource-zabbix/query.controller.js b/dist/test/datasource-zabbix/query.controller.js index e4715be..4cc142d 100644 --- a/dist/test/datasource-zabbix/query.controller.js +++ b/dist/test/datasource-zabbix/query.controller.js @@ -68,7 +68,7 @@ var ZabbixQueryController = exports.ZabbixQueryController = function (_QueryCtrl // Map functions for bs-typeahead _this.getGroupNames = _lodash2.default.bind(_this.getMetricNames, _this, 'groupList'); - _this.getHostNames = _lodash2.default.bind(_this.getMetricNames, _this, 'hostList'); + _this.getHostNames = _lodash2.default.bind(_this.getMetricNames, _this, 'hostList', true); _this.getApplicationNames = _lodash2.default.bind(_this.getMetricNames, _this, 'appList'); _this.getItemNames = _lodash2.default.bind(_this.getMetricNames, _this, 'itemList'); @@ -141,7 +141,7 @@ var ZabbixQueryController = exports.ZabbixQueryController = function (_QueryCtrl }, { key: 'getMetricNames', - value: function getMetricNames(metricList) { + value: function getMetricNames(metricList, addAllValue) { var metrics = _lodash2.default.uniq(_lodash2.default.map(this.metric[metricList], 'name')); // Add template variables @@ -149,6 +149,10 @@ var ZabbixQueryController = exports.ZabbixQueryController = function (_QueryCtrl metrics.unshift('$' + variable.name); }); + if (addAllValue) { + metrics.unshift('/.*/'); + } + return metrics; } }, { diff --git a/src/datasource-zabbix/query.controller.js b/src/datasource-zabbix/query.controller.js index 8d28384..496a833 100644 --- a/src/datasource-zabbix/query.controller.js +++ b/src/datasource-zabbix/query.controller.js @@ -29,7 +29,7 @@ export class ZabbixQueryController extends QueryCtrl { // Map functions for bs-typeahead this.getGroupNames = _.bind(this.getMetricNames, this, 'groupList'); - this.getHostNames = _.bind(this.getMetricNames, this, 'hostList'); + this.getHostNames = _.bind(this.getMetricNames, this, 'hostList', true); this.getApplicationNames = _.bind(this.getMetricNames, this, 'appList'); this.getItemNames = _.bind(this.getMetricNames, this, 'itemList'); @@ -111,7 +111,7 @@ export class ZabbixQueryController extends QueryCtrl { } // Get list of metric names for bs-typeahead directive - getMetricNames(metricList) { + getMetricNames(metricList, addAllValue) { let metrics = _.uniq(_.map(this.metric[metricList], 'name')); // Add template variables @@ -119,6 +119,10 @@ export class ZabbixQueryController extends QueryCtrl { metrics.unshift('$' + variable.name); }); + if (addAllValue) { + metrics.unshift('/.*/'); + } + return metrics; }