UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

90 lines (89 loc) 3.51 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceVariable = exports.calcVariableMap = void 0; var lodash_1 = require("lodash"); var constants_1 = require("../constants"); var utils_1 = require("./utils"); function stringArrTransform(value, option) { if (value === void 0) { value = []; } if (option.multi) { return value; } return value[0]; } var variableValueTransforms = (_a = {}, _a[constants_1.EVariableType.TIME_INTERVAL] = function (value) { if (value === void 0) { value = { num: 1, unit: '' }; } var num = value.num, unit = value.unit; if (unit === '') { return ''; } return num + unit; }, _a[constants_1.EVariableType.QUERY_VALUE] = stringArrTransform, _a[constants_1.EVariableType.CONSTANTS] = stringArrTransform, _a[constants_1.EVariableType.SERVER] = stringArrTransform, _a); var hasPrefix = function (variable) { return !(lodash_1.isNil(variable.prefix) && lodash_1.isNil(variable.suffix) && lodash_1.isNil(variable.valuePrefix) && lodash_1.isNil(variable.valueSuffix) && lodash_1.isNil(variable.delimiter)); }; var defaultFormatter = function (value) { if (lodash_1.isArray(value)) { return "(" + value.map(utils_1.splFormatStr).join(',') + ")"; } else if (typeof value === 'string') { return utils_1.splFormatStr(value); } return value; }; function calcVariableMap(variables) { return variables.reduce(function (res, variable) { var type = variable.type, name = variable.name, value = variable.value, option = variable.option; var transformedValue = variableValueTransforms[type](value, option); if (hasPrefix(variable)) { res[name] = __assign(__assign({}, variable), { value: transformedValue }); } else { res[name] = transformedValue; } return res; }, {}); } exports.calcVariableMap = calcVariableMap; var regex = /\$(\w+)|\[\[([\s\S]+?)(?::(\w+))?\]\]|\${(\w+)(?::(\w+))?}/g; function replaceVariable(target, valueMap) { return target.replace(regex, function (match, var1, var2, fmt2, var3, fmt3) { var variableValue = valueMap[var1 || var2 || var3]; var fmt = fmt2 || fmt3 || defaultFormatter; if (!variableValue) { return match; } if (lodash_1.isPlainObject(variableValue) && hasPrefix(variableValue)) { var _a = variableValue, option = _a.option, prefix = _a.prefix, valuePrefix_1 = _a.valuePrefix, valueSuffix_1 = _a.valueSuffix, delimiter = _a.delimiter, suffix = _a.suffix, value = _a.value; // 时间类型的模版变量 option 为undefined return lodash_1.get(option, 'multi') ? "" + prefix + value .map(function (val) { return "" + valuePrefix_1 + val + valueSuffix_1; }) .join(delimiter) + suffix : "" + prefix + value + suffix; } return fmt(variableValue); }); } exports.replaceVariable = replaceVariable;