@platox/pivot-table 0.0.59 → 0.0.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/config.js +5 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/config.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/calendar-module/index.js +0 -6
- package/es/dashboard-workbench/components/module-content/calendar-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/index.js +0 -1
- package/es/dashboard-workbench/components/module-content/chart-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/utils.js +52 -10
- package/es/dashboard-workbench/components/module-content/utils.js.map +1 -1
- package/es/dashboard-workbench/lang/en-US.d.ts +2 -0
- package/es/dashboard-workbench/lang/en-US.js +3 -1
- package/es/dashboard-workbench/lang/en-US.js.map +1 -1
- package/es/dashboard-workbench/lang/zh-CN.d.ts +2 -0
- package/es/dashboard-workbench/lang/zh-CN.js +3 -1
- package/es/dashboard-workbench/lang/zh-CN.js.map +1 -1
- package/package.json +1 -1
- package/umd/pivot-table.umd.cjs +26 -26
package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/config.js
CHANGED
|
@@ -87,8 +87,12 @@ const useConditionSymbolOptions = () => {
|
|
|
87
87
|
// "上月"
|
|
88
88
|
{ label: t("add.add33"), value: "last7days" },
|
|
89
89
|
// "过去7天"
|
|
90
|
-
{ label: t("add.add34"), value: "last30days" }
|
|
90
|
+
{ label: t("add.add34"), value: "last30days" },
|
|
91
91
|
// "过去30天"
|
|
92
|
+
{ label: t("add.add36"), value: "thisyear" },
|
|
93
|
+
// "今年"
|
|
94
|
+
{ label: t("add.add35"), value: "lastyear" }
|
|
95
|
+
// "去年"
|
|
92
96
|
],
|
|
93
97
|
[i18n.language]
|
|
94
98
|
);
|
package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../../../../../packages/dashboard-workbench/components/add-module-modal/components/condition-modal/config.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport const useConditionSymbolOptions = () => {\n const { t, i18n } = useTranslation()\n\n const timeOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n // { label: t('add.add14'), value: '<' }, // \"早于\"\n // { label: t('add.add15'), value: '>' }, // \"晚于\"\n // { label: t('add.add16'), value: 'contain' }, // \"范围内\"\n { label: t('add.timeBefore'), value: '<' }, // \"早于(不含当天)\"\n { label: t('add.timeAfter'), value: '>' }, // \"晚于(不含当天)\"\n { label: t('add.timeRange'), value: 'contain' }, // \"日期区间(含当天)\"\n { label: t('add.add17'), value: 'null' }, // \"为空\"\n { label: t('add.add18'), value: 'notnull' }, // \"不为空\"\n ],\n [i18n.language]\n )\n\n const boolOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n ],\n [i18n.language]\n )\n\n const intOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n { label: t('add.add19'), value: '!=' }, // \"不等于\"\n { label: t('add.add20'), value: '>' }, // \"大于\"\n { label: t('add.add21'), value: '>=' }, // \"大于等于\"\n { label: t('add.add22'), value: '<' }, // \"小于\"\n { label: t('add.add23'), value: '=<' }, // \"小于等于\"\n { label: t('add.add16'), value: 'contain' }, // \"范围内\"\n { label: t('add.add17'), value: 'null' }, // \"为空\"\n { label: t('add.add18'), value: 'notnull' }, // \"不为空\"\n ],\n [i18n.language]\n )\n\n const stringOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n { label: t('add.add19'), value: '!=' }, // \"不等于\"\n { label: t('add.add24'), value: 'include' }, // \"包含\"\n { label: t('add.add25'), value: 'notinclude' }, // \"不包含\"\n { label: t('add.add17'), value: 'null' }, // \"为空\"\n { label: t('add.add18'), value: 'notnull' }, // \"不为空\"\n ],\n [i18n.language]\n )\n\n const rdateOptions = useMemo(\n () => [\n { label: t('add.add26'), value: 'exactdate' }, // \"具体日期\"\n { label: t('add.add27'), value: 'today' }, // \"今天\"\n { label: t('add.add28'), value: 'yesterday' }, // \"昨天\"\n { label: t('add.add29'), value: 'thisweek' }, // \"本周\"\n { label: t('add.add30'), value: 'lastweek' }, // \"上周\"\n { label: t('add.add31'), value: 'thismonth' }, // \"本月\"\n { label: t('add.add32'), value: 'lastmonth' }, // \"上月\"\n { label: t('add.add33'), value: 'last7days' }, // \"过去7天\"\n { label: t('add.add34'), value: 'last30days' }, // \"过去30天\"\n ],\n [i18n.language]\n )\n\n const rdateOptions2 = useMemo(\n () => [\n { label: t('add.add26'), value: 'exactdate' }, // \"具体日期\"\n { label: t('add.add27'), value: 'today' }, // \"今天\"\n { label: t('add.add28'), value: 'yesterday' }, // \"昨天\"\n ],\n [i18n.language]\n )\n\n return {\n timeOptions,\n boolOptions,\n intOptions,\n stringOptions,\n rdateOptions,\n rdateOptions2,\n }\n}\n\nexport const useConditionTypeOptions = () => {\n const { t, i18n } = useTranslation()\n\n const options = useMemo(() => {\n return [\n {\n label: t('all'),\n value: 'all',\n },\n {\n label: t('everyone'),\n value: 'any',\n },\n ]\n }, [i18n.language])\n\n return options\n}\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../../../../packages/dashboard-workbench/components/add-module-modal/components/condition-modal/config.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport const useConditionSymbolOptions = () => {\n const { t, i18n } = useTranslation()\n\n const timeOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n // { label: t('add.add14'), value: '<' }, // \"早于\"\n // { label: t('add.add15'), value: '>' }, // \"晚于\"\n // { label: t('add.add16'), value: 'contain' }, // \"范围内\"\n { label: t('add.timeBefore'), value: '<' }, // \"早于(不含当天)\"\n { label: t('add.timeAfter'), value: '>' }, // \"晚于(不含当天)\"\n { label: t('add.timeRange'), value: 'contain' }, // \"日期区间(含当天)\"\n { label: t('add.add17'), value: 'null' }, // \"为空\"\n { label: t('add.add18'), value: 'notnull' }, // \"不为空\"\n ],\n [i18n.language]\n )\n\n const boolOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n ],\n [i18n.language]\n )\n\n const intOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n { label: t('add.add19'), value: '!=' }, // \"不等于\"\n { label: t('add.add20'), value: '>' }, // \"大于\"\n { label: t('add.add21'), value: '>=' }, // \"大于等于\"\n { label: t('add.add22'), value: '<' }, // \"小于\"\n { label: t('add.add23'), value: '=<' }, // \"小于等于\"\n { label: t('add.add16'), value: 'contain' }, // \"范围内\"\n { label: t('add.add17'), value: 'null' }, // \"为空\"\n { label: t('add.add18'), value: 'notnull' }, // \"不为空\"\n ],\n [i18n.language]\n )\n\n const stringOptions = useMemo(\n () => [\n { label: t('add.add13'), value: '=' }, // \"等于\"\n { label: t('add.add19'), value: '!=' }, // \"不等于\"\n { label: t('add.add24'), value: 'include' }, // \"包含\"\n { label: t('add.add25'), value: 'notinclude' }, // \"不包含\"\n { label: t('add.add17'), value: 'null' }, // \"为空\"\n { label: t('add.add18'), value: 'notnull' }, // \"不为空\"\n ],\n [i18n.language]\n )\n\n const rdateOptions = useMemo(\n () => [\n { label: t('add.add26'), value: 'exactdate' }, // \"具体日期\"\n { label: t('add.add27'), value: 'today' }, // \"今天\"\n { label: t('add.add28'), value: 'yesterday' }, // \"昨天\"\n { label: t('add.add29'), value: 'thisweek' }, // \"本周\"\n { label: t('add.add30'), value: 'lastweek' }, // \"上周\"\n { label: t('add.add31'), value: 'thismonth' }, // \"本月\"\n { label: t('add.add32'), value: 'lastmonth' }, // \"上月\"\n { label: t('add.add33'), value: 'last7days' }, // \"过去7天\"\n { label: t('add.add34'), value: 'last30days' }, // \"过去30天\"\n { label: t('add.add36'), value: 'thisyear' }, // \"今年\"\n { label: t('add.add35'), value: 'lastyear' }, // \"去年\"\n ],\n [i18n.language]\n )\n\n const rdateOptions2 = useMemo(\n () => [\n { label: t('add.add26'), value: 'exactdate' }, // \"具体日期\"\n { label: t('add.add27'), value: 'today' }, // \"今天\"\n { label: t('add.add28'), value: 'yesterday' }, // \"昨天\"\n ],\n [i18n.language]\n )\n\n return {\n timeOptions,\n boolOptions,\n intOptions,\n stringOptions,\n rdateOptions,\n rdateOptions2,\n }\n}\n\nexport const useConditionTypeOptions = () => {\n const { t, i18n } = useTranslation()\n\n const options = useMemo(() => {\n return [\n {\n label: t('all'),\n value: 'all',\n },\n {\n label: t('everyone'),\n value: 'any',\n },\n ]\n }, [i18n.language])\n\n return options\n}\n"],"names":[],"mappings":";;AAGO,MAAM,4BAA4B,MAAM;AAC7C,QAAM,EAAE,GAAG,KAAK,IAAI,eAAe;AAEnC,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,MACJ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,MAIpC,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,IAAI;AAAA;AAAA,MACzC,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,IAAI;AAAA;AAAA,MACxC,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,UAAU;AAAA;AAAA,MAC9C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,OAAO;AAAA;AAAA,MACvC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,UAAU;AAAA;AAAA,IAC5C;AAAA,IACA,CAAC,KAAK,QAAQ;AAAA,EAChB;AAEA,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,MACJ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA;AAAA,IACtC;AAAA,IACA,CAAC,KAAK,QAAQ;AAAA,EAChB;AAEA,QAAM,aAAa;AAAA,IACjB,MAAM;AAAA,MACJ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA;AAAA,MACpC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK;AAAA;AAAA,MACrC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA;AAAA,MACpC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK;AAAA;AAAA,MACrC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA;AAAA,MACpC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK;AAAA;AAAA,MACrC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,UAAU;AAAA;AAAA,MAC1C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,OAAO;AAAA;AAAA,MACvC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,UAAU;AAAA;AAAA,IAC5C;AAAA,IACA,CAAC,KAAK,QAAQ;AAAA,EAChB;AAEA,QAAM,gBAAgB;AAAA,IACpB,MAAM;AAAA,MACJ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA;AAAA,MACpC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK;AAAA;AAAA,MACrC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,UAAU;AAAA;AAAA,MAC1C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,aAAa;AAAA;AAAA,MAC7C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,OAAO;AAAA;AAAA,MACvC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,UAAU;AAAA;AAAA,IAC5C;AAAA,IACA,CAAC,KAAK,QAAQ;AAAA,EAChB;AAEA,QAAM,eAAe;AAAA,IACnB,MAAM;AAAA,MACJ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,YAAY;AAAA;AAAA,MAC5C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,QAAQ;AAAA;AAAA,MACxC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,YAAY;AAAA;AAAA,MAC5C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,WAAW;AAAA;AAAA,MAC3C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,WAAW;AAAA;AAAA,MAC3C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,YAAY;AAAA;AAAA,MAC5C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,YAAY;AAAA;AAAA,MAC5C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,YAAY;AAAA;AAAA,MAC5C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,aAAa;AAAA;AAAA,MAC7C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,WAAW;AAAA;AAAA,MAC3C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,WAAW;AAAA;AAAA,IAC7C;AAAA,IACA,CAAC,KAAK,QAAQ;AAAA,EAChB;AAEA,QAAM,gBAAgB;AAAA,IACpB,MAAM;AAAA,MACJ,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,YAAY;AAAA;AAAA,MAC5C,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,QAAQ;AAAA;AAAA,MACxC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,YAAY;AAAA;AAAA,IAC9C;AAAA,IACA,CAAC,KAAK,QAAQ;AAAA,EAChB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,MAAM,0BAA0B,MAAM;AAC3C,QAAM,EAAE,GAAG,KAAK,IAAI,eAAe;AAE7B,QAAA,UAAU,QAAQ,MAAM;AACrB,WAAA;AAAA,MACL;AAAA,QACE,OAAO,EAAE,KAAK;AAAA,QACd,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,OAAO,EAAE,UAAU;AAAA,QACnB,OAAO;AAAA,MAAA;AAAA,IAEX;AAAA,EAAA,GACC,CAAC,KAAK,QAAQ,CAAC;AAEX,SAAA;AACT;"}
|
|
@@ -133,12 +133,6 @@ const CalendarModule = ({ moduleDataApi, customData }) => {
|
|
|
133
133
|
(_b = (_a = calendarRef.current) == null ? void 0 : _a.getApi()) == null ? void 0 : _b.updateSize();
|
|
134
134
|
}, 16);
|
|
135
135
|
}, [size]);
|
|
136
|
-
useEffect(() => {
|
|
137
|
-
console.log("mount");
|
|
138
|
-
return () => {
|
|
139
|
-
console.log("unmount");
|
|
140
|
-
};
|
|
141
|
-
});
|
|
142
136
|
return /* @__PURE__ */ jsx(
|
|
143
137
|
"div",
|
|
144
138
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../packages/dashboard-workbench/components/module-content/calendar-module/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { Descriptions, message, Modal, Spin } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { EventContentArg, EventSourceInput } from '@fullcalendar/core'\nimport dayGridPlugin from '@fullcalendar/daygrid'\nimport FullCalendar from '@fullcalendar/react'\nimport { useMemoizedFn, useSize } from 'ahooks'\nimport dayjs from 'dayjs'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport { useAppContext } from '../../../context'\nimport { FieldItem, ModuleDataApi } from '../../../types'\nimport { getTransformValue } from '../../../utils'\nimport { CalendarCustomeDataTypes } from '../../add-module-modal/add-calendar-modal/custome-data'\nimport { ConditionBlock } from '../../add-module-modal/components/condition-modal/interface'\nimport { mapConditionsToPostgrest } from '../utils'\nimport en from './locales/en'\nimport zh from './locales/zh'\n\n// import zh from\n\ndayjs.extend(isBetween)\n\ninterface CalendarModuleProps {\n customData?: CalendarCustomeDataTypes\n onChange?: (val: unknown) => void\n moduleDataApi?: ModuleDataApi\n width?: number\n height?: number\n rowWidth?: number\n rowHeight?: number\n}\n\nconst CalendarModule: React.FC<CalendarModuleProps> = ({ moduleDataApi, customData }) => {\n const { t, i18n } = useTranslation()\n const { globalData, globalFilterCondition } = useAppContext()\n\n /* ============================== split =============================== */\n const [startMonthIntervals, setStartMonthIntervals] = useState<[string, string]>(['', ''])\n const handleDatesSet = (dateInfo: any) => {\n const currentDate = dayjs(dateInfo.view.currentStart)\n const firstDay = currentDate.startOf('month').format('YYYY-MM-DD')\n const lastDay = currentDate.endOf('month').format('YYYY-MM-DD')\n setStartMonthIntervals([firstDay, lastDay])\n }\n /* ============================== split =============================== */\n let matchGlobalFilterCondition = useMemo(() => {\n let matchGlobalFilterCondition = globalFilterCondition?.find(\n item => item?.dataSourceId === customData?.dataSourceId\n )\n return matchGlobalFilterCondition\n }, [globalFilterCondition, customData?.dataSourceId])\n\n const [isloading, setIsloading] = useState(false)\n const [chartData, setChartData] = useState<any>()\n const fetchChartData = useMemoizedFn(async () => {\n setChartData([])\n if (customData) {\n setIsloading(true)\n let queryString = ''\n const firstDayOfMonth = dayjs().startOf('month').format('YYYY-MM-DD')\n const lastDayOfMonth = dayjs().endOf('month').format('YYYY-MM-DD')\n const conditionData = customData.conditionData\n const FMDay = startMonthIntervals.length > 0 ? startMonthIntervals[0] : firstDayOfMonth\n const LMDay = startMonthIntervals.length > 0 ? startMonthIntervals[1] : lastDayOfMonth\n\n let isConditionTimestampExist =\n (conditionData?.conditionList ?? []).some(item => item.type == 'timestamp') ||\n (matchGlobalFilterCondition?.conditionList ?? []).some(item => item.type == 'timestamp')\n\n if (!isConditionTimestampExist) {\n queryString = `&added_on=gt.${FMDay}&added_on=lt.${LMDay}`\n }\n\n // 筛选\n let conditionBlockList = []\n if ((matchGlobalFilterCondition?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(matchGlobalFilterCondition)\n }\n if ((customData?.conditionData?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(customData?.conditionData)\n }\n if (conditionBlockList.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionBlockList as ConditionBlock[])\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n\n //去掉第一个&符号\n if (queryString.startsWith('&')) {\n queryString = queryString.substring(1)\n }\n\n if (customData?.dataSourceId) {\n moduleDataApi?.({\n id: customData?.dataSourceId,\n query: queryString,\n })\n .then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n setChartData(res.data)\n })\n .finally(() => {\n setIsloading(false)\n })\n }\n }\n })\n useEffect(() => {\n if (customData) {\n fetchChartData()\n }\n }, [\n customData?.dataSourceId,\n customData?.conditionData,\n startMonthIntervals,\n matchGlobalFilterCondition,\n ])\n\n /* ============================== split =============================== */\n const fieldOptions = useMemo(() => {\n return globalData?.sourceData?.find(item => item.value === customData?.dataSourceId)?.fields\n }, [globalData, customData])\n\n const events = useMemo(() => {\n const calendarEvents = chartData?.map((item: any) => {\n const title = getTransformValue({\n fieldOptions,\n val: customData?.titleField ? item?.[customData.titleField] : '',\n field: customData?.titleField,\n fieldMap: globalData?.fieldMap,\n })\n return {\n title: title ?? t('unnamedRecord'),\n start:\n customData?.startDateField && item[customData?.startDateField]\n ? dayjs(item[customData?.startDateField])?.toISOString()\n : '',\n end:\n customData?.endDateField && item[customData?.endDateField]\n ? dayjs(item[customData?.endDateField])?.toISOString()\n : undefined,\n allDay: true,\n ...item,\n originalData: item,\n }\n })\n return calendarEvents\n }, [chartData, customData, fieldOptions])\n\n /* ============================== split =============================== */\n const [isModalOpen, setIsModalOpen] = useState(false)\n const [currData, setCurrData] = useState()\n const currTitle = getTransformValue({\n fieldOptions,\n val: customData?.titleField ? currData?.[customData.titleField] : '',\n field: customData?.titleField,\n fieldMap: globalData?.fieldMap,\n })\n\n const handleEventClick = useMemoizedFn((info: any) => {\n const event = info.event\n setIsModalOpen(true)\n\n setCurrData(event.extendedProps?.originalData)\n })\n\n /* ============================== split =============================== */\n const boxRef = useRef<any>()\n const calendarRef = useRef<any>(null)\n const size = useSize(boxRef)\n useEffect(() => {\n setTimeout(() => {\n calendarRef.current?.getApi()?.updateSize()\n }, 16) //不是一个div 会有延迟\n }, [size])\n\n /* ============================== split =============================== */\n\n useEffect(() => {\n console.log('mount')\n return () => {\n console.log('unmount')\n }\n })\n\n return (\n <div\n ref={boxRef}\n style={{\n height: '100%',\n width: '100%',\n boxSizing: 'border-box',\n padding: '12px',\n }}\n >\n <div\n className=\"full-calendar-app\"\n style={{\n height: '100%',\n width: '100%',\n overflowY: 'auto',\n position: 'relative',\n }}\n >\n {isloading ? (\n <Spin\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n background: 'rgba(255,255,255,0.6)',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1000,\n }}\n spinning={isloading}\n />\n ) : null}\n\n <FullCalendar\n locale={i18n.language === 'zh-CN' ? zh : en}\n // locale =\n ref={calendarRef} // 设置 FullCalendar 引用\n plugins={[dayGridPlugin]}\n headerToolbar={{\n left: 'title,today,prev,next',\n center: '',\n right: '',\n }}\n initialView=\"dayGridMonth\"\n height=\"auto\" // 自适应高度\n contentHeight=\"auto\" // 自动调整内容高度\n // dayMaxEvents={4} // 如果一天的事件太多则显示更多按钮\n editable={true}\n selectable={true}\n selectMirror={true}\n fixedWeekCount={false}\n datesSet={handleDatesSet}\n timeZone=\"UTC\"\n events={events} // 将筛选后的事件传递给 FullCalendar\n eventContent={(eventInfo: EventContentArg) => {\n return (\n <>\n <i>{eventInfo.event.title}</i>\n </>\n )\n }} // 自定义事件内容渲染\n eventClick={handleEventClick} // 事件点击时调用\n ></FullCalendar>\n <Modal\n title={currTitle ?? t('unnamedRecord')}\n open={isModalOpen}\n onOk={() => {\n setIsModalOpen(false)\n }}\n onCancel={() => {\n setIsModalOpen(false)\n }}\n destroyOnClose\n footer={(_, { OkBtn }) => (\n <>\n <OkBtn />\n </>\n )}\n >\n {(fieldOptions?.length ?? 0) > 0 ? (\n <Descriptions\n className=\"reset-descriptions\"\n layout=\"vertical\"\n column={2}\n items={fieldOptions?.map((field: any, fieldKey) => ({\n key: fieldKey,\n label: field.label,\n children: getTransformValue({\n fieldOptions,\n val: currData?.[field.value],\n field: field.value,\n fieldMap: globalData?.fieldMap,\n }),\n }))}\n />\n ) : null}\n </Modal>\n </div>\n </div>\n )\n}\n\nexport default React.memo(CalendarModule)\n"],"names":["matchGlobalFilterCondition","zh","en"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/dashboard-workbench/components/module-content/calendar-module/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { Descriptions, message, Modal, Spin } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { EventContentArg, EventSourceInput } from '@fullcalendar/core'\nimport dayGridPlugin from '@fullcalendar/daygrid'\nimport FullCalendar from '@fullcalendar/react'\nimport { useMemoizedFn, useSize } from 'ahooks'\nimport dayjs from 'dayjs'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport { useAppContext } from '../../../context'\nimport { FieldItem, ModuleDataApi } from '../../../types'\nimport { getTransformValue } from '../../../utils'\nimport { CalendarCustomeDataTypes } from '../../add-module-modal/add-calendar-modal/custome-data'\nimport { ConditionBlock } from '../../add-module-modal/components/condition-modal/interface'\nimport { mapConditionsToPostgrest } from '../utils'\nimport en from './locales/en'\nimport zh from './locales/zh'\n\n// import zh from\n\ndayjs.extend(isBetween)\n\ninterface CalendarModuleProps {\n customData?: CalendarCustomeDataTypes\n onChange?: (val: unknown) => void\n moduleDataApi?: ModuleDataApi\n width?: number\n height?: number\n rowWidth?: number\n rowHeight?: number\n}\n\nconst CalendarModule: React.FC<CalendarModuleProps> = ({ moduleDataApi, customData }) => {\n const { t, i18n } = useTranslation()\n const { globalData, globalFilterCondition } = useAppContext()\n\n /* ============================== split =============================== */\n const [startMonthIntervals, setStartMonthIntervals] = useState<[string, string]>(['', ''])\n const handleDatesSet = (dateInfo: any) => {\n const currentDate = dayjs(dateInfo.view.currentStart)\n const firstDay = currentDate.startOf('month').format('YYYY-MM-DD')\n const lastDay = currentDate.endOf('month').format('YYYY-MM-DD')\n setStartMonthIntervals([firstDay, lastDay])\n }\n /* ============================== split =============================== */\n let matchGlobalFilterCondition = useMemo(() => {\n let matchGlobalFilterCondition = globalFilterCondition?.find(\n item => item?.dataSourceId === customData?.dataSourceId\n )\n return matchGlobalFilterCondition\n }, [globalFilterCondition, customData?.dataSourceId])\n\n const [isloading, setIsloading] = useState(false)\n const [chartData, setChartData] = useState<any>()\n const fetchChartData = useMemoizedFn(async () => {\n setChartData([])\n if (customData) {\n setIsloading(true)\n let queryString = ''\n const firstDayOfMonth = dayjs().startOf('month').format('YYYY-MM-DD')\n const lastDayOfMonth = dayjs().endOf('month').format('YYYY-MM-DD')\n const conditionData = customData.conditionData\n const FMDay = startMonthIntervals.length > 0 ? startMonthIntervals[0] : firstDayOfMonth\n const LMDay = startMonthIntervals.length > 0 ? startMonthIntervals[1] : lastDayOfMonth\n\n let isConditionTimestampExist =\n (conditionData?.conditionList ?? []).some(item => item.type == 'timestamp') ||\n (matchGlobalFilterCondition?.conditionList ?? []).some(item => item.type == 'timestamp')\n\n if (!isConditionTimestampExist) {\n queryString = `&added_on=gt.${FMDay}&added_on=lt.${LMDay}`\n }\n\n // 筛选\n let conditionBlockList = []\n if ((matchGlobalFilterCondition?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(matchGlobalFilterCondition)\n }\n if ((customData?.conditionData?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(customData?.conditionData)\n }\n if (conditionBlockList.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionBlockList as ConditionBlock[])\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n\n //去掉第一个&符号\n if (queryString.startsWith('&')) {\n queryString = queryString.substring(1)\n }\n\n if (customData?.dataSourceId) {\n moduleDataApi?.({\n id: customData?.dataSourceId,\n query: queryString,\n })\n .then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n setChartData(res.data)\n })\n .finally(() => {\n setIsloading(false)\n })\n }\n }\n })\n useEffect(() => {\n if (customData) {\n fetchChartData()\n }\n }, [\n customData?.dataSourceId,\n customData?.conditionData,\n startMonthIntervals,\n matchGlobalFilterCondition,\n ])\n\n /* ============================== split =============================== */\n const fieldOptions = useMemo(() => {\n return globalData?.sourceData?.find(item => item.value === customData?.dataSourceId)?.fields\n }, [globalData, customData])\n\n const events = useMemo(() => {\n const calendarEvents = chartData?.map((item: any) => {\n const title = getTransformValue({\n fieldOptions,\n val: customData?.titleField ? item?.[customData.titleField] : '',\n field: customData?.titleField,\n fieldMap: globalData?.fieldMap,\n })\n return {\n title: title ?? t('unnamedRecord'),\n start:\n customData?.startDateField && item[customData?.startDateField]\n ? dayjs(item[customData?.startDateField])?.toISOString()\n : '',\n end:\n customData?.endDateField && item[customData?.endDateField]\n ? dayjs(item[customData?.endDateField])?.toISOString()\n : undefined,\n allDay: true,\n ...item,\n originalData: item,\n }\n })\n return calendarEvents\n }, [chartData, customData, fieldOptions])\n\n /* ============================== split =============================== */\n const [isModalOpen, setIsModalOpen] = useState(false)\n const [currData, setCurrData] = useState()\n const currTitle = getTransformValue({\n fieldOptions,\n val: customData?.titleField ? currData?.[customData.titleField] : '',\n field: customData?.titleField,\n fieldMap: globalData?.fieldMap,\n })\n\n const handleEventClick = useMemoizedFn((info: any) => {\n const event = info.event\n setIsModalOpen(true)\n\n setCurrData(event.extendedProps?.originalData)\n })\n\n /* ============================== split =============================== */\n const boxRef = useRef<any>()\n const calendarRef = useRef<any>(null)\n const size = useSize(boxRef)\n useEffect(() => {\n setTimeout(() => {\n calendarRef.current?.getApi()?.updateSize()\n }, 16) //不是一个div 会有延迟\n }, [size])\n\n /* ============================== split =============================== */\n\n return (\n <div\n ref={boxRef}\n style={{\n height: '100%',\n width: '100%',\n boxSizing: 'border-box',\n padding: '12px',\n }}\n >\n <div\n className=\"full-calendar-app\"\n style={{\n height: '100%',\n width: '100%',\n overflowY: 'auto',\n position: 'relative',\n }}\n >\n {isloading ? (\n <Spin\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n background: 'rgba(255,255,255,0.6)',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1000,\n }}\n spinning={isloading}\n />\n ) : null}\n\n <FullCalendar\n locale={i18n.language === 'zh-CN' ? zh : en}\n // locale =\n ref={calendarRef} // 设置 FullCalendar 引用\n plugins={[dayGridPlugin]}\n headerToolbar={{\n left: 'title,today,prev,next',\n center: '',\n right: '',\n }}\n initialView=\"dayGridMonth\"\n height=\"auto\" // 自适应高度\n contentHeight=\"auto\" // 自动调整内容高度\n // dayMaxEvents={4} // 如果一天的事件太多则显示更多按钮\n editable={true}\n selectable={true}\n selectMirror={true}\n fixedWeekCount={false}\n datesSet={handleDatesSet}\n timeZone=\"UTC\"\n events={events} // 将筛选后的事件传递给 FullCalendar\n eventContent={(eventInfo: EventContentArg) => {\n return (\n <>\n <i>{eventInfo.event.title}</i>\n </>\n )\n }} // 自定义事件内容渲染\n eventClick={handleEventClick} // 事件点击时调用\n ></FullCalendar>\n <Modal\n title={currTitle ?? t('unnamedRecord')}\n open={isModalOpen}\n onOk={() => {\n setIsModalOpen(false)\n }}\n onCancel={() => {\n setIsModalOpen(false)\n }}\n destroyOnClose\n footer={(_, { OkBtn }) => (\n <>\n <OkBtn />\n </>\n )}\n >\n {(fieldOptions?.length ?? 0) > 0 ? (\n <Descriptions\n className=\"reset-descriptions\"\n layout=\"vertical\"\n column={2}\n items={fieldOptions?.map((field: any, fieldKey) => ({\n key: fieldKey,\n label: field.label,\n children: getTransformValue({\n fieldOptions,\n val: currData?.[field.value],\n field: field.value,\n fieldMap: globalData?.fieldMap,\n }),\n }))}\n />\n ) : null}\n </Modal>\n </div>\n </div>\n )\n}\n\nexport default React.memo(CalendarModule)\n"],"names":["matchGlobalFilterCondition","zh","en"],"mappings":"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"}
|
|
@@ -293,7 +293,6 @@ const ChartModule = ({
|
|
|
293
293
|
const data = ["chart-bar-percentage", "chart-strip-bar-percentage"].includes(
|
|
294
294
|
customData.type
|
|
295
295
|
) ? labels.map((label2) => formatValue(valueGroupPercentages[stackCategory][label2] || 0)) : labels.map((label2) => formatValue(valueGroups[stackCategory][label2] || 0));
|
|
296
|
-
console.log("data 2", data);
|
|
297
296
|
let type = customData.type;
|
|
298
297
|
let yAxisPos = "left";
|
|
299
298
|
if (type == ChartType["chartCombination"]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../packages/dashboard-workbench/components/module-content/chart-module/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { message, Spin } from 'antd'\nimport { useDebounceEffect, useMemoizedFn, useSize } from 'ahooks'\nimport { EChartsOption, LabelFormatterCallback } from 'echarts'\nimport { t } from 'i18next'\nimport { groupBy, isNumber } from 'lodash-es'\nimport {\n ChartCustomDataType,\n ChartCustomeStylesTypes,\n TimeGroupInterval,\n} from '@platox/pivot-table/components/add-module-modal/add-chart-modal/interface'\nimport { useAppContext } from '../../../context'\nimport { FieldItem, ModuleDataApi } from '../../../types'\nimport { getTransformValue } from '../../../utils'\nimport { ChartType } from '../../add-module-modal/add-chart-modal/interface'\nimport { ConditionBlock } from '../../add-module-modal/components/condition-modal/interface'\nimport { mapConditionsToPostgrest } from '../utils'\nimport BaseChart from './base-chart'\nimport Empty from './Empty'\nimport { getChartConfig, getGrid, getSerie } from './utils'\n\ninterface ChartModuleProps {\n customData?: ChartCustomDataType\n customeStyle?: ChartCustomeStylesTypes\n onChange?: (val: unknown) => void\n moduleDataApi?: ModuleDataApi\n width?: number\n height?: number\n}\n\nconst ChartModule: React.FC<ChartModuleProps> = ({\n moduleDataApi,\n customData,\n customeStyle,\n width = 2,\n height = 2,\n}) => {\n const { globalData, globalFilterCondition } = useAppContext()\n\n /* ============================== split =============================== */\n let matchGlobalFilterCondition = useMemo(() => {\n let matchGlobalFilterCondition = globalFilterCondition?.find(\n item => item?.dataSourceId === customData?.dataSourceId\n )\n return matchGlobalFilterCondition\n }, [globalFilterCondition, customData?.dataSourceId])\n\n const [chartData, setChartData] = useState<any>()\n const [loading, setloading] = useState<any>()\n\n const fetchChartData = useMemoizedFn(async () => {\n setChartData([])\n if (customData) {\n // 调用方法\n setloading(true)\n let queryString = ''\n const newXAxisField = customData?.xAxis === 'tags' ? 'tag' : customData?.xAxis\n const newGroupField = customData?.groupField === 'tags' ? 'tag' : customData?.groupField\n\n if (!customData.isGroup) {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},id.count()`\n }\n\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n } else {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},${newGroupField},id.count()`\n }\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${newGroupField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n }\n\n // 筛选\n let conditionBlockList = []\n if ((matchGlobalFilterCondition?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(matchGlobalFilterCondition)\n }\n if ((customData?.conditionData?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(customData?.conditionData)\n }\n if (conditionBlockList.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionBlockList as ConditionBlock[])\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n\n if (customData?.dataSourceId) {\n moduleDataApi?.({\n id: customData?.dataSourceId,\n query: queryString,\n })\n .then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n\n setChartData(res.data)\n })\n .finally(() => {\n setloading(false)\n })\n }\n } else {\n setChartData([])\n }\n })\n\n useDebounceEffect(\n () => {\n if (customData) {\n fetchChartData()\n }\n },\n [\n customData?.dataSourceId,\n customData?.conditionData,\n customData?.sortField,\n customData?.sortOrder,\n customData?.xAxis,\n customData?.yAxis,\n customData?.yAxisField,\n customData?.yAxisFieldType,\n customData?.isGroup,\n customData?.groupField,\n matchGlobalFilterCondition,\n ],\n { wait: 60 }\n )\n\n /* ============================== split =============================== */\n const fieldOptions = useMemo(() => {\n let ret = globalData?.sourceData?.find(item => item.value === customData?.dataSourceId)?.fields\n return ret\n }, [globalData, customData?.dataSourceId])\n\n const chartOptions = useMemo(() => {\n if (customData && chartData && customData.type && chartData.length > 0) {\n const getChartOptions = (_chartData: any) => {\n const getFieldVal = ({\n item,\n field,\n timeGroupInterval,\n }: {\n item: any\n field: any\n timeGroupInterval?: TimeGroupInterval\n }) => {\n return getTransformValue({\n fieldOptions,\n val: item[field],\n field: field,\n fieldMap: globalData?.fieldMap,\n timeGroupInterval,\n })\n }\n const getFieldLabel = (field: string) => {\n const fieldData = fieldOptions?.find(item => item.value === field)\n return fieldData?.label\n }\n\n const isTimeField = (fieldName: string) => {\n return fieldOptions?.find(item => item.value === fieldName)?.type === 'timestamp'\n }\n\n const mapping = {\n tags: 'tag', //后端数据名不一致\n }\n const newXAxisField =\n mapping[customData?.xAxis as keyof typeof mapping] ?? customData?.xAxis\n const newGroupField =\n mapping[customData?.groupField as keyof typeof mapping] ?? customData?.groupField\n\n //规避bug: 前端操作合并了id不同 name相同的数据 这边吧所有数据都按照name 合并下 让看上去是对比\n let groupData = groupBy(_chartData, item => {\n const category = getFieldVal({\n item: item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n return category\n })\n let chartData = Object.keys(groupData).map(key => {\n let groupList = groupData[key]\n let mergeObj = groupList.reduce((acc, item) => {\n Object.keys(item).forEach(k => {\n let value = item[k]\n if (isNumber(value)) {\n acc[k] = acc?.[k] ? acc[k] + value : value\n } else {\n acc[k] = value\n }\n })\n return acc\n }, {})\n return mergeObj\n })\n\n const categories = new Set<string>() //x轴数据\n const stackCategories = new Set<string>() //分组类别\n const valueGroups: Record<string, Record<string, number>> = {} // 分组下的y轴数据\n const valueCounts: Record<string, number> = {} //没有分组下的y轴数据\n\n chartData.forEach((item: any) => {\n const category = getFieldVal({\n item: item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n\n const val =\n customData.yAxis === 'recordTotal' ? item?.count : item[customData?.yAxisFieldType] || 0\n\n const key = category ?? t('unknown')\n valueCounts[key] = val\n\n if (customData?.isGroup && customData?.groupField) {\n const stackCategory = getFieldVal({\n item: item,\n field: newGroupField,\n })\n\n const key = category ?? t('unknown')\n\n stackCategories.add(stackCategory)\n\n if (!valueGroups[stackCategory]) {\n valueGroups[stackCategory] = {}\n }\n valueGroups[stackCategory][key] = val\n }\n })\n\n // 计算百分比\n const valuePercentages: Record<string, number> = {} //没有分组下的y轴数据百分比\n const valueGroupPercentages: Record<string, Record<string, number>> = {} //分组下的y轴数据百分比\n if (customData?.isGroup && customData?.groupField) {\n const totalPerCategory: Record<string, number> = {}\n\n Object.keys(valueGroups).forEach(stackCategory => {\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n totalPerCategory[key] = (totalPerCategory[key] || 0) + val\n })\n })\n\n Object.keys(valueGroups).forEach(stackCategory => {\n valueGroupPercentages[stackCategory] = {}\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n const total = totalPerCategory[key] || 1 // 防止除以 0\n valueGroupPercentages[stackCategory][key] = (val / total) * 100\n })\n })\n } else {\n Object.entries(valueCounts).forEach(([key, val]) => {\n const total = val || 1 // 防止除以 0\n valuePercentages[key] = (val / total) * 100\n })\n }\n\n // 排序\n let sortField = customData?.sortField ?? 'xAxis'\n let sortOrder = customData?.sortOrder ?? 'asc'\n\n const sortedChartData = [...chartData].sort((a, b) => {\n let valA, valB\n\n switch (sortField) {\n case 'xAxis':\n valA = getFieldVal({\n item: a,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n valB = getFieldVal({\n item: b,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n break\n\n case 'yAxisField':\n valA =\n customData.yAxis === 'recordTotal' ? a?.count : a[customData?.yAxisFieldType] || 0\n valB =\n customData.yAxis === 'recordTotal' ? b?.count : b[customData?.yAxisFieldType] || 0\n break\n case 'recordValue':\n default:\n break\n }\n\n const orderMultiplier = sortOrder === 'asc' ? 1 : -1\n if (valA > valB) return 1 * orderMultiplier\n if (valA < valB) return -1 * orderMultiplier\n return 0\n })\n\n const sortedCategories = sortedChartData.map(item =>\n getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n )\n categories.clear()\n sortedCategories.forEach(cat => categories.add(cat))\n\n // display range 实现\n if (\n !isTimeField(customData?.xAxis) &&\n customData.displayRange !== 'ALL' &&\n !!customData.displayRange //兼容旧版本 没有displayRange\n ) {\n // 按照个数排序 1>0\n let sortedByCountCategories = Array.from(categories).sort((a, b) => {\n return valueCounts[b] - valueCounts[a]\n })\n\n // 提取符合条件的categories\n let ableCategories: string[] = []\n let [pos, count] = customData.displayRange.split('_')\n if (pos === 'TOP') {\n ableCategories = sortedByCountCategories.slice(0, Number(count))\n } else {\n ableCategories = sortedByCountCategories.slice(-Number(count))\n }\n\n // 从 categories 过滤掉不符合条件的数据 保留categories的排序\n Array.from(categories).forEach(item => {\n if (!ableCategories.includes(item)) {\n categories.delete(item)\n }\n return item\n })\n }\n\n // 标签\n const formatter: LabelFormatterCallback = data => {\n if (customData?.isGroup && customData?.groupField) {\n return data?.value == 0 ? '' : `${data?.value}`\n } else {\n return `${data?.value}`\n }\n }\n const label = {\n show: customData?.chartOptions?.includes('label'),\n position: 'top',\n formatter,\n }\n const labels = Array.from(categories) //x轴label\n const stackLabels = Array.from(stackCategories) //分组数据\n\n // series\n const series = []\n const chartConfig = getChartConfig({\n type: customData?.type as ChartType,\n categories: labels,\n }) as any\n\n const formatValue = v => {\n if (isNumber(v)) {\n return Math.floor(v * 100) / 100\n } else {\n return v\n }\n }\n\n if (customData?.isGroup && customData?.groupField) {\n stackLabels.forEach(stackCategory => {\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valueGroupPercentages[stackCategory][label] || 0))\n : labels.map(label => formatValue(valueGroups[stackCategory][label] || 0))\n console.log('data 2', data)\n // 组合图\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n let matchCombinationChartConfig = (customData?.groupFieldConfig ?? []).find(\n item =>\n getFieldVal({\n item: {\n [newGroupField]: item?.value,\n },\n field: newGroupField,\n }) == stackCategory\n )\n type = matchCombinationChartConfig?.config?.chartType ?? ChartType['ChartBar']\n yAxisPos = matchCombinationChartConfig?.config?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type: type,\n data,\n label,\n name: stackCategory,\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n })\n\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n })\n } else {\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valuePercentages[label]?.toFixed(2) || 0)) // 使用百分比数据\n : labels.map(label => formatValue(valueCounts[label] || 0))\n\n //组合图\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n type = customData?.yAxisFieldConfig?.chartType ?? ChartType['ChartBar']\n } else {\n yAxisPos = customData?.yAxisFieldConfig?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type: customData.type,\n data,\n label,\n name:\n customData.yAxis === 'recordTotal'\n ? t('pb.statisticsText')\n : getFieldLabel(customData?.yAxisField),\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n })\n\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n }\n\n // misc\n const grids = getGrid({ series, chartConfig, width, customeStyle })\n const isShowLegend = customData?.chartOptions?.includes('legend')\n\n let isLeftYAxisShow = series.some(item => item?.yAxisIndex == 0)\n let isRightYAxisShow = series.some(item => item?.yAxisIndex == 1)\n let yAxisConfig = {\n ...chartConfig.yAxis,\n axisTick: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLine: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n formatter: (value: string) => {\n return value.length > 15 ? `${value.slice(0, 15)}...` : value // 截断并添加 \"...\"\n },\n hideOverlap: true,\n ...chartConfig.yAxis?.axisLabel,\n },\n splitLine: {\n show: customData?.chartOptions?.includes('splitLine'), // 不显示x轴网格线\n },\n }\n\n const options: EChartsOption = {\n legend: {\n type: 'scroll',\n left: 'center',\n right: 'center',\n top: '0',\n show: isShowLegend,\n itemWidth: 12,\n itemHeight: 12,\n data: series?.map((item: any) => item?.name || '') || [],\n },\n grid: {\n top: grids.top,\n left: grids.left,\n right: grids.right,\n bottom: grids.bottom,\n },\n graphic: {\n elements: [\n {\n type: 'text',\n left: 'center',\n bottom: '10px',\n style: {\n text: customeStyle?.xtitle || '',\n fill: '#333', // 文本颜色\n fontSize: 12,\n fontWeight: 'bold',\n },\n },\n {\n type: 'text',\n left: '10px',\n top: 'center',\n style: {\n text: customeStyle?.ytitle || '',\n fill: '#333', // 文本颜色\n fontSize: 12,\n fontWeight: 'bold',\n },\n rotation: Math.PI / 2,\n },\n ],\n },\n xAxis: {\n ...chartConfig.xAxis,\n axisTick: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLine: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n rotate: grids.axisLabelRotate, // 使标签倾斜,调整为合适的角度\n interval: 'auto', // 自动隐藏\n formatter: (value: string) => {\n return value.length > 15 ? `${value.slice(0, 15)}...` : value // 截断并添加 \"...\"\n },\n ...(chartConfig.xAxis?.axisLabel ?? {}),\n },\n splitLine: {\n show: customData?.chartOptions?.includes('splitLine'), // 不显示x轴网格线\n },\n },\n yAxis: [\n {\n show: isLeftYAxisShow,\n ...yAxisConfig,\n },\n {\n show: isRightYAxisShow,\n ...yAxisConfig,\n },\n ],\n series: series,\n tooltip: {\n trigger: 'item', // 触发方式:鼠标悬浮在坐标轴上\n axisPointer: {\n type: 'shadow', // 阴影指示器,鼠标悬停时显示柱状图的阴影\n },\n appendTo: 'body',\n },\n }\n\n return options\n }\n\n return getChartOptions(chartData)\n } else {\n return null\n }\n }, [\n customData?.sortField,\n customData?.sortOrder,\n customData?.type,\n customData?.chartOptions,\n customData?.timeGroupInterval,\n customData?.groupFieldConfig,\n customData?.yAxisFieldConfig,\n customData?.displayRange,\n // customData,\n customeStyle,\n chartData,\n width,\n height,\n fieldOptions,\n ])\n\n /* ============================== split =============================== */\n const echartRef = useRef<any>()\n const containerRef = useRef<HTMLDivElement>(null)\n const size = useSize(containerRef)\n\n useEffect(() => {\n if (!!size) {\n echartRef?.current?.resize()\n }\n }, [size])\n\n const isLoading = loading\n const isEmpyt = !loading && !chartOptions\n const isOk = !isLoading && !!chartOptions\n return (\n <div style={{ width: '100%', height: '100%' }} ref={containerRef}>\n {isLoading && (\n <Spin\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n spinning={loading}\n />\n )}\n {isEmpyt && <Empty />}\n {isOk && <BaseChart echartRef={echartRef} options={chartOptions ?? {}} />}\n </div>\n )\n}\n\nexport default React.memo(ChartModule)\n"],"names":["matchGlobalFilterCondition","_a","chartData","key","label","_b","BaseChart"],"mappings":";;;;;;;;;;;;;AA+BA,MAAM,cAA0C,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,SAAS;AACX,MAAM;AACJ,QAAM,EAAE,YAAY,sBAAsB,IAAI,cAAc;AAGxD,MAAA,6BAA6B,QAAQ,MAAM;AAC7C,QAAIA,8BAA6B,+DAAuB;AAAA,MACtD,CAAA,UAAQ,6BAAM,mBAAiB,yCAAY;AAAA;AAEtCA,WAAAA;AAAAA,EACN,GAAA,CAAC,uBAAuB,yCAAY,YAAY,CAAC;AAEpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAc;AAChD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAc;AAEtC,QAAA,iBAAiB,cAAc,YAAY;;AAC/C,iBAAa,CAAA,CAAE;AACf,QAAI,YAAY;AAEd,iBAAW,IAAI;AACf,UAAI,cAAc;AAClB,YAAM,iBAAgB,yCAAY,WAAU,SAAS,QAAQ,yCAAY;AACzE,YAAM,iBAAgB,yCAAY,gBAAe,SAAS,QAAQ,yCAAY;AAE1E,UAAA,CAAC,WAAW,SAAS;AACnB,YAAA,WAAW,UAAU,eAAe;AACtC,yBAAe,UAAU,aAAa;AAAA,QAAA;AAGxC,YAAI,WAAW,UAAU,iBAAgB,yCAAY,aAAY;AAC/D,yBAAe,UAAU,aAAa,IAAI,yCAAY,UAAU,IAAI,yCAAY,cAAc;AAAA,QAAA;AAAA,MAChG,OACK;AACD,YAAA,WAAW,UAAU,eAAe;AACvB,yBAAA,UAAU,aAAa,IAAI,aAAa;AAAA,QAAA;AAEzD,YAAI,WAAW,UAAU,iBAAgB,yCAAY,aAAY;AAChD,yBAAA,UAAU,aAAa,IAAI,aAAa,IAAI,yCAAY,UAAU,IAAI,yCAAY,cAAc;AAAA,QAAA;AAAA,MACjH;AAIF,UAAI,qBAAqB,CAAC;AAC1B,aAAK,8EAA4B,kBAA5B,mBAA2C,WAAU,KAAK,GAAG;AAChE,2BAAmB,KAAK,0BAA0B;AAAA,MAAA;AAEpD,aAAK,oDAAY,kBAAZ,mBAA2B,kBAA3B,mBAA0C,WAAU,KAAK,GAAG;AAC5C,2BAAA,KAAK,yCAAY,aAAa;AAAA,MAAA;AAE/C,UAAA,mBAAmB,SAAS,GAAG;AAC7B,YAAA,SAAS,yBAAyB,kBAAsC;AAC5E,uBAAe,CAAC,CAAC,SAAS,IAAI,MAAM,KAAK;AAAA,MAAA;AAG3C,UAAI,yCAAY,cAAc;AACZ,uDAAA;AAAA,UACd,IAAI,yCAAY;AAAA,UAChB,OAAO;AAAA,QAAA,GAEN,KAAK,CAAC,QAAa;AACd,cAAA,CAAC,IAAI,SAAS;AACR,oBAAA,MAAM,IAAI,OAAO;AACzB;AAAA,UAAA;AAGF,uBAAa,IAAI,IAAI;AAAA,QAAA,GAEtB,QAAQ,MAAM;AACb,qBAAW,KAAK;AAAA,QAAA;AAAA,MACjB;AAAA,IACL,OACK;AACL,mBAAa,CAAA,CAAE;AAAA,IAAA;AAAA,EACjB,CACD;AAED;AAAA,IACE,MAAM;AACJ,UAAI,YAAY;AACC,uBAAA;AAAA,MAAA;AAAA,IAEnB;AAAA,IACA;AAAA,MACE,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ;AAAA,IACF;AAAA,IACA,EAAE,MAAM,GAAG;AAAA,EACb;AAGM,QAAA,eAAe,QAAQ,MAAM;;AAC7B,QAAA,OAAM,oDAAY,eAAZ,mBAAwB,KAAK,UAAQ,KAAK,WAAU,yCAAY,mBAAhE,mBAA+E;AAClF,WAAA;AAAA,EACN,GAAA,CAAC,YAAY,yCAAY,YAAY,CAAC;AAEnC,QAAA,eAAe,QAAQ,MAAM;AACjC,QAAI,cAAc,aAAa,WAAW,QAAQ,UAAU,SAAS,GAAG;AAChE,YAAA,kBAAkB,CAAC,eAAoB;;AAC3C,cAAM,cAAc,CAAC;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,QAAA,MAKI;AACJ,iBAAO,kBAAkB;AAAA,YACvB;AAAA,YACA,KAAK,KAAK,KAAK;AAAA,YACf;AAAA,YACA,UAAU,yCAAY;AAAA,YACtB;AAAA,UAAA,CACD;AAAA,QACH;AACM,cAAA,gBAAgB,CAAC,UAAkB;AACvC,gBAAM,YAAY,6CAAc,KAAK,CAAQ,SAAA,KAAK,UAAU;AAC5D,iBAAO,uCAAW;AAAA,QACpB;AAEM,cAAA,cAAc,CAAC,cAAsB;;AACzC,mBAAOC,MAAA,6CAAc,KAAK,CAAA,SAAQ,KAAK,UAAU,eAA1C,gBAAAA,IAAsD,UAAS;AAAA,QACxE;AAEA,cAAM,UAAU;AAAA,UACd,MAAM;AAAA;AAAA,QACR;AACA,cAAM,gBACJ,QAAQ,yCAAY,KAA6B,MAAK,yCAAY;AACpE,cAAM,gBACJ,QAAQ,yCAAY,UAAkC,MAAK,yCAAY;AAGrE,YAAA,YAAY,QAAQ,YAAY,CAAQ,SAAA;AAC1C,gBAAM,WAAW,YAAY;AAAA,YAC3B;AAAA,YACA,OAAO;AAAA,YACP,mBAAmB,yCAAY;AAAA,UAAA,CAChC;AACM,iBAAA;AAAA,QAAA,CACR;AACD,YAAIC,aAAY,OAAO,KAAK,SAAS,EAAE,IAAI,CAAO,QAAA;AAC5C,cAAA,YAAY,UAAU,GAAG;AAC7B,cAAI,WAAW,UAAU,OAAO,CAAC,KAAK,SAAS;AAC7C,mBAAO,KAAK,IAAI,EAAE,QAAQ,CAAK,MAAA;AACzB,kBAAA,QAAQ,KAAK,CAAC;AACd,kBAAA,SAAS,KAAK,GAAG;AACf,oBAAA,CAAC,KAAI,2BAAM,MAAK,IAAI,CAAC,IAAI,QAAQ;AAAA,cAAA,OAChC;AACL,oBAAI,CAAC,IAAI;AAAA,cAAA;AAAA,YACX,CACD;AACM,mBAAA;AAAA,UACT,GAAG,EAAE;AACE,iBAAA;AAAA,QAAA,CACR;AAEK,cAAA,iCAAiB,IAAY;AAC7B,cAAA,sCAAsB,IAAY;AACxC,cAAM,cAAsD,CAAC;AAC7D,cAAM,cAAsC,CAAC;AAE7CA,mBAAU,QAAQ,CAAC,SAAc;AAC/B,gBAAM,WAAW,YAAY;AAAA,YAC3B;AAAA,YACA,OAAO;AAAA,YACP,mBAAmB,yCAAY;AAAA,UAAA,CAChC;AAEK,gBAAA,MACJ,WAAW,UAAU,gBAAgB,6BAAM,QAAQ,KAAK,yCAAY,cAAc,KAAK;AAEnF,gBAAA,MAAM,YAAY,EAAE,SAAS;AACnC,sBAAY,GAAG,IAAI;AAEf,eAAA,yCAAY,aAAW,yCAAY,aAAY;AACjD,kBAAM,gBAAgB,YAAY;AAAA,cAChC;AAAA,cACA,OAAO;AAAA,YAAA,CACR;AAEKC,kBAAAA,OAAM,YAAY,EAAE,SAAS;AAEnC,4BAAgB,IAAI,aAAa;AAE7B,gBAAA,CAAC,YAAY,aAAa,GAAG;AACnB,0BAAA,aAAa,IAAI,CAAC;AAAA,YAAA;AAEpB,wBAAA,aAAa,EAAEA,IAAG,IAAI;AAAA,UAAA;AAAA,QACpC,CACD;AAGD,cAAM,mBAA2C,CAAC;AAClD,cAAM,wBAAgE,CAAC;AACnE,aAAA,yCAAY,aAAW,yCAAY,aAAY;AACjD,gBAAM,mBAA2C,CAAC;AAElD,iBAAO,KAAK,WAAW,EAAE,QAAQ,CAAiB,kBAAA;AACzC,mBAAA,QAAQ,YAAY,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AACjE,+BAAiB,GAAG,KAAK,iBAAiB,GAAG,KAAK,KAAK;AAAA,YAAA,CACxD;AAAA,UAAA,CACF;AAED,iBAAO,KAAK,WAAW,EAAE,QAAQ,CAAiB,kBAAA;AAC1B,kCAAA,aAAa,IAAI,CAAC;AACjC,mBAAA,QAAQ,YAAY,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAC3D,oBAAA,QAAQ,iBAAiB,GAAG,KAAK;AACvC,oCAAsB,aAAa,EAAE,GAAG,IAAK,MAAM,QAAS;AAAA,YAAA,CAC7D;AAAA,UAAA,CACF;AAAA,QAAA,OACI;AACE,iBAAA,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAClD,kBAAM,QAAQ,OAAO;AACJ,6BAAA,GAAG,IAAK,MAAM,QAAS;AAAA,UAAA,CACzC;AAAA,QAAA;AAIC,YAAA,aAAY,yCAAY,cAAa;AACrC,YAAA,aAAY,yCAAY,cAAa;AAEnC,cAAA,kBAAkB,CAAC,GAAGD,UAAS,EAAE,KAAK,CAAC,GAAG,MAAM;AACpD,cAAI,MAAM;AAEV,kBAAQ,WAAW;AAAA,YACjB,KAAK;AACH,qBAAO,YAAY;AAAA,gBACjB,MAAM;AAAA,gBACN,OAAO;AAAA,gBACP,mBAAmB,yCAAY;AAAA,cAAA,CAChC;AACD,qBAAO,YAAY;AAAA,gBACjB,MAAM;AAAA,gBACN,OAAO;AAAA,gBACP,mBAAmB,yCAAY;AAAA,cAAA,CAChC;AACD;AAAA,YAEF,KAAK;AAED,qBAAA,WAAW,UAAU,gBAAgB,uBAAG,QAAQ,EAAE,yCAAY,cAAc,KAAK;AAEjF,qBAAA,WAAW,UAAU,gBAAgB,uBAAG,QAAQ,EAAE,yCAAY,cAAc,KAAK;AACnF;AAAA,UAGA;AAGE,gBAAA,kBAAkB,cAAc,QAAQ,IAAI;AAC9C,cAAA,OAAO,KAAM,QAAO,IAAI;AACxB,cAAA,OAAO,KAAM,QAAO,KAAK;AACtB,iBAAA;AAAA,QAAA,CACR;AAED,cAAM,mBAAmB,gBAAgB;AAAA,UAAI,UAC3C,YAAY;AAAA,YACV;AAAA,YACA,OAAO;AAAA,YACP,mBAAmB,yCAAY;AAAA,UAChC,CAAA;AAAA,QACH;AACA,mBAAW,MAAM;AACjB,yBAAiB,QAAQ,CAAA,QAAO,WAAW,IAAI,GAAG,CAAC;AAIjD,YAAA,CAAC,YAAY,yCAAY,KAAK,KAC9B,WAAW,iBAAiB,SAC5B,CAAC,CAAC,WAAW,cACb;AAEI,cAAA,0BAA0B,MAAM,KAAK,UAAU,EAAE,KAAK,CAAC,GAAG,MAAM;AAClE,mBAAO,YAAY,CAAC,IAAI,YAAY,CAAC;AAAA,UAAA,CACtC;AAGD,cAAI,iBAA2B,CAAC;AAChC,cAAI,CAAC,KAAK,KAAK,IAAI,WAAW,aAAa,MAAM,GAAG;AACpD,cAAI,QAAQ,OAAO;AACjB,6BAAiB,wBAAwB,MAAM,GAAG,OAAO,KAAK,CAAC;AAAA,UAAA,OAC1D;AACL,6BAAiB,wBAAwB,MAAM,CAAC,OAAO,KAAK,CAAC;AAAA,UAAA;AAI/D,gBAAM,KAAK,UAAU,EAAE,QAAQ,CAAQ,SAAA;AACrC,gBAAI,CAAC,eAAe,SAAS,IAAI,GAAG;AAClC,yBAAW,OAAO,IAAI;AAAA,YAAA;AAEjB,mBAAA;AAAA,UAAA,CACR;AAAA,QAAA;AAIH,cAAM,YAAoC,CAAQ,SAAA;AAC5C,eAAA,yCAAY,aAAW,yCAAY,aAAY;AACjD,oBAAO,6BAAM,UAAS,IAAI,KAAK,GAAG,6BAAM,KAAK;AAAA,UAAA,OACxC;AACE,mBAAA,GAAG,6BAAM,KAAK;AAAA,UAAA;AAAA,QAEzB;AACA,cAAM,QAAQ;AAAA,UACZ,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA,UACzC,UAAU;AAAA,UACV;AAAA,QACF;AACM,cAAA,SAAS,MAAM,KAAK,UAAU;AAC9B,cAAA,cAAc,MAAM,KAAK,eAAe;AAG9C,cAAM,SAAS,CAAC;AAChB,cAAM,cAAc,eAAe;AAAA,UACjC,MAAM,yCAAY;AAAA,UAClB,YAAY;AAAA,QAAA,CACb;AAED,cAAM,cAAc,CAAK,MAAA;AACnB,cAAA,SAAS,CAAC,GAAG;AACf,mBAAO,KAAK,MAAM,IAAI,GAAG,IAAI;AAAA,UAAA,OACxB;AACE,mBAAA;AAAA,UAAA;AAAA,QAEX;AAEI,aAAA,yCAAY,aAAW,yCAAY,aAAY;AACjD,sBAAY,QAAQ,CAAiB,kBAAA;;AACnC,kBAAM,OAAO,CAAC,wBAAwB,4BAA4B,EAAE;AAAA,cAClE,WAAW;AAAA,YAAA,IAET,OAAO,IAAI,CAAAE,WAAS,YAAY,sBAAsB,aAAa,EAAEA,MAAK,KAAK,CAAC,CAAC,IACjF,OAAO,IAAI,CAAAA,WAAS,YAAY,YAAY,aAAa,EAAEA,MAAK,KAAK,CAAC,CAAC;AACnE,oBAAA,IAAI,UAAU,IAAI;AAE1B,gBAAI,OAAO,WAAW;AACtB,gBAAI,WAAW;AACX,gBAAA,QAAQ,UAAU,kBAAkB,GAAG;AACzC,kBAAI,gCAA+B,yCAAY,qBAAoB,CAAI,GAAA;AAAA,gBACrE,UACE,YAAY;AAAA,kBACV,MAAM;AAAA,oBACJ,CAAC,aAAa,GAAG,6BAAM;AAAA,kBACzB;AAAA,kBACA,OAAO;AAAA,gBAAA,CACR,KAAK;AAAA,cACV;AACA,uBAAOH,MAAA,2EAA6B,WAA7B,gBAAAA,IAAqC,cAAa,UAAU,UAAU;AAClE,2BAAAI,MAAA,2EAA6B,WAA7B,gBAAAA,IAAqC,aAAY;AAAA,YAAA;AAG9D,gBAAI,aAAa,SAAS;AAAA,cACxB;AAAA,cACA;AAAA,cACA;AAAA,cACA,MAAM;AAAA,cACN,SAAS,yCAAY;AAAA,cACrB,YAAY,yCAAY;AAAA,cACxB;AAAA,YAAA,CACD;AAEU,uBAAA,aAAa,YAAY,SAAS,IAAI;AACjD,mBAAO,KAAK,UAAU;AAAA,UAAA,CACvB;AAAA,QAAA,OACI;AACL,gBAAM,OAAO,CAAC,wBAAwB,4BAA4B,EAAE;AAAA,YAClE,WAAW;AAAA,UAAA,IAET,OAAO,IAAI,CAAAD,WAAS;;AAAA,iCAAYH,MAAA,iBAAiBG,MAAK,MAAtB,gBAAAH,IAAyB,QAAQ,OAAM,CAAC;AAAA,WAAC,IACzE,OAAO,IAAI,CAAAG,WAAS,YAAY,YAAYA,MAAK,KAAK,CAAC,CAAC;AAG5D,cAAI,OAAO,WAAW;AACtB,cAAI,WAAW;AACX,cAAA,QAAQ,UAAU,kBAAkB,GAAG;AACzC,qBAAO,8CAAY,qBAAZ,mBAA8B,cAAa,UAAU,UAAU;AAAA,UAAA,OACjE;AACM,yBAAA,8CAAY,qBAAZ,mBAA8B,aAAY;AAAA,UAAA;AAGvD,cAAI,aAAa,SAAS;AAAA,YACxB,MAAM,WAAW;AAAA,YACjB;AAAA,YACA;AAAA,YACA,MACE,WAAW,UAAU,gBACjB,EAAE,mBAAmB,IACrB,cAAc,yCAAY,UAAU;AAAA,YAC1C,SAAS,yCAAY;AAAA,YACrB,YAAY,yCAAY;AAAA,YACxB;AAAA,UAAA,CACD;AAEU,qBAAA,aAAa,YAAY,SAAS,IAAI;AACjD,iBAAO,KAAK,UAAU;AAAA,QAAA;AAIxB,cAAM,QAAQ,QAAQ,EAAE,QAAQ,aAAa,OAAO,cAAc;AAClE,cAAM,gBAAe,8CAAY,iBAAZ,mBAA0B,SAAS;AAExD,YAAI,kBAAkB,OAAO,KAAK,CAAQ,UAAA,6BAAM,eAAc,CAAC;AAC/D,YAAI,mBAAmB,OAAO,KAAK,CAAQ,UAAA,6BAAM,eAAc,CAAC;AAChE,YAAI,cAAc;AAAA,UAChB,GAAG,YAAY;AAAA,UACf,UAAU;AAAA,YACR,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA,UAC3C;AAAA,UACA,UAAU;AAAA,YACR,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA,UAC3C;AAAA,UACA,WAAW;AAAA,YACT,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA,YACzC,WAAW,CAAC,UAAkB;AACrB,qBAAA,MAAM,SAAS,KAAK,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ;AAAA,YAC1D;AAAA,YACA,aAAa;AAAA,YACb,IAAG,iBAAY,UAAZ,mBAAmB;AAAA,UACxB;AAAA,UACA,WAAW;AAAA,YACT,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA;AAAA,UAAW;AAAA,QAExD;AAEA,cAAM,UAAyB;AAAA,UAC7B,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,OAAO;AAAA,YACP,KAAK;AAAA,YACL,MAAM;AAAA,YACN,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,OAAM,iCAAQ,IAAI,CAAC,UAAc,6BAAM,SAAQ,QAAO,CAAA;AAAA,UACxD;AAAA,UACA,MAAM;AAAA,YACJ,KAAK,MAAM;AAAA,YACX,MAAM,MAAM;AAAA,YACZ,OAAO,MAAM;AAAA,YACb,QAAQ,MAAM;AAAA,UAChB;AAAA,UACA,SAAS;AAAA,YACP,UAAU;AAAA,cACR;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,OAAO;AAAA,kBACL,OAAM,6CAAc,WAAU;AAAA,kBAC9B,MAAM;AAAA;AAAA,kBACN,UAAU;AAAA,kBACV,YAAY;AAAA,gBAAA;AAAA,cAEhB;AAAA,cACA;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,KAAK;AAAA,gBACL,OAAO;AAAA,kBACL,OAAM,6CAAc,WAAU;AAAA,kBAC9B,MAAM;AAAA;AAAA,kBACN,UAAU;AAAA,kBACV,YAAY;AAAA,gBACd;AAAA,gBACA,UAAU,KAAK,KAAK;AAAA,cAAA;AAAA,YACtB;AAAA,UAEJ;AAAA,UACA,OAAO;AAAA,YACL,GAAG,YAAY;AAAA,YACf,UAAU;AAAA,cACR,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA,YAC3C;AAAA,YACA,UAAU;AAAA,cACR,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA,YAC3C;AAAA,YACA,WAAW;AAAA,cACT,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA,cACzC,QAAQ,MAAM;AAAA;AAAA,cACd,UAAU;AAAA;AAAA,cACV,WAAW,CAAC,UAAkB;AACrB,uBAAA,MAAM,SAAS,KAAK,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ;AAAA,cAC1D;AAAA,cACA,KAAI,iBAAY,UAAZ,mBAAmB,cAAa,CAAA;AAAA,YACtC;AAAA,YACA,WAAW;AAAA,cACT,OAAM,8CAAY,iBAAZ,mBAA0B,SAAS;AAAA;AAAA,YAAW;AAAA,UAExD;AAAA,UACA,OAAO;AAAA,YACL;AAAA,cACE,MAAM;AAAA,cACN,GAAG;AAAA,YACL;AAAA,YACA;AAAA,cACE,MAAM;AAAA,cACN,GAAG;AAAA,YAAA;AAAA,UAEP;AAAA,UACA;AAAA,UACA,SAAS;AAAA,YACP,SAAS;AAAA;AAAA,YACT,aAAa;AAAA,cACX,MAAM;AAAA;AAAA,YACR;AAAA,YACA,UAAU;AAAA,UAAA;AAAA,QAEd;AAEO,eAAA;AAAA,MACT;AAEA,aAAO,gBAAgB,SAAS;AAAA,IAAA,OAC3B;AACE,aAAA;AAAA,IAAA;AAAA,EACT,GACC;AAAA,IACD,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA;AAAA,IAEZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAGD,QAAM,YAAY,OAAY;AACxB,QAAA,eAAe,OAAuB,IAAI;AAC1C,QAAA,OAAO,QAAQ,YAAY;AAEjC,YAAU,MAAM;;AACV,QAAA,CAAC,CAAC,MAAM;AACV,mDAAW,YAAX,mBAAoB;AAAA,IAAO;AAAA,EAC7B,GACC,CAAC,IAAI,CAAC;AAET,QAAM,YAAY;AACZ,QAAA,UAAU,CAAC,WAAW,CAAC;AAC7B,QAAM,OAAO,CAAC,aAAa,CAAC,CAAC;AAE3B,SAAA,qBAAC,OAAI,EAAA,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAU,GAAA,KAAK,cACjD,UAAA;AAAA,IACC,aAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,gBAAgB;AAAA,UAChB,YAAY;AAAA,QACd;AAAA,QACA,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAED,+BAAY,OAAM,EAAA;AAAA,IAClB,QAAS,oBAAAE,OAAA,EAAU,WAAsB,SAAS,gBAAgB,GAAI,CAAA;AAAA,EAAA,GACzE;AAEJ;AAEA,MAAA,gBAAe,MAAM,KAAK,WAAW;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/dashboard-workbench/components/module-content/chart-module/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { message, Spin } from 'antd'\nimport { useDebounceEffect, useMemoizedFn, useSize } from 'ahooks'\nimport { EChartsOption, LabelFormatterCallback } from 'echarts'\nimport { t } from 'i18next'\nimport { groupBy, isNumber } from 'lodash-es'\nimport {\n ChartCustomDataType,\n ChartCustomeStylesTypes,\n TimeGroupInterval,\n} from '@platox/pivot-table/components/add-module-modal/add-chart-modal/interface'\nimport { useAppContext } from '../../../context'\nimport { FieldItem, ModuleDataApi } from '../../../types'\nimport { getTransformValue } from '../../../utils'\nimport { ChartType } from '../../add-module-modal/add-chart-modal/interface'\nimport { ConditionBlock } from '../../add-module-modal/components/condition-modal/interface'\nimport { mapConditionsToPostgrest } from '../utils'\nimport BaseChart from './base-chart'\nimport Empty from './Empty'\nimport { getChartConfig, getGrid, getSerie } from './utils'\n\ninterface ChartModuleProps {\n customData?: ChartCustomDataType\n customeStyle?: ChartCustomeStylesTypes\n onChange?: (val: unknown) => void\n moduleDataApi?: ModuleDataApi\n width?: number\n height?: number\n}\n\nconst ChartModule: React.FC<ChartModuleProps> = ({\n moduleDataApi,\n customData,\n customeStyle,\n width = 2,\n height = 2,\n}) => {\n const { globalData, globalFilterCondition } = useAppContext()\n\n /* ============================== split =============================== */\n let matchGlobalFilterCondition = useMemo(() => {\n let matchGlobalFilterCondition = globalFilterCondition?.find(\n item => item?.dataSourceId === customData?.dataSourceId\n )\n return matchGlobalFilterCondition\n }, [globalFilterCondition, customData?.dataSourceId])\n\n const [chartData, setChartData] = useState<any>()\n const [loading, setloading] = useState<any>()\n\n const fetchChartData = useMemoizedFn(async () => {\n setChartData([])\n if (customData) {\n // 调用方法\n setloading(true)\n let queryString = ''\n const newXAxisField = customData?.xAxis === 'tags' ? 'tag' : customData?.xAxis\n const newGroupField = customData?.groupField === 'tags' ? 'tag' : customData?.groupField\n\n if (!customData.isGroup) {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},id.count()`\n }\n\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n } else {\n if (customData.yAxis === 'recordTotal') {\n queryString += `select=${newXAxisField},${newGroupField},id.count()`\n }\n if (customData.yAxis === 'fieldValue' && customData?.yAxisField) {\n queryString += `select=${newXAxisField},${newGroupField},${customData?.yAxisField}.${customData?.yAxisFieldType}()`\n }\n }\n\n // 筛选\n let conditionBlockList = []\n if ((matchGlobalFilterCondition?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(matchGlobalFilterCondition)\n }\n if ((customData?.conditionData?.conditionList?.length ?? 0) > 0) {\n conditionBlockList.push(customData?.conditionData)\n }\n if (conditionBlockList.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionBlockList as ConditionBlock[])\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n\n if (customData?.dataSourceId) {\n moduleDataApi?.({\n id: customData?.dataSourceId,\n query: queryString,\n })\n .then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n\n setChartData(res.data)\n })\n .finally(() => {\n setloading(false)\n })\n }\n } else {\n setChartData([])\n }\n })\n\n useDebounceEffect(\n () => {\n if (customData) {\n fetchChartData()\n }\n },\n [\n customData?.dataSourceId,\n customData?.conditionData,\n customData?.sortField,\n customData?.sortOrder,\n customData?.xAxis,\n customData?.yAxis,\n customData?.yAxisField,\n customData?.yAxisFieldType,\n customData?.isGroup,\n customData?.groupField,\n matchGlobalFilterCondition,\n ],\n { wait: 60 }\n )\n\n /* ============================== split =============================== */\n const fieldOptions = useMemo(() => {\n let ret = globalData?.sourceData?.find(item => item.value === customData?.dataSourceId)?.fields\n return ret\n }, [globalData, customData?.dataSourceId])\n\n const chartOptions = useMemo(() => {\n if (customData && chartData && customData.type && chartData.length > 0) {\n const getChartOptions = (_chartData: any) => {\n const getFieldVal = ({\n item,\n field,\n timeGroupInterval,\n }: {\n item: any\n field: any\n timeGroupInterval?: TimeGroupInterval\n }) => {\n return getTransformValue({\n fieldOptions,\n val: item[field],\n field: field,\n fieldMap: globalData?.fieldMap,\n timeGroupInterval,\n })\n }\n const getFieldLabel = (field: string) => {\n const fieldData = fieldOptions?.find(item => item.value === field)\n return fieldData?.label\n }\n\n const isTimeField = (fieldName: string) => {\n return fieldOptions?.find(item => item.value === fieldName)?.type === 'timestamp'\n }\n\n const mapping = {\n tags: 'tag', //后端数据名不一致\n }\n const newXAxisField =\n mapping[customData?.xAxis as keyof typeof mapping] ?? customData?.xAxis\n const newGroupField =\n mapping[customData?.groupField as keyof typeof mapping] ?? customData?.groupField\n\n //规避bug: 前端操作合并了id不同 name相同的数据 这边吧所有数据都按照name 合并下 让看上去是对比\n let groupData = groupBy(_chartData, item => {\n const category = getFieldVal({\n item: item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n return category\n })\n let chartData = Object.keys(groupData).map(key => {\n let groupList = groupData[key]\n let mergeObj = groupList.reduce((acc, item) => {\n Object.keys(item).forEach(k => {\n let value = item[k]\n if (isNumber(value)) {\n acc[k] = acc?.[k] ? acc[k] + value : value\n } else {\n acc[k] = value\n }\n })\n return acc\n }, {})\n return mergeObj\n })\n\n const categories = new Set<string>() //x轴数据\n const stackCategories = new Set<string>() //分组类别\n const valueGroups: Record<string, Record<string, number>> = {} // 分组下的y轴数据\n const valueCounts: Record<string, number> = {} //没有分组下的y轴数据\n\n chartData.forEach((item: any) => {\n const category = getFieldVal({\n item: item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n\n const val =\n customData.yAxis === 'recordTotal' ? item?.count : item[customData?.yAxisFieldType] || 0\n\n const key = category ?? t('unknown')\n valueCounts[key] = val\n\n if (customData?.isGroup && customData?.groupField) {\n const stackCategory = getFieldVal({\n item: item,\n field: newGroupField,\n })\n\n const key = category ?? t('unknown')\n\n stackCategories.add(stackCategory)\n\n if (!valueGroups[stackCategory]) {\n valueGroups[stackCategory] = {}\n }\n valueGroups[stackCategory][key] = val\n }\n })\n\n // 计算百分比\n const valuePercentages: Record<string, number> = {} //没有分组下的y轴数据百分比\n const valueGroupPercentages: Record<string, Record<string, number>> = {} //分组下的y轴数据百分比\n if (customData?.isGroup && customData?.groupField) {\n const totalPerCategory: Record<string, number> = {}\n\n Object.keys(valueGroups).forEach(stackCategory => {\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n totalPerCategory[key] = (totalPerCategory[key] || 0) + val\n })\n })\n\n Object.keys(valueGroups).forEach(stackCategory => {\n valueGroupPercentages[stackCategory] = {}\n Object.entries(valueGroups[stackCategory]).forEach(([key, val]) => {\n const total = totalPerCategory[key] || 1 // 防止除以 0\n valueGroupPercentages[stackCategory][key] = (val / total) * 100\n })\n })\n } else {\n Object.entries(valueCounts).forEach(([key, val]) => {\n const total = val || 1 // 防止除以 0\n valuePercentages[key] = (val / total) * 100\n })\n }\n\n // 排序\n let sortField = customData?.sortField ?? 'xAxis'\n let sortOrder = customData?.sortOrder ?? 'asc'\n\n const sortedChartData = [...chartData].sort((a, b) => {\n let valA, valB\n\n switch (sortField) {\n case 'xAxis':\n valA = getFieldVal({\n item: a,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n valB = getFieldVal({\n item: b,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n break\n\n case 'yAxisField':\n valA =\n customData.yAxis === 'recordTotal' ? a?.count : a[customData?.yAxisFieldType] || 0\n valB =\n customData.yAxis === 'recordTotal' ? b?.count : b[customData?.yAxisFieldType] || 0\n break\n case 'recordValue':\n default:\n break\n }\n\n const orderMultiplier = sortOrder === 'asc' ? 1 : -1\n if (valA > valB) return 1 * orderMultiplier\n if (valA < valB) return -1 * orderMultiplier\n return 0\n })\n\n const sortedCategories = sortedChartData.map(item =>\n getFieldVal({\n item,\n field: newXAxisField,\n timeGroupInterval: customData?.timeGroupInterval,\n })\n )\n categories.clear()\n sortedCategories.forEach(cat => categories.add(cat))\n\n // display range 实现\n if (\n !isTimeField(customData?.xAxis) &&\n customData.displayRange !== 'ALL' &&\n !!customData.displayRange //兼容旧版本 没有displayRange\n ) {\n // 按照个数排序 1>0\n let sortedByCountCategories = Array.from(categories).sort((a, b) => {\n return valueCounts[b] - valueCounts[a]\n })\n\n // 提取符合条件的categories\n let ableCategories: string[] = []\n let [pos, count] = customData.displayRange.split('_')\n if (pos === 'TOP') {\n ableCategories = sortedByCountCategories.slice(0, Number(count))\n } else {\n ableCategories = sortedByCountCategories.slice(-Number(count))\n }\n\n // 从 categories 过滤掉不符合条件的数据 保留categories的排序\n Array.from(categories).forEach(item => {\n if (!ableCategories.includes(item)) {\n categories.delete(item)\n }\n return item\n })\n }\n\n // 标签\n const formatter: LabelFormatterCallback = data => {\n if (customData?.isGroup && customData?.groupField) {\n return data?.value == 0 ? '' : `${data?.value}`\n } else {\n return `${data?.value}`\n }\n }\n const label = {\n show: customData?.chartOptions?.includes('label'),\n position: 'top',\n formatter,\n }\n const labels = Array.from(categories) //x轴label\n const stackLabels = Array.from(stackCategories) //分组数据\n\n // series\n const series = []\n const chartConfig = getChartConfig({\n type: customData?.type as ChartType,\n categories: labels,\n }) as any\n\n const formatValue = v => {\n if (isNumber(v)) {\n return Math.floor(v * 100) / 100\n } else {\n return v\n }\n }\n\n if (customData?.isGroup && customData?.groupField) {\n stackLabels.forEach(stackCategory => {\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valueGroupPercentages[stackCategory][label] || 0))\n : labels.map(label => formatValue(valueGroups[stackCategory][label] || 0))\n // 组合图\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n let matchCombinationChartConfig = (customData?.groupFieldConfig ?? []).find(\n item =>\n getFieldVal({\n item: {\n [newGroupField]: item?.value,\n },\n field: newGroupField,\n }) == stackCategory\n )\n type = matchCombinationChartConfig?.config?.chartType ?? ChartType['ChartBar']\n yAxisPos = matchCombinationChartConfig?.config?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type: type,\n data,\n label,\n name: stackCategory,\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n })\n\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n })\n } else {\n const data = ['chart-bar-percentage', 'chart-strip-bar-percentage'].includes(\n customData.type\n )\n ? labels.map(label => formatValue(valuePercentages[label]?.toFixed(2) || 0)) // 使用百分比数据\n : labels.map(label => formatValue(valueCounts[label] || 0))\n\n //组合图\n let type = customData.type\n let yAxisPos = 'left'\n if (type == ChartType['chartCombination']) {\n type = customData?.yAxisFieldConfig?.chartType ?? ChartType['ChartBar']\n } else {\n yAxisPos = customData?.yAxisFieldConfig?.yAxisPos ?? 'left'\n }\n\n let seriesItem = getSerie({\n type: customData.type,\n data,\n label,\n name:\n customData.yAxis === 'recordTotal'\n ? t('pb.statisticsText')\n : getFieldLabel(customData?.yAxisField),\n isGroup: customData?.isGroup,\n groupField: customData?.groupField,\n labels,\n })\n\n seriesItem.yAxisIndex = yAxisPos == 'left' ? 0 : 1\n series.push(seriesItem)\n }\n\n // misc\n const grids = getGrid({ series, chartConfig, width, customeStyle })\n const isShowLegend = customData?.chartOptions?.includes('legend')\n\n let isLeftYAxisShow = series.some(item => item?.yAxisIndex == 0)\n let isRightYAxisShow = series.some(item => item?.yAxisIndex == 1)\n let yAxisConfig = {\n ...chartConfig.yAxis,\n axisTick: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLine: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n formatter: (value: string) => {\n return value.length > 15 ? `${value.slice(0, 15)}...` : value // 截断并添加 \"...\"\n },\n hideOverlap: true,\n ...chartConfig.yAxis?.axisLabel,\n },\n splitLine: {\n show: customData?.chartOptions?.includes('splitLine'), // 不显示x轴网格线\n },\n }\n\n const options: EChartsOption = {\n legend: {\n type: 'scroll',\n left: 'center',\n right: 'center',\n top: '0',\n show: isShowLegend,\n itemWidth: 12,\n itemHeight: 12,\n data: series?.map((item: any) => item?.name || '') || [],\n },\n grid: {\n top: grids.top,\n left: grids.left,\n right: grids.right,\n bottom: grids.bottom,\n },\n graphic: {\n elements: [\n {\n type: 'text',\n left: 'center',\n bottom: '10px',\n style: {\n text: customeStyle?.xtitle || '',\n fill: '#333', // 文本颜色\n fontSize: 12,\n fontWeight: 'bold',\n },\n },\n {\n type: 'text',\n left: '10px',\n top: 'center',\n style: {\n text: customeStyle?.ytitle || '',\n fill: '#333', // 文本颜色\n fontSize: 12,\n fontWeight: 'bold',\n },\n rotation: Math.PI / 2,\n },\n ],\n },\n xAxis: {\n ...chartConfig.xAxis,\n axisTick: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLine: {\n show: customData?.chartOptions?.includes('axis'),\n },\n axisLabel: {\n show: customData?.chartOptions?.includes('label'),\n rotate: grids.axisLabelRotate, // 使标签倾斜,调整为合适的角度\n interval: 'auto', // 自动隐藏\n formatter: (value: string) => {\n return value.length > 15 ? `${value.slice(0, 15)}...` : value // 截断并添加 \"...\"\n },\n ...(chartConfig.xAxis?.axisLabel ?? {}),\n },\n splitLine: {\n show: customData?.chartOptions?.includes('splitLine'), // 不显示x轴网格线\n },\n },\n yAxis: [\n {\n show: isLeftYAxisShow,\n ...yAxisConfig,\n },\n {\n show: isRightYAxisShow,\n ...yAxisConfig,\n },\n ],\n series: series,\n tooltip: {\n trigger: 'item', // 触发方式:鼠标悬浮在坐标轴上\n axisPointer: {\n type: 'shadow', // 阴影指示器,鼠标悬停时显示柱状图的阴影\n },\n appendTo: 'body',\n },\n }\n\n return options\n }\n\n return getChartOptions(chartData)\n } else {\n return null\n }\n }, [\n customData?.sortField,\n customData?.sortOrder,\n customData?.type,\n customData?.chartOptions,\n customData?.timeGroupInterval,\n customData?.groupFieldConfig,\n customData?.yAxisFieldConfig,\n customData?.displayRange,\n // customData,\n customeStyle,\n chartData,\n width,\n height,\n fieldOptions,\n ])\n\n /* ============================== split =============================== */\n const echartRef = useRef<any>()\n const containerRef = useRef<HTMLDivElement>(null)\n const size = useSize(containerRef)\n\n useEffect(() => {\n if (!!size) {\n echartRef?.current?.resize()\n }\n }, [size])\n\n const isLoading = loading\n const isEmpyt = !loading && !chartOptions\n const isOk = !isLoading && !!chartOptions\n return (\n <div style={{ width: '100%', height: '100%' }} ref={containerRef}>\n {isLoading && (\n <Spin\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n spinning={loading}\n />\n )}\n {isEmpyt && <Empty />}\n {isOk && <BaseChart echartRef={echartRef} options={chartOptions ?? {}} />}\n </div>\n )\n}\n\nexport default React.memo(ChartModule)\n"],"names":["matchGlobalFilterCondition","_a","chartData","key","label","_b","BaseChart"],"mappings":"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"}
|
|
@@ -226,7 +226,7 @@ const getEqualTimeDSL = (props) => {
|
|
|
226
226
|
value: dayjs().subtract(1, "day").format("YYYY-MM-DD"),
|
|
227
227
|
operator: mapping["="]
|
|
228
228
|
};
|
|
229
|
-
case "thisweek":
|
|
229
|
+
case "thisweek": {
|
|
230
230
|
const startOfLastWeek = dayjs().startOf("week").add(1, "day").format("YYYY-MM-DD");
|
|
231
231
|
const endOfLastWeek = dayjs().endOf("week").add(1, "day").format("YYYY-MM-DD");
|
|
232
232
|
return {
|
|
@@ -244,28 +244,29 @@ const getEqualTimeDSL = (props) => {
|
|
|
244
244
|
}
|
|
245
245
|
]
|
|
246
246
|
};
|
|
247
|
+
}
|
|
247
248
|
case "lastweek": {
|
|
248
|
-
const
|
|
249
|
-
const
|
|
249
|
+
const startOfLastWeek = dayjs().subtract(1, "week").startOf("week").add(1, "day").format("YYYY-MM-DD");
|
|
250
|
+
const endOfLastWeek = dayjs().subtract(1, "week").endOf("week").add(1, "day").format("YYYY-MM-DD");
|
|
250
251
|
return {
|
|
251
252
|
join: "and",
|
|
252
253
|
children: [
|
|
253
254
|
{
|
|
254
255
|
field,
|
|
255
|
-
value:
|
|
256
|
+
value: startOfLastWeek,
|
|
256
257
|
operator: mapping[">="]
|
|
257
258
|
},
|
|
258
259
|
{
|
|
259
260
|
field,
|
|
260
|
-
value:
|
|
261
|
+
value: endOfLastWeek,
|
|
261
262
|
operator: mapping["=<"]
|
|
262
263
|
}
|
|
263
264
|
]
|
|
264
265
|
};
|
|
265
266
|
}
|
|
266
|
-
case "thismonth":
|
|
267
|
-
|
|
268
|
-
|
|
267
|
+
case "thismonth": {
|
|
268
|
+
const startOfThisMonth = dayjs().startOf("month").format("YYYY-MM-DD");
|
|
269
|
+
const endOfThisMonth = dayjs().endOf("month").format("YYYY-MM-DD");
|
|
269
270
|
return {
|
|
270
271
|
join: "and",
|
|
271
272
|
children: [
|
|
@@ -281,6 +282,7 @@ const getEqualTimeDSL = (props) => {
|
|
|
281
282
|
}
|
|
282
283
|
]
|
|
283
284
|
};
|
|
285
|
+
}
|
|
284
286
|
case "lastmonth": {
|
|
285
287
|
const startOfLastMonth = dayjs().subtract(1, "month").startOf("month").format("YYYY-MM-DD");
|
|
286
288
|
const endOfLastMonth = dayjs().subtract(1, "month").endOf("month").format("YYYY-MM-DD");
|
|
@@ -300,7 +302,7 @@ const getEqualTimeDSL = (props) => {
|
|
|
300
302
|
]
|
|
301
303
|
};
|
|
302
304
|
}
|
|
303
|
-
case "last7days":
|
|
305
|
+
case "last7days": {
|
|
304
306
|
const startOfLast7Days = dayjs().subtract(7, "days").format("YYYY-MM-DD");
|
|
305
307
|
const endOfLast7Days = dayjs().format("YYYY-MM-DD");
|
|
306
308
|
return {
|
|
@@ -318,7 +320,8 @@ const getEqualTimeDSL = (props) => {
|
|
|
318
320
|
}
|
|
319
321
|
]
|
|
320
322
|
};
|
|
321
|
-
|
|
323
|
+
}
|
|
324
|
+
case "last30days": {
|
|
322
325
|
const startOfLast30Days = dayjs().subtract(30, "days").format("YYYY-MM-DD");
|
|
323
326
|
const endOfLast30Days = dayjs().format("YYYY-MM-DD");
|
|
324
327
|
return {
|
|
@@ -336,6 +339,45 @@ const getEqualTimeDSL = (props) => {
|
|
|
336
339
|
}
|
|
337
340
|
]
|
|
338
341
|
};
|
|
342
|
+
}
|
|
343
|
+
case "thisyear": {
|
|
344
|
+
const start = dayjs().startOf("year").format("YYYY-MM-DD");
|
|
345
|
+
const end = dayjs().endOf("year");
|
|
346
|
+
return {
|
|
347
|
+
join: "and",
|
|
348
|
+
children: [
|
|
349
|
+
{
|
|
350
|
+
field,
|
|
351
|
+
value: start,
|
|
352
|
+
operator: mapping[">="]
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
field,
|
|
356
|
+
value: end,
|
|
357
|
+
operator: mapping["=<"]
|
|
358
|
+
}
|
|
359
|
+
]
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
case "lastyear": {
|
|
363
|
+
const start = dayjs().subtract(1, "year").startOf("year").format("YYYY-MM-DD");
|
|
364
|
+
const end = dayjs().subtract(1, "year").endOf("year");
|
|
365
|
+
return {
|
|
366
|
+
join: "and",
|
|
367
|
+
children: [
|
|
368
|
+
{
|
|
369
|
+
field,
|
|
370
|
+
value: start,
|
|
371
|
+
operator: mapping[">="]
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
field,
|
|
375
|
+
value: end,
|
|
376
|
+
operator: mapping["=<"]
|
|
377
|
+
}
|
|
378
|
+
]
|
|
379
|
+
};
|
|
380
|
+
}
|
|
339
381
|
default:
|
|
340
382
|
return null;
|
|
341
383
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../packages/dashboard-workbench/components/module-content/utils.ts"],"sourcesContent":["import dayjs, { Dayjs } from 'dayjs'\nimport { isArray, isNil } from 'lodash-es'\nimport {\n ConditionBlock,\n ConditionListItem,\n} from '../add-module-modal/components/condition-modal/interface'\n\ntype DSLItem = {\n field: string\n value: string\n operator: string\n}\ntype DSLGroup = {\n join: 'and' | 'or'\n children: (DSLGroup | DSLItem)[]\n}\n\nexport const mapConditionsToPostgrest = (filterData: ConditionBlock[]): string => {\n let DSLTree: DSLGroup = {\n join: 'and',\n children: [],\n }\n\n for (const conditionBlock of filterData) {\n let children = (conditionBlock.conditionList ?? [])\n .map(condition => {\n let ret: DSLItem | DSLGroup | null = null\n ret = conditionListItem2DSL(condition)\n return ret\n })\n .filter(v => !!v) as unknown as (DSLItem | DSLGroup)[]\n if (children.length > 0) {\n DSLTree.children.push({\n join: conditionBlock.conditionType === 'all' ? 'and' : 'or',\n children: children,\n })\n }\n }\n\n // 转成字符串\n function loop(node: DSLGroup, deep = 1, parentJoin: 'and' | 'or') {\n //跳过group里面只嵌套单个group的case 减少层级\n let shoudIgnore = (node.children ?? []).length === 1 && (node.children?.[0] as DSLGroup)?.join\n if (shoudIgnore) {\n return loop(node.children[0] as DSLGroup, deep, parentJoin)\n }\n\n let group = node as DSLGroup\n let shouldMerge = group.join === parentJoin\n let isTop = deep === 1\n let filedUnit = isTop && shouldMerge ? '=' : '.'\n let joinUnit = isTop && shouldMerge ? '&' : ','\n\n let strList = group.children.map(child => {\n if ((child as DSLGroup).join) {\n return loop(child as DSLGroup, !shouldMerge ? deep + 1 : deep, group.join)\n } else {\n let value = `${encodeURIComponent((child as DSLItem).value)}`\n return `${(child as DSLItem).field}${filedUnit}${(child as DSLItem).operator}.${value}`\n }\n })\n let ret = (\n !shouldMerge\n ? `${group?.join}${deep > 1 ? '' : '='}(${strList.join(joinUnit)})`\n : strList.join(joinUnit)\n ) as string\n return ret\n }\n\n let str = loop(DSLTree, 1, 'and')\n return str\n}\n\nlet mapping = {\n '=': 'eq',\n '!=': 'neq',\n '>': 'gt',\n '>=': 'gte',\n '<': 'lt',\n '=<': 'lte',\n ['include']: 'in',\n ['notinclude']: 'not.in',\n // ['contain']: 'gte,lte', //这个是group的\n ['before']: 'lt',\n ['after']: 'gt',\n // ['null']: 'is.null',\n // ['notnull']: 'not.is.null',\n ['null']: 'is', //这个特殊处理\n ['notnull']: 'not.is', //这个特殊处理\n}\n\nconst getEnumValue = (val: any) => {\n // 懒加载的时候 item :{label: \"xxx\", value: \"xxx\"}\n // 非懒加载的时候 item: \"xxx\"\n return (val as any)?.value ? (val as any)?.value : val\n}\n\nconst conditionListItem2DSL = (condition: ConditionListItem) => {\n const { field, condition: cond, val, val2, rdate, type } = condition\n\n //value 是懒加载时候的数据结构\n let value: any\n if (type === 'enum') {\n let isMultiple = ['include', 'notinclude'].includes(cond)\n if (isMultiple) {\n value = (isArray(val) ? val : [])\n .map(val => {\n return getEnumValue(val)\n })\n .filter(v => !!v)\n } else {\n value = !isArray(val) ? getEnumValue(val) : ''\n }\n } else {\n value = (val as any)?.value ? (val as any)?.value : val // 为啥需要?.value\n }\n\n let ret: DSLItem | DSLGroup | null = null\n switch (cond) {\n case '=':\n {\n if (type !== 'timestamp') {\n if (isInVaildValue(value)) {\n return null\n }\n ret = {\n field,\n value: `${value}`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n } else {\n if (isInVaildValue(rdate)) {\n return null\n }\n ret = getEqualTimeDSL({ rdate: rdate!, field, value })\n }\n }\n break\n case '>':\n case '<':\n {\n if (type === 'timestamp' && rdate === 'today') {\n value = dayjs().format('YYYY-MM-DD')\n } else if (type === 'timestamp' && rdate === 'yesterday') {\n value = dayjs().subtract(1, 'day').format('YYYY-MM-DD')\n }\n if (isInVaildValue(value)) {\n return null\n }\n\n ret = {\n field,\n value: `${value}`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n break\n case 'contain':\n {\n if (isInVaildValue(value) || isInVaildValue(val2)) {\n return null\n }\n ret = {\n join: 'and',\n children: [\n {\n field,\n value: `${value}`,\n operator: 'gte',\n },\n {\n field,\n value: `${val2}`,\n operator: 'lte',\n },\n ],\n } as DSLGroup\n }\n break\n case 'null':\n case 'notnull':\n {\n ret = {\n field,\n value: 'null',\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n break\n case 'include':\n case 'notinclude':\n {\n // 枚举特殊处理\n if (condition.type === 'enum') {\n if (isInVaildValue(value?.[0]) || value.length === 0) {\n return null\n }\n\n if (value.length === 1) {\n ret = {\n field,\n value: `(${value})`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n } else {\n ret = {\n join: cond === 'include' ? 'or' : 'and',\n children: value.map((value: string) => {\n return {\n field,\n value: `(${value})`,\n operator: mapping[cond as keyof typeof mapping],\n }\n }),\n } as DSLGroup\n }\n\n return ret\n } else {\n if (isInVaildValue(value)) {\n return null\n }\n\n ret = {\n field,\n value: `(${value})`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n }\n break\n default: {\n if (isInVaildValue(value)) {\n return null\n }\n ret = {\n field,\n value: `${value}`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n }\n\n return ret\n}\n\nconst getEqualTimeDSL = (props: { rdate: string; field: string; value: string }) => {\n const { rdate, field, value } = props\n switch (rdate) {\n case 'exactdate':\n if (isInVaildValue(value)) {\n return null\n }\n return {\n field,\n value,\n operator: mapping['='],\n } as DSLItem\n case 'today':\n return {\n field,\n value: dayjs().format('YYYY-MM-DD'),\n operator: mapping['='],\n } as DSLItem\n case 'yesterday':\n return {\n field,\n value: dayjs().subtract(1, 'day').format('YYYY-MM-DD'),\n operator: mapping['='],\n } as DSLItem\n case 'thisweek':\n const startOfLastWeek = dayjs().startOf('week').add(1, 'day').format('YYYY-MM-DD')\n const endOfLastWeek = dayjs().endOf('week').add(1, 'day').format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLastWeek,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLastWeek,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n case 'lastweek': {\n const startOfLastWeek = dayjs()\n .subtract(1, 'week')\n .startOf('week')\n .add(1, 'day')\n .format('YYYY-MM-DD')\n const endOfLastWeek = dayjs()\n .subtract(1, 'week')\n .endOf('week')\n .add(1, 'day')\n .format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLastWeek,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLastWeek,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n case 'thismonth':\n let startOfThisMonth = dayjs().startOf('month').format('YYYY-MM-DD')\n let endOfThisMonth = dayjs().endOf('month').format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfThisMonth,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfThisMonth,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n\n case 'lastmonth': {\n const startOfLastMonth = dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM-DD')\n const endOfLastMonth = dayjs().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLastMonth,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLastMonth,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n case 'last7days':\n const startOfLast7Days = dayjs().subtract(7, 'days').format('YYYY-MM-DD')\n const endOfLast7Days = dayjs().format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLast7Days,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLast7Days,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n case 'last30days':\n const startOfLast30Days = dayjs().subtract(30, 'days').format('YYYY-MM-DD')\n const endOfLast30Days = dayjs().format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLast30Days,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLast30Days,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n default:\n return null // 对于未支持的 rdate 值返回空字符串\n }\n}\n\nconst isInVaildValue = (date: string | number | Dayjs | undefined) => {\n return isNil(date) || date === ''\n}\n"],"names":["val","value","startOfLastWeek","endOfLastWeek"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../packages/dashboard-workbench/components/module-content/utils.ts"],"sourcesContent":["import dayjs, { Dayjs } from 'dayjs'\nimport { isArray, isNil } from 'lodash-es'\nimport {\n ConditionBlock,\n ConditionListItem,\n} from '../add-module-modal/components/condition-modal/interface'\n\ntype DSLItem = {\n field: string\n value: string\n operator: string\n}\ntype DSLGroup = {\n join: 'and' | 'or'\n children: (DSLGroup | DSLItem)[]\n}\n\nexport const mapConditionsToPostgrest = (filterData: ConditionBlock[]): string => {\n let DSLTree: DSLGroup = {\n join: 'and',\n children: [],\n }\n\n for (const conditionBlock of filterData) {\n let children = (conditionBlock.conditionList ?? [])\n .map(condition => {\n let ret: DSLItem | DSLGroup | null = null\n ret = conditionListItem2DSL(condition)\n return ret\n })\n .filter(v => !!v) as unknown as (DSLItem | DSLGroup)[]\n if (children.length > 0) {\n DSLTree.children.push({\n join: conditionBlock.conditionType === 'all' ? 'and' : 'or',\n children: children,\n })\n }\n }\n\n // 转成字符串\n function loop(node: DSLGroup, deep = 1, parentJoin: 'and' | 'or') {\n //跳过group里面只嵌套单个group的case 减少层级\n let shoudIgnore = (node.children ?? []).length === 1 && (node.children?.[0] as DSLGroup)?.join\n if (shoudIgnore) {\n return loop(node.children[0] as DSLGroup, deep, parentJoin)\n }\n\n let group = node as DSLGroup\n let shouldMerge = group.join === parentJoin\n let isTop = deep === 1\n let filedUnit = isTop && shouldMerge ? '=' : '.'\n let joinUnit = isTop && shouldMerge ? '&' : ','\n\n let strList = group.children.map(child => {\n if ((child as DSLGroup).join) {\n return loop(child as DSLGroup, !shouldMerge ? deep + 1 : deep, group.join)\n } else {\n let value = `${encodeURIComponent((child as DSLItem).value)}`\n return `${(child as DSLItem).field}${filedUnit}${(child as DSLItem).operator}.${value}`\n }\n })\n let ret = (\n !shouldMerge\n ? `${group?.join}${deep > 1 ? '' : '='}(${strList.join(joinUnit)})`\n : strList.join(joinUnit)\n ) as string\n return ret\n }\n\n let str = loop(DSLTree, 1, 'and')\n return str\n}\n\nlet mapping = {\n '=': 'eq',\n '!=': 'neq',\n '>': 'gt',\n '>=': 'gte',\n '<': 'lt',\n '=<': 'lte',\n ['include']: 'in',\n ['notinclude']: 'not.in',\n // ['contain']: 'gte,lte', //这个是group的\n ['before']: 'lt',\n ['after']: 'gt',\n // ['null']: 'is.null',\n // ['notnull']: 'not.is.null',\n ['null']: 'is', //这个特殊处理\n ['notnull']: 'not.is', //这个特殊处理\n}\n\nconst getEnumValue = (val: any) => {\n // 懒加载的时候 item :{label: \"xxx\", value: \"xxx\"}\n // 非懒加载的时候 item: \"xxx\"\n return (val as any)?.value ? (val as any)?.value : val\n}\n\nconst conditionListItem2DSL = (condition: ConditionListItem) => {\n const { field, condition: cond, val, val2, rdate, type } = condition\n\n //value 是懒加载时候的数据结构\n let value: any\n if (type === 'enum') {\n let isMultiple = ['include', 'notinclude'].includes(cond)\n if (isMultiple) {\n value = (isArray(val) ? val : [])\n .map(val => {\n return getEnumValue(val)\n })\n .filter(v => !!v)\n } else {\n value = !isArray(val) ? getEnumValue(val) : ''\n }\n } else {\n value = (val as any)?.value ? (val as any)?.value : val // 为啥需要?.value\n }\n\n let ret: DSLItem | DSLGroup | null = null\n switch (cond) {\n case '=':\n {\n if (type !== 'timestamp') {\n if (isInVaildValue(value)) {\n return null\n }\n ret = {\n field,\n value: `${value}`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n } else {\n if (isInVaildValue(rdate)) {\n return null\n }\n ret = getEqualTimeDSL({ rdate: rdate!, field, value })\n }\n }\n break\n case '>':\n case '<':\n {\n if (type === 'timestamp' && rdate === 'today') {\n value = dayjs().format('YYYY-MM-DD')\n } else if (type === 'timestamp' && rdate === 'yesterday') {\n value = dayjs().subtract(1, 'day').format('YYYY-MM-DD')\n }\n if (isInVaildValue(value)) {\n return null\n }\n\n ret = {\n field,\n value: `${value}`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n break\n case 'contain':\n {\n if (isInVaildValue(value) || isInVaildValue(val2)) {\n return null\n }\n ret = {\n join: 'and',\n children: [\n {\n field,\n value: `${value}`,\n operator: 'gte',\n },\n {\n field,\n value: `${val2}`,\n operator: 'lte',\n },\n ],\n } as DSLGroup\n }\n break\n case 'null':\n case 'notnull':\n {\n ret = {\n field,\n value: 'null',\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n break\n case 'include':\n case 'notinclude':\n {\n // 枚举特殊处理\n if (condition.type === 'enum') {\n if (isInVaildValue(value?.[0]) || value.length === 0) {\n return null\n }\n\n if (value.length === 1) {\n ret = {\n field,\n value: `(${value})`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n } else {\n ret = {\n join: cond === 'include' ? 'or' : 'and',\n children: value.map((value: string) => {\n return {\n field,\n value: `(${value})`,\n operator: mapping[cond as keyof typeof mapping],\n }\n }),\n } as DSLGroup\n }\n\n return ret\n } else {\n if (isInVaildValue(value)) {\n return null\n }\n\n ret = {\n field,\n value: `(${value})`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n }\n break\n default: {\n if (isInVaildValue(value)) {\n return null\n }\n ret = {\n field,\n value: `${value}`,\n operator: mapping[cond as keyof typeof mapping],\n } as DSLItem\n }\n }\n\n return ret\n}\n\nconst getEqualTimeDSL = (props: { rdate: string; field: string; value: string }) => {\n const { rdate, field, value } = props\n switch (rdate) {\n case 'exactdate':\n if (isInVaildValue(value)) {\n return null\n }\n return {\n field,\n value,\n operator: mapping['='],\n } as DSLItem\n case 'today':\n return {\n field,\n value: dayjs().format('YYYY-MM-DD'),\n operator: mapping['='],\n } as DSLItem\n case 'yesterday':\n return {\n field,\n value: dayjs().subtract(1, 'day').format('YYYY-MM-DD'),\n operator: mapping['='],\n } as DSLItem\n case 'thisweek': {\n const startOfLastWeek = dayjs().startOf('week').add(1, 'day').format('YYYY-MM-DD')\n const endOfLastWeek = dayjs().endOf('week').add(1, 'day').format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLastWeek,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLastWeek,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n case 'lastweek': {\n const startOfLastWeek = dayjs()\n .subtract(1, 'week')\n .startOf('week')\n .add(1, 'day')\n .format('YYYY-MM-DD')\n const endOfLastWeek = dayjs()\n .subtract(1, 'week')\n .endOf('week')\n .add(1, 'day')\n .format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLastWeek,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLastWeek,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n case 'thismonth': {\n const startOfThisMonth = dayjs().startOf('month').format('YYYY-MM-DD')\n const endOfThisMonth = dayjs().endOf('month').format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfThisMonth,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfThisMonth,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n\n case 'lastmonth': {\n const startOfLastMonth = dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM-DD')\n const endOfLastMonth = dayjs().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLastMonth,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLastMonth,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n case 'last7days': {\n const startOfLast7Days = dayjs().subtract(7, 'days').format('YYYY-MM-DD')\n const endOfLast7Days = dayjs().format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLast7Days,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLast7Days,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n\n case 'last30days': {\n const startOfLast30Days = dayjs().subtract(30, 'days').format('YYYY-MM-DD')\n const endOfLast30Days = dayjs().format('YYYY-MM-DD')\n return {\n join: 'and',\n children: [\n {\n field,\n value: startOfLast30Days,\n operator: mapping['>='],\n },\n {\n field,\n value: endOfLast30Days,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n case 'thisyear': {\n const start = dayjs().startOf('year').format('YYYY-MM-DD')\n const end = dayjs().endOf('year')\n return {\n join: 'and',\n children: [\n {\n field,\n value: start,\n operator: mapping['>='],\n },\n {\n field,\n value: end,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n case 'lastyear': {\n const start = dayjs().subtract(1, 'year').startOf('year').format('YYYY-MM-DD')\n const end = dayjs().subtract(1, 'year').endOf('year')\n return {\n join: 'and',\n children: [\n {\n field,\n value: start,\n operator: mapping['>='],\n },\n {\n field,\n value: end,\n operator: mapping['=<'],\n },\n ],\n } as DSLGroup\n }\n\n default:\n return null // 对于未支持的 rdate 值返回空字符串\n }\n}\n\nconst isInVaildValue = (date: string | number | Dayjs | undefined) => {\n return isNil(date) || date === ''\n}\n"],"names":["val","value"],"mappings":"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"}
|
|
@@ -160,7 +160,9 @@ const add = {
|
|
|
160
160
|
add31: "This Month",
|
|
161
161
|
add32: "Last Month",
|
|
162
162
|
add33: "Past 7 Days",
|
|
163
|
-
add34: "Past 30 Days"
|
|
163
|
+
add34: "Past 30 Days",
|
|
164
|
+
add35: "Last Year",
|
|
165
|
+
add36: "This Year"
|
|
164
166
|
};
|
|
165
167
|
const displayRange = {
|
|
166
168
|
title: "Display Data",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.js","sources":["../../../packages/dashboard-workbench/lang/en-US.ts"],"sourcesContent":["const common = {\n title: 'Dashboard',\n text: 'Text',\n confirm: 'Confirm',\n pleaseEnter: 'Please enter',\n configuration: 'Configuration',\n copy: 'Copy',\n delete: 'Delete',\n calendarText: 'Calendar',\n chartText: 'Chart',\n promptTitle: 'Prompt',\n promptContentDeleteComponents: 'Are you sure you want to delete this component?',\n unnamedRecord: 'Unnamed Record',\n setFilteringCriteria: 'Set filtering criteria',\n all: 'All',\n everyone: 'Anyone',\n condition: 'Condition',\n addCondition: 'Add condition',\n equalto: 'Equal to',\n notequalto: 'Not equal to',\n contain: 'Contains',\n notcontain: 'Does not contain',\n null: 'Is empty',\n notnull: 'Is not empty',\n conformTo: 'Conform to the following',\n statisticsText: 'Statistics Text',\n typeData: 'Type and Data',\n customStyle: 'Custom Style',\n dataSource: 'Data Source',\n dataRange: 'Data Range',\n data: 'Data',\n filterData: 'Filter Data',\n selectNcondition: 'Selected {{n}} conditions',\n allData: 'All Data',\n statisticstMethods: 'Statistical Methods',\n statisticstRecordNum: 'Total Number of Records',\n statisticstFieldVal: 'Statistical Field Values',\n selectField: 'Select Field',\n sumVal: 'Sum',\n maxVal: 'Maximum Value',\n minVal: 'Minimum Value',\n averageVal: 'Average Value',\n empty: 'No Data',\n\n filter: 'Filter',\n globalfilter: 'Global Filter',\n setFilterCondition: 'Set Filter Condition',\n selectGroupField: 'Select Group Field',\n}\n\nconst pb = {\n text: 'text',\n statisticsText: 'Statistics',\n unknown: 'unknown',\n}\n\nconst statistics = {\n t1: 'Color Scheme',\n t2: 'Value Settings',\n t3: 'Decimal Places and Format',\n t4: 'Please enter decimal places',\n t5: 'Number (Thousand Separator)',\n t6: 'Number',\n t7: 'Percentage',\n currency: 'Currency',\n t8: 'Renminbi',\n t9: 'Dollar',\n t10: 'Statistical Value Description',\n t11: 'EUR',\n t12: 'GBP',\n t13: 'THB',\n}\n\nconst chart = {\n t1: 'Chart Type',\n t2: 'Basic Bar Chart',\n t3: 'Stacked Bar Chart',\n t4: 'Percentage Bar Chart',\n t5: 'Basic Horizontal Bar Chart',\n t6: 'Stacked Horizontal Bar Chart',\n t7: 'Percentage Stacked Horizontal Bar Chart',\n t8: 'Line Chart',\n t9: 'Smooth Line Chart',\n t10: 'Pie Chart',\n t11: 'Doughnut Chart',\n t12: 'Chart Options',\n _t12: 'Combination Chart',\n t13: 'Legend',\n t14: 'Data Label',\n t15: 'Axis',\n t16: 'Grid Line',\n t17: 'Sector Division',\n t18: 'Horizontal Axis (Category)',\n t19: 'Sector Value',\n t20: 'Vertical Axis (Field)',\n t21: 'Horizontal Axis',\n t22: 'Horizontal Axis Title',\n t23: 'Axis Options',\n t24: 'Show Labels',\n t25: 'Show Axis Line',\n t26: 'Vertical Axis',\n t27: 'Vertical Axis Title',\n t28: 'Axis Options',\n t29: 'Show Labels',\n t30: 'Show Axis Line',\n t31: 'Sort By',\n t32: 'Horizontal Axis Value',\n t33: 'Vertical Axis Value',\n t34: 'Record Sequence',\n t35: 'Sort Order',\n t36: 'Ascending',\n t37: 'Descending',\n t38: 'Grouping And Aggregation',\n\n t39: 'Aggregate by time',\n t40: 'Aggregate by day',\n t41: 'Aggregate by week',\n t42: 'Aggregate by month',\n t43: 'Aggregate by year',\n\n groupFieldConfig: 'Group Field Configuration',\n\n left: 'Left',\n right: 'Right',\n}\n\nconst calendar = {\n t1: 'View Configuration',\n t2: 'Start Date',\n t3: 'End Date',\n t4: 'Title Display',\n}\n\nconst add = {\n add1: 'Chart',\n add2: 'Bar Chart',\n add3: 'Line Chart',\n add4: 'Pie Chart',\n add5: 'Bar Graph',\n _add5: 'Combination Chart',\n add6: 'Other',\n add7: 'Statistics',\n add8: 'Text',\n add9: 'Calendar',\n add10: 'Add Block',\n add11: 'Equal to',\n add12: 'Not Equal to',\n add13: 'Equal to',\n add14: 'Before(<)',\n add15: 'After(>)',\n add16: 'Within Range',\n timeBefore: 'Before (excluding the day)',\n timeAfter: 'After (excluding the day)',\n timeRange: 'Date Range (including the day)',\n add17: 'Is Empty',\n add18: 'Is Not Empty',\n add19: 'Not Equal to',\n add20: 'Greater than',\n add21: 'Greater than or Equal to',\n add22: 'Less than',\n add23: 'Less than or Equal to',\n add24: 'Contains',\n add25: 'Does Not Contain',\n add26: 'Specific Date',\n add27: 'Today',\n add28: 'Yesterday',\n add29: 'This Week',\n add30: 'Last Week',\n add31: 'This Month',\n add32: 'Last Month',\n add33: 'Past 7 Days',\n add34: 'Past 30 Days',\n}\n\nexport const displayRange = {\n title: 'Display Data',\n all: 'All',\n top5: 'Top 5',\n top10: 'Top 10',\n top20: 'Top 20',\n top30: 'Top 30',\n bottom5: 'Bottom 5',\n bottom10: 'Bottom 10',\n bottom20: 'Bottom 20',\n bottom30: 'Bottom 30',\n}\n\nexport default {\n ...common,\n displayRange,\n pb,\n statistics,\n chart,\n calendar,\n add,\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"en-US.js","sources":["../../../packages/dashboard-workbench/lang/en-US.ts"],"sourcesContent":["const common = {\n title: 'Dashboard',\n text: 'Text',\n confirm: 'Confirm',\n pleaseEnter: 'Please enter',\n configuration: 'Configuration',\n copy: 'Copy',\n delete: 'Delete',\n calendarText: 'Calendar',\n chartText: 'Chart',\n promptTitle: 'Prompt',\n promptContentDeleteComponents: 'Are you sure you want to delete this component?',\n unnamedRecord: 'Unnamed Record',\n setFilteringCriteria: 'Set filtering criteria',\n all: 'All',\n everyone: 'Anyone',\n condition: 'Condition',\n addCondition: 'Add condition',\n equalto: 'Equal to',\n notequalto: 'Not equal to',\n contain: 'Contains',\n notcontain: 'Does not contain',\n null: 'Is empty',\n notnull: 'Is not empty',\n conformTo: 'Conform to the following',\n statisticsText: 'Statistics Text',\n typeData: 'Type and Data',\n customStyle: 'Custom Style',\n dataSource: 'Data Source',\n dataRange: 'Data Range',\n data: 'Data',\n filterData: 'Filter Data',\n selectNcondition: 'Selected {{n}} conditions',\n allData: 'All Data',\n statisticstMethods: 'Statistical Methods',\n statisticstRecordNum: 'Total Number of Records',\n statisticstFieldVal: 'Statistical Field Values',\n selectField: 'Select Field',\n sumVal: 'Sum',\n maxVal: 'Maximum Value',\n minVal: 'Minimum Value',\n averageVal: 'Average Value',\n empty: 'No Data',\n\n filter: 'Filter',\n globalfilter: 'Global Filter',\n setFilterCondition: 'Set Filter Condition',\n selectGroupField: 'Select Group Field',\n}\n\nconst pb = {\n text: 'text',\n statisticsText: 'Statistics',\n unknown: 'unknown',\n}\n\nconst statistics = {\n t1: 'Color Scheme',\n t2: 'Value Settings',\n t3: 'Decimal Places and Format',\n t4: 'Please enter decimal places',\n t5: 'Number (Thousand Separator)',\n t6: 'Number',\n t7: 'Percentage',\n currency: 'Currency',\n t8: 'Renminbi',\n t9: 'Dollar',\n t10: 'Statistical Value Description',\n t11: 'EUR',\n t12: 'GBP',\n t13: 'THB',\n}\n\nconst chart = {\n t1: 'Chart Type',\n t2: 'Basic Bar Chart',\n t3: 'Stacked Bar Chart',\n t4: 'Percentage Bar Chart',\n t5: 'Basic Horizontal Bar Chart',\n t6: 'Stacked Horizontal Bar Chart',\n t7: 'Percentage Stacked Horizontal Bar Chart',\n t8: 'Line Chart',\n t9: 'Smooth Line Chart',\n t10: 'Pie Chart',\n t11: 'Doughnut Chart',\n t12: 'Chart Options',\n _t12: 'Combination Chart',\n t13: 'Legend',\n t14: 'Data Label',\n t15: 'Axis',\n t16: 'Grid Line',\n t17: 'Sector Division',\n t18: 'Horizontal Axis (Category)',\n t19: 'Sector Value',\n t20: 'Vertical Axis (Field)',\n t21: 'Horizontal Axis',\n t22: 'Horizontal Axis Title',\n t23: 'Axis Options',\n t24: 'Show Labels',\n t25: 'Show Axis Line',\n t26: 'Vertical Axis',\n t27: 'Vertical Axis Title',\n t28: 'Axis Options',\n t29: 'Show Labels',\n t30: 'Show Axis Line',\n t31: 'Sort By',\n t32: 'Horizontal Axis Value',\n t33: 'Vertical Axis Value',\n t34: 'Record Sequence',\n t35: 'Sort Order',\n t36: 'Ascending',\n t37: 'Descending',\n t38: 'Grouping And Aggregation',\n\n t39: 'Aggregate by time',\n t40: 'Aggregate by day',\n t41: 'Aggregate by week',\n t42: 'Aggregate by month',\n t43: 'Aggregate by year',\n\n groupFieldConfig: 'Group Field Configuration',\n\n left: 'Left',\n right: 'Right',\n}\n\nconst calendar = {\n t1: 'View Configuration',\n t2: 'Start Date',\n t3: 'End Date',\n t4: 'Title Display',\n}\n\nconst add = {\n add1: 'Chart',\n add2: 'Bar Chart',\n add3: 'Line Chart',\n add4: 'Pie Chart',\n add5: 'Bar Graph',\n _add5: 'Combination Chart',\n add6: 'Other',\n add7: 'Statistics',\n add8: 'Text',\n add9: 'Calendar',\n add10: 'Add Block',\n add11: 'Equal to',\n add12: 'Not Equal to',\n add13: 'Equal to',\n add14: 'Before(<)',\n add15: 'After(>)',\n add16: 'Within Range',\n timeBefore: 'Before (excluding the day)',\n timeAfter: 'After (excluding the day)',\n timeRange: 'Date Range (including the day)',\n add17: 'Is Empty',\n add18: 'Is Not Empty',\n add19: 'Not Equal to',\n add20: 'Greater than',\n add21: 'Greater than or Equal to',\n add22: 'Less than',\n add23: 'Less than or Equal to',\n add24: 'Contains',\n add25: 'Does Not Contain',\n add26: 'Specific Date',\n add27: 'Today',\n add28: 'Yesterday',\n add29: 'This Week',\n add30: 'Last Week',\n add31: 'This Month',\n add32: 'Last Month',\n add33: 'Past 7 Days',\n add34: 'Past 30 Days',\n add35: 'Last Year',\n add36: 'This Year',\n}\n\nexport const displayRange = {\n title: 'Display Data',\n all: 'All',\n top5: 'Top 5',\n top10: 'Top 10',\n top20: 'Top 20',\n top30: 'Top 30',\n bottom5: 'Bottom 5',\n bottom10: 'Bottom 10',\n bottom20: 'Bottom 20',\n bottom30: 'Bottom 30',\n}\n\nexport default {\n ...common,\n displayRange,\n pb,\n statistics,\n chart,\n calendar,\n add,\n}\n"],"names":[],"mappings":"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"}
|