UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

396 lines (395 loc) 10.1 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTooltipByRules = exports.getColorByRules = exports.transformNodeToChatNode = exports.transformEdgeToGraphEdge = exports.getServiceTypeIcon = exports.UA_TYPE_FLAG = exports.EXTERNAL_TYPE_FLAG = exports.DB_TYPE_FLAG = exports.MQ_TYPE_FLAG = exports.DefaultEdgeStroke = exports.LineWidth = exports.NORMAL_HOVER_COLOR = exports.NORMAL_NODE_COLOR = exports.NormalColor = void 0; var lodash_1 = require("lodash"); var unit_1 = require("@qn-pandora/app-sdk/es/utils/unit"); var language_1 = require("../../../services/language"); exports.NormalColor = '#fff'; exports.NORMAL_NODE_COLOR = '#5B8FF9'; exports.NORMAL_HOVER_COLOR = exports.NORMAL_NODE_COLOR; exports.LineWidth = 1; exports.DefaultEdgeStroke = '#dddddd'; exports.MQ_TYPE_FLAG = 'messaging.'; exports.DB_TYPE_FLAG = 'db.'; exports.EXTERNAL_TYPE_FLAG = 'external.'; exports.UA_TYPE_FLAG = 'ua.'; var IconNames = [ 'biz_system', 'serve_norm', 'layer_network', 'layer_container', 'layer_bizsystem', 'layer_servicenode', 'layer_default', 'layer_service', 'layer_application', 'layer_infra', 'layer_host', 'layer_logical_host', 'layer_physical', 'container', 'grpc', 'browser', 'user_agent', 'http', 'webjs', 'webjs', 'wdm', 'soar', 'bhds', 'ecm', 'dbproxy', 'nbfs', 'sequoiadb', 'ngsoc', 'httpd', 'zdns', 'kudu', 'flink', 'bdp', 'av', 'adw', 'offs', 'hue', 'impala', 'doc', 'ndr', 'hdfs', 'oozie', 'ranger', 'tip', 'esag', 'rs', 'dmcp', 'solr', 'hids', 'tdp', 'sqoop', 'ccp', 'spark', 'hadoop', 'knox', 'tez', 'druid', 'apachesolr', 'websphere', 'sme', 'obs', 'kirin_scd', 'nrcp', 'dsi', '告警', 'bdfp', 'bdj', 'aliyun_redis', 'application', 'bbt', 'bdsp', 'business', 'ims', 'dass_osp', 'biz_flow', 'tuxedo', 'biz_interface', 'jboss', 'nedp', 'pass_ca', 'tongweb', 'jetty', 'tengine', 'keepalived', 'nacos', 'flume', 'zabbix', 'ips', 'fss', 'rsas', 'zt', 'waf', 'icon-kfckfc', 'nginx', 'iis', 'de', 'acs', 'dc', 'ence', 'cac', 'aix', 'mongodb', 'hs', 'ace', 'ir', 'firewall', 'lvd', 'etcd', 'dns', 'ib', 'odps', 'memcached', 'apollo', 'cacs', 'inr', 'oss', 'mycat', 'ibmmq', 'mae', 'raid', 'vs', 'paas_ca', 'router', 'sac', 'switch', 'ppd', 'app', 'ups', 'windows', 'gaussdb', 'weblogic', 'sr', 'web', 'apacheant', 'favs', 'ne_cable', 'linux', 'phy_host', 'postgresql', 'hvd', 'rds', 'obs', 'squid', 'gen', 'pac', 'xfmr', 'sse', 'activemq', 'netezza', 'coldfusion', 'couchbase', 'mariadb', 'casssandra', 'neo4j', 'opensearch', 'progress', 'couchdb', 'cosmosdb', 'sqlite', 'sybase', 'dotnet', 'go', 'erlang', 'java', 'cpp', 'js', 'php', 'ruby', 'swift', 'language_norm', 'nodejs', 'python', 'rust', 'rabbitmq', 'amazonsqs', 'kafka', 'tomcat', 'message_norm', 'rocketmq', 'zookeeper', 'clickhouse', 'cache', 'elasticsearch', 'hive', 'postgresql', 'hbase', 'mssql', 'database_norm', 'redis', 'mysql', 'db2', 'oracle' ]; // 根据服务类型获取服务的icon function getServiceTypeIcon(type) { if (!type || typeof type !== 'string') return 'language_norm'; var iconType = (type === null || type === void 0 ? void 0 : type.indexOf('.')) > -1 ? type === null || type === void 0 ? void 0 : type.slice((type === null || type === void 0 ? void 0 : type.indexOf('.')) + 1).trim() : type; var result = IconNames.find(function (icon) { return icon === iconType; }); if (result) return result; if (type === null || type === void 0 ? void 0 : type.startsWith(exports.MQ_TYPE_FLAG)) { return 'message_norm'; } if (type === null || type === void 0 ? void 0 : type.startsWith(exports.DB_TYPE_FLAG)) { return 'database_norm'; } if (type === null || type === void 0 ? void 0 : type.startsWith(exports.EXTERNAL_TYPE_FLAG)) { return 'web'; } if (type === null || type === void 0 ? void 0 : type.startsWith(exports.UA_TYPE_FLAG)) { return 'browser'; } return 'language_norm'; } exports.getServiceTypeIcon = getServiceTypeIcon; function transformEdgeToGraphEdge(data, edgeColor) { var result = __assign({}, data); if (edgeColor) { result.style = { stroke: edgeColor }; result.stateStyles = { select: { stroke: edgeColor } }; } else { result.style = { stroke: exports.DefaultEdgeStroke }; result.stateStyles = { select: { stroke: exports.DefaultEdgeStroke } }; } return result; } exports.transformEdgeToGraphEdge = transformEdgeToGraphEdge; function transformNodeToChatNode(data, nodeColor) { if (nodeColor) { data.style = { fill: nodeColor, stroke: nodeColor, lineWidth: 0 }; data.iconStyle = { fontSize: 26, textAlign: 'center', textBaseline: 'middle', fill: exports.NormalColor, cursor: 'pointer' }; data.stateStyles = { hover: { fill: nodeColor, lineWidth: 2, stroke: nodeColor }, neighbor: { stroke: nodeColor, fill: nodeColor, lineWidth: 0, icon: { stroke: exports.NormalColor, fill: exports.NormalColor } }, hoverNeighbor: { stroke: nodeColor, fill: nodeColor, lineWidth: 0, icon: { stroke: exports.NormalColor, fill: exports.NormalColor } }, select: { fill: nodeColor, stroke: nodeColor, lineWidth: exports.LineWidth, icon: { stroke: exports.NormalColor, fill: exports.NormalColor } } }; } else { data.stateStyles = { hoverNeighbor: { stroke: exports.NORMAL_HOVER_COLOR, fill: exports.NORMAL_HOVER_COLOR, lineWidth: exports.LineWidth, icon: { stroke: exports.NormalColor, fill: exports.NormalColor } } }; } return __assign({}, data); } exports.transformNodeToChatNode = transformNodeToChatNode; function getColorByRules(rules, fields, row, levels) { var maxLevelColor = ''; var minLevelIndex = Infinity; // index 越低代表越严重 var maxLevelField = ''; rules.forEach(function (rule) { var _a; var ruleFieldIndex = fields.findIndex(function (field) { return field.key === rule.fieldKey; }); var ruleFieldValue = (_a = row[ruleFieldIndex]) === null || _a === void 0 ? void 0 : _a[0]; var levelKey = ''; if (rule.type === 'number') { var threshold = rule.thresholds.find(function (item) { return lodash_1.isNumber(ruleFieldValue) && item.value >= ruleFieldValue; }); levelKey = lodash_1.get(threshold, 'level', ''); } else { } var levelIndex = levels.findIndex(function (level) { return level.key === levelKey; }); if (levelIndex > -1 && levelIndex < minLevelIndex) { minLevelIndex = levelIndex; maxLevelColor = levels[levelIndex].color; maxLevelField = rule.fieldKey; } }); return { maxLevelColor: maxLevelColor, maxLevelField: maxLevelField }; } exports.getColorByRules = getColorByRules; function getTooltipByRules(rules, fields, row, maxLevelInfo, showType, type) { var result = showType ? [[{ key: language_1.formatString('类型'), value: type }]] : [[]]; var count = type ? 0 : 1; rules.forEach(function (rule) { var _a; var ruleFieldIndex = fields.findIndex(function (field) { return field.key === rule.fieldKey; }); var ruleFieldValue = (_a = row[ruleFieldIndex]) === null || _a === void 0 ? void 0 : _a[0]; var transformValue = rule.type === 'number' ? lodash_1.isNil(ruleFieldValue) ? '-' : unit_1.getUnitTransformer('none')(ruleFieldValue || 0, 0) : ruleFieldValue; var color = maxLevelInfo.maxLevelField === rule.fieldKey ? maxLevelInfo.maxLevelColor : ''; if (count === 3) { result.push([ { key: rule.fieldKey, value: transformValue, color: color } ]); } else { result[result.length - 1].push({ key: rule.fieldKey, value: transformValue, color: color }); } }); return result; } exports.getTooltipByRules = getTooltipByRules;