@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
396 lines (395 loc) • 10.1 kB
JavaScript
;
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;