From 39000acbf6dd30df51df72597f4c8ad82564ce25 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 24 Jul 2017 19:08:28 +0300 Subject: [PATCH] IT-services: refactor --- .../partials/query.editor.html | 2 +- dist/datasource-zabbix/query.controller.js | 42 ++++----------- .../datasource-zabbix/query.controller.js.map | 2 +- .../datasource-zabbix/query.controller.js | 54 +++---------------- .../partials/query.editor.html | 2 +- src/datasource-zabbix/query.controller.js | 49 +++-------------- 6 files changed, 29 insertions(+), 122 deletions(-) diff --git a/dist/datasource-zabbix/partials/query.editor.html b/dist/datasource-zabbix/partials/query.editor.html index a8b5b0c..64a3b48 100644 --- a/dist/datasource-zabbix/partials/query.editor.html +++ b/dist/datasource-zabbix/partials/query.editor.html @@ -37,7 +37,7 @@
diff --git a/dist/datasource-zabbix/query.controller.js b/dist/datasource-zabbix/query.controller.js index 9b16588..bd4c625 100644 --- a/dist/datasource-zabbix/query.controller.js +++ b/dist/datasource-zabbix/query.controller.js @@ -1,9 +1,9 @@ 'use strict'; -System.register(['app/plugins/sdk', 'angular', 'lodash', './constants', './utils', './metricFunctions', './migrations', './add-metric-function.directive', './metric-function-editor.directive', './css/query-editor.css!'], function (_export, _context) { +System.register(['app/plugins/sdk', 'lodash', './constants', './utils', './metricFunctions', './migrations', './add-metric-function.directive', './metric-function-editor.directive', './css/query-editor.css!'], function (_export, _context) { "use strict"; - var QueryCtrl, angular, _, c, utils, metricFunctions, migrations, _createClass, ZabbixQueryController; + var QueryCtrl, _, c, utils, metricFunctions, migrations, _createClass, ZabbixQueryController; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { @@ -38,8 +38,6 @@ System.register(['app/plugins/sdk', 'angular', 'lodash', './constants', './utils return { setters: [function (_appPluginsSdk) { QueryCtrl = _appPluginsSdk.QueryCtrl; - }, function (_angular) { - angular = _angular.default; }, function (_lodash) { _ = _lodash.default; }, function (_constants) { @@ -125,14 +123,14 @@ System.register(['app/plugins/sdk', 'angular', 'lodash', './constants', './utils // Load default values var targetDefaults = { - mode: c.MODE_METRICS, - group: { filter: "" }, - host: { filter: "" }, - application: { filter: "" }, - item: { filter: "" }, - functions: [], - options: { - showDisabledItems: false + 'mode': c.MODE_METRICS, + 'group': { 'filter': "" }, + 'host': { 'filter': "" }, + 'application': { 'filter': "" }, + 'item': { 'filter': "" }, + 'functions': [], + 'options': { + 'showDisabledItems': false } }; _.defaults(target, targetDefaults); @@ -144,8 +142,6 @@ System.register(['app/plugins/sdk', 'angular', 'lodash', './constants', './utils if (target.mode === c.MODE_METRICS || target.mode === c.MODE_TEXT) { - this.downsampleFunctionList = [{ name: "avg", value: "avg" }, { name: "min", value: "min" }, { name: "max", value: "max" }, { name: "sum", value: "sum" }, { name: "count", value: "count" }]; - this.initFilters(); } else if (target.mode === c.MODE_ITSERVICE) { _.defaults(target, { slaProperty: { name: "SLA", property: "sla" } }); @@ -369,24 +365,6 @@ System.register(['app/plugins/sdk', 'angular', 'lodash', './constants', './utils this.target.mode = mode; this.init(); } - }, { - key: 'updateITServiceList', - value: function updateITServiceList() { - var _this8 = this; - - this.zabbix.getITService().then(function (iteservices) { - _this8.itserviceList = []; - _this8.itserviceList = _this8.itserviceList.concat(iteservices); - }); - } - }, { - key: 'selectITService', - value: function selectITService() { - if (!_.isEqual(this.oldTarget, this.target) && _.isEmpty(this.target.errors)) { - this.oldTarget = angular.copy(this.target); - this.panelCtrl.refresh(); - } - } }]); return ZabbixQueryController; diff --git a/dist/datasource-zabbix/query.controller.js.map b/dist/datasource-zabbix/query.controller.js.map index b59b05f..e6c89c7 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","_","c","utils","metricFunctions","migrations","ZabbixQueryController","$scope","$injector","$rootScope","$sce","templateSrv","zabbix","datasource","replaceTemplateVars","editorModes","value","text","mode","MODE_METRICS","MODE_ITSERVICE","MODE_TEXT","slaPropertyList","name","property","getGroupNames","bind","getMetricNames","getHostNames","getApplicationNames","getItemNames","getITServices","$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","initFilters","slaProperty","suggestITServices","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","getITService","itServiceList","itservices","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","iteservices","itserviceList","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 c from './constants';\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: c.MODE_METRICS},\n 1: {value: 'itservice', text: 'IT Services', mode: c.MODE_ITSERVICE},\n 2: {value: 'text', text: 'Text', mode: c.MODE_TEXT}\n };\n\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\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 this.getITServices = _.bind(this.getMetricNames, this, 'itServiceList');\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: c.MODE_METRICS,\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 === c.MODE_METRICS ||\n target.mode === c.MODE_TEXT) {\n\n this.downsampleFunctionList = [\n {name: \"avg\", value: \"avg\"},\n {name: \"min\", value: \"min\"},\n {name: \"max\", value: \"max\"},\n {name: \"sum\", value: \"sum\"},\n {name: \"count\", value: \"count\"}\n ];\n\n this.initFilters();\n }\n else if (target.mode === c.MODE_ITSERVICE) {\n _.defaults(target, {slaProperty: {name: \"SLA\", property: \"sla\"}});\n this.suggestITServices();\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 suggestITServices() {\n return this.zabbix.getITService()\n .then(itservices => {\n this.metric.itServiceList = itservices;\n return itservices;\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","_","c","utils","metricFunctions","migrations","ZabbixQueryController","$scope","$injector","$rootScope","$sce","templateSrv","zabbix","datasource","replaceTemplateVars","editorModes","value","text","mode","MODE_METRICS","MODE_ITSERVICE","MODE_TEXT","slaPropertyList","name","property","getGroupNames","bind","getMetricNames","getHostNames","getApplicationNames","getItemNames","getITServices","$on","onVariableChange","onTargetBlur","init","target","migrate","scopeDefaults","metric","oldTarget","cloneDeep","queryOptionsText","renderQueryOptionsText","defaults","targetDefaults","functions","map","func","createFuncInstance","def","params","initFilters","slaProperty","suggestITServices","itemtype","Promise","all","suggestGroups","suggestHosts","suggestApps","suggestItems","metricList","addAllValue","metrics","uniq","forEach","variables","unshift","variable","getAllGroups","then","groupList","groups","groupFilter","group","filter","getAllHosts","hostList","hosts","hostFilter","host","getAllApps","appList","apps","appFilter","application","options","showDisabledItems","getAllItems","itemList","items","getITService","itServiceList","itservices","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","templateUrl"],"mappings":"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","file":"query.controller.js","sourcesContent":["import {QueryCtrl} from 'app/plugins/sdk';\nimport _ from 'lodash';\nimport * as c from './constants';\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: c.MODE_METRICS},\n 1: {value: 'itservice', text: 'IT Services', mode: c.MODE_ITSERVICE},\n 2: {value: 'text', text: 'Text', mode: c.MODE_TEXT}\n };\n\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\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 this.getITServices = _.bind(this.getMetricNames, this, 'itServiceList');\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': c.MODE_METRICS,\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 === c.MODE_METRICS ||\n target.mode === c.MODE_TEXT) {\n\n this.initFilters();\n }\n else if (target.mode === c.MODE_ITSERVICE) {\n _.defaults(target, {slaProperty: {name: \"SLA\", property: \"sla\"}});\n this.suggestITServices();\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 suggestITServices() {\n return this.zabbix.getITService()\n .then(itservices => {\n this.metric.itServiceList = itservices;\n return itservices;\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// 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 d807102..f4250c1 100644 --- a/dist/test/datasource-zabbix/query.controller.js +++ b/dist/test/datasource-zabbix/query.controller.js @@ -9,10 +9,6 @@ var _createClass = function () { function defineProperties(target, props) { for var _sdk = require('app/plugins/sdk'); -var _angular = require('angular'); - -var _angular2 = _interopRequireDefault(_angular); - var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); @@ -104,14 +100,14 @@ var ZabbixQueryController = exports.ZabbixQueryController = function (_QueryCtrl // Load default values var targetDefaults = { - mode: c.MODE_METRICS, - group: { filter: "" }, - host: { filter: "" }, - application: { filter: "" }, - item: { filter: "" }, - functions: [], - options: { - showDisabledItems: false + 'mode': c.MODE_METRICS, + 'group': { 'filter': "" }, + 'host': { 'filter': "" }, + 'application': { 'filter': "" }, + 'item': { 'filter': "" }, + 'functions': [], + 'options': { + 'showDisabledItems': false } }; _lodash2.default.defaults(target, targetDefaults); @@ -123,8 +119,6 @@ var ZabbixQueryController = exports.ZabbixQueryController = function (_QueryCtrl if (target.mode === c.MODE_METRICS || target.mode === c.MODE_TEXT) { - this.downsampleFunctionList = [{ name: "avg", value: "avg" }, { name: "min", value: "min" }, { name: "max", value: "max" }, { name: "sum", value: "sum" }, { name: "count", value: "count" }]; - this.initFilters(); } else if (target.mode === c.MODE_ITSERVICE) { _lodash2.default.defaults(target, { slaProperty: { name: "SLA", property: "sla" } }); @@ -365,38 +359,6 @@ var ZabbixQueryController = exports.ZabbixQueryController = function (_QueryCtrl this.target.mode = mode; this.init(); } - - ///////////////// - // IT Services // - ///////////////// - - /** - * Update list of IT services - */ - - }, { - key: 'updateITServiceList', - value: function updateITServiceList() { - var _this8 = this; - - this.zabbix.getITService().then(function (iteservices) { - _this8.itserviceList = []; - _this8.itserviceList = _this8.itserviceList.concat(iteservices); - }); - } - - /** - * Call when IT service is selected. - */ - - }, { - key: 'selectITService', - value: function selectITService() { - if (!_lodash2.default.isEqual(this.oldTarget, this.target) && _lodash2.default.isEmpty(this.target.errors)) { - this.oldTarget = _angular2.default.copy(this.target); - this.panelCtrl.refresh(); - } - } }]); return ZabbixQueryController; diff --git a/src/datasource-zabbix/partials/query.editor.html b/src/datasource-zabbix/partials/query.editor.html index a8b5b0c..64a3b48 100644 --- a/src/datasource-zabbix/partials/query.editor.html +++ b/src/datasource-zabbix/partials/query.editor.html @@ -37,7 +37,7 @@
diff --git a/src/datasource-zabbix/query.controller.js b/src/datasource-zabbix/query.controller.js index 2c4e962..9632e2b 100644 --- a/src/datasource-zabbix/query.controller.js +++ b/src/datasource-zabbix/query.controller.js @@ -1,5 +1,4 @@ import {QueryCtrl} from 'app/plugins/sdk'; -import angular from 'angular'; import _ from 'lodash'; import * as c from './constants'; import * as utils from './utils'; @@ -66,14 +65,14 @@ export class ZabbixQueryController extends QueryCtrl { // Load default values var targetDefaults = { - mode: c.MODE_METRICS, - group: { filter: "" }, - host: { filter: "" }, - application: { filter: "" }, - item: { filter: "" }, - functions: [], - options: { - showDisabledItems: false + 'mode': c.MODE_METRICS, + 'group': { 'filter': "" }, + 'host': { 'filter': "" }, + 'application': { 'filter': "" }, + 'item': { 'filter': "" }, + 'functions': [], + 'options': { + 'showDisabledItems': false } }; _.defaults(target, targetDefaults); @@ -86,14 +85,6 @@ export class ZabbixQueryController extends QueryCtrl { if (target.mode === c.MODE_METRICS || target.mode === c.MODE_TEXT) { - this.downsampleFunctionList = [ - {name: "avg", value: "avg"}, - {name: "min", value: "min"}, - {name: "max", value: "max"}, - {name: "sum", value: "sum"}, - {name: "count", value: "count"} - ]; - this.initFilters(); } else if (target.mode === c.MODE_ITSERVICE) { @@ -303,30 +294,6 @@ export class ZabbixQueryController extends QueryCtrl { this.target.mode = mode; this.init(); } - - ///////////////// - // IT Services // - ///////////////// - - /** - * Update list of IT services - */ - updateITServiceList() { - this.zabbix.getITService().then((iteservices) => { - this.itserviceList = []; - this.itserviceList = this.itserviceList.concat(iteservices); - }); - } - - /** - * Call when IT service is selected. - */ - selectITService() { - if (!_.isEqual(this.oldTarget, this.target) && _.isEmpty(this.target.errors)) { - this.oldTarget = angular.copy(this.target); - this.panelCtrl.refresh(); - } - } } // Set templateUrl as static property