@platox/pivot-table 0.0.89 → 0.0.91

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.
@@ -152,15 +152,21 @@ const CustomData = ({
152
152
  }
153
153
  );
154
154
  const handleValuesChange = useMemoizedFn((changedValues, allValues) => {
155
- var _a, _b, _c;
155
+ var _a, _b, _c, _d;
156
156
  if (changedValues.dataSourceId) {
157
157
  const newFieldOptions = getFieldOptions(changedValues.dataSourceId);
158
158
  const yAxisOptions = getYAxisOptions(changedValues.dataSourceId);
159
159
  const defaultYAxis = yAxisOptions.length === 1 && yAxisOptions[0].value === "fieldValue" ? "fieldValue" : "recordTotal";
160
+ const newYAxisFieldOptions = newFieldOptions.filter((item) => {
161
+ return item.type === "int" || item.type === "float";
162
+ });
160
163
  form.setFieldsValue({
161
164
  xAxis: (_a = newFieldOptions == null ? void 0 : newFieldOptions[0]) == null ? void 0 : _a.value,
162
165
  yAxis: defaultYAxis,
163
- isGroup: false
166
+ yAxisField: defaultYAxis === "fieldValue" ? (_b = newYAxisFieldOptions == null ? void 0 : newYAxisFieldOptions[0]) == null ? void 0 : _b.value : "",
167
+ yAxisFieldType: defaultYAxis === "fieldValue" ? "sum" : void 0,
168
+ isGroup: false,
169
+ groupField: void 0
164
170
  });
165
171
  setCondition({
166
172
  conditionList: [],
@@ -179,13 +185,13 @@ const CustomData = ({
179
185
  if (changedValues.yAxis) {
180
186
  let value = changedValues.yAxis;
181
187
  form.setFieldsValue({
182
- yAxisField: value === "fieldValue" ? (_b = yAxisFieldOption == null ? void 0 : yAxisFieldOption[0]) == null ? void 0 : _b.value : "",
188
+ yAxisField: value === "fieldValue" ? (_c = yAxisFieldOption == null ? void 0 : yAxisFieldOption[0]) == null ? void 0 : _c.value : "",
183
189
  yAxisFieldType: "sum"
184
190
  });
185
191
  }
186
192
  if (changedValues.isGroup) {
187
193
  form.setFieldsValue({
188
- groupField: (_c = groupFieldOption == null ? void 0 : groupFieldOption[0]) == null ? void 0 : _c.value
194
+ groupField: (_d = groupFieldOption == null ? void 0 : groupFieldOption[0]) == null ? void 0 : _d.value
189
195
  });
190
196
  }
191
197
  debounceSubmit();
@@ -224,7 +230,13 @@ const CustomData = ({
224
230
  onValuesChange: handleValuesChange,
225
231
  initialValues,
226
232
  children: [
227
- /* @__PURE__ */ jsx(Form.Item, { label: t("dataSource"), name: "dataSourceId", children: /* @__PURE__ */ jsx(Select, { options: (globalData == null ? void 0 : globalData.sourceData) ?? [] }) }),
233
+ /* @__PURE__ */ jsx(Form.Item, { label: t("dataSource"), name: "dataSourceId", children: /* @__PURE__ */ jsx(
234
+ Select,
235
+ {
236
+ options: (globalData == null ? void 0 : globalData.sourceData) ?? [],
237
+ getPopupContainer: (trigger) => trigger.parentElement || document.body
238
+ }
239
+ ) }),
228
240
  /* @__PURE__ */ jsxs(Form.Item, { label: t("dataRange"), children: [
229
241
  /* @__PURE__ */ jsx(
230
242
  Button,
@@ -243,6 +255,7 @@ const CustomData = ({
243
255
  Select,
244
256
  {
245
257
  options: ChartTypeOption,
258
+ getPopupContainer: (trigger) => trigger.parentElement || document.body,
246
259
  optionRender: (option) => /* @__PURE__ */ jsxs(Flex, { align: "center", children: [
247
260
  /* @__PURE__ */ jsx("span", { role: "img", style: { marginTop: "5px" }, "aria-label": option.data.label, children: option.data.icon }),
248
261
  option.data.label
@@ -263,10 +276,28 @@ const CustomData = ({
263
276
  {
264
277
  label: (type == null ? void 0 : type.includes("pie")) ? t("chart.t17") : t("chart.t18"),
265
278
  name: "xAxis",
266
- children: /* @__PURE__ */ jsx(Select, { options: xAxisFieldOption })
279
+ children: /* @__PURE__ */ jsx(
280
+ Select,
281
+ {
282
+ options: xAxisFieldOption,
283
+ getPopupContainer: (trigger) => trigger.parentElement || document.body
284
+ }
285
+ )
267
286
  }
268
287
  ),
269
- /* @__PURE__ */ jsx(Form.Item, { noStyle: true, dependencies: ["type", "xAxis"], children: ({ getFieldValue }) => isTimeField(getFieldValue("xAxis")) ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Form.Item, { name: "timeGroupInterval", label: t("chart.t39"), children: /* @__PURE__ */ jsx(Select, { options: TimeGroupIntervalOption }) }) }) : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Form.Item, { name: "displayRange", label: t("displayRange.title"), children: /* @__PURE__ */ jsx(Select, { options: DisplayRangeOption }) }) }) }),
288
+ /* @__PURE__ */ jsx(Form.Item, { noStyle: true, dependencies: ["type", "xAxis"], children: ({ getFieldValue }) => isTimeField(getFieldValue("xAxis")) ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Form.Item, { name: "timeGroupInterval", label: t("chart.t39"), children: /* @__PURE__ */ jsx(
289
+ Select,
290
+ {
291
+ options: TimeGroupIntervalOption,
292
+ getPopupContainer: (trigger) => trigger.parentElement || document.body
293
+ }
294
+ ) }) }) : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(Form.Item, { name: "displayRange", label: t("displayRange.title"), children: /* @__PURE__ */ jsx(
295
+ Select,
296
+ {
297
+ options: DisplayRangeOption,
298
+ getPopupContainer: (trigger) => trigger.parentElement || document.body
299
+ }
300
+ ) }) }) }),
270
301
  /* @__PURE__ */ jsx(Form.Item, { dependencies: ["type"], noStyle: true, children: ({ getFieldValue }) => {
271
302
  var _a;
272
303
  return !((_a = getFieldValue("type")) == null ? void 0 : _a.includes("pie")) ? /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -286,7 +317,13 @@ const CustomData = ({
286
317
  {
287
318
  label: (type == null ? void 0 : type.includes("pie")) ? t("chart.t19") : t("chart.t20"),
288
319
  name: "yAxis",
289
- children: /* @__PURE__ */ jsx(Select, { options: getYAxisOptions(dataSourceId) })
320
+ children: /* @__PURE__ */ jsx(
321
+ Select,
322
+ {
323
+ options: getYAxisOptions(dataSourceId),
324
+ getPopupContainer: (trigger) => trigger.parentElement || document.body
325
+ }
326
+ )
290
327
  }
291
328
  ),
292
329
  /* @__PURE__ */ jsx(Form.Item, { dependencies: ["yAxis", "type", "isGroup"], noStyle: true, children: ({ getFieldValue }) => getFieldValue("yAxis") === "fieldValue" ? /* @__PURE__ */ jsx(Form.Item, { label: t("selectField"), children: /* @__PURE__ */ jsx(
@@ -302,7 +339,8 @@ const CustomData = ({
302
339
  {
303
340
  style: { width: "100px" },
304
341
  options: yAxisFieldOption,
305
- dropdownStyle: { width: 250 }
342
+ dropdownStyle: { width: 250 },
343
+ getPopupContainer: (trigger) => trigger.parentElement || document.body
306
344
  }
307
345
  ) }),
308
346
  /* @__PURE__ */ jsx(Form.Item, { name: "yAxisFieldType", noStyle: true, children: /* @__PURE__ */ jsx(
@@ -310,6 +348,7 @@ const CustomData = ({
310
348
  {
311
349
  style: { width: "100px" },
312
350
  dropdownStyle: { width: 136 },
351
+ getPopupContainer: (trigger) => trigger.parentElement || document.body,
313
352
  options: [
314
353
  {
315
354
  value: "sum",
@@ -337,7 +376,13 @@ const CustomData = ({
337
376
  var _a;
338
377
  return !((_a = getFieldValue("type")) == null ? void 0 : _a.includes("pie")) ? /* @__PURE__ */ jsxs(Fragment, { children: [
339
378
  /* @__PURE__ */ jsx(Form.Item, { name: "isGroup", valuePropName: "checked", noStyle: true, children: /* @__PURE__ */ jsx(Checkbox, { style: { marginBottom: "5px" }, children: t("chart.t38") }) }),
340
- /* @__PURE__ */ jsx(Form.Item, { dependencies: ["isGroup"], noStyle: true, children: ({ getFieldValue: getFieldValue2 }) => getFieldValue2("isGroup") ? /* @__PURE__ */ jsx(Form.Item, { name: "groupField", children: /* @__PURE__ */ jsx(Select, { options: groupFieldOption }) }) : null }),
379
+ /* @__PURE__ */ jsx(Form.Item, { dependencies: ["isGroup"], noStyle: true, children: ({ getFieldValue: getFieldValue2 }) => getFieldValue2("isGroup") ? /* @__PURE__ */ jsx(Form.Item, { name: "groupField", children: /* @__PURE__ */ jsx(
380
+ Select,
381
+ {
382
+ options: groupFieldOption,
383
+ getPopupContainer: (trigger) => trigger.parentElement || document.body
384
+ }
385
+ ) }) : null }),
341
386
  /* @__PURE__ */ jsx(Spin, { spinning: isGetCombinationGroupOptionsLoading, children: /* @__PURE__ */ jsx(
342
387
  Form.Item,
343
388
  {
@@ -1 +1 @@
1
- {"version":3,"file":"custome-data.js","sources":["../../../../../packages/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-data.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport clsx from 'clsx'\nimport { Button, Checkbox, Divider, Flex, Form, message, Radio, Select, Space, Spin } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useDebounceFn, useMemoizedFn, useRequest } from 'ahooks'\nimport { getTransformValue } from '@platox/pivot-table/utils'\nimport { useAppContext } from '../../../context'\nimport { EnumDataApi } from '../../../types'\nimport { ModuleData } from '../../module-content'\nimport {\n filterConditionBlockByDisabledField,\n mapConditionsToPostgrest,\n} from '../../module-content/utils'\nimport ConditionModal from '../components/condition-modal'\nimport CombinationChartOptionPicker from './components/CombinationChartOptionPicker'\nimport GroupFieldConfigPicker from './components/GroupFieldConfigPicker'\nimport { useChartTypeOption, useDisplayRangeOption, useTimeGroupIntervalOption } from './config'\nimport styles from './index.module.less'\nimport { ChartCustomDataType, ChartType } from './interface'\n\nconst componentName = 'chart-modal'\n\ninterface CustomDataProps {\n selectModuleData?: ModuleData\n onAllValuesChange?: ((values: any) => void) | undefined\n enumDataApi?: EnumDataApi\n}\nconst CustomData: React.FC<CustomDataProps> = ({\n selectModuleData,\n onAllValuesChange,\n enumDataApi,\n}) => {\n const { globalData } = useAppContext()\n const { t } = useTranslation()\n const containerRef = useRef<HTMLDivElement>(null)\n\n const ChartTypeOption = useChartTypeOption()\n const TimeGroupIntervalOption = useTimeGroupIntervalOption()\n const DisplayRangeOption = useDisplayRangeOption()\n\n /* ============================== split =============================== */\n const initialValues = {\n dataSourceId: '',\n yAxis: 'recordTotal',\n chartOptions: ['legend', 'label', 'axis', 'splitLine'],\n sortField: 'xAxis',\n sortOrder: 'asc',\n timeGroupInterval: 'day',\n displayRange: 'ALL',\n yAxisFieldConfig: {\n chartType: ChartType.ChartBar,\n yAxisPos: 'left',\n },\n }\n const [form] = Form.useForm()\n\n const type = Form.useWatch('type', form)\n const dataSourceId = Form.useWatch('dataSourceId', form)\n const isGroup = Form.useWatch('isGroup', form)\n const xAxis = Form.useWatch('xAxis', form)\n const yAxisField = Form.useWatch('yAxisField', form)\n const groupField = Form.useWatch('groupField', form)\n\n /* ============================== split =============================== */\n const getFieldOptions = useMemoizedFn((dataSourceId?: string) => {\n const list = globalData?.sourceData?.find(item => item.value === dataSourceId)?.fields ?? []\n return list\n })\n\n const getYAxisOptions = useMemoizedFn((dataSourceId?: string) => {\n const baseOptions = [\n {\n value: 'recordTotal',\n label: t('statisticstRecordNum'),\n },\n {\n value: 'fieldValue',\n label: t('statisticstFieldVal'),\n },\n ]\n\n // 从后端配置中获取允许的 Y 轴选项\n const sourceConfig = globalData?.sourceData?.find(item => item.value === dataSourceId)\n const allowedOptions = sourceConfig?.chart_config?.allowed_y_axis_options\n\n // 如果配置了允许的选项,则过滤\n if (allowedOptions && allowedOptions.length > 0) {\n return baseOptions.filter(opt => allowedOptions.includes(opt.value))\n }\n\n // 默认返回所有选项(向后兼容)\n return baseOptions\n })\n\n const { fieldOptions, xAxisFieldOption, yAxisFieldOption, groupFieldOption } = useMemo(() => {\n const fieldOptions = getFieldOptions(dataSourceId)\n\n const xAxisFieldOption = fieldOptions.filter(item => {\n let hasPicked = [yAxisField, groupField].includes(item.value)\n return !hasPicked\n })\n\n const yAxisFieldOption = fieldOptions.filter(item => {\n let isNumberField = item.type === 'int' || item.type === 'float'\n let hasPicked = [xAxis, groupField].includes(item.value)\n return isNumberField && !hasPicked\n })\n\n const groupFieldOption = fieldOptions.filter(item => {\n let hasPicked = [xAxis, yAxisField].includes(item.value)\n return !hasPicked\n })\n\n return {\n fieldOptions,\n xAxisFieldOption,\n yAxisFieldOption,\n groupFieldOption,\n }\n }, [dataSourceId, xAxis, yAxisField, groupField])\n\n const isTimeField = useMemoizedFn(fieldName => {\n return fieldOptions.find(item => item.value === fieldName)?.type === 'timestamp'\n })\n\n /* ============================== split =============================== */\n const [isModalOpen, setIsModalOpen] = useState(false)\n const conditionDataRef = useRef()\n const [conditionData, setConditionData] = useState<any>({\n conditionList: [],\n conditionType: 'all',\n })\n const [conditionDataNum, setConditionDataNum] = useState(0)\n\n const setCondition = (val: any) => {\n setConditionData(val)\n conditionDataRef.current = val\n setConditionDataNum(val?.conditionList?.length || 0)\n }\n\n /* ============================== 获取分组聚合的字段数据 =============================== */\n const { service } = useAppContext()\n const { data: CombinationGroupOptions, loading: isGetCombinationGroupOptionsLoading } =\n useRequest(\n async () => {\n if (isGroup && type === ChartType['chartCombination'] && !!groupField) {\n const newGroupField = groupField === 'tags' ? 'tag' : groupField\n let queryString = `select=${newGroupField}`\n if (conditionData?.conditionList?.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionData)\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n let res = await service?.moduleDataApi?.({\n id: dataSourceId,\n query: queryString,\n })\n\n //获取分组聚合的字段数据\n let options = res?.data?.map((item: any) => {\n return getTransformValue({\n fieldOptions,\n val: item[newGroupField],\n field: newGroupField,\n fieldMap: globalData?.fieldMap,\n })\n })\n return [...new Set(options)]\n } else {\n return []\n }\n },\n {\n refreshDeps: [type, isGroup, groupField, conditionData, dataSourceId],\n }\n )\n\n /* ============================== split =============================== */\n // debounce 2个作用 一个默认值的设置会延后,另一个是防止多次请求\n const { run: debounceSubmit } = useDebounceFn(\n useMemoizedFn(() => {\n onAllValuesChange?.({\n ...initialValues,\n ...form.getFieldsValue(),\n conditionData: conditionDataRef.current,\n })\n }),\n {\n wait: 100,\n }\n )\n const handleValuesChange = useMemoizedFn((changedValues, allValues) => {\n if (changedValues.dataSourceId) {\n const newFieldOptions = getFieldOptions(changedValues.dataSourceId)\n const yAxisOptions = getYAxisOptions(changedValues.dataSourceId)\n // 如果只有一个选项且是 fieldValue,则默认选中它\n const defaultYAxis =\n yAxisOptions.length === 1 && yAxisOptions[0].value === 'fieldValue'\n ? 'fieldValue'\n : 'recordTotal'\n\n form.setFieldsValue({\n xAxis: newFieldOptions?.[0]?.value,\n yAxis: defaultYAxis,\n isGroup: false,\n })\n setCondition({\n conditionList: [],\n conditionType: 'all',\n })\n }\n if (changedValues.xAxis) {\n form.setFieldsValue(\n isTimeField(changedValues.xAxis)\n ? {\n timeGroupInterval: initialValues?.timeGroupInterval,\n }\n : {\n displayRange: initialValues?.displayRange,\n }\n )\n }\n\n if (changedValues.yAxis) {\n let value = changedValues.yAxis\n form.setFieldsValue({\n yAxisField: value === 'fieldValue' ? yAxisFieldOption?.[0]?.value : '',\n yAxisFieldType: 'sum',\n })\n }\n\n if (changedValues.isGroup) {\n form.setFieldsValue({\n groupField: groupFieldOption?.[0]?.value,\n })\n }\n\n debounceSubmit()\n })\n\n useEffect(() => {\n if (selectModuleData?.customData) {\n const customData = selectModuleData.customData\n form.setFieldsValue(customData)\n } else {\n const currSourceData = globalData?.sourceData?.[0]\n const list = getFieldOptions(currSourceData?.value) || []\n form.setFieldsValue({\n ...initialValues,\n dataSourceId: currSourceData?.value,\n type: selectModuleData?.type,\n xAxis: list?.[0]?.value,\n })\n }\n setCondition(selectModuleData?.customData?.conditionData)\n debounceSubmit()\n }, [selectModuleData, globalData])\n\n return (\n <div\n style={{ height: '50vh', overflowX: 'auto' }}\n className={clsx(styles[`${componentName}`])}\n ref={containerRef}\n >\n <Form\n form={form}\n name=\"customData\"\n layout=\"vertical\"\n onValuesChange={handleValuesChange}\n initialValues={initialValues}\n >\n <Form.Item<ChartCustomDataType> label={t('dataSource')} name=\"dataSourceId\">\n <Select options={globalData?.sourceData ?? []} />\n </Form.Item>\n\n <Form.Item<ChartCustomDataType> label={t('dataRange')}>\n <Button\n style={{ marginLeft: '-15px' }}\n onClick={() => {\n setIsModalOpen(true)\n }}\n type=\"link\"\n >\n {t('filterData')}\n </Button>\n {conditionDataNum > 0 ? `${t('selectNcondition', { n: conditionDataNum })}` : null}\n </Form.Item>\n\n <Form.Item<ChartCustomDataType> label={t('chart.t1')} name=\"type\">\n <Select\n options={ChartTypeOption}\n optionRender={option => (\n <Flex align=\"center\">\n <span role=\"img\" style={{ marginTop: '5px' }} aria-label={option.data.label}>\n {option.data.icon}\n </span>\n {option.data.label}\n </Flex>\n )}\n />\n </Form.Item>\n\n <Form.Item name=\"chartOptions\" label={t('chart.t12')}>\n <Checkbox.Group>\n <Checkbox value=\"legend\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t13')}\n </Checkbox>\n\n <Checkbox value=\"label\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t14')}\n </Checkbox>\n\n {!['chart-pie', 'chart-pie-circular'].includes(type) ? (\n <>\n <Checkbox value=\"axis\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t15')}\n </Checkbox>\n <Checkbox value=\"splitLine\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t16')}\n </Checkbox>\n </>\n ) : null}\n </Checkbox.Group>\n </Form.Item>\n\n <Divider style={{ borderColor: '#e2e2e2', marginTop: 0 }} />\n\n <Form.Item<ChartCustomDataType>\n label={type?.includes('pie') ? t('chart.t17') : t('chart.t18')}\n name=\"xAxis\"\n >\n <Select options={xAxisFieldOption} />\n </Form.Item>\n\n {/* 时间分组 */}\n <Form.Item noStyle dependencies={['type', 'xAxis']}>\n {({ getFieldValue }) =>\n isTimeField(getFieldValue('xAxis')) ? (\n <>\n <Form.Item<ChartCustomDataType> name=\"timeGroupInterval\" label={t('chart.t39')}>\n <Select options={TimeGroupIntervalOption} />\n </Form.Item>\n </>\n ) : (\n <>\n <Form.Item<ChartCustomDataType> name=\"displayRange\" label={t('displayRange.title')}>\n <Select options={DisplayRangeOption} />\n </Form.Item>\n </>\n )\n }\n </Form.Item>\n\n <Form.Item dependencies={['type']} noStyle>\n {({ getFieldValue }) =>\n !getFieldValue('type')?.includes('pie') ? (\n <>\n <Form.Item<ChartCustomDataType> name=\"sortField\" label={t('chart.t31')}>\n <Radio.Group>\n <Radio value=\"xAxis\">{t('chart.t32')}</Radio>\n <Radio value=\"yAxisField\">{t('chart.t33')}</Radio>\n <Radio value=\"recordValue\">{t('chart.t34')}</Radio>\n </Radio.Group>\n </Form.Item>\n <Form.Item<ChartCustomDataType> name=\"sortOrder\" label={t('chart.t35')}>\n <Radio.Group>\n <Radio value=\"asc\">{t('chart.t36')}</Radio>\n <Radio value=\"desc\">{t('chart.t37')}</Radio>\n </Radio.Group>\n </Form.Item>\n </>\n ) : null\n }\n </Form.Item>\n\n <Form.Item<ChartCustomDataType>\n label={type?.includes('pie') ? t('chart.t19') : t('chart.t20')}\n name=\"yAxis\"\n >\n <Select options={getYAxisOptions(dataSourceId)} />\n </Form.Item>\n\n <Form.Item dependencies={['yAxis', 'type', 'isGroup']} noStyle>\n {({ getFieldValue }) =>\n getFieldValue('yAxis') === 'fieldValue' ? (\n <Form.Item label={t('selectField')}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n <Space.Compact>\n <Form.Item noStyle name=\"yAxisField\">\n <Select\n style={{ width: '100px' }}\n options={yAxisFieldOption}\n dropdownStyle={{ width: 250 }}\n />\n </Form.Item>\n <Form.Item name=\"yAxisFieldType\" noStyle>\n <Select\n style={{ width: '100px' }}\n dropdownStyle={{ width: 136 }}\n options={[\n {\n value: 'sum',\n label: t('sumVal'),\n },\n {\n value: 'max',\n label: t('maxVal'),\n },\n {\n value: 'min',\n label: t('minVal'),\n },\n {\n value: 'avg',\n label: t('averageVal'),\n },\n ]}\n />\n </Form.Item>\n </Space.Compact>\n\n {/* <Form.Item\n noStyle\n name=\"yAxisFieldConfig\"\n dependencies={['type', 'isGroup']}\n hidden={\n !(\n getFieldValue('type') === ChartType['chartCombination'] &&\n !getFieldValue('isGroup')\n )\n }\n >\n <CombinationChartOptionPicker />\n </Form.Item> */}\n </div>\n </Form.Item>\n ) : null\n }\n </Form.Item>\n\n <Form.Item dependencies={['type', 'isGroup']} noStyle>\n {({ getFieldValue }) =>\n !getFieldValue('type')?.includes('pie') ? (\n <>\n <Form.Item<ChartCustomDataType> name=\"isGroup\" valuePropName=\"checked\" noStyle>\n <Checkbox style={{ marginBottom: '5px' }}>{t('chart.t38')}</Checkbox>\n </Form.Item>\n <Form.Item dependencies={['isGroup']} noStyle>\n {({ getFieldValue }) =>\n getFieldValue('isGroup') ? (\n <Form.Item<ChartCustomDataType> name=\"groupField\">\n <Select options={groupFieldOption} />\n </Form.Item>\n ) : null\n }\n </Form.Item>\n\n <Spin spinning={isGetCombinationGroupOptionsLoading}>\n <Form.Item<ChartCustomDataType>\n name=\"groupFieldConfig\"\n label={t('chart.groupFieldConfig')}\n hidden={\n !(\n getFieldValue('type') === ChartType['chartCombination'] &&\n getFieldValue('isGroup')\n )\n }\n >\n <GroupFieldConfigPicker options={CombinationGroupOptions} />\n </Form.Item>\n </Spin>\n </>\n ) : null\n }\n </Form.Item>\n </Form>\n <ConditionModal\n open={isModalOpen}\n value={conditionData}\n fieldOptions={fieldOptions}\n enumDataApi={enumDataApi}\n onClose={() => {\n setIsModalOpen(false)\n }}\n onOk={val => {\n setCondition(val)\n debounceSubmit()\n }}\n />\n </div>\n )\n}\nexport default CustomData\n"],"names":["dataSourceId","fieldOptions","xAxisFieldOption","yAxisFieldOption","groupFieldOption","getFieldValue"],"mappings":"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"}
1
+ {"version":3,"file":"custome-data.js","sources":["../../../../../packages/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-data.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport clsx from 'clsx'\nimport { Button, Checkbox, Divider, Flex, Form, message, Radio, Select, Space, Spin } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useDebounceFn, useMemoizedFn, useRequest } from 'ahooks'\nimport { getTransformValue } from '@platox/pivot-table/utils'\nimport { useAppContext } from '../../../context'\nimport { EnumDataApi } from '../../../types'\nimport { ModuleData } from '../../module-content'\nimport {\n filterConditionBlockByDisabledField,\n mapConditionsToPostgrest,\n} from '../../module-content/utils'\nimport ConditionModal from '../components/condition-modal'\nimport CombinationChartOptionPicker from './components/CombinationChartOptionPicker'\nimport GroupFieldConfigPicker from './components/GroupFieldConfigPicker'\nimport { useChartTypeOption, useDisplayRangeOption, useTimeGroupIntervalOption } from './config'\nimport styles from './index.module.less'\nimport { ChartCustomDataType, ChartType } from './interface'\n\nconst componentName = 'chart-modal'\n\ninterface CustomDataProps {\n selectModuleData?: ModuleData\n onAllValuesChange?: ((values: any) => void) | undefined\n enumDataApi?: EnumDataApi\n}\nconst CustomData: React.FC<CustomDataProps> = ({\n selectModuleData,\n onAllValuesChange,\n enumDataApi,\n}) => {\n const { globalData } = useAppContext()\n const { t } = useTranslation()\n const containerRef = useRef<HTMLDivElement>(null)\n\n const ChartTypeOption = useChartTypeOption()\n const TimeGroupIntervalOption = useTimeGroupIntervalOption()\n const DisplayRangeOption = useDisplayRangeOption()\n\n /* ============================== split =============================== */\n const initialValues = {\n dataSourceId: '',\n yAxis: 'recordTotal',\n chartOptions: ['legend', 'label', 'axis', 'splitLine'],\n sortField: 'xAxis',\n sortOrder: 'asc',\n timeGroupInterval: 'day',\n displayRange: 'ALL',\n yAxisFieldConfig: {\n chartType: ChartType.ChartBar,\n yAxisPos: 'left',\n },\n }\n const [form] = Form.useForm()\n\n const type = Form.useWatch('type', form)\n const dataSourceId = Form.useWatch('dataSourceId', form)\n const isGroup = Form.useWatch('isGroup', form)\n const xAxis = Form.useWatch('xAxis', form)\n const yAxisField = Form.useWatch('yAxisField', form)\n const groupField = Form.useWatch('groupField', form)\n\n /* ============================== split =============================== */\n const getFieldOptions = useMemoizedFn((dataSourceId?: string) => {\n const list = globalData?.sourceData?.find(item => item.value === dataSourceId)?.fields ?? []\n return list\n })\n\n const getYAxisOptions = useMemoizedFn((dataSourceId?: string) => {\n const baseOptions = [\n {\n value: 'recordTotal',\n label: t('statisticstRecordNum'),\n },\n {\n value: 'fieldValue',\n label: t('statisticstFieldVal'),\n },\n ]\n\n // 从后端配置中获取允许的 Y 轴选项\n const sourceConfig = globalData?.sourceData?.find(item => item.value === dataSourceId)\n const allowedOptions = sourceConfig?.chart_config?.allowed_y_axis_options\n\n // 如果配置了允许的选项,则过滤\n if (allowedOptions && allowedOptions.length > 0) {\n return baseOptions.filter(opt => allowedOptions.includes(opt.value))\n }\n\n // 默认返回所有选项(向后兼容)\n return baseOptions\n })\n\n const { fieldOptions, xAxisFieldOption, yAxisFieldOption, groupFieldOption } = useMemo(() => {\n const fieldOptions = getFieldOptions(dataSourceId)\n\n const xAxisFieldOption = fieldOptions.filter(item => {\n let hasPicked = [yAxisField, groupField].includes(item.value)\n return !hasPicked\n })\n\n const yAxisFieldOption = fieldOptions.filter(item => {\n let isNumberField = item.type === 'int' || item.type === 'float'\n let hasPicked = [xAxis, groupField].includes(item.value)\n return isNumberField && !hasPicked\n })\n\n const groupFieldOption = fieldOptions.filter(item => {\n let hasPicked = [xAxis, yAxisField].includes(item.value)\n return !hasPicked\n })\n\n return {\n fieldOptions,\n xAxisFieldOption,\n yAxisFieldOption,\n groupFieldOption,\n }\n }, [dataSourceId, xAxis, yAxisField, groupField])\n\n const isTimeField = useMemoizedFn(fieldName => {\n return fieldOptions.find(item => item.value === fieldName)?.type === 'timestamp'\n })\n\n /* ============================== split =============================== */\n const [isModalOpen, setIsModalOpen] = useState(false)\n const conditionDataRef = useRef()\n const [conditionData, setConditionData] = useState<any>({\n conditionList: [],\n conditionType: 'all',\n })\n const [conditionDataNum, setConditionDataNum] = useState(0)\n\n const setCondition = (val: any) => {\n setConditionData(val)\n conditionDataRef.current = val\n setConditionDataNum(val?.conditionList?.length || 0)\n }\n\n /* ============================== 获取分组聚合的字段数据 =============================== */\n const { service } = useAppContext()\n const { data: CombinationGroupOptions, loading: isGetCombinationGroupOptionsLoading } =\n useRequest(\n async () => {\n if (isGroup && type === ChartType['chartCombination'] && !!groupField) {\n const newGroupField = groupField === 'tags' ? 'tag' : groupField\n let queryString = `select=${newGroupField}`\n if (conditionData?.conditionList?.length > 0) {\n let DSLStr = mapConditionsToPostgrest(conditionData)\n queryString += !!DSLStr ? `&${DSLStr}` : ''\n }\n let res = await service?.moduleDataApi?.({\n id: dataSourceId,\n query: queryString,\n })\n\n //获取分组聚合的字段数据\n let options = res?.data?.map((item: any) => {\n return getTransformValue({\n fieldOptions,\n val: item[newGroupField],\n field: newGroupField,\n fieldMap: globalData?.fieldMap,\n })\n })\n return [...new Set(options)]\n } else {\n return []\n }\n },\n {\n refreshDeps: [type, isGroup, groupField, conditionData, dataSourceId],\n }\n )\n\n /* ============================== split =============================== */\n // debounce 2个作用 一个默认值的设置会延后,另一个是防止多次请求\n const { run: debounceSubmit } = useDebounceFn(\n useMemoizedFn(() => {\n onAllValuesChange?.({\n ...initialValues,\n ...form.getFieldsValue(),\n conditionData: conditionDataRef.current,\n })\n }),\n {\n wait: 100,\n }\n )\n const handleValuesChange = useMemoizedFn((changedValues, allValues) => {\n if (changedValues.dataSourceId) {\n const newFieldOptions = getFieldOptions(changedValues.dataSourceId)\n const yAxisOptions = getYAxisOptions(changedValues.dataSourceId)\n // 如果只有一个选项且是 fieldValue,则默认选中它\n const defaultYAxis =\n yAxisOptions.length === 1 && yAxisOptions[0].value === 'fieldValue'\n ? 'fieldValue'\n : 'recordTotal'\n\n // 获取新数据源的数字字段(用于 yAxisField)\n const newYAxisFieldOptions = newFieldOptions.filter(item => {\n return item.type === 'int' || item.type === 'float'\n })\n\n form.setFieldsValue({\n xAxis: newFieldOptions?.[0]?.value,\n yAxis: defaultYAxis,\n yAxisField: defaultYAxis === 'fieldValue' ? newYAxisFieldOptions?.[0]?.value : '',\n yAxisFieldType: defaultYAxis === 'fieldValue' ? 'sum' : undefined,\n isGroup: false,\n groupField: undefined,\n })\n setCondition({\n conditionList: [],\n conditionType: 'all',\n })\n }\n if (changedValues.xAxis) {\n form.setFieldsValue(\n isTimeField(changedValues.xAxis)\n ? {\n timeGroupInterval: initialValues?.timeGroupInterval,\n }\n : {\n displayRange: initialValues?.displayRange,\n }\n )\n }\n\n if (changedValues.yAxis) {\n let value = changedValues.yAxis\n form.setFieldsValue({\n yAxisField: value === 'fieldValue' ? yAxisFieldOption?.[0]?.value : '',\n yAxisFieldType: 'sum',\n })\n }\n\n if (changedValues.isGroup) {\n form.setFieldsValue({\n groupField: groupFieldOption?.[0]?.value,\n })\n }\n\n debounceSubmit()\n })\n\n useEffect(() => {\n if (selectModuleData?.customData) {\n const customData = selectModuleData.customData\n form.setFieldsValue(customData)\n } else {\n const currSourceData = globalData?.sourceData?.[0]\n const list = getFieldOptions(currSourceData?.value) || []\n form.setFieldsValue({\n ...initialValues,\n dataSourceId: currSourceData?.value,\n type: selectModuleData?.type,\n xAxis: list?.[0]?.value,\n })\n }\n setCondition(selectModuleData?.customData?.conditionData)\n debounceSubmit()\n }, [selectModuleData, globalData])\n\n return (\n <div\n style={{ height: '50vh', overflowX: 'auto' }}\n className={clsx(styles[`${componentName}`])}\n ref={containerRef}\n >\n <Form\n form={form}\n name=\"customData\"\n layout=\"vertical\"\n onValuesChange={handleValuesChange}\n initialValues={initialValues}\n >\n <Form.Item<ChartCustomDataType> label={t('dataSource')} name=\"dataSourceId\">\n <Select\n options={globalData?.sourceData ?? []}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n />\n </Form.Item>\n\n <Form.Item<ChartCustomDataType> label={t('dataRange')}>\n <Button\n style={{ marginLeft: '-15px' }}\n onClick={() => {\n setIsModalOpen(true)\n }}\n type=\"link\"\n >\n {t('filterData')}\n </Button>\n {conditionDataNum > 0 ? `${t('selectNcondition', { n: conditionDataNum })}` : null}\n </Form.Item>\n\n <Form.Item<ChartCustomDataType> label={t('chart.t1')} name=\"type\">\n <Select\n options={ChartTypeOption}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n optionRender={option => (\n <Flex align=\"center\">\n <span role=\"img\" style={{ marginTop: '5px' }} aria-label={option.data.label}>\n {option.data.icon}\n </span>\n {option.data.label}\n </Flex>\n )}\n />\n </Form.Item>\n\n <Form.Item name=\"chartOptions\" label={t('chart.t12')}>\n <Checkbox.Group>\n <Checkbox value=\"legend\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t13')}\n </Checkbox>\n\n <Checkbox value=\"label\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t14')}\n </Checkbox>\n\n {!['chart-pie', 'chart-pie-circular'].includes(type) ? (\n <>\n <Checkbox value=\"axis\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t15')}\n </Checkbox>\n <Checkbox value=\"splitLine\" className=\"ow-checkbox\" style={{ lineHeight: '32px' }}>\n {t('chart.t16')}\n </Checkbox>\n </>\n ) : null}\n </Checkbox.Group>\n </Form.Item>\n\n <Divider style={{ borderColor: '#e2e2e2', marginTop: 0 }} />\n\n <Form.Item<ChartCustomDataType>\n label={type?.includes('pie') ? t('chart.t17') : t('chart.t18')}\n name=\"xAxis\"\n >\n <Select\n options={xAxisFieldOption}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n />\n </Form.Item>\n\n {/* 时间分组 */}\n <Form.Item noStyle dependencies={['type', 'xAxis']}>\n {({ getFieldValue }) =>\n isTimeField(getFieldValue('xAxis')) ? (\n <>\n <Form.Item<ChartCustomDataType> name=\"timeGroupInterval\" label={t('chart.t39')}>\n <Select\n options={TimeGroupIntervalOption}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n />\n </Form.Item>\n </>\n ) : (\n <>\n <Form.Item<ChartCustomDataType> name=\"displayRange\" label={t('displayRange.title')}>\n <Select\n options={DisplayRangeOption}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n />\n </Form.Item>\n </>\n )\n }\n </Form.Item>\n\n <Form.Item dependencies={['type']} noStyle>\n {({ getFieldValue }) =>\n !getFieldValue('type')?.includes('pie') ? (\n <>\n <Form.Item<ChartCustomDataType> name=\"sortField\" label={t('chart.t31')}>\n <Radio.Group>\n <Radio value=\"xAxis\">{t('chart.t32')}</Radio>\n <Radio value=\"yAxisField\">{t('chart.t33')}</Radio>\n <Radio value=\"recordValue\">{t('chart.t34')}</Radio>\n </Radio.Group>\n </Form.Item>\n <Form.Item<ChartCustomDataType> name=\"sortOrder\" label={t('chart.t35')}>\n <Radio.Group>\n <Radio value=\"asc\">{t('chart.t36')}</Radio>\n <Radio value=\"desc\">{t('chart.t37')}</Radio>\n </Radio.Group>\n </Form.Item>\n </>\n ) : null\n }\n </Form.Item>\n\n <Form.Item<ChartCustomDataType>\n label={type?.includes('pie') ? t('chart.t19') : t('chart.t20')}\n name=\"yAxis\"\n >\n <Select\n options={getYAxisOptions(dataSourceId)}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n />\n </Form.Item>\n\n <Form.Item dependencies={['yAxis', 'type', 'isGroup']} noStyle>\n {({ getFieldValue }) =>\n getFieldValue('yAxis') === 'fieldValue' ? (\n <Form.Item label={t('selectField')}>\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n }}\n >\n <Space.Compact>\n <Form.Item noStyle name=\"yAxisField\">\n <Select\n style={{ width: '100px' }}\n options={yAxisFieldOption}\n dropdownStyle={{ width: 250 }}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n />\n </Form.Item>\n <Form.Item name=\"yAxisFieldType\" noStyle>\n <Select\n style={{ width: '100px' }}\n dropdownStyle={{ width: 136 }}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n options={[\n {\n value: 'sum',\n label: t('sumVal'),\n },\n {\n value: 'max',\n label: t('maxVal'),\n },\n {\n value: 'min',\n label: t('minVal'),\n },\n {\n value: 'avg',\n label: t('averageVal'),\n },\n ]}\n />\n </Form.Item>\n </Space.Compact>\n\n {/* <Form.Item\n noStyle\n name=\"yAxisFieldConfig\"\n dependencies={['type', 'isGroup']}\n hidden={\n !(\n getFieldValue('type') === ChartType['chartCombination'] &&\n !getFieldValue('isGroup')\n )\n }\n >\n <CombinationChartOptionPicker />\n </Form.Item> */}\n </div>\n </Form.Item>\n ) : null\n }\n </Form.Item>\n\n <Form.Item dependencies={['type', 'isGroup']} noStyle>\n {({ getFieldValue }) =>\n !getFieldValue('type')?.includes('pie') ? (\n <>\n <Form.Item<ChartCustomDataType> name=\"isGroup\" valuePropName=\"checked\" noStyle>\n <Checkbox style={{ marginBottom: '5px' }}>{t('chart.t38')}</Checkbox>\n </Form.Item>\n <Form.Item dependencies={['isGroup']} noStyle>\n {({ getFieldValue }) =>\n getFieldValue('isGroup') ? (\n <Form.Item<ChartCustomDataType> name=\"groupField\">\n <Select\n options={groupFieldOption}\n getPopupContainer={trigger => trigger.parentElement || document.body}\n />\n </Form.Item>\n ) : null\n }\n </Form.Item>\n\n <Spin spinning={isGetCombinationGroupOptionsLoading}>\n <Form.Item<ChartCustomDataType>\n name=\"groupFieldConfig\"\n label={t('chart.groupFieldConfig')}\n hidden={\n !(\n getFieldValue('type') === ChartType['chartCombination'] &&\n getFieldValue('isGroup')\n )\n }\n >\n <GroupFieldConfigPicker options={CombinationGroupOptions} />\n </Form.Item>\n </Spin>\n </>\n ) : null\n }\n </Form.Item>\n </Form>\n <ConditionModal\n open={isModalOpen}\n value={conditionData}\n fieldOptions={fieldOptions}\n enumDataApi={enumDataApi}\n onClose={() => {\n setIsModalOpen(false)\n }}\n onOk={val => {\n setCondition(val)\n debounceSubmit()\n }}\n />\n </div>\n )\n}\nexport default CustomData\n"],"names":["dataSourceId","fieldOptions","xAxisFieldOption","yAxisFieldOption","groupFieldOption","getFieldValue"],"mappings":";;;;;;;;;;;;;;AAqBA,MAAM,gBAAgB;AAOtB,MAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,WAAW,IAAI,cAAc;AAC/B,QAAA,EAAE,EAAE,IAAI,eAAe;AACvB,QAAA,eAAe,OAAuB,IAAI;AAEhD,QAAM,kBAAkB,mBAAmB;AAC3C,QAAM,0BAA0B,2BAA2B;AAC3D,QAAM,qBAAqB,sBAAsB;AAGjD,QAAM,gBAAgB;AAAA,IACpB,cAAc;AAAA,IACd,OAAO;AAAA,IACP,cAAc,CAAC,UAAU,SAAS,QAAQ,WAAW;AAAA,IACrD,WAAW;AAAA,IACX,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,kBAAkB;AAAA,MAChB,WAAW,UAAU;AAAA,MACrB,UAAU;AAAA,IAAA;AAAA,EAEd;AACA,QAAM,CAAC,IAAI,IAAI,KAAK,QAAQ;AAE5B,QAAM,OAAO,KAAK,SAAS,QAAQ,IAAI;AACvC,QAAM,eAAe,KAAK,SAAS,gBAAgB,IAAI;AACvD,QAAM,UAAU,KAAK,SAAS,WAAW,IAAI;AAC7C,QAAM,QAAQ,KAAK,SAAS,SAAS,IAAI;AACzC,QAAM,aAAa,KAAK,SAAS,cAAc,IAAI;AACnD,QAAM,aAAa,KAAK,SAAS,cAAc,IAAI;AAG7C,QAAA,kBAAkB,cAAc,CAACA,kBAA0B;;AACzD,UAAA,SAAO,oDAAY,eAAZ,mBAAwB,KAAK,CAAA,SAAQ,KAAK,UAAUA,mBAApD,mBAAmE,WAAU,CAAC;AACpF,WAAA;AAAA,EAAA,CACR;AAEK,QAAA,kBAAkB,cAAc,CAACA,kBAA0B;;AAC/D,UAAM,cAAc;AAAA,MAClB;AAAA,QACE,OAAO;AAAA,QACP,OAAO,EAAE,sBAAsB;AAAA,MACjC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,QACP,OAAO,EAAE,qBAAqB;AAAA,MAAA;AAAA,IAElC;AAGA,UAAM,gBAAe,8CAAY,eAAZ,mBAAwB,KAAK,CAAQ,SAAA,KAAK,UAAUA;AACnE,UAAA,kBAAiB,kDAAc,iBAAd,mBAA4B;AAG/C,QAAA,kBAAkB,eAAe,SAAS,GAAG;AAC/C,aAAO,YAAY,OAAO,CAAA,QAAO,eAAe,SAAS,IAAI,KAAK,CAAC;AAAA,IAAA;AAI9D,WAAA;AAAA,EAAA,CACR;AAED,QAAM,EAAE,cAAc,kBAAkB,kBAAkB,iBAAiB,IAAI,QAAQ,MAAM;AACrFC,UAAAA,gBAAe,gBAAgB,YAAY;AAE3CC,UAAAA,oBAAmBD,cAAa,OAAO,CAAQ,SAAA;AACnD,UAAI,YAAY,CAAC,YAAY,UAAU,EAAE,SAAS,KAAK,KAAK;AAC5D,aAAO,CAAC;AAAA,IAAA,CACT;AAEKE,UAAAA,oBAAmBF,cAAa,OAAO,CAAQ,SAAA;AACnD,UAAI,gBAAgB,KAAK,SAAS,SAAS,KAAK,SAAS;AACzD,UAAI,YAAY,CAAC,OAAO,UAAU,EAAE,SAAS,KAAK,KAAK;AACvD,aAAO,iBAAiB,CAAC;AAAA,IAAA,CAC1B;AAEKG,UAAAA,oBAAmBH,cAAa,OAAO,CAAQ,SAAA;AACnD,UAAI,YAAY,CAAC,OAAO,UAAU,EAAE,SAAS,KAAK,KAAK;AACvD,aAAO,CAAC;AAAA,IAAA,CACT;AAEM,WAAA;AAAA,MACL,cAAAA;AAAAA,MACA,kBAAAC;AAAAA,MACA,kBAAAC;AAAAA,MACA,kBAAAC;AAAAA,IACF;AAAA,KACC,CAAC,cAAc,OAAO,YAAY,UAAU,CAAC;AAE1C,QAAA,cAAc,cAAc,CAAa,cAAA;;AAC7C,aAAO,kBAAa,KAAK,CAAA,SAAQ,KAAK,UAAU,SAAS,MAAlD,mBAAqD,UAAS;AAAA,EAAA,CACtE;AAGD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,mBAAmB,OAAO;AAChC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAc;AAAA,IACtD,eAAe,CAAC;AAAA,IAChB,eAAe;AAAA,EAAA,CAChB;AACD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,CAAC;AAEpD,QAAA,eAAe,CAAC,QAAa;;AACjC,qBAAiB,GAAG;AACpB,qBAAiB,UAAU;AACP,0BAAA,gCAAK,kBAAL,mBAAoB,WAAU,CAAC;AAAA,EACrD;AAGM,QAAA,EAAE,QAAQ,IAAI,cAAc;AAClC,QAAM,EAAE,MAAM,yBAAyB,SAAS,oCAC9C,IAAA;AAAA,IACE,YAAY;;AACV,UAAI,WAAW,SAAS,UAAU,kBAAkB,KAAK,CAAC,CAAC,YAAY;AAC/D,cAAA,gBAAgB,eAAe,SAAS,QAAQ;AAClD,YAAA,cAAc,UAAU,aAAa;AACrC,cAAA,oDAAe,kBAAf,mBAA8B,UAAS,GAAG;AACxC,cAAA,SAAS,yBAAyB,aAAa;AACnD,yBAAe,CAAC,CAAC,SAAS,IAAI,MAAM,KAAK;AAAA,QAAA;AAEvC,YAAA,MAAM,QAAM,wCAAS,kBAAT,iCAAyB;AAAA,UACvC,IAAI;AAAA,UACJ,OAAO;AAAA,QAAA;AAIT,YAAI,WAAU,gCAAK,SAAL,mBAAW,IAAI,CAAC,SAAc;AAC1C,iBAAO,kBAAkB;AAAA,YACvB;AAAA,YACA,KAAK,KAAK,aAAa;AAAA,YACvB,OAAO;AAAA,YACP,UAAU,yCAAY;AAAA,UAAA,CACvB;AAAA,QAAA;AAEH,eAAO,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC;AAAA,MAAA,OACtB;AACL,eAAO,CAAC;AAAA,MAAA;AAAA,IAEZ;AAAA,IACA;AAAA,MACE,aAAa,CAAC,MAAM,SAAS,YAAY,eAAe,YAAY;AAAA,IAAA;AAAA,EAExE;AAII,QAAA,EAAE,KAAK,eAAA,IAAmB;AAAA,IAC9B,cAAc,MAAM;AACE,6DAAA;AAAA,QAClB,GAAG;AAAA,QACH,GAAG,KAAK,eAAe;AAAA,QACvB,eAAe,iBAAiB;AAAA,MAAA;AAAA,IACjC,CACF;AAAA,IACD;AAAA,MACE,MAAM;AAAA,IAAA;AAAA,EAEV;AACA,QAAM,qBAAqB,cAAc,CAAC,eAAe,cAAc;;AACrE,QAAI,cAAc,cAAc;AACxB,YAAA,kBAAkB,gBAAgB,cAAc,YAAY;AAC5D,YAAA,eAAe,gBAAgB,cAAc,YAAY;AAEzD,YAAA,eACJ,aAAa,WAAW,KAAK,aAAa,CAAC,EAAE,UAAU,eACnD,eACA;AAGA,YAAA,uBAAuB,gBAAgB,OAAO,CAAQ,SAAA;AAC1D,eAAO,KAAK,SAAS,SAAS,KAAK,SAAS;AAAA,MAAA,CAC7C;AAED,WAAK,eAAe;AAAA,QAClB,QAAO,wDAAkB,OAAlB,mBAAsB;AAAA,QAC7B,OAAO;AAAA,QACP,YAAY,iBAAiB,gBAAe,kEAAuB,OAAvB,mBAA2B,QAAQ;AAAA,QAC/E,gBAAgB,iBAAiB,eAAe,QAAQ;AAAA,QACxD,SAAS;AAAA,QACT,YAAY;AAAA,MAAA,CACb;AACY,mBAAA;AAAA,QACX,eAAe,CAAC;AAAA,QAChB,eAAe;AAAA,MAAA,CAChB;AAAA,IAAA;AAEH,QAAI,cAAc,OAAO;AAClB,WAAA;AAAA,QACH,YAAY,cAAc,KAAK,IAC3B;AAAA,UACA,mBAAmB,+CAAe;AAAA,QAAA,IAElC;AAAA,UACA,cAAc,+CAAe;AAAA,QAAA;AAAA,MAEnC;AAAA,IAAA;AAGF,QAAI,cAAc,OAAO;AACvB,UAAI,QAAQ,cAAc;AAC1B,WAAK,eAAe;AAAA,QAClB,YAAY,UAAU,gBAAe,0DAAmB,OAAnB,mBAAuB,QAAQ;AAAA,QACpE,gBAAgB;AAAA,MAAA,CACjB;AAAA,IAAA;AAGH,QAAI,cAAc,SAAS;AACzB,WAAK,eAAe;AAAA,QAClB,aAAY,0DAAmB,OAAnB,mBAAuB;AAAA,MAAA,CACpC;AAAA,IAAA;AAGY,mBAAA;AAAA,EAAA,CAChB;AAED,YAAU,MAAM;;AACd,QAAI,qDAAkB,YAAY;AAChC,YAAM,aAAa,iBAAiB;AACpC,WAAK,eAAe,UAAU;AAAA,IAAA,OACzB;AACC,YAAA,kBAAiB,8CAAY,eAAZ,mBAAyB;AAChD,YAAM,OAAO,gBAAgB,iDAAgB,KAAK,KAAK,CAAC;AACxD,WAAK,eAAe;AAAA,QAClB,GAAG;AAAA,QACH,cAAc,iDAAgB;AAAA,QAC9B,MAAM,qDAAkB;AAAA,QACxB,QAAO,kCAAO,OAAP,mBAAW;AAAA,MAAA,CACnB;AAAA,IAAA;AAEU,kBAAA,0DAAkB,eAAlB,mBAA8B,aAAa;AACzC,mBAAA;AAAA,EAAA,GACd,CAAC,kBAAkB,UAAU,CAAC;AAG/B,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,QAAQ,QAAQ,WAAW,OAAO;AAAA,MAC3C,WAAW,KAAK,OAAO,GAAG,aAAa,EAAE,CAAC;AAAA,MAC1C,KAAK;AAAA,MAEL,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,MAAK;AAAA,YACL,QAAO;AAAA,YACP,gBAAgB;AAAA,YAChB;AAAA,YAEA,UAAA;AAAA,cAAC,oBAAA,KAAK,MAAL,EAA+B,OAAO,EAAE,YAAY,GAAG,MAAK,gBAC3D,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,UAAS,yCAAY,eAAc,CAAC;AAAA,kBACpC,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,gBAAA;AAAA,cAAA,GAEpE;AAAA,mCAEC,KAAK,MAAL,EAA+B,OAAO,EAAE,WAAW,GAClD,UAAA;AAAA,gBAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAO,EAAE,YAAY,QAAQ;AAAA,oBAC7B,SAAS,MAAM;AACb,qCAAe,IAAI;AAAA,oBACrB;AAAA,oBACA,MAAK;AAAA,oBAEJ,YAAE,YAAY;AAAA,kBAAA;AAAA,gBACjB;AAAA,gBACC,mBAAmB,IAAI,GAAG,EAAE,oBAAoB,EAAE,GAAG,kBAAkB,CAAC,KAAK;AAAA,cAAA,GAChF;AAAA,cAEA,oBAAC,KAAK,MAAL,EAA+B,OAAO,EAAE,UAAU,GAAG,MAAK,QACzD,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAS;AAAA,kBACT,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,kBAChE,cAAc,CAAA,WACX,qBAAA,MAAA,EAAK,OAAM,UACV,UAAA;AAAA,oBAAA,oBAAC,QAAK,EAAA,MAAK,OAAM,OAAO,EAAE,WAAW,MAAA,GAAS,cAAY,OAAO,KAAK,OACnE,UAAA,OAAO,KAAK,MACf;AAAA,oBACC,OAAO,KAAK;AAAA,kBAAA,EACf,CAAA;AAAA,gBAAA;AAAA,cAAA,GAGN;AAAA,cAEC,oBAAA,KAAK,MAAL,EAAU,MAAK,gBAAe,OAAO,EAAE,WAAW,GACjD,UAAC,qBAAA,SAAS,OAAT,EACC,UAAA;AAAA,gBAAA,oBAAC,UAAS,EAAA,OAAM,UAAS,WAAU,eAAc,OAAO,EAAE,YAAY,OAAO,GAC1E,UAAE,EAAA,WAAW,EAChB,CAAA;AAAA,gBAEC,oBAAA,UAAA,EAAS,OAAM,SAAQ,WAAU,eAAc,OAAO,EAAE,YAAY,OAAA,GAClE,UAAA,EAAE,WAAW,EAChB,CAAA;AAAA,gBAEC,CAAC,CAAC,aAAa,oBAAoB,EAAE,SAAS,IAAI,IAE/C,qBAAA,UAAA,EAAA,UAAA;AAAA,kBAAA,oBAAC,UAAS,EAAA,OAAM,QAAO,WAAU,eAAc,OAAO,EAAE,YAAY,OAAO,GACxE,UAAE,EAAA,WAAW,EAChB,CAAA;AAAA,kBACC,oBAAA,UAAA,EAAS,OAAM,aAAY,WAAU,eAAc,OAAO,EAAE,YAAY,OACtE,GAAA,UAAA,EAAE,WAAW,EAChB,CAAA;AAAA,gBAAA,EAAA,CACF,IACE;AAAA,cAAA,EAAA,CACN,EACF,CAAA;AAAA,cAEA,oBAAC,WAAQ,OAAO,EAAE,aAAa,WAAW,WAAW,KAAK;AAAA,cAE1D;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,QAAO,6BAAM,SAAS,UAAS,EAAE,WAAW,IAAI,EAAE,WAAW;AAAA,kBAC7D,MAAK;AAAA,kBAEL,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,SAAS;AAAA,sBACT,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAClE;AAAA,cACF;AAAA,cAGC,oBAAA,KAAK,MAAL,EAAU,SAAO,MAAC,cAAc,CAAC,QAAQ,OAAO,GAC9C,UAAA,CAAC,EAAE,cAAc,MAChB,YAAY,cAAc,OAAO,CAAC,IAChC,oBAAA,UAAA,EACE,UAAC,oBAAA,KAAK,MAAL,EAA+B,MAAK,qBAAoB,OAAO,EAAE,WAAW,GAC3E,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAS;AAAA,kBACT,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,gBAAA;AAAA,cAAA,EAEpE,CAAA,EACF,CAAA,IAEA,oBAAA,UAAA,EACE,UAAC,oBAAA,KAAK,MAAL,EAA+B,MAAK,gBAAe,OAAO,EAAE,oBAAoB,GAC/E,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAS;AAAA,kBACT,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,gBAAA;AAAA,cAAA,EAEpE,CAAA,EACF,CAAA,GAGN;AAAA,cAEA,oBAAC,KAAK,MAAL,EAAU,cAAc,CAAC,MAAM,GAAG,SAAO,MACvC,WAAC,EAAE,oBACF;;AAAA,0BAAC,mBAAc,MAAM,MAApB,mBAAuB,SAAS,UAE7B,qBAAA,UAAA,EAAA,UAAA;AAAA,kBAAA,oBAAC,KAAK,MAAL,EAA+B,MAAK,aAAY,OAAO,EAAE,WAAW,GACnE,UAAA,qBAAC,MAAM,OAAN,EACC,UAAA;AAAA,oBAAA,oBAAC,OAAM,EAAA,OAAM,SAAS,UAAA,EAAE,WAAW,GAAE;AAAA,wCACpC,OAAM,EAAA,OAAM,cAAc,UAAA,EAAE,WAAW,GAAE;AAAA,wCACzC,OAAM,EAAA,OAAM,eAAe,UAAA,EAAE,WAAW,EAAE,CAAA;AAAA,kBAAA,EAAA,CAC7C,EACF,CAAA;AAAA,kBACC,oBAAA,KAAK,MAAL,EAA+B,MAAK,aAAY,OAAO,EAAE,WAAW,GACnE,UAAC,qBAAA,MAAM,OAAN,EACC,UAAA;AAAA,oBAAA,oBAAC,OAAM,EAAA,OAAM,OAAO,UAAA,EAAE,WAAW,GAAE;AAAA,wCAClC,OAAM,EAAA,OAAM,QAAQ,UAAA,EAAE,WAAW,EAAE,CAAA;AAAA,kBAAA,EAAA,CACtC,EACF,CAAA;AAAA,gBAAA,EACF,CAAA,IACE;AAAA,iBAER;AAAA,cAEA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,QAAO,6BAAM,SAAS,UAAS,EAAE,WAAW,IAAI,EAAE,WAAW;AAAA,kBAC7D,MAAK;AAAA,kBAEL,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,SAAS,gBAAgB,YAAY;AAAA,sBACrC,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAClE;AAAA,cACF;AAAA,cAEA,oBAAC,KAAK,MAAL,EAAU,cAAc,CAAC,SAAS,QAAQ,SAAS,GAAG,SAAO,MAC3D,UAAA,CAAC,EAAE,cACF,MAAA,cAAc,OAAO,MAAM,eACzB,oBAAC,KAAK,MAAL,EAAU,OAAO,EAAE,aAAa,GAC/B,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAO;AAAA,oBACL,SAAS;AAAA,oBACT,gBAAgB;AAAA,kBAClB;AAAA,kBAEA,UAAA,qBAAC,MAAM,SAAN,EACC,UAAA;AAAA,oBAAA,oBAAC,KAAK,MAAL,EAAU,SAAO,MAAC,MAAK,cACtB,UAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,OAAO,EAAE,OAAO,QAAQ;AAAA,wBACxB,SAAS;AAAA,wBACT,eAAe,EAAE,OAAO,IAAI;AAAA,wBAC5B,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,sBAAA;AAAA,oBAAA,GAEpE;AAAA,wCACC,KAAK,MAAL,EAAU,MAAK,kBAAiB,SAAO,MACtC,UAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,OAAO,EAAE,OAAO,QAAQ;AAAA,wBACxB,eAAe,EAAE,OAAO,IAAI;AAAA,wBAC5B,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,wBAChE,SAAS;AAAA,0BACP;AAAA,4BACE,OAAO;AAAA,4BACP,OAAO,EAAE,QAAQ;AAAA,0BACnB;AAAA,0BACA;AAAA,4BACE,OAAO;AAAA,4BACP,OAAO,EAAE,QAAQ;AAAA,0BACnB;AAAA,0BACA;AAAA,4BACE,OAAO;AAAA,4BACP,OAAO,EAAE,QAAQ;AAAA,0BACnB;AAAA,0BACA;AAAA,4BACE,OAAO;AAAA,4BACP,OAAO,EAAE,YAAY;AAAA,0BAAA;AAAA,wBACvB;AAAA,sBACF;AAAA,oBAAA,EAEJ,CAAA;AAAA,kBAAA,EACF,CAAA;AAAA,gBAAA;AAAA,cAAA,EAgBJ,CAAA,IACE,MAER;AAAA,cAEA,oBAAC,KAAK,MAAL,EAAU,cAAc,CAAC,QAAQ,SAAS,GAAG,SAAO,MAClD,WAAC,EAAE,oBACF;;AAAA,0BAAC,mBAAc,MAAM,MAApB,mBAAuB,SAAS,UAE7B,qBAAA,UAAA,EAAA,UAAA;AAAA,kBAAA,oBAAC,KAAK,MAAL,EAA+B,MAAK,WAAU,eAAc,WAAU,SAAO,MAC5E,8BAAC,UAAS,EAAA,OAAO,EAAE,cAAc,MAAA,GAAU,UAAE,EAAA,WAAW,EAAE,CAAA,GAC5D;AAAA,kBACA,oBAAC,KAAK,MAAL,EAAU,cAAc,CAAC,SAAS,GAAG,SAAO,MAC1C,UAAA,CAAC,EAAE,eAAAC,eAAAA,MACFA,eAAc,SAAS,wBACpB,KAAK,MAAL,EAA+B,MAAK,cACnC,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,SAAS;AAAA,sBACT,mBAAmB,CAAA,YAAW,QAAQ,iBAAiB,SAAS;AAAA,oBAAA;AAAA,kBAAA,EAEpE,CAAA,IACE,MAER;AAAA,kBAEA,oBAAC,MAAK,EAAA,UAAU,qCACd,UAAA;AAAA,oBAAC,KAAK;AAAA,oBAAL;AAAA,sBACC,MAAK;AAAA,sBACL,OAAO,EAAE,wBAAwB;AAAA,sBACjC,QACE,EACE,cAAc,MAAM,MAAM,UAAU,kBAAkB,KACtD,cAAc,SAAS;AAAA,sBAI3B,UAAA,oBAAC,wBAAuB,EAAA,SAAS,wBAAyB,CAAA;AAAA,oBAAA;AAAA,kBAAA,EAE9D,CAAA;AAAA,gBAAA,EACF,CAAA,IACE;AAAA,gBAER,CAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM;AAAA,YACN,OAAO;AAAA,YACP;AAAA,YACA;AAAA,YACA,SAAS,MAAM;AACb,6BAAe,KAAK;AAAA,YACtB;AAAA,YACA,MAAM,CAAO,QAAA;AACX,2BAAa,GAAG;AACD,6BAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAEJ;"}
@@ -19,6 +19,25 @@ const CustomData = ({
19
19
  setFieldOptions(list);
20
20
  setNumberFieldOptions(list == null ? void 0 : list.filter((item) => item.type === "int" || item.type === "float"));
21
21
  };
22
+ const getStatisticalMethodOptions = (dataSourceId) => {
23
+ var _a, _b;
24
+ const baseOptions = [
25
+ {
26
+ value: "recordTotal",
27
+ label: t("statisticstRecordNum")
28
+ },
29
+ {
30
+ value: "fieldValue",
31
+ label: t("statisticstFieldVal")
32
+ }
33
+ ];
34
+ const sourceConfig = (_a = globalData == null ? void 0 : globalData.sourceData) == null ? void 0 : _a.find((item) => item.value === dataSourceId);
35
+ const allowedOptions = (_b = sourceConfig == null ? void 0 : sourceConfig.chart_config) == null ? void 0 : _b.allowed_y_axis_options;
36
+ if (allowedOptions && allowedOptions.length > 0) {
37
+ return baseOptions.filter((opt) => allowedOptions.includes(opt.value));
38
+ }
39
+ return baseOptions;
40
+ };
22
41
  const [form] = Form.useForm();
23
42
  const initialValues = {
24
43
  dataSourceId: "",
@@ -70,10 +89,17 @@ const CustomData = ({
70
89
  {
71
90
  options: globalData == null ? void 0 : globalData.sourceData,
72
91
  onChange: (val) => {
92
+ var _a, _b, _c;
93
+ const methodOptions = getStatisticalMethodOptions(val);
94
+ const defaultMethod = methodOptions.length === 1 && methodOptions[0].value === "fieldValue" ? "fieldValue" : "recordTotal";
95
+ getFieldOptions(val);
96
+ const newFieldList = (_b = (_a = globalData == null ? void 0 : globalData.sourceData) == null ? void 0 : _a.find((item) => item.value === val)) == null ? void 0 : _b.fields;
97
+ const newNumberFieldOptions = newFieldList == null ? void 0 : newFieldList.filter((item) => item.type === "int" || item.type === "float");
73
98
  form.setFieldsValue({
74
- statisticalMethod: "recordTotal"
99
+ statisticalMethod: defaultMethod,
100
+ field: defaultMethod === "fieldValue" ? (_c = newNumberFieldOptions == null ? void 0 : newNumberFieldOptions[0]) == null ? void 0 : _c.value : "",
101
+ statisticalType: defaultMethod === "fieldValue" ? "sum" : void 0
75
102
  });
76
- getFieldOptions(val);
77
103
  allValuesChange();
78
104
  setCondition({
79
105
  conditionList: [],
@@ -112,10 +138,7 @@ const CustomData = ({
112
138
  });
113
139
  allValuesChange();
114
140
  },
115
- options: [
116
- { value: "recordTotal", label: t("statisticstRecordNum") },
117
- { value: "fieldValue", label: t("statisticstFieldVal") }
118
- ]
141
+ options: getStatisticalMethodOptions(form.getFieldValue("dataSourceId"))
119
142
  }
120
143
  )
121
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"custome-data.js","sources":["../../../../../packages/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-data.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react'\nimport { Button, Divider, Form, Select, Space } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { ConditionListItem } from '@platox/pivot-table/components/add-module-modal/components/condition-modal/interface'\nimport { useAppContext } from '../../../context'\nimport { EnumDataApi, FieldItem } from '../../../types'\nimport { ModuleData } from '../../module-content'\nimport ConditionModal from '../components/condition-modal'\n\nexport type StatisticsCustomeDataTypes = {\n conditionData?: {\n conditionList: ConditionListItem[]\n conditionType: 'all' | 'any'\n }\n dataSourceId?: string\n statisticalMethod?: string\n statisticalType?: 'sum' | 'max' | 'min' | 'avg'\n field: string\n}\n\ninterface CustomDataProps {\n selectModuleData?: ModuleData\n onAllValuesChange?: ((values: any) => void) | undefined\n enumDataApi?: EnumDataApi\n}\nconst CustomData: React.FC<CustomDataProps> = ({\n selectModuleData,\n onAllValuesChange,\n enumDataApi,\n}) => {\n const { globalData } = useAppContext()\n const { t } = useTranslation()\n\n /* ============================== split =============================== */\n const [fieldOptions, setFieldOptions] = useState<FieldItem[]>()\n const [numberFieldOptions, setNumberFieldOptions] = useState<FieldItem[]>()\n\n const getFieldOptions = (name?: string) => {\n const list = globalData?.sourceData?.find(item => item.value === name)?.fields\n setFieldOptions(list)\n setNumberFieldOptions(list?.filter(item => item.type === 'int' || item.type === 'float'))\n }\n\n /* ============================== split =============================== */\n const [form] = Form.useForm()\n\n const initialValues = {\n dataSourceId: '',\n statisticalMethod: 'recordTotal',\n field: '',\n }\n\n const allValuesChange = () => {\n setTimeout(() => {\n onAllValuesChange?.({\n ...form.getFieldsValue(),\n conditionData: conditionDataRef.current,\n })\n })\n }\n /* ============================== split =============================== */\n\n const [isModalOpen, setIsModalOpen] = useState(false)\n const conditionDataRef = useRef()\n const [conditionData, setConditionData] = useState<any>({\n conditionList: [],\n conditionType: 'all',\n })\n const [conditionDataNum, setConditionDataNum] = useState(0)\n\n const setCondition = (val: any) => {\n setConditionData(val)\n conditionDataRef.current = val\n setConditionDataNum(val?.conditionList?.length || 0)\n }\n /* ============================== split =============================== */\n\n useEffect(() => {\n if (selectModuleData?.customData) {\n const customData = selectModuleData.customData\n form.setFieldsValue(customData)\n getFieldOptions(customData?.dataSourceId)\n } else {\n const currSourceData = globalData?.sourceData?.[0]\n form.setFieldsValue({\n ...initialValues,\n dataSourceId: currSourceData?.value,\n })\n getFieldOptions(currSourceData?.value)\n allValuesChange()\n }\n setCondition(selectModuleData?.customData?.conditionData)\n }, [selectModuleData, globalData])\n\n return (\n <>\n <Form form={form} name=\"customData\" layout=\"vertical\" initialValues={initialValues}>\n <Form.Item<StatisticsCustomeDataTypes> label={t('dataSource')} name=\"dataSourceId\">\n <Select\n options={globalData?.sourceData}\n onChange={val => {\n form.setFieldsValue({\n statisticalMethod: 'recordTotal',\n })\n getFieldOptions(val)\n allValuesChange()\n setCondition({\n conditionList: [],\n conditionType: 'all',\n })\n }}\n />\n </Form.Item>\n\n <Form.Item<StatisticsCustomeDataTypes> label={t('dataRange')}>\n <Button\n style={{ marginLeft: '-15px' }}\n onClick={() => {\n setIsModalOpen(true)\n }}\n type=\"link\"\n >\n {t('filterData')}\n </Button>\n {conditionDataNum > 0 ? `${t('selectNcondition', { n: conditionDataNum })}` : null}\n </Form.Item>\n\n <Divider style={{ borderColor: '#e2e2e2', marginTop: 0 }} />\n\n <Form.Item<StatisticsCustomeDataTypes>\n label={t('statisticstMethods')}\n name=\"statisticalMethod\"\n >\n <Select\n onChange={val => {\n form.setFieldsValue({\n field: val === 'fieldValue' ? numberFieldOptions?.[0].value : '',\n statisticalType: 'sum',\n })\n allValuesChange()\n }}\n options={[\n { value: 'recordTotal', label: t('statisticstRecordNum') },\n { value: 'fieldValue', label: t('statisticstFieldVal') },\n ]}\n />\n </Form.Item>\n\n <Form.Item<StatisticsCustomeDataTypes> dependencies={['statisticalMethod']}>\n {({ getFieldValue }) =>\n getFieldValue('statisticalMethod') === 'fieldValue' ? (\n <Form.Item label={t('selectField')}>\n <Space.Compact>\n <Form.Item noStyle name=\"field\">\n <Select\n style={{ width: '100px' }}\n dropdownStyle={{ width: 250 }}\n onChange={() => {\n allValuesChange()\n }}\n options={numberFieldOptions}\n />\n </Form.Item>\n <Form.Item name=\"statisticalType\" noStyle>\n <Select\n style={{ width: '100px' }}\n dropdownStyle={{ width: 180 }}\n onChange={() => {\n allValuesChange()\n }}\n options={[\n {\n value: 'sum',\n label: t('sumVal'),\n },\n {\n value: 'max',\n label: t('maxVal'),\n },\n {\n value: 'min',\n label: t('minVal'),\n },\n {\n value: 'avg',\n label: t('averageVal'),\n },\n ]}\n />\n </Form.Item>\n </Space.Compact>\n </Form.Item>\n ) : null\n }\n </Form.Item>\n </Form>\n\n <ConditionModal\n open={isModalOpen}\n value={conditionData}\n fieldOptions={fieldOptions}\n enumDataApi={enumDataApi}\n onClose={() => {\n setIsModalOpen(false)\n }}\n onOk={val => {\n setCondition(val)\n allValuesChange()\n }}\n />\n </>\n )\n}\nexport default CustomData\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"custome-data.js","sources":["../../../../../packages/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-data.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useRef, useState } from 'react'\nimport { Button, Divider, Form, Select, Space } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { ConditionListItem } from '@platox/pivot-table/components/add-module-modal/components/condition-modal/interface'\nimport { useAppContext } from '../../../context'\nimport { EnumDataApi, FieldItem } from '../../../types'\nimport { ModuleData } from '../../module-content'\nimport ConditionModal from '../components/condition-modal'\n\nexport type StatisticsCustomeDataTypes = {\n conditionData?: {\n conditionList: ConditionListItem[]\n conditionType: 'all' | 'any'\n }\n dataSourceId?: string\n statisticalMethod?: string\n statisticalType?: 'sum' | 'max' | 'min' | 'avg'\n field: string\n}\n\ninterface CustomDataProps {\n selectModuleData?: ModuleData\n onAllValuesChange?: ((values: any) => void) | undefined\n enumDataApi?: EnumDataApi\n}\nconst CustomData: React.FC<CustomDataProps> = ({\n selectModuleData,\n onAllValuesChange,\n enumDataApi,\n}) => {\n const { globalData } = useAppContext()\n const { t } = useTranslation()\n\n /* ============================== split =============================== */\n const [fieldOptions, setFieldOptions] = useState<FieldItem[]>()\n const [numberFieldOptions, setNumberFieldOptions] = useState<FieldItem[]>()\n\n const getFieldOptions = (name?: string) => {\n const list = globalData?.sourceData?.find(item => item.value === name)?.fields\n setFieldOptions(list)\n setNumberFieldOptions(list?.filter(item => item.type === 'int' || item.type === 'float'))\n }\n\n const getStatisticalMethodOptions = (dataSourceId?: string) => {\n const baseOptions = [\n {\n value: 'recordTotal',\n label: t('statisticstRecordNum'),\n },\n {\n value: 'fieldValue',\n label: t('statisticstFieldVal'),\n },\n ]\n\n // 从后端配置中获取允许的统计方法选项\n const sourceConfig = globalData?.sourceData?.find(item => item.value === dataSourceId)\n const allowedOptions = sourceConfig?.chart_config?.allowed_y_axis_options\n\n // 如果配置了允许的选项,则过滤\n if (allowedOptions && allowedOptions.length > 0) {\n return baseOptions.filter(opt => allowedOptions.includes(opt.value))\n }\n\n // 默认返回所有选项(向后兼容)\n return baseOptions\n }\n\n /* ============================== split =============================== */\n const [form] = Form.useForm()\n\n const initialValues = {\n dataSourceId: '',\n statisticalMethod: 'recordTotal',\n field: '',\n }\n\n const allValuesChange = () => {\n setTimeout(() => {\n onAllValuesChange?.({\n ...form.getFieldsValue(),\n conditionData: conditionDataRef.current,\n })\n })\n }\n /* ============================== split =============================== */\n\n const [isModalOpen, setIsModalOpen] = useState(false)\n const conditionDataRef = useRef()\n const [conditionData, setConditionData] = useState<any>({\n conditionList: [],\n conditionType: 'all',\n })\n const [conditionDataNum, setConditionDataNum] = useState(0)\n\n const setCondition = (val: any) => {\n setConditionData(val)\n conditionDataRef.current = val\n setConditionDataNum(val?.conditionList?.length || 0)\n }\n /* ============================== split =============================== */\n\n useEffect(() => {\n if (selectModuleData?.customData) {\n const customData = selectModuleData.customData\n form.setFieldsValue(customData)\n getFieldOptions(customData?.dataSourceId)\n } else {\n const currSourceData = globalData?.sourceData?.[0]\n form.setFieldsValue({\n ...initialValues,\n dataSourceId: currSourceData?.value,\n })\n getFieldOptions(currSourceData?.value)\n allValuesChange()\n }\n setCondition(selectModuleData?.customData?.conditionData)\n }, [selectModuleData, globalData])\n\n return (\n <>\n <Form form={form} name=\"customData\" layout=\"vertical\" initialValues={initialValues}>\n <Form.Item<StatisticsCustomeDataTypes> label={t('dataSource')} name=\"dataSourceId\">\n <Select\n options={globalData?.sourceData}\n onChange={val => {\n const methodOptions = getStatisticalMethodOptions(val)\n // 如果只有一个选项且是 fieldValue,则默认选中它\n const defaultMethod =\n methodOptions.length === 1 && methodOptions[0].value === 'fieldValue'\n ? 'fieldValue'\n : 'recordTotal'\n\n // 获取新数据源的字段选项\n getFieldOptions(val)\n\n // 获取新数据源的数字字段列表\n const newFieldList = globalData?.sourceData?.find(item => item.value === val)?.fields\n const newNumberFieldOptions = newFieldList?.filter(item => item.type === 'int' || item.type === 'float')\n\n form.setFieldsValue({\n statisticalMethod: defaultMethod,\n field: defaultMethod === 'fieldValue' ? newNumberFieldOptions?.[0]?.value : '',\n statisticalType: defaultMethod === 'fieldValue' ? 'sum' : undefined,\n })\n allValuesChange()\n setCondition({\n conditionList: [],\n conditionType: 'all',\n })\n }}\n />\n </Form.Item>\n\n <Form.Item<StatisticsCustomeDataTypes> label={t('dataRange')}>\n <Button\n style={{ marginLeft: '-15px' }}\n onClick={() => {\n setIsModalOpen(true)\n }}\n type=\"link\"\n >\n {t('filterData')}\n </Button>\n {conditionDataNum > 0 ? `${t('selectNcondition', { n: conditionDataNum })}` : null}\n </Form.Item>\n\n <Divider style={{ borderColor: '#e2e2e2', marginTop: 0 }} />\n\n <Form.Item<StatisticsCustomeDataTypes>\n label={t('statisticstMethods')}\n name=\"statisticalMethod\"\n >\n <Select\n onChange={val => {\n form.setFieldsValue({\n field: val === 'fieldValue' ? numberFieldOptions?.[0].value : '',\n statisticalType: 'sum',\n })\n allValuesChange()\n }}\n options={getStatisticalMethodOptions(form.getFieldValue('dataSourceId'))}\n />\n </Form.Item>\n\n <Form.Item<StatisticsCustomeDataTypes> dependencies={['statisticalMethod']}>\n {({ getFieldValue }) =>\n getFieldValue('statisticalMethod') === 'fieldValue' ? (\n <Form.Item label={t('selectField')}>\n <Space.Compact>\n <Form.Item noStyle name=\"field\">\n <Select\n style={{ width: '100px' }}\n dropdownStyle={{ width: 250 }}\n onChange={() => {\n allValuesChange()\n }}\n options={numberFieldOptions}\n />\n </Form.Item>\n <Form.Item name=\"statisticalType\" noStyle>\n <Select\n style={{ width: '100px' }}\n dropdownStyle={{ width: 180 }}\n onChange={() => {\n allValuesChange()\n }}\n options={[\n {\n value: 'sum',\n label: t('sumVal'),\n },\n {\n value: 'max',\n label: t('maxVal'),\n },\n {\n value: 'min',\n label: t('minVal'),\n },\n {\n value: 'avg',\n label: t('averageVal'),\n },\n ]}\n />\n </Form.Item>\n </Space.Compact>\n </Form.Item>\n ) : null\n }\n </Form.Item>\n </Form>\n\n <ConditionModal\n open={isModalOpen}\n value={conditionData}\n fieldOptions={fieldOptions}\n enumDataApi={enumDataApi}\n onClose={() => {\n setIsModalOpen(false)\n }}\n onOk={val => {\n setCondition(val)\n allValuesChange()\n }}\n />\n </>\n )\n}\nexport default CustomData\n"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { useTranslation } from "react-i18next";
5
5
  import IconDrag from "../../icon/icon-drag.js";
6
6
  import IconMove from "../../icon/icon-move.js";
7
7
  import useDebounce from "../module-content/text-module/editor/useDebounce.js";
8
+ import { useAppContext } from "../../context.js";
8
9
  const ModuleHeader = ({
9
10
  defaultValue,
10
11
  onChange,
@@ -13,6 +14,7 @@ const ModuleHeader = ({
13
14
  onMouseDown,
14
15
  onMouseUp
15
16
  }) => {
17
+ const { readOnly } = useAppContext();
16
18
  const [isEdit, setIsEdit] = useState(false);
17
19
  const [title, setTitle] = useState("");
18
20
  const inputRef = useRef(null);
@@ -56,6 +58,9 @@ const ModuleHeader = ({
56
58
  className: "title-child",
57
59
  onDoubleClick: (e) => {
58
60
  e.stopPropagation();
61
+ if (readOnly) {
62
+ return;
63
+ }
59
64
  setIsEdit(true);
60
65
  setTimeout(() => {
61
66
  var _a;
@@ -80,7 +85,7 @@ const ModuleHeader = ({
80
85
  ) : defaultValue
81
86
  }
82
87
  ) }),
83
- /* @__PURE__ */ jsx("div", { className: "menu-slot isNoCanDrag", children: /* @__PURE__ */ jsx(
88
+ /* @__PURE__ */ jsx("div", { className: "menu-slot isNoCanDrag", children: !readOnly && /* @__PURE__ */ jsx(
84
89
  Dropdown,
85
90
  {
86
91
  trigger: ["click"],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../packages/dashboard-workbench/components/module-header/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { FC, useEffect, useRef, useState } from 'react'\nimport { Dropdown, Input } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport IconDrag from '../../icon/icon-drag'\nimport IconMove from '../../icon/icon-move'\nimport InputWrapper from '../InputWrapper'\nimport { ModuleData } from '../module-content'\nimport useDebounce from '../module-content/text-module/editor/useDebounce'\n\ninterface ModuleHeaderProps {\n defaultValue: string\n onChange?: (val: string) => void\n module: ModuleData\n onDropdownItem?: (key: string) => void\n onMouseDown?: () => void\n onMouseUp?: () => void\n}\n\nconst ModuleHeader: FC<ModuleHeaderProps> = ({\n defaultValue,\n onChange,\n module,\n onDropdownItem,\n onMouseDown,\n onMouseUp,\n}) => {\n const [isEdit, setIsEdit] = useState<boolean>(false)\n const [title, setTitle] = useState<string>('')\n const inputRef = useRef<any>(null)\n const debouncedOnChange = useDebounce(val => {\n onChange?.(val)\n }, 300) // 300 毫秒的延迟\n const { t } = useTranslation()\n\n useEffect(() => {\n setTitle(title)\n }, [defaultValue])\n\n const handleDblClick = () => {\n // 获取input DOM元素\n const inputElement = inputRef.current?.input\n // 双击事件发生在input元素上时,触发全选\n inputElement.select()\n }\n\n const handleEnterPress = (event: { key: string }) => {\n if (event.key === 'Enter') {\n setIsEdit(false)\n }\n }\n\n useEffect(() => {\n if (!isEdit) {\n setTitle(prev => prev.trim())\n }\n }, [isEdit])\n\n return (\n <div\n className={`layout-item-head isCanDrag`}\n onMouseDown={() => {\n onMouseDown?.()\n }}\n onMouseUp={() => {\n onMouseUp?.()\n }}\n >\n <div className=\"head-inner\">\n <span className=\"title\">\n <span\n className=\"title-child\"\n onDoubleClick={e => {\n e.stopPropagation()\n setIsEdit(true)\n setTimeout(() => {\n inputRef.current?.focus()\n }, 100)\n }}\n >\n {isEdit ? (\n <Input\n defaultValue={defaultValue}\n onBlur={() => {\n setIsEdit(false)\n }}\n ref={inputRef}\n onKeyDown={handleEnterPress}\n onDoubleClick={handleDblClick}\n onChange={e => {\n setTitle(e.target.value)\n debouncedOnChange(e.target.value)\n }}\n />\n ) : (\n defaultValue\n )}\n </span>\n </span>\n\n <div className=\"menu-slot isNoCanDrag\">\n <Dropdown\n trigger={['click']}\n menu={{\n items: [\n module.type !== 'text'\n ? {\n label: t('configuration'),\n key: 'edit',\n }\n : null,\n {\n label: t('copy'),\n key: 'copy',\n },\n {\n key: 'delete',\n danger: true,\n label: t('delete'),\n },\n ],\n onClick: ({ key }) => {\n onDropdownItem?.(key)\n },\n }}\n >\n <button type=\"button\" className=\"dashboard-grid-menu-button\">\n <span className=\"universe-icon\">\n <IconMove />\n </span>\n </button>\n </Dropdown>\n </div>\n </div>\n <div className={`drag isCanDrag`}>\n <span className=\"universe-icon drag-icon\">\n <IconDrag />\n </span>\n </div>\n </div>\n )\n}\n\nexport default React.memo(ModuleHeader)\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../packages/dashboard-workbench/components/module-header/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { FC, useEffect, useRef, useState } from 'react'\nimport { Dropdown, Input } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport IconDrag from '../../icon/icon-drag'\nimport IconMove from '../../icon/icon-move'\nimport InputWrapper from '../InputWrapper'\nimport { ModuleData } from '../module-content'\nimport useDebounce from '../module-content/text-module/editor/useDebounce'\nimport { useAppContext } from '@platox/pivot-table/context'\n\ninterface ModuleHeaderProps {\n defaultValue: string\n onChange?: (val: string) => void\n module: ModuleData\n onDropdownItem?: (key: string) => void\n onMouseDown?: () => void\n onMouseUp?: () => void\n}\n\nconst ModuleHeader: FC<ModuleHeaderProps> = ({\n defaultValue,\n onChange,\n module,\n onDropdownItem,\n onMouseDown,\n onMouseUp,\n}) => {\n const { readOnly } = useAppContext()\n\n const [isEdit, setIsEdit] = useState<boolean>(false)\n const [title, setTitle] = useState<string>('')\n const inputRef = useRef<any>(null)\n const debouncedOnChange = useDebounce(val => {\n onChange?.(val)\n }, 300) // 300 毫秒的延迟\n const { t } = useTranslation()\n\n useEffect(() => {\n setTitle(title)\n }, [defaultValue])\n\n const handleDblClick = () => {\n // 获取input DOM元素\n const inputElement = inputRef.current?.input\n // 双击事件发生在input元素上时,触发全选\n inputElement.select()\n }\n\n const handleEnterPress = (event: { key: string }) => {\n if (event.key === 'Enter') {\n setIsEdit(false)\n }\n }\n\n useEffect(() => {\n if (!isEdit) {\n setTitle(prev => prev.trim())\n }\n }, [isEdit])\n\n return (\n <div\n className={`layout-item-head isCanDrag`}\n onMouseDown={() => {\n onMouseDown?.()\n }}\n onMouseUp={() => {\n onMouseUp?.()\n }}\n >\n <div className=\"head-inner\">\n <span className=\"title\">\n <span\n className=\"title-child\"\n onDoubleClick={e => {\n e.stopPropagation()\n if (readOnly) {\n return\n }\n setIsEdit(true)\n setTimeout(() => {\n inputRef.current?.focus()\n }, 100)\n }}\n >\n {isEdit ? (\n <Input\n defaultValue={defaultValue}\n onBlur={() => {\n setIsEdit(false)\n }}\n ref={inputRef}\n onKeyDown={handleEnterPress}\n onDoubleClick={handleDblClick}\n onChange={e => {\n setTitle(e.target.value)\n debouncedOnChange(e.target.value)\n }}\n />\n ) : (\n defaultValue\n )}\n </span>\n </span>\n\n <div className=\"menu-slot isNoCanDrag\">\n {\n !readOnly && <Dropdown\n trigger={['click']}\n menu={{\n items: [\n module.type !== 'text'\n ? {\n label: t('configuration'),\n key: 'edit',\n }\n : null,\n {\n label: t('copy'),\n key: 'copy',\n },\n {\n key: 'delete',\n danger: true,\n label: t('delete'),\n },\n ],\n onClick: ({ key }) => {\n onDropdownItem?.(key)\n },\n }}\n >\n <button type=\"button\" className=\"dashboard-grid-menu-button\">\n <span className=\"universe-icon\">\n <IconMove />\n </span>\n </button>\n </Dropdown>\n }\n\n </div>\n </div>\n <div className={`drag isCanDrag`}>\n <span className=\"universe-icon drag-icon\">\n <IconDrag />\n </span>\n </div>\n </div>\n )\n}\n\nexport default React.memo(ModuleHeader)\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { ConditionBlockWrapper } from './components/global-filter-condition/inte
3
3
  import { ModuleData } from './components/module-content';
4
4
  import { EnumDataApi, ModuleDataApi, SourceDataItem } from './types';
5
5
  interface AppContextProps {
6
+ readOnly: boolean;
6
7
  globalData?: {
7
8
  fieldMap?: Record<string, string>;
8
9
  sourceData?: SourceDataItem[];
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../../packages/dashboard-workbench/context.tsx"],"sourcesContent":["// Context.tsx\nimport React, { createContext, ReactNode, useContext, useState } from 'react'\nimport { ConditionBlockWrapper } from './components/global-filter-condition/interface'\nimport { ModuleData } from './components/module-content'\nimport { EnumDataApi, ModuleDataApi, SourceDataItem } from './types'\n\ninterface AppContextProps {\n globalData?: {\n fieldMap?: Record<string, string> // 目前看到枚举的翻译用到了这个\n sourceData?: SourceDataItem[]\n }\n service?: {\n moduleDataApi?: ModuleDataApi\n enumDataApi?: EnumDataApi\n onCreateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onUpdateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onDeleteModule?: (val: string) => Promise<{ data: ModuleData }>\n }\n\n globalFilterCondition?: ConditionBlockWrapper[]\n setGlobalFilterCondition: React.Dispatch<React.SetStateAction<ConditionBlockWrapper[]>>\n\n formatCurrency: (val: number, decimalPlaces?: number) => string\n}\n\nexport const AppContext = createContext<AppContextProps | undefined>(undefined)\n\nexport const useAppContext = () => {\n const context = useContext(AppContext)\n if (!context) {\n throw new Error('useAppContext must be used within an AppProvider')\n }\n return context\n}\n\n/// 存一份数据ref\nlet contextRef: AppContextProps | undefined = undefined\n\nexport const getContextRef = () => {\n return contextRef\n}\n\nexport const setContextRef = (contextData: AppContextProps | undefined) => {\n contextRef = contextData\n}\n"],"names":[],"mappings":";AAyBa,MAAA,aAAa,cAA2C,MAAS;AAEvE,MAAM,gBAAgB,MAAM;AAC3B,QAAA,UAAU,WAAW,UAAU;AACrC,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,kDAAkD;AAAA,EAAA;AAE7D,SAAA;AACT;"}
1
+ {"version":3,"file":"context.js","sources":["../../packages/dashboard-workbench/context.tsx"],"sourcesContent":["// Context.tsx\nimport React, { createContext, ReactNode, useContext, useState } from 'react'\nimport { ConditionBlockWrapper } from './components/global-filter-condition/interface'\nimport { ModuleData } from './components/module-content'\nimport { EnumDataApi, ModuleDataApi, SourceDataItem } from './types'\n\ninterface AppContextProps {\n readOnly: boolean,\n globalData?: {\n fieldMap?: Record<string, string> // 目前看到枚举的翻译用到了这个\n sourceData?: SourceDataItem[]\n }\n service?: {\n moduleDataApi?: ModuleDataApi\n enumDataApi?: EnumDataApi\n onCreateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onUpdateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onDeleteModule?: (val: string) => Promise<{ data: ModuleData }>\n }\n\n globalFilterCondition?: ConditionBlockWrapper[]\n setGlobalFilterCondition: React.Dispatch<React.SetStateAction<ConditionBlockWrapper[]>>\n\n formatCurrency: (val: number, decimalPlaces?: number) => string\n}\n\nexport const AppContext = createContext<AppContextProps | undefined>(undefined)\n\nexport const useAppContext = () => {\n const context = useContext(AppContext)\n if (!context) {\n throw new Error('useAppContext must be used within an AppProvider')\n }\n return context\n}\n\n/// 存一份数据ref\nlet contextRef: AppContextProps | undefined = undefined\n\nexport const getContextRef = () => {\n return contextRef\n}\n\nexport const setContextRef = (contextData: AppContextProps | undefined) => {\n contextRef = contextData\n}\n"],"names":[],"mappings":";AA0Ba,MAAA,aAAa,cAA2C,MAAS;AAEvE,MAAM,gBAAgB,MAAM;AAC3B,QAAA,UAAU,WAAW,UAAU;AACrC,MAAI,CAAC,SAAS;AACN,UAAA,IAAI,MAAM,kDAAkD;AAAA,EAAA;AAE7D,SAAA;AACT;"}
@@ -36,6 +36,10 @@ export type GlobalProps = {
36
36
  globalFilterCondition: ConditionBlockWrapper[];
37
37
  onGlobalFilterConditionChange: (condition: ConditionBlockWrapper[]) => void;
38
38
  formatCurrency: (val: number, decimalPlaces?: number) => string;
39
+ /**
40
+ * @default false
41
+ */
42
+ readOnly?: boolean;
39
43
  };
40
44
  declare const _default: React.MemoExoticComponent<(props: DashboardWorkbenchProps & GlobalProps) => import("react/jsx-runtime").JSX.Element>;
41
45
  export default _default;
@@ -1,4 +1,4 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import React, { useEffect, useState, useRef } from "react";
3
3
  import { Modal, message } from "antd";
4
4
  import { ExclamationCircleOutlined } from "@ant-design/icons";
@@ -13,7 +13,7 @@ import AddStatisticsModal from "./components/add-module-modal/add-statistics-mod
13
13
  import { GlobalFilterCondition } from "./components/global-filter-condition/index.js";
14
14
  import ModuleContent from "./components/module-content/index.js";
15
15
  import ModuleHeader from "./components/module-header/index.js";
16
- import { AppContext } from "./context.js";
16
+ import { AppContext, useAppContext } from "./context.js";
17
17
  import { findChangedItems } from "./utils/index.js";
18
18
  import "./lang/index.js";
19
19
  /* empty css */
@@ -33,6 +33,7 @@ const DashboardWorkbench = ({
33
33
  renderToolbarLeft
34
34
  }) => {
35
35
  const { t } = useTranslation();
36
+ const { readOnly } = useAppContext();
36
37
  const [modules, setModules] = useState([]);
37
38
  const [activeId, setActiveId] = useState();
38
39
  useEffect(() => {
@@ -206,27 +207,29 @@ const DashboardWorkbench = ({
206
207
  ),
207
208
  children: /* @__PURE__ */ jsxs("div", { className: "bitable-block-dashboard-toolbar--left", children: [
208
209
  renderToolbarLeft == null ? void 0 : renderToolbarLeft(),
209
- /* @__PURE__ */ jsx(
210
- AddModuleBtn,
211
- {
212
- onOk: (val) => {
213
- handleOpenCreateModal(val);
210
+ !readOnly && /* @__PURE__ */ jsxs(Fragment, { children: [
211
+ /* @__PURE__ */ jsx(
212
+ AddModuleBtn,
213
+ {
214
+ onOk: (val) => {
215
+ handleOpenCreateModal(val);
216
+ }
214
217
  }
215
- }
216
- ),
217
- /* @__PURE__ */ jsx(
218
- "div",
219
- {
220
- style: {
221
- width: "1px",
222
- height: "1rem",
223
- backgroundColor: "rgba(217, 217, 217, 1)",
224
- marginLeft: "12px",
225
- marginRight: "4px"
218
+ ),
219
+ /* @__PURE__ */ jsx(
220
+ "div",
221
+ {
222
+ style: {
223
+ width: "1px",
224
+ height: "1rem",
225
+ backgroundColor: "rgba(217, 217, 217, 1)",
226
+ marginLeft: "12px",
227
+ marginRight: "4px"
228
+ }
226
229
  }
227
- }
228
- ),
229
- /* @__PURE__ */ jsx(GlobalFilterCondition, {})
230
+ ),
231
+ /* @__PURE__ */ jsx(GlobalFilterCondition, {})
232
+ ] })
230
233
  ] })
231
234
  }
232
235
  ),
@@ -237,6 +240,8 @@ const DashboardWorkbench = ({
237
240
  children: /* @__PURE__ */ jsx(
238
241
  ResponsiveReactGridLayout,
239
242
  {
243
+ isDraggable: !readOnly,
244
+ isResizable: !readOnly,
240
245
  onBreakpointChange,
241
246
  className,
242
247
  compactType: "vertical",
@@ -270,7 +275,7 @@ const DashboardWorkbench = ({
270
275
  children: modules == null ? void 0 : modules.map((module) => /* @__PURE__ */ jsxs(
271
276
  "div",
272
277
  {
273
- className: `box-dashboard ${activeId === module.id ? "active" : ""}`,
278
+ className: `box-dashboard ${readOnly ? "readonly" : ""} ${activeId === module.id ? "active" : ""}`,
274
279
  onClick: () => {
275
280
  setActiveId(module.id);
276
281
  },
@@ -448,6 +453,7 @@ const index = React.memo((props) => {
448
453
  trigger: "onGlobalFilterConditionChange"
449
454
  });
450
455
  let contextData = {
456
+ readOnly: (props == null ? void 0 : props.readOnly) || false,
451
457
  globalData,
452
458
  service,
453
459
  formatCurrency: props == null ? void 0 : props.formatCurrency,