refactor: move macros expanding to utils

This commit is contained in:
Alexander Zobnin
2017-06-08 14:17:49 +03:00
parent fe455113d5
commit 5de016dd80
8 changed files with 135 additions and 115 deletions

View File

@@ -3,7 +3,7 @@
System.register(['lodash', 'moment'], function (_export, _context) { System.register(['lodash', 'moment'], function (_export, _context) {
"use strict"; "use strict";
var _, moment, regexPattern; var _, moment, MACRO_PATTERN, regexPattern;
/** /**
* Expand Zabbix item name * Expand Zabbix item name
@@ -58,6 +58,47 @@ System.register(['lodash', 'moment'], function (_export, _context) {
return params; return params;
} }
///////////
// MACRO //
///////////
function containsMacro(itemName) {
return MACRO_PATTERN.test(itemName);
}
_export('containsMacro', containsMacro);
function replaceMacro(item, macros) {
var itemName = item.name;
var item_macros = itemName.match(MACRO_PATTERN);
_.forEach(item_macros, function (macro) {
var host_macros = _.filter(macros, function (m) {
if (m.hostid) {
return m.hostid === item.hostid;
} else {
// Add global macros
return true;
}
});
var macro_def = _.find(host_macros, { macro: macro });
if (macro_def && macro_def.value) {
var macro_value = macro_def.value;
var macro_regex = new RegExp(escapeMacro(macro));
itemName = itemName.replace(macro_regex, macro_value);
}
});
return itemName;
}
_export('replaceMacro', replaceMacro);
function escapeMacro(macro) {
macro = macro.replace(/\$/, '\\\$');
return macro;
}
// Pattern for testing regex // Pattern for testing regex
function isRegex(str) { function isRegex(str) {
return regexPattern.test(str); return regexPattern.test(str);
@@ -186,6 +227,8 @@ System.register(['lodash', 'moment'], function (_export, _context) {
moment = _moment.default; moment = _moment.default;
}], }],
execute: function () { execute: function () {
MACRO_PATTERN = /{\$[A-Z0-9_\.]+}/g;
_export('regexPattern', regexPattern = /^\/(.*)\/([gmi]*)$/m); _export('regexPattern', regexPattern = /^\/(.*)\/([gmi]*)$/m);
_export('regexPattern', regexPattern); _export('regexPattern', regexPattern);

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,7 @@
System.register(['angular', 'lodash', './utils', './zabbixAPI.service.js', './zabbixCachingProxy.service.js'], function (_export, _context) { System.register(['angular', 'lodash', './utils', './zabbixAPI.service.js', './zabbixCachingProxy.service.js'], function (_export, _context) {
"use strict"; "use strict";
var angular, _, utils, _createClass, MACRO_PATTERN; var angular, _, utils, _createClass;
function _toConsumableArray(arr) { function _toConsumableArray(arr) {
if (Array.isArray(arr)) { if (Array.isArray(arr)) {
@@ -152,8 +152,8 @@ System.register(['angular', 'lodash', './utils', './zabbixAPI.service.js', './za
var hostids = getHostIds(items); var hostids = getHostIds(items);
return this.getMacros(hostids).then(function (macros) { return this.getMacros(hostids).then(function (macros) {
_.forEach(items, function (item) { _.forEach(items, function (item) {
if (containsMacro(item.name)) { if (utils.containsMacro(item.name)) {
item.name = replaceMacro(item, macros); item.name = utils.replaceMacro(item, macros);
} }
}); });
return items; return items;
@@ -267,39 +267,6 @@ System.register(['angular', 'lodash', './utils', './zabbixAPI.service.js', './za
}); });
return _.uniq(_.flatten(hostIds)); return _.uniq(_.flatten(hostIds));
} }
function containsMacro(itemName) {
return MACRO_PATTERN.test(itemName);
}
function replaceMacro(item, macros) {
var itemName = item.name;
var item_macros = itemName.match(MACRO_PATTERN);
_.forEach(item_macros, function (macro) {
var host_macros = _.filter(macros, function (m) {
if (m.hostid) {
return m.hostid === item.hostid;
} else {
// Add global macros
return true;
}
});
var macro_def = _.find(host_macros, { macro: macro });
if (macro_def && macro_def.value) {
var macro_value = macro_def.value;
var macro_regex = new RegExp(escapeMacro(macro));
itemName = itemName.replace(macro_regex, macro_value);
}
});
return itemName;
}
function escapeMacro(macro) {
macro = macro.replace(/\$/, '\\\$');
return macro;
}
return { return {
setters: [function (_angular) { setters: [function (_angular) {
angular = _angular.default; angular = _angular.default;
@@ -327,7 +294,7 @@ System.register(['angular', 'lodash', './utils', './zabbixAPI.service.js', './za
}; };
}(); }();
angular.module('grafana.services').factory('Zabbix', ZabbixFactory);MACRO_PATTERN = /{\$[A-Z0-9_\.]+}/g; angular.module('grafana.services').factory('Zabbix', ZabbixFactory);
} }
}; };
}); });

File diff suppressed because one or more lines are too long

View File

@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
}); });
exports.regexPattern = undefined; exports.regexPattern = undefined;
exports.expandItemName = expandItemName; exports.expandItemName = expandItemName;
exports.containsMacro = containsMacro;
exports.replaceMacro = replaceMacro;
exports.isRegex = isRegex; exports.isRegex = isRegex;
exports.isTemplateVariable = isTemplateVariable; exports.isTemplateVariable = isTemplateVariable;
exports.buildRegex = buildRegex; exports.buildRegex = buildRegex;
@@ -76,6 +78,45 @@ function splitKeyParams(paramStr) {
return params; return params;
} }
///////////
// MACRO //
///////////
var MACRO_PATTERN = /{\$[A-Z0-9_\.]+}/g;
function containsMacro(itemName) {
return MACRO_PATTERN.test(itemName);
}
function replaceMacro(item, macros) {
var itemName = item.name;
var item_macros = itemName.match(MACRO_PATTERN);
_lodash2.default.forEach(item_macros, function (macro) {
var host_macros = _lodash2.default.filter(macros, function (m) {
if (m.hostid) {
return m.hostid === item.hostid;
} else {
// Add global macros
return true;
}
});
var macro_def = _lodash2.default.find(host_macros, { macro: macro });
if (macro_def && macro_def.value) {
var macro_value = macro_def.value;
var macro_regex = new RegExp(escapeMacro(macro));
itemName = itemName.replace(macro_regex, macro_value);
}
});
return itemName;
}
function escapeMacro(macro) {
macro = macro.replace(/\$/, '\\\$');
return macro;
}
// Pattern for testing regex // Pattern for testing regex
var regexPattern = exports.regexPattern = /^\/(.*)\/([gmi]*)$/m; var regexPattern = exports.regexPattern = /^\/(.*)\/([gmi]*)$/m;

View File

@@ -165,8 +165,8 @@ function ZabbixFactory(zabbixAPIService, ZabbixCachingProxy) {
var hostids = getHostIds(items); var hostids = getHostIds(items);
return this.getMacros(hostids).then(function (macros) { return this.getMacros(hostids).then(function (macros) {
_lodash2.default.forEach(items, function (item) { _lodash2.default.forEach(items, function (item) {
if (containsMacro(item.name)) { if (utils.containsMacro(item.name)) {
item.name = replaceMacro(item, macros); item.name = utils.replaceMacro(item, macros);
} }
}); });
return items; return items;
@@ -287,38 +287,3 @@ function getHostIds(items) {
}); });
return _lodash2.default.uniq(_lodash2.default.flatten(hostIds)); return _lodash2.default.uniq(_lodash2.default.flatten(hostIds));
} }
var MACRO_PATTERN = /{\$[A-Z0-9_\.]+}/g;
function containsMacro(itemName) {
return MACRO_PATTERN.test(itemName);
}
function replaceMacro(item, macros) {
var itemName = item.name;
var item_macros = itemName.match(MACRO_PATTERN);
_lodash2.default.forEach(item_macros, function (macro) {
var host_macros = _lodash2.default.filter(macros, function (m) {
if (m.hostid) {
return m.hostid === item.hostid;
} else {
// Add global macros
return true;
}
});
var macro_def = _lodash2.default.find(host_macros, { macro: macro });
if (macro_def && macro_def.value) {
var macro_value = macro_def.value;
var macro_regex = new RegExp(escapeMacro(macro));
itemName = itemName.replace(macro_regex, macro_value);
}
});
return itemName;
}
function escapeMacro(macro) {
macro = macro.replace(/\$/, '\\\$');
return macro;
}

View File

@@ -52,8 +52,47 @@ function splitKeyParams(paramStr) {
return params; return params;
} }
///////////
// MACRO //
///////////
const MACRO_PATTERN = /{\$[A-Z0-9_\.]+}/g;
export function containsMacro(itemName) {
return MACRO_PATTERN.test(itemName);
}
export function replaceMacro(item, macros) {
let itemName = item.name;
let item_macros = itemName.match(MACRO_PATTERN);
_.forEach(item_macros, macro => {
let host_macros = _.filter(macros, m => {
if (m.hostid) {
return m.hostid === item.hostid;
} else {
// Add global macros
return true;
}
});
let macro_def = _.find(host_macros, { macro: macro });
if (macro_def && macro_def.value) {
let macro_value = macro_def.value;
let macro_regex = new RegExp(escapeMacro(macro));
itemName = itemName.replace(macro_regex, macro_value);
}
});
return itemName;
}
function escapeMacro(macro) {
macro = macro.replace(/\$/, '\\\$');
return macro;
}
// Pattern for testing regex // Pattern for testing regex
export var regexPattern = /^\/(.*)\/([gmi]*)$/m; export const regexPattern = /^\/(.*)\/([gmi]*)$/m;
export function isRegex(str) { export function isRegex(str) {
return regexPattern.test(str); return regexPattern.test(str);

View File

@@ -121,8 +121,8 @@ function ZabbixFactory(zabbixAPIService, ZabbixCachingProxy) {
return this.getMacros(hostids) return this.getMacros(hostids)
.then(macros => { .then(macros => {
_.forEach(items, item => { _.forEach(items, item => {
if (containsMacro(item.name)) { if (utils.containsMacro(item.name)) {
item.name = replaceMacro(item, macros); item.name = utils.replaceMacro(item, macros);
} }
}); });
return items; return items;
@@ -239,38 +239,3 @@ function getHostIds(items) {
}); });
return _.uniq(_.flatten(hostIds)); return _.uniq(_.flatten(hostIds));
} }
let MACRO_PATTERN = /{\$[A-Z0-9_\.]+}/g;
function containsMacro(itemName) {
return MACRO_PATTERN.test(itemName);
}
function replaceMacro(item, macros) {
let itemName = item.name;
let item_macros = itemName.match(MACRO_PATTERN);
_.forEach(item_macros, macro => {
let host_macros = _.filter(macros, m => {
if (m.hostid) {
return m.hostid === item.hostid;
} else {
// Add global macros
return true;
}
});
let macro_def = _.find(host_macros, {macro: macro});
if (macro_def && macro_def.value) {
let macro_value = macro_def.value;
let macro_regex = new RegExp(escapeMacro(macro));
itemName = itemName.replace(macro_regex, macro_value);
}
});
return itemName;
}
function escapeMacro(macro) {
macro = macro.replace(/\$/, '\\\$');
return macro;
}