|
|
@@ -1,13 +1,6 @@
|
|
|
-/*
|
|
|
- * @Author: your name
|
|
|
- * @Date: 2024-11-26 16:33:38
|
|
|
- * @LastEditTime: 2024-12-27 15:12:41
|
|
|
- * @LastEditors: bogon
|
|
|
- * @Description: In User Settings Edit
|
|
|
- * @FilePath: /performance-test/src/views/performance/components/custonAsCom/dragChart/components/chartConfig/form/chartLogic/modules/roseChart.js
|
|
|
- */
|
|
|
//玫瑰图
|
|
|
import { filterData } from "../dargChartFIlter";
|
|
|
+
|
|
|
export function handleRoseChartChartLogic(
|
|
|
item,
|
|
|
formLabelAlign,
|
|
|
@@ -15,46 +8,28 @@ export function handleRoseChartChartLogic(
|
|
|
isFilter,
|
|
|
type
|
|
|
) {
|
|
|
- // 封装柱状图的具体逻辑
|
|
|
+ // 数据筛选逻辑
|
|
|
if (isFilter === "filter") {
|
|
|
- // 数据筛选逻辑,
|
|
|
const filterResult = formLabelAlign.Ydata.map((yItem, index) => ({
|
|
|
label: yItem.label,
|
|
|
id: yItem.id,
|
|
|
data: yItem.data.map((val) => {
|
|
|
const filters = formFilterAlign[index]?.filters || [];
|
|
|
-
|
|
|
- return val === null ||
|
|
|
- (filters.length > 0 && !filters.includes(val[yItem.label]))
|
|
|
+ return val === null || (filters.length > 0 && !filters.includes(val[yItem.label]))
|
|
|
? null
|
|
|
: val;
|
|
|
}),
|
|
|
}));
|
|
|
- // 条件筛选逻辑
|
|
|
+
|
|
|
const filterList = filterResult.map((filteredItem, index) => {
|
|
|
const filter = formFilterAlign[index];
|
|
|
- const { filterType1, filterType2, number1, number2 } = filter;
|
|
|
+ const { number1, number2 } = filter;
|
|
|
|
|
|
- if (
|
|
|
- (number1 === null || number1 === "") &&
|
|
|
- (number2 === null || number2 === "")
|
|
|
- ) {
|
|
|
- return {
|
|
|
- label: filteredItem.label,
|
|
|
- id: filteredItem.id,
|
|
|
- data: filteredItem.data,
|
|
|
- };
|
|
|
+ if ((number1 === null || number1 === "") && (number2 === null || number2 === "")) {
|
|
|
+ return filteredItem;
|
|
|
} else {
|
|
|
- const filterDatas = filterData(
|
|
|
- filter,
|
|
|
- filteredItem.data,
|
|
|
- filteredItem.label
|
|
|
- );
|
|
|
- return {
|
|
|
- label: filteredItem.label,
|
|
|
- id: filteredItem.id,
|
|
|
- data: [...filterDatas],
|
|
|
- };
|
|
|
+ const filterDatas = filterData(filter, filteredItem.data, filteredItem.label);
|
|
|
+ return { ...filteredItem, data: [...filterDatas] };
|
|
|
}
|
|
|
});
|
|
|
item.Xdata = formLabelAlign.Xdata;
|
|
|
@@ -63,34 +38,33 @@ export function handleRoseChartChartLogic(
|
|
|
item.Xdata = formLabelAlign.Xdata;
|
|
|
item.Ydata = formLabelAlign.Ydata;
|
|
|
}
|
|
|
- const xres = item.Xdata?.map((xitem) => {
|
|
|
- return {
|
|
|
- boundaryGap: false,
|
|
|
- type: "category",
|
|
|
- data:
|
|
|
- xitem.data &&
|
|
|
- xitem.data.map((val) => xitem.label + val[xitem.label] || null),
|
|
|
- };
|
|
|
- }).filter((items) => items !== null || items !== undefined);
|
|
|
- const yres = item.Ydata?.map((yitem) => {
|
|
|
- return {
|
|
|
- name: yitem.label,
|
|
|
- type: "bar",
|
|
|
- coordinateSystem: "polar",
|
|
|
- progressiveThreshold: 3000, // 当数据量超过3000时启用渐进式渲染
|
|
|
- progressive: true, // 启用渐进式渲染
|
|
|
- renderMode: "webgl", // 启用 WebGL 渲染
|
|
|
- data:
|
|
|
- yitem.data &&
|
|
|
- yitem.data.map((val) => {
|
|
|
- return (val && val[yitem.label]) || null;
|
|
|
- }),
|
|
|
- };
|
|
|
- }).filter((items) => items !== null || items !== undefined);
|
|
|
+
|
|
|
+ const xres = item.Xdata?.map((xitem) => ({
|
|
|
+ boundaryGap: false,
|
|
|
+ type: "category",
|
|
|
+ data: xitem.data && xitem.data.map((val) => xitem.label + val[xitem.label] || null),
|
|
|
+ })).filter((items) => items);
|
|
|
+
|
|
|
+ const baseColors = ["#E3F4BF", "#BEF7C8", "#86E6C8", "#36CFC9", "#209BDD", "#1581E6", "#0860BF"];
|
|
|
+
|
|
|
+ const yres = item.Ydata?.map((yitem, yIndex) => ({
|
|
|
+ name: yitem.label,
|
|
|
+ type: "bar",
|
|
|
+ coordinateSystem: "polar",
|
|
|
+ progressiveThreshold: 3000,
|
|
|
+ progressive: true,
|
|
|
+ renderMode: "webgl",
|
|
|
+ data: yitem.data && yitem.data.map((val, idx) => ({
|
|
|
+ value: (val && val[yitem.label]) || 0,
|
|
|
+ itemStyle: { color: baseColors[idx % baseColors.length] },
|
|
|
+ })),
|
|
|
+ })).filter((items) => items);
|
|
|
+
|
|
|
if (item.Ydata[0]?.data?.length > 0) {
|
|
|
item.option.series = yres;
|
|
|
item.option.angleAxis = xres;
|
|
|
}
|
|
|
+
|
|
|
if (item.Xdata[0]?.data?.length > 0) {
|
|
|
item.option.tooltip = {
|
|
|
trigger: "axis",
|