@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
90 lines (89 loc) • 4.46 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.getPieMetricSeries = exports.getPieBucketSeries = void 0;
var lodash_1 = require("lodash");
var LegendColorPanel_1 = require("@qn-pandora/pandora-app-component/es/components/LegendColorPanel");
var constants_1 = require("./constants");
var type_1 = require("../../../constants/language/base/type");
var language_1 = require("../../../services/language");
var constants_2 = require("../../../constants");
var transform_1 = require("../../ChartStyleConfig/PieChart/transform");
function getPieBucketSeries(themeOption, dataset, metrics, buckets, isDateSeries, maxSlices, displayColors, sectorOffset, colorMode, sort) {
if (metrics.length === 0 || buckets.length === 0) {
var noData = [constants_1.noDataSeries()].map(function (data) { return (__assign(__assign({}, data), { name: language_1.formatString(data.name), data: data.data.map(function (item) { return (__assign(__assign({}, item), { name: language_1.formatString(item.name) })); }) })); })[0];
return noData;
}
var data = transform_1.getPieData(dataset, metrics, buckets, isDateSeries, maxSlices, sort);
var colors = transform_1.getPieBucketColorWithData(themeOption, constants_2.ChartType.Pie, data, displayColors, colorMode);
return {
name: buckets[0],
type: 'pie',
data: data.map(function (item) {
var color = lodash_1.find(colors, function (colorItem) { return colorItem.name === item.name; });
return __assign(__assign({}, item), { itemStyle: {
normal: {
color: color.color,
borderWidth: sectorOffset
}
} });
})
};
}
exports.getPieBucketSeries = getPieBucketSeries;
function getPieMetricSeries(themeOption, dataset, metrics, maxSlices, colors, sectorOffset, colorMode) {
if (colors === void 0) { colors = []; }
var rows = dataset.rows, fields = dataset.fields;
if (metrics.length === 0 || rows.length === 0) {
var noData = [constants_1.noDataSeries()].map(function (data) { return (__assign(__assign({}, data), { name: language_1.formatString(data.name), data: data.data.map(function (item) { return (__assign(__assign({}, item), { name: language_1.formatString(item.name) })); }) })); })[0];
return noData;
}
var data = metrics.map(function (metric) {
var line = rows[0];
var index = lodash_1.findIndex(fields, function (field) { return field.key === metric; });
return {
value: line[index] ? lodash_1.toNumber(line[index][0]) || 0 : 0,
name: metric
};
});
// 排序
data = lodash_1.sortBy(data, function (series) { return -series.value; });
// 判断data数据如果超过设置的最大切片数,将多余分片归总到其他分类
if (data.length > maxSlices) {
var otherData = data.slice(maxSlices);
var otherValue = lodash_1.sumBy(otherData, function (series) { return lodash_1.toNumber(series.value) || 0; });
data = data.slice(0, maxSlices).concat({
name: language_1.formatString(type_1.BaseLocale.other),
value: otherValue
});
}
var defaultColor = lodash_1.get(LegendColorPanel_1.colorMap, colorMode) ||
lodash_1.get(themeOption, ['pie', 'color']) ||
themeOption.color;
return {
name: '',
type: 'pie',
data: data.map(function (item, index) {
var colorIndex = lodash_1.findIndex(colors, function (color) { return color.name === item.name; });
return __assign(__assign({}, item), { itemStyle: {
normal: {
color: colors && colorIndex !== -1
? colors[colorIndex].color
: defaultColor[index % defaultColor.length],
borderWidth: sectorOffset
}
} });
})
};
}
exports.getPieMetricSeries = getPieMetricSeries;