@alicloud/cloud-charts
Version:

1,142 lines (1,079 loc) • 46.7 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = exports.Coordinate = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _bigData = require("./bigData");
var _data = require("./data");
var _emptyData = require("./emptyData");
var _extremeData = require("./extremeData");
var _dataRules = require("./dataRules");
var _common = require("../common/common");
/** 坐标系 */
var Coordinate = exports.Coordinate = /*#__PURE__*/function (Coordinate) {
Coordinate[Coordinate["Cartesian"] = 0] = "Cartesian";
Coordinate[Coordinate["Polar"] = 1] = "Polar";
Coordinate[Coordinate["Others"] = 2] = "Others";
return Coordinate;
}({});
/** 柱图 */
var barChart = {
id: 'bar_chart',
name: '柱状图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Common,
// 将父类分成子类的分类函数
classify: function classify(data, config) {
var _code;
// 判断方向,横向还是纵向
var isColumn = (config === null || config === void 0 ? void 0 : config.column) === undefined || (config === null || config === void 0 ? void 0 : config.column) === true;
// 判断是否是区间柱图
var isInterval = data === null || data === void 0 ? void 0 : data.some(function (item) {
return Array.isArray(item.y);
});
// 判断是否是极坐标柱图
var isPolar = !!(config !== null && config !== void 0 && config.polar);
// 判断是否是镜面柱图
var isFacet = !!(config !== null && config !== void 0 && config.facet) && new Set(data.map(function (item) {
return item.facet;
})).size > 1;
// 判断是否是百分比柱图
var isPercentage = !!(config !== null && config !== void 0 && config.percentage);
// 判断是否是分组堆叠
var hasDodges = new Set(data.map(function (item) {
return item.dodge;
})).size > 1;
var isDodgeStack = !!(config !== null && config !== void 0 && config.dodgeStack) && hasDodges;
// 判断是否是堆叠图
var isStack = !isDodgeStack && !!(config !== null && config !== void 0 && config.stack);
// 判断是否是分组柱图
var isDodge = !isDodgeStack && !isStack && !!(config !== null && config !== void 0 && config.dodge) && hasDodges;
// 编码
var code = "" + (isColumn ? 1 : 0) + (isInterval ? 1 : 0) + (isPolar ? 1 : 0) + (isFacet ? 1 : 0) + (isPercentage ? 1 : 0) + (isDodgeStack ? 1 : 0) + (isStack ? 1 : 0) + (isDodge ? 1 : 0);
// 映射
var chartMap = {
// 普通柱图
'10000000': 'bar_chart',
// 横向柱图
'00000000': 'horizontal_bar_chart',
// 区间柱状图
'11000000': 'interval_bar_chart',
// 横向区间柱状图
'01000000': 'horizontal_interval_bar_chart',
// 堆叠柱状图
'10000010': 'stacked_bar_chart',
// 横向堆叠柱状图
'00000010': 'horizontal_stacked_bar_chart',
// 百分比堆叠柱状图
'10001010': 'percentage_bar_chart',
// 分组堆叠柱状图
'10000100': 'grouped_stacked_bar_chart',
// 分组百分比堆叠柱状图
'10001100': 'grouped_percentage_stack_bar_chart',
// 镜面柱面
'10010000': 'facet_bar_chart',
// 横向镜面柱图
'00010000': 'horizontal_facet_bar_chart',
// 极坐标柱状图
'10100000': 'polar_bar_chart',
// 玉玦图(极坐标横向柱状图)
'00100000': 'polar_horizontal_bar_chart',
// 极坐标堆叠柱状图
'10100010': 'polar_stacked_bar_chart'
};
return (_code = chartMap === null || chartMap === void 0 ? void 0 : chartMap[code]) !== null && _code !== void 0 ? _code : 'bar_chart';
},
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 15,
message: '该柱图柱子过于密集,会影响展示效果,建议减少数据量或加大图表宽度。推荐开启缩略轴slider配置或滚动条scrollbar配置,问题码#05-2'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 30,
message: '该柱图柱子数量过多,不利于数据间的比较,建议减少数据量或加大图表宽度。推荐开启缩略轴slider配置或滚动条scrollbar配置,如轴文本太长也可开启autoEllipsis配置项。问题码#05-2'
}],
process: _bigData.processBarBigData
},
extremeData: _extremeData.processBarExtremeData,
children: {
horizontal_bar_chart: {
id: 'horizontal_bar_chart',
name: '横向柱状图',
mainAxis: 'y',
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 30,
message: '该柱图柱子过于密集,会影响展示效果,建议减少数据量或加大图表高度'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 15,
message: '该柱图柱子数量过多,不利于数据间的比较,建议减少数据量或加大图表高度'
}]
},
extremeData: null
},
interval_bar_chart: {
id: 'interval_bar_chart',
name: '区间柱状图',
extremeData: null
},
horizontal_interval_bar_chart: {
id: 'horizontal_interval_bar_chart',
name: '横向区间柱状图',
mainAxis: 'y',
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 30,
message: '该柱图柱子过于密集,会影响展示效果,建议减少数据量或加大图表高度'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 15,
message: '该柱图柱子数量过多,不利于数据间的比较,建议减少数据量或加大图表高度'
}]
},
extremeData: null
},
stacked_bar_chart: {
id: 'stacked_bar_chart',
name: '堆叠柱状图'
},
horizontal_stacked_bar_chart: {
id: 'horizontal_stacked_bar_chart',
name: '横向堆叠柱状图',
mainAxis: 'y',
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 30,
message: '该柱图柱子过于密集,会影响展示效果,建议减少数据量或加大图表高度'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 15,
message: '该柱图柱子数量过多,不利于数据间的比较,建议减少数据量或加大图表高度'
}]
},
extremeData: null
},
percentage_bar_chart: {
id: 'percentage_bar_chart',
name: '百分比堆叠柱状图'
},
grouped_stacked_bar_chart: {
id: 'grouped_stacked_bar_chart',
name: '分组堆叠柱状图'
},
grouped_percentage_stack_bar_chart: {
id: 'grouped_percentage_stack_bar_chart',
name: '分组百分比堆叠柱状图'
},
facet_bar_chart: {
id: 'facet_bar_chart',
name: '镜面柱图',
extremeData: null
},
horizontal_facet_bar_chart: {
id: 'horizontal_facet_bar_chart',
name: '横向镜面柱图',
mainAxis: 'y',
extremeData: null
},
polar_bar_chart: {
id: 'polar_bar_chart',
name: '极坐标柱状图',
coord: Coordinate.Polar,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该极坐标柱图半径过小,会影响展示效果,建议加大图表尺寸'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 15,
message: '该极坐标柱图柱子数量过多,不利于数据间的比较,建议减少数据量或改用普通柱图'
}]
},
extremeData: null
},
polar_horizontal_bar_chart: {
id: 'polar_horizontal_bar_chart',
name: '极坐标横向柱状图',
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该极坐标柱图半径过小,会影响展示效果,建议加大图表尺寸'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 10,
message: '该极坐标横向柱图柱子数量过多,不利于数据间的比较,建议减少数据量或改用普通柱图'
}]
},
extremeData: null
},
polar_stacked_bar_chart: {
id: 'polar_stacked_bar_chart',
name: '极坐标堆叠柱图',
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该极坐标柱图半径过小,会影响展示效果,建议加大图表尺寸'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 15,
message: '该极坐标柱图柱子数量过多,不利于数据间的比较,建议减少数据量或改用普通柱图'
}]
},
extremeData: null
}
},
processConfig: function processConfig(config) {
var _finalConfig2, _finalConfig5, _finalConfig6, _finalConfig6$label, _finalConfig7, _finalConfig8, _finalConfig8$yAxis, _finalConfig9, _finalConfig9$yAxis, _finalConfig9$yAxis$, _finalConfig10, _finalConfig11, _finalConfig12, _finalConfig12$yAxis;
var finalConfig = config;
// 如果没有配置最大值,但是有辅助线,则默认增加最大值
if (finalConfig.yAxis && finalConfig.guide) {
var _finalConfig;
var guideYMax = null;
Object.keys(finalConfig.guide).forEach(function (key) {
var guideItem = finalConfig.guide[key];
if (Array.isArray(guideItem)) {
guideItem.forEach(function (subItem) {
if ((subItem === null || subItem === void 0 ? void 0 : subItem.axis) === 'y' && (subItem !== null && subItem !== void 0 && subItem.value || (subItem === null || subItem === void 0 ? void 0 : subItem.value) === 0)) {
if (guideYMax === null || subItem.value > guideYMax) {
guideYMax = subItem.value;
}
}
});
} else {
if ((guideItem === null || guideItem === void 0 ? void 0 : guideItem.axis) === 'y' && (guideItem !== null && guideItem !== void 0 && guideItem.value || (guideItem === null || guideItem === void 0 ? void 0 : guideItem.value) === 0)) {
if (guideYMax === null || guideItem.value > guideYMax) {
guideYMax = guideItem.value;
}
}
}
});
// 双轴不做处理
if (guideYMax !== null && !Array.isArray((_finalConfig = finalConfig) === null || _finalConfig === void 0 ? void 0 : _finalConfig.yAxis)) {
finalConfig.yAxis.max = Math.max(finalConfig.yAxis.max, guideYMax);
}
}
// 处理百分比柱图的y轴%展示
if (!Array.isArray((_finalConfig2 = finalConfig) === null || _finalConfig2 === void 0 ? void 0 : _finalConfig2.yAxis) && finalConfig.percentage && !finalConfig.yAxis.labelFormatter) {
var _finalConfig$yAxis, _finalConfig3;
var customFormatter = (_finalConfig$yAxis = finalConfig.yAxis) === null || _finalConfig$yAxis === void 0 ? void 0 : _finalConfig$yAxis.labelFormatter;
finalConfig = (0, _extends2["default"])({}, finalConfig, {
yAxis: (0, _extends2["default"])({}, (_finalConfig3 = finalConfig) === null || _finalConfig3 === void 0 ? void 0 : _finalConfig3.yAxis, {
min: 0,
max: 1,
labelFormatter: function labelFormatter(value) {
var _finalConfig4;
return customFormatter ? customFormatter(value) : (0, _common.numberDecimal)(value * 100, (_finalConfig4 = finalConfig) === null || _finalConfig4 === void 0 ? void 0 : _finalConfig4.decimal) + '%';
}
})
});
}
// 线图与柱图当同时使用自定义legend与slider时,切换为默认legend
// 临时方案,自定义legend与slider无法兼容,待修复bug后删除
// if (
// (finalConfig?.legend?.foldable ||
// finalConfig?.legend?.table ||
// finalConfig?.legend?.gradient) &&
// finalConfig?.slider
// ) {
// finalConfig = {
// ...finalConfig,
// legend: {
// ...finalConfig?.legend,
// foldable: false,
// table: false,
// gradient: false,
// },
// };
// }
// 处理label展示不全问题
var appendPadding = null;
if ((_finalConfig5 = finalConfig) !== null && _finalConfig5 !== void 0 && _finalConfig5.label && ((_finalConfig6 = finalConfig) === null || _finalConfig6 === void 0 ? void 0 : (_finalConfig6$label = _finalConfig6.label) === null || _finalConfig6$label === void 0 ? void 0 : _finalConfig6$label.visible) !== false) {
appendPadding = [20, 20, 0, 0];
}
// 隐藏左y轴时,需要左padding
if (appendPadding && (Array.isArray((_finalConfig7 = finalConfig) === null || _finalConfig7 === void 0 ? void 0 : _finalConfig7.yAxis) && (((_finalConfig8 = finalConfig) === null || _finalConfig8 === void 0 ? void 0 : (_finalConfig8$yAxis = _finalConfig8.yAxis) === null || _finalConfig8$yAxis === void 0 ? void 0 : _finalConfig8$yAxis[0]) === false || ((_finalConfig9 = finalConfig) === null || _finalConfig9 === void 0 ? void 0 : (_finalConfig9$yAxis = _finalConfig9.yAxis) === null || _finalConfig9$yAxis === void 0 ? void 0 : (_finalConfig9$yAxis$ = _finalConfig9$yAxis[0]) === null || _finalConfig9$yAxis$ === void 0 ? void 0 : _finalConfig9$yAxis$.visible) === false) || !Array.isArray((_finalConfig10 = finalConfig) === null || _finalConfig10 === void 0 ? void 0 : _finalConfig10.yAxis) && (((_finalConfig11 = finalConfig) === null || _finalConfig11 === void 0 ? void 0 : _finalConfig11.yAxis) === false || ((_finalConfig12 = finalConfig) === null || _finalConfig12 === void 0 ? void 0 : (_finalConfig12$yAxis = _finalConfig12.yAxis) === null || _finalConfig12$yAxis === void 0 ? void 0 : _finalConfig12$yAxis.visible) === false))) {
appendPadding[3] = appendPadding[0];
}
if (appendPadding) {
var _finalConfig13;
finalConfig = (0, _extends2["default"])({}, finalConfig, {
appendPadding: ((_finalConfig13 = finalConfig) === null || _finalConfig13 === void 0 ? void 0 : _finalConfig13.appendPadding) || appendPadding
});
}
return finalConfig;
},
processData: function processData(data, config) {
return (0, _dataRules.runDataRules)(data, config);
}
};
/** 线图 */
var lineChart = {
id: 'line_chart',
name: '线图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Common,
classify: function classify(data, config) {
var _code2;
// 是否是阶梯线图
var isStep = !!(config !== null && config !== void 0 && config.step);
// 是否是平滑线图
var isSpline = !!(config !== null && config !== void 0 && config.spline);
// 是否是面积图
var isArea = !!(config !== null && config !== void 0 && config.area);
// 是否堆叠(仅area时生效)
var isStack = !!(config !== null && config !== void 0 && config.stack);
// 是否是区域线图
var isInterval = data === null || data === void 0 ? void 0 : data.some(function (item) {
return Array.isArray(item.y);
});
// 编码
var code = "" + (isStep ? 1 : 0) + (isSpline ? 1 : 0) + (isArea ? 1 : 0) + (isStack ? 1 : 0) + (isInterval ? 1 : 0);
// 映射
var chartMap = {
// 普通线图
'00000': 'line_chart',
// 阶梯线图
'10000': 'step_line_chart',
// 平滑线图
'01000': 'smooth_line_chart',
// 面积图
'00100': 'area_chart',
// 平滑面积图
'01100': 'smooth_area_chart',
// 堆叠面积图
'00110': 'stacked_area_chart',
// 平滑堆叠面积图
'01110': 'smooth_stacked_area_chart',
// 区域线图
'00101': 'area_line_chart'
};
return (_code2 = chartMap === null || chartMap === void 0 ? void 0 : chartMap[code]) !== null && _code2 !== void 0 ? _code2 : 'line_chart';
},
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 4,
message: '该线图数据过于密集,会影响展示效果,建议减少数据量或加大图表宽度。已自动关闭标记点、圆滑曲线、面积图等配置项,若要关闭可加force配置项。推荐开启缩略轴slider配置,问题码#05-1'
}],
process: _bigData.processLineBigData
},
extremeData: _extremeData.processLineExtremeData,
children: {
step_line_chart: {
id: 'step_line_chart',
name: '阶梯线图'
},
smooth_line_chart: {
id: 'smooth_line_chart',
name: '平滑线图'
},
area_chart: {
id: 'area_chart',
name: '面积图'
},
smooth_area_chart: {
id: 'smooth_area_chart',
name: '平滑面积图'
},
stacked_area_chart: {
id: 'stacked_area_chart',
name: '堆叠面积图'
},
smooth_stacked_area_chart: {
id: 'smooth_stacked_area_chart',
name: '平滑堆叠面积图'
},
area_line_chart: {
id: 'area_line_chart',
name: '区域线图'
}
},
processConfig: function processConfig(config) {
var _finalConfig14, _finalConfig15, _finalConfig15$label, _finalConfig16, _finalConfig17, _finalConfig18, _finalConfig18$yAxis, _finalConfig19, _finalConfig19$yAxis, _finalConfig19$yAxis$, _finalConfig20, _finalConfig21, _finalConfig22, _finalConfig22$yAxis;
var finalConfig = config;
if (finalConfig.stack) {
finalConfig = (0, _extends2["default"])({}, finalConfig, {
area: true
});
}
// 处理label和symbol展示不全问题
var appendPadding = null;
if ((_finalConfig14 = finalConfig) !== null && _finalConfig14 !== void 0 && _finalConfig14.label && ((_finalConfig15 = finalConfig) === null || _finalConfig15 === void 0 ? void 0 : (_finalConfig15$label = _finalConfig15.label) === null || _finalConfig15$label === void 0 ? void 0 : _finalConfig15$label.visible) !== false) {
appendPadding = [20, 20, 0, 0];
} else if ((_finalConfig16 = finalConfig) !== null && _finalConfig16 !== void 0 && _finalConfig16.symbol) {
appendPadding = [10, 10, 0, 0];
}
// 隐藏左y轴时,需要左padding
if (appendPadding && (Array.isArray((_finalConfig17 = finalConfig) === null || _finalConfig17 === void 0 ? void 0 : _finalConfig17.yAxis) && (((_finalConfig18 = finalConfig) === null || _finalConfig18 === void 0 ? void 0 : (_finalConfig18$yAxis = _finalConfig18.yAxis) === null || _finalConfig18$yAxis === void 0 ? void 0 : _finalConfig18$yAxis[0]) === false || ((_finalConfig19 = finalConfig) === null || _finalConfig19 === void 0 ? void 0 : (_finalConfig19$yAxis = _finalConfig19.yAxis) === null || _finalConfig19$yAxis === void 0 ? void 0 : (_finalConfig19$yAxis$ = _finalConfig19$yAxis[0]) === null || _finalConfig19$yAxis$ === void 0 ? void 0 : _finalConfig19$yAxis$.visible) === false) || !Array.isArray((_finalConfig20 = finalConfig) === null || _finalConfig20 === void 0 ? void 0 : _finalConfig20.yAxis) && (((_finalConfig21 = finalConfig) === null || _finalConfig21 === void 0 ? void 0 : _finalConfig21.yAxis) === false || ((_finalConfig22 = finalConfig) === null || _finalConfig22 === void 0 ? void 0 : (_finalConfig22$yAxis = _finalConfig22.yAxis) === null || _finalConfig22$yAxis === void 0 ? void 0 : _finalConfig22$yAxis.visible) === false))) {
appendPadding[3] = appendPadding[0];
}
if (appendPadding) {
var _finalConfig23;
finalConfig = (0, _extends2["default"])({}, finalConfig, {
appendPadding: ((_finalConfig23 = finalConfig) === null || _finalConfig23 === void 0 ? void 0 : _finalConfig23.appendPadding) || appendPadding
});
}
// 线图与柱图当同时使用自定义legend与slider时,切换为默认legend
// 临时方案,自定义legend与slider无法兼容,待修复bug后删除
// if (
// (finalConfig?.legend?.foldable ||
// finalConfig?.legend?.table ||
// finalConfig?.legend?.gradient) &&
// finalConfig?.slider
// ) {
// finalConfig = {
// ...finalConfig,
// legend: {
// ...finalConfig?.legend,
// foldable: false,
// table: false,
// gradient: false,
// },
// };
// }
// 如果没有配置最大值,但是有辅助线,则默认增加最大值
if (finalConfig.yAxis && finalConfig.guide) {
var _finalConfig24;
var guideYMax = null;
Object.keys(finalConfig.guide).forEach(function (key) {
var guideItem = finalConfig.guide[key];
if (Array.isArray(guideItem)) {
guideItem.forEach(function (subItem) {
if ((subItem === null || subItem === void 0 ? void 0 : subItem.axis) === 'y' && (subItem !== null && subItem !== void 0 && subItem.value || (subItem === null || subItem === void 0 ? void 0 : subItem.value) === 0)) {
if (guideYMax === null || subItem.value > guideYMax) {
guideYMax = subItem.value;
}
}
});
} else {
if ((guideItem === null || guideItem === void 0 ? void 0 : guideItem.axis) === 'y' && (guideItem !== null && guideItem !== void 0 && guideItem.value || (guideItem === null || guideItem === void 0 ? void 0 : guideItem.value) === 0)) {
if (guideYMax === null || guideItem.value > guideYMax) {
guideYMax = guideItem.value;
}
}
}
});
// 双轴不做处理
if (guideYMax !== null && !Array.isArray((_finalConfig24 = finalConfig) === null || _finalConfig24 === void 0 ? void 0 : _finalConfig24.yAxis)) {
finalConfig.yAxis.max = Math.max(finalConfig.yAxis.max, guideYMax);
}
}
return finalConfig;
},
processData: function processData(data, config) {
return (0, _dataRules.runDataRules)(data, config);
}
};
/** 饼图 */
var pieChart = {
id: 'pie_chart',
name: '饼图',
coord: Coordinate.Polar,
dataStructure: _data.DataStructure.Common,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.cycle) {
return 'donut_chart';
}
return 'pie_chart';
},
emptyData: _emptyData.EmptyDataProcess.Polar,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该饼图半径过小,会影响展示效果,建议加大图表半径'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 10,
message: '该饼图分块过多,会影响可读性,推荐开启autoFormat进行数据收敛,问题码#05-3'
}],
process: _bigData.processPieBigData
},
extremeData: _extremeData.processLPieExtremeData,
children: {
donut_chart: {
id: 'donut_chart',
name: '环图'
}
}
};
/** 直方图 */
var histogram = {
id: 'histogram',
name: '直方图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Common,
classify: function classify(data, config) {
var _code3;
// 方向,横向还是纵向
var isColumn = (config === null || config === void 0 ? void 0 : config.column) === undefined || (config === null || config === void 0 ? void 0 : config.column) === true;
// 是否是极坐标
var isPolar = !!(config !== null && config !== void 0 && config.polar);
// 是否归一化
var isNormalize = !!(config !== null && config !== void 0 && config.normalize);
// 编码
var code = "" + (isColumn ? 1 : 0) + (isPolar ? 1 : 0) + (isNormalize ? 1 : 0);
// 映射
var chartMap = {
// 普通直方图
'100': 'histogram',
// 水平直方图
'000': 'horizontal_histogram',
// 归一化直方图
'101': 'normalized_histogram',
// 极坐标直方图
'110': 'polar_histogram'
};
return (_code3 = chartMap === null || chartMap === void 0 ? void 0 : chartMap[code]) !== null && _code3 !== void 0 ? _code3 : 'histogram';
},
emptyData: _emptyData.EmptyDataProcess.Axis,
children: {
horizontal_histogram: {
id: 'horizontal_histogram',
name: '水平直方图',
mainAxis: 'y'
},
normalized_histogram: {
id: 'normalized_histogram',
name: '归一化直方图'
},
polar_histogram: {
id: 'polar_histogram',
name: '极坐标直方图',
coord: Coordinate.Polar
}
},
processData: function processData(data, config) {
return (0, _dataRules.runDataRules)(data, config);
}
};
/** 线柱图 */
var lineBarChart = {
id: 'line_bar_chart',
name: '线柱图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Origin,
classify: function classify(data, config) {
var _code4;
// 判断是否是分组堆叠,此处简化处理,不判断数据
var isDodgeStack = !!(config !== null && config !== void 0 && config.dodgeStack);
// 判断是否是堆叠图
var isStack = !isDodgeStack && !!(config !== null && config !== void 0 && config.stack);
// 是否面积图
var isArea = !!(config !== null && config !== void 0 && config.area);
// 编码
var code = "" + (isDodgeStack ? 1 : 0) + (isStack ? 1 : 0) + (isArea ? 1 : 0);
// 映射
var chartMap = {
'000': 'line_bar_chart',
// 堆叠线柱图
'010': 'stacked_line_bar_chart',
// 分组堆叠线柱图
'100': 'grouped_stacked_line_bar_chart',
// 面积线柱图
'001': 'area_bar_chart',
// 堆叠面积线柱图
'011': 'stacked_area_bar_chart',
// 分组堆叠面积线柱图
'101': 'grouped_stacked_area_bar_chart'
};
return (_code4 = chartMap === null || chartMap === void 0 ? void 0 : chartMap[code]) !== null && _code4 !== void 0 ? _code4 : 'line_bar_chart';
},
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 15,
message: '该线柱图数据过于密集,会影响展示效果,建议减少数据量或加大图表宽度'
}]
},
children: {
stacked_line_bar_chart: {
id: 'stacked_line_bar_chart',
name: '堆叠线柱图'
},
grouped_stacked_line_bar_chart: {
id: 'grouped_stacked_line_bar_chart',
name: '分组堆叠线柱图'
},
area_bar_chart: {
id: 'area_bar_chart',
name: '面积线柱图'
},
stacked_area_bar_chart: {
id: 'stacked_area_bar_chart',
name: '堆叠面积线柱图'
},
grouped_stacked_area_bar_chart: {
id: 'grouped_stacked_area_bar_chart',
name: '分组堆叠面积线柱图'
}
},
processConfig: function processConfig(config) {
var _finalConfig25, _finalConfig26, _finalConfig26$lineLa, _finalConfig27, _finalConfig28, _finalConfig28$barLab, _finalConfig29, _finalConfig30, _finalConfig31, _finalConfig31$yAxis, _finalConfig32, _finalConfig32$yAxis, _finalConfig32$yAxis$, _finalConfig33, _finalConfig34, _finalConfig35, _finalConfig35$yAxis;
var finalConfig = config;
// 处理label和symbol展示不全问题
var appendPadding = null;
if ((_finalConfig25 = finalConfig) !== null && _finalConfig25 !== void 0 && _finalConfig25.lineLabel && ((_finalConfig26 = finalConfig) === null || _finalConfig26 === void 0 ? void 0 : (_finalConfig26$lineLa = _finalConfig26.lineLabel) === null || _finalConfig26$lineLa === void 0 ? void 0 : _finalConfig26$lineLa.visible) !== false || (_finalConfig27 = finalConfig) !== null && _finalConfig27 !== void 0 && _finalConfig27.barLabel && ((_finalConfig28 = finalConfig) === null || _finalConfig28 === void 0 ? void 0 : (_finalConfig28$barLab = _finalConfig28.barLabel) === null || _finalConfig28$barLab === void 0 ? void 0 : _finalConfig28$barLab.visible) !== false) {
appendPadding = [20, 20, 0, 0];
} else if ((_finalConfig29 = finalConfig) !== null && _finalConfig29 !== void 0 && _finalConfig29.symbol) {
appendPadding = [10, 10, 0, 0];
}
// 隐藏左y轴时,需要左padding
if (appendPadding && (Array.isArray((_finalConfig30 = finalConfig) === null || _finalConfig30 === void 0 ? void 0 : _finalConfig30.yAxis) && (((_finalConfig31 = finalConfig) === null || _finalConfig31 === void 0 ? void 0 : (_finalConfig31$yAxis = _finalConfig31.yAxis) === null || _finalConfig31$yAxis === void 0 ? void 0 : _finalConfig31$yAxis[0]) === false || ((_finalConfig32 = finalConfig) === null || _finalConfig32 === void 0 ? void 0 : (_finalConfig32$yAxis = _finalConfig32.yAxis) === null || _finalConfig32$yAxis === void 0 ? void 0 : (_finalConfig32$yAxis$ = _finalConfig32$yAxis[0]) === null || _finalConfig32$yAxis$ === void 0 ? void 0 : _finalConfig32$yAxis$.visible) === false) || !Array.isArray((_finalConfig33 = finalConfig) === null || _finalConfig33 === void 0 ? void 0 : _finalConfig33.yAxis) && (((_finalConfig34 = finalConfig) === null || _finalConfig34 === void 0 ? void 0 : _finalConfig34.yAxis) === false || ((_finalConfig35 = finalConfig) === null || _finalConfig35 === void 0 ? void 0 : (_finalConfig35$yAxis = _finalConfig35.yAxis) === null || _finalConfig35$yAxis === void 0 ? void 0 : _finalConfig35$yAxis.visible) === false))) {
appendPadding[3] = appendPadding[0];
}
if (appendPadding) {
var _finalConfig36;
finalConfig = (0, _extends2["default"])({}, finalConfig, {
appendPadding: ((_finalConfig36 = finalConfig) === null || _finalConfig36 === void 0 ? void 0 : _finalConfig36.appendPadding) || appendPadding
});
}
return finalConfig;
},
processData: function processData(data, config) {
return (0, _dataRules.runDataRules)(data, config);
}
};
/** 线点图 */
var lineScatterChart = {
id: 'line_scatter_chart',
name: '线点图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Origin,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.area) {
return 'area_scatter_chart';
}
return 'line_scatter_chart';
},
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 10,
message: '该线点图数据过于密集,会影响展示效果,建议减少数据量或加大图表宽度'
}]
},
children: {
area_scatter_chart: {
id: 'area_scatter_chart',
name: '面积线点图'
}
},
processConfig: function processConfig(config) {
var _finalConfig37, _finalConfig38, _finalConfig38$lineLa, _finalConfig39, _finalConfig40, _finalConfig40$scatte, _finalConfig41, _finalConfig42, _finalConfig43, _finalConfig43$yAxis, _finalConfig44, _finalConfig44$yAxis, _finalConfig44$yAxis$, _finalConfig45, _finalConfig46, _finalConfig47, _finalConfig47$yAxis;
var finalConfig = config;
// 处理label和symbol展示不全问题
var appendPadding = null;
if ((_finalConfig37 = finalConfig) !== null && _finalConfig37 !== void 0 && _finalConfig37.lineLabel && ((_finalConfig38 = finalConfig) === null || _finalConfig38 === void 0 ? void 0 : (_finalConfig38$lineLa = _finalConfig38.lineLabel) === null || _finalConfig38$lineLa === void 0 ? void 0 : _finalConfig38$lineLa.visible) !== false || (_finalConfig39 = finalConfig) !== null && _finalConfig39 !== void 0 && _finalConfig39.scatterLabel && ((_finalConfig40 = finalConfig) === null || _finalConfig40 === void 0 ? void 0 : (_finalConfig40$scatte = _finalConfig40.scatterLabel) === null || _finalConfig40$scatte === void 0 ? void 0 : _finalConfig40$scatte.visible) !== false) {
appendPadding = [20, 20, 0, 0];
} else if ((_finalConfig41 = finalConfig) !== null && _finalConfig41 !== void 0 && _finalConfig41.symbol) {
appendPadding = [10, 10, 0, 0];
}
// 隐藏左y轴时,需要左padding
if (appendPadding && (Array.isArray((_finalConfig42 = finalConfig) === null || _finalConfig42 === void 0 ? void 0 : _finalConfig42.yAxis) && (((_finalConfig43 = finalConfig) === null || _finalConfig43 === void 0 ? void 0 : (_finalConfig43$yAxis = _finalConfig43.yAxis) === null || _finalConfig43$yAxis === void 0 ? void 0 : _finalConfig43$yAxis[0]) === false || ((_finalConfig44 = finalConfig) === null || _finalConfig44 === void 0 ? void 0 : (_finalConfig44$yAxis = _finalConfig44.yAxis) === null || _finalConfig44$yAxis === void 0 ? void 0 : (_finalConfig44$yAxis$ = _finalConfig44$yAxis[0]) === null || _finalConfig44$yAxis$ === void 0 ? void 0 : _finalConfig44$yAxis$.visible) === false) || !Array.isArray((_finalConfig45 = finalConfig) === null || _finalConfig45 === void 0 ? void 0 : _finalConfig45.yAxis) && (((_finalConfig46 = finalConfig) === null || _finalConfig46 === void 0 ? void 0 : _finalConfig46.yAxis) === false || ((_finalConfig47 = finalConfig) === null || _finalConfig47 === void 0 ? void 0 : (_finalConfig47$yAxis = _finalConfig47.yAxis) === null || _finalConfig47$yAxis === void 0 ? void 0 : _finalConfig47$yAxis.visible) === false))) {
appendPadding[3] = appendPadding[0];
}
if (appendPadding) {
var _finalConfig48;
finalConfig = (0, _extends2["default"])({}, finalConfig, {
appendPadding: ((_finalConfig48 = finalConfig) === null || _finalConfig48 === void 0 ? void 0 : _finalConfig48.appendPadding) || appendPadding
});
}
return finalConfig;
},
processData: function processData(data, config) {
return (0, _dataRules.runDataRules)(data, config);
}
};
/** 散点图 */
// todo: 散点图数据量计算方式及大数据判断调整
var scatterChart = {
id: 'scatter_chart',
name: '散点图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Common,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.jitter) {
return 'jitter_scatter_chart';
}
return 'scatter_chart';
},
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 2,
message: '该散点图数据过于密集,会影响展示效果,建议减少数据量或加大图表尺寸'
}]
},
children: {
jitter_scatter_chart: {
id: 'jitter_scatter_chart',
name: '扰动点图'
}
},
processConfig: function processConfig(config) {
var _finalConfig51, _finalConfig52, _finalConfig52$yAxis, _finalConfig53, _finalConfig53$yAxis, _finalConfig53$yAxis$, _finalConfig54, _finalConfig55, _finalConfig56, _finalConfig56$yAxis;
var finalConfig = config;
// 处理label和symbol展示不全问题
var appendPadding = null;
if (!finalConfig.jitter) {
var _finalConfig49, _finalConfig50, _finalConfig50$label;
if ((_finalConfig49 = finalConfig) !== null && _finalConfig49 !== void 0 && _finalConfig49.label && ((_finalConfig50 = finalConfig) === null || _finalConfig50 === void 0 ? void 0 : (_finalConfig50$label = _finalConfig50.label) === null || _finalConfig50$label === void 0 ? void 0 : _finalConfig50$label.visible) !== false) {
appendPadding = [20, 20, 0, 0];
} else {
appendPadding = [10, 10, 0, 0];
}
}
// 隐藏左y轴时,需要左padding
if (appendPadding && (Array.isArray((_finalConfig51 = finalConfig) === null || _finalConfig51 === void 0 ? void 0 : _finalConfig51.yAxis) && (((_finalConfig52 = finalConfig) === null || _finalConfig52 === void 0 ? void 0 : (_finalConfig52$yAxis = _finalConfig52.yAxis) === null || _finalConfig52$yAxis === void 0 ? void 0 : _finalConfig52$yAxis[0]) === false || ((_finalConfig53 = finalConfig) === null || _finalConfig53 === void 0 ? void 0 : (_finalConfig53$yAxis = _finalConfig53.yAxis) === null || _finalConfig53$yAxis === void 0 ? void 0 : (_finalConfig53$yAxis$ = _finalConfig53$yAxis[0]) === null || _finalConfig53$yAxis$ === void 0 ? void 0 : _finalConfig53$yAxis$.visible) === false) || !Array.isArray((_finalConfig54 = finalConfig) === null || _finalConfig54 === void 0 ? void 0 : _finalConfig54.yAxis) && (((_finalConfig55 = finalConfig) === null || _finalConfig55 === void 0 ? void 0 : _finalConfig55.yAxis) === false || ((_finalConfig56 = finalConfig) === null || _finalConfig56 === void 0 ? void 0 : (_finalConfig56$yAxis = _finalConfig56.yAxis) === null || _finalConfig56$yAxis === void 0 ? void 0 : _finalConfig56$yAxis.visible) === false))) {
appendPadding[3] = appendPadding[0];
}
if (appendPadding) {
var _finalConfig57;
finalConfig = (0, _extends2["default"])({}, finalConfig, {
appendPadding: ((_finalConfig57 = finalConfig) === null || _finalConfig57 === void 0 ? void 0 : _finalConfig57.appendPadding) || appendPadding
});
}
return finalConfig;
},
processData: function processData(data, config) {
return (0, _dataRules.runDataRules)(data, config);
}
};
/** 玫瑰图 */
var nightingaleRoseChart = {
id: 'nightingale_rose_chart',
name: '南丁格尔玫瑰图',
coord: Coordinate.Polar,
dataStructure: _data.DataStructure.Common,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.cycle) {
return 'nightingale_rose_donut_chart';
}
return 'nightingale_rose_chart';
},
emptyData: _emptyData.EmptyDataProcess.Polar,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该玫瑰图半径过小,会影响展示效果,建议加大图表半径'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 15,
message: '该玫瑰图分块过多,会影响可读性,建议减少数据量或改用其他图表'
}]
},
children: {
nightingale_rose_donut_chart: {
id: 'nightingale_rose_donut_chart',
name: '玫瑰环图'
}
}
};
/** 雷达图 */
var radarChart = {
id: 'radar_chart',
name: '雷达图',
coord: Coordinate.Polar,
dataStructure: _data.DataStructure.Common,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.area) {
return 'radar_area_chart';
}
return 'radar_chart';
},
emptyData: _emptyData.EmptyDataProcess.Polar,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该雷达图数据过于密集,会影响展示效果,建议减少数据量或加大图表半径'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 30,
message: '该雷达图分块过多,会影响可读性,建议减少数据量或改用其他图表'
}]
},
children: {
radar_area_chart: {
id: 'radar_area_chart',
name: '雷达面积图'
}
}
};
/** 漏斗图 */
var funnelChart = {
id: 'funnel_chart',
name: '漏斗图',
coord: Coordinate.Cartesian,
mainAxis: 'y',
dataStructure: _data.DataStructure.Common,
classify: function classify(data, config) {
var _code5;
// 方向
var isColumn = !(config !== null && config !== void 0 && config.direction) || (config === null || config === void 0 ? void 0 : config.direction) === 'vertical';
// 是否尖顶
var isPyramid = !!(config !== null && config !== void 0 && config.pyramid);
// 编码
var code = "" + (isColumn ? 1 : 0) + (isPyramid ? 1 : 0);
// 映射
var chartMap = {
// 普通漏斗图
'10': 'funnel_chart',
// 水平漏斗图
'00': 'horizontal_funnel_chart',
// 尖顶漏斗图
'11': 'pyramid_funnel_chart',
// 水平尖顶漏斗图
'01': 'horizontal_pyramid_funnel_chart'
};
return (_code5 = chartMap === null || chartMap === void 0 ? void 0 : chartMap[code]) !== null && _code5 !== void 0 ? _code5 : 'funnel_chart';
},
emptyData: _emptyData.EmptyDataProcess.Background,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 30,
message: '该漏斗图数据过于密集,会影响展示效果,建议减少数据量或加大图表尺寸'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 10,
message: '该漏斗图数据量过多,会影响可读性,建议减少数据量或改用其他图表'
}]
},
children: {
horizontal_funnel_chart: {
id: 'horizontal_funnel_chart',
name: '水平漏斗图',
mainAxis: 'x'
},
pyramid_funnel_chart: {
id: 'pyramid_funnel_chart',
name: '尖顶漏斗图'
},
horizontal_pyramid_funnel_chart: {
id: 'horizontal_pyramid_funnel_chart',
name: '水平尖顶漏斗图',
mainAxis: 'x'
}
}
};
/** 多重饼图 */
var multiPieChart = {
id: 'multi_pie_chart',
name: '多重饼图',
coord: Coordinate.Polar,
dataStructure: _data.DataStructure.Tree,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.cycle) {
return 'multi_donut_chart';
}
return 'multi_pie_chart';
},
emptyData: _emptyData.EmptyDataProcess.Polar,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该多重饼图数据过于密集,会影响展示效果,建议加大图表半径'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 20,
message: '该多重饼图分块过多,会影响可读性,建议减少数据量或改用其他图表'
}]
},
children: {
multi_donut_chart: {
id: 'multi_donut_chart',
name: '多重环图'
}
}
};
/** 矩形树图 */
var treemap = {
id: 'treemap',
name: '矩形树图',
coord: Coordinate.Cartesian,
dataStructure: _data.DataStructure.Tree,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.polar) {
return 'polar_treemap';
}
return 'treemap';
},
emptyData: _emptyData.EmptyDataProcess.Background,
children: {
polar_treemap: {
id: 'polar_treemap',
name: '极坐标树图',
coord: Coordinate.Polar
}
}
};
/** 相邻层次图 */
var hierarchyChart = {
id: 'hierarchy_chart',
name: '相邻层次图',
coord: Coordinate.Cartesian,
dataStructure: _data.DataStructure.Tree,
classify: function classify(data, config) {
if (config !== null && config !== void 0 && config.polar) {
return 'polar_hierarchy_chart';
}
return 'hierarchy_chart';
},
emptyData: _emptyData.EmptyDataProcess.Background,
children: {
polar_hierarchy_chart: {
id: 'polar_hierarchy_chart',
name: '旭日图',
coord: Coordinate.Polar
}
}
};
/** 箱型图 */
var boxChart = {
id: 'box_chart',
name: '箱型图',
coord: Coordinate.Cartesian,
dataStructure: _data.DataStructure.Common,
mainAxis: 'x',
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 50,
message: '该箱型图数据过于密集,会影响展示效果,建议减少数据量或加大图表宽度'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 20,
message: '该箱型图数据量过多,不利于数据间的比较,建议减少数据量或改用其他图表'
}]
}
};
/** 烛形图 */
var candlestickChart = {
id: 'candlestick_chart',
name: '烛形图',
coord: Coordinate.Cartesian,
dataStructure: _data.DataStructure.Common,
mainAxis: 'x',
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 8,
message: '该烛形图数据过于密集,会影响展示效果,建议减少数据量或加大图表宽度'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 100,
message: '该烛形图数据量过多,会影响可读性,建议减少数据量或改用其他图表'
}]
}
};
/** 多重圆环 */
var multiCircle = {
id: 'multi_circle',
name: '多重圆环',
coord: Coordinate.Polar,
dataStructure: _data.DataStructure.Common,
emptyData: _emptyData.EmptyDataProcess.Polar,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Polar,
threshold: 100,
message: '该多重圆环图半径过小,会影响展示效果,建议加大图表半径'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 10,
message: '该多重圆环数据过多,会影响可读性,建议减少数据量或改用其他图表'
}]
}
};
/** 热力图 */
var heatmap = {
id: 'heatmap',
name: '热力图',
coord: Coordinate.Cartesian,
dataStructure: _data.DataStructure.Common,
emptyData: _emptyData.EmptyDataProcess.Background
};
/** 箱型线图 */
var lineBoxChart = {
id: 'line_box_chart',
name: '箱型线图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Origin,
emptyData: _emptyData.EmptyDataProcess.Axis,
bigData: {
judgements: [{
type: _bigData.BigDataJudgement.Length,
threshold: 50,
message: '该箱型线图数据过于密集,会影响展示效果,建议减少数据量或加大图表宽度'
}, {
type: _bigData.BigDataJudgement.Number,
threshold: 20,
message: '该箱型线图数据量过多,不利于数据间的比较,建议减少数据量或改用其他图表'
}]
}
};
/** 分箱图 */
var rectangleChart = {
id: 'rectangle_chart',
name: '矩形分箱图',
coord: Coordinate.Cartesian,
mainAxis: 'x',
dataStructure: _data.DataStructure.Common,
emptyData: _emptyData.EmptyDataProcess.Background
};
/** 桑基图 */
var sankeyChart = {
id: 'sankey_chart',
name: '桑基图',
coord: Coordinate.Cartesian,
dataStructure: _data.DataStructure.Graph,
emptyData: _emptyData.EmptyDataProcess.Background
};
var _default = exports["default"] = {
G2Bar: barChart,
G2Line: lineChart,
G2Pie: pieChart,
G2Histogram: histogram,
G2LineBar: lineBarChart,
G2LineScatter: lineScatterChart,
G2Scatter: scatterChart,
G2Nightingale: nightingaleRoseChart,
G2Radar: radarChart,
G2Funnel: funnelChart,
G2MultiPie: multiPieChart,
G2Treemap: treemap,
G2Hierarchy: hierarchyChart,
G2Box: boxChart,
G2Wcandlestick: candlestickChart,
G2MultiCircle: multiCircle,
G2Heatmap: heatmap,
G2Linebox: lineBoxChart,
G2Rectangle: rectangleChart,
G2Sankey: sankeyChart
};