|
@@ -0,0 +1,97 @@
|
|
|
+/*
|
|
|
+ * @Author: your name
|
|
|
+ * @Date: 2024-11-26 16:33:38
|
|
|
+ * @LastEditTime: 2024-11-26 17:21:35
|
|
|
+ * @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,
|
|
|
+ formFilterAlign,
|
|
|
+ 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]))
|
|
|
+ ? null
|
|
|
+ : val;
|
|
|
+ }),
|
|
|
+ }));
|
|
|
+ // 条件筛选逻辑
|
|
|
+ const filterList = filterResult.map((filteredItem, index) => {
|
|
|
+ const filter = formFilterAlign[index];
|
|
|
+ const { filterType1, filterType2, number1, number2 } = filter;
|
|
|
+
|
|
|
+ if (
|
|
|
+ (number1 === null || number1 === "") &&
|
|
|
+ (number2 === null || number2 === "")
|
|
|
+ ) {
|
|
|
+ return {
|
|
|
+ label: filteredItem.label,
|
|
|
+ id: filteredItem.id,
|
|
|
+ data: filteredItem.data,
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ const filterDatas = filterData(
|
|
|
+ filter,
|
|
|
+ filteredItem.data,
|
|
|
+ filteredItem.label
|
|
|
+ );
|
|
|
+ return {
|
|
|
+ label: filteredItem.label,
|
|
|
+ id: filteredItem.id,
|
|
|
+ data: [...filterDatas],
|
|
|
+ };
|
|
|
+ }
|
|
|
+ });
|
|
|
+ item.Xdata = formLabelAlign.Xdata;
|
|
|
+ item.Ydata = filterList;
|
|
|
+ } else {
|
|
|
+ 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",
|
|
|
+ data:
|
|
|
+ yitem.data &&
|
|
|
+ yitem.data.map((val) => {
|
|
|
+ return (val && val[yitem.label]) || null;
|
|
|
+ }),
|
|
|
+ };
|
|
|
+ }).filter((items) => items !== null || items !== undefined);
|
|
|
+ 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",
|
|
|
+ axisPointer: { type: "shadow" },
|
|
|
+ };
|
|
|
+ }
|
|
|
+}
|