UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

71 lines (70 loc) 3.2 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.getSunburstChartData = void 0; var lodash_1 = require("lodash"); var app_sdk_1 = require("@qn-pandora/app-sdk"); var color_1 = require("../transforms/color"); function getData(rows, fields, metricIndex, buckets, bucketIndex, unitTransformer, maxSlice) { var bucket = buckets[bucketIndex]; var fieldIndex = lodash_1.findIndex(fields, function (field) { return field.key === bucket; }); var result = lodash_1.groupBy(rows, fieldIndex); var keys = Object.keys(result); if (maxSlice && keys.length > maxSlice) { keys = keys.slice(0, maxSlice); } return keys.map(function (key) { var isLastBucket = bucketIndex === buckets.length - 1; var value = lodash_1.sum(result[key].map(function (line) { return line[metricIndex][0]; })); return __assign({ name: key, type: app_sdk_1.EChartConditionType.Bucket, value: value, itemStyle: {} }, (isLastBucket ? {} : { children: getData(result[key], fields, metricIndex, buckets, bucketIndex + 1, unitTransformer) })); }); } function getSunburstChartData(themeOption, dataset, metrics, buckets, unitTransformer, maxSlice) { var rows = dataset.rows, fields = dataset.fields; if (metrics.length === 0 || buckets.length === 0) { return []; } var metric = metrics[0]; var metricIndex = lodash_1.findIndex(fields, function (field) { return field.key === metric; }); var defaultColor = lodash_1.get(themeOption, ['sunburst', 'color']) ? lodash_1.get(themeOption, ['sunburst', 'color']) : themeOption.color.map(function (t) { return color_1.hexToHslGradient(t); }); var datas = getData(rows, fields, metricIndex, buckets, 0, unitTransformer, maxSlice); // 处理排序和对应的颜色,否则echarts会自动排序,跟原本的颜色排序会不一致 var sortedData = lodash_1.sortBy(datas, ['value']).reverse(); sortedData.forEach(function (data, index) { data.itemStyle = { color: defaultColor[index % defaultColor.length][0] }; if (data.children) { data.children = setChildrenColor(data.children, 1, defaultColor[index % defaultColor.length]); } }); return sortedData; } exports.getSunburstChartData = getSunburstChartData; function setChildrenColor(children, bucketIndex, defaultColor) { return children.map(function (child) { return __assign(__assign(__assign({}, child), { itemStyle: { color: defaultColor[bucketIndex % defaultColor.length] } }), (child.children ? { children: setChildrenColor(child.children, bucketIndex + 1, defaultColor) } : {})); }); }