@platox/pivot-table 0.0.68 → 0.0.70
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/InputWrapper/index.d.ts +5 -1
- package/es/dashboard-workbench/components/InputWrapper/index.js +10 -4
- package/es/dashboard-workbench/components/InputWrapper/index.js.map +1 -1
- package/es/dashboard-workbench/components/SelectWrapper/index.d.ts +12 -0
- package/es/dashboard-workbench/components/SelectWrapper/index.js +18 -0
- package/es/dashboard-workbench/components/SelectWrapper/index.js.map +1 -0
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/GroupFieldConfigPicker.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-styles.js +4 -3
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-styles.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-data.js +2 -0
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-data.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-styles.js +3 -2
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-styles.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js +2 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/index.js +9 -0
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js +11 -2
- package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js.map +1 -1
- package/package.json +1 -1
- package/umd/pivot-table.umd.cjs +43 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionSymbolAndValuePicker.js","sources":["../../../../packages/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.tsx"],"sourcesContent":["import { ChangeEventHandler, useEffect, useMemo, useState, type CSSProperties } from 'react'\nimport { DatePicker, DatePickerProps, Input, InputNumber, Select, SelectProps, Switch } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useControllableValue, useMemoizedFn } from 'ahooks'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { useAppContext } from '../../context'\nimport { FieldItem } from '../../types'\nimport { useConditionSymbolOptions } from '../add-module-modal/components/condition-modal/config'\nimport {\n DebounceEnumSelectWrapper,\n EnumSelectWrapper,\n} from '../add-module-modal/components/condition-modal/EnumSelect'\nimport InputWrapper from '../InputWrapper'\nimport { ConditionListItemWrapper } from './interface'\n\nexport type ConditionSymbolAndValuePickerProps = {\n style?: CSSProperties\n className?: string\n\n field?: FieldItem\n\n value?: Omit<ConditionListItemWrapper, 'field'>\n onChange: (value: Omit<ConditionListItemWrapper, 'field'>) => void\n}\n\nexport const ConditionSymbolAndValuePicker = (props: ConditionSymbolAndValuePickerProps) => {\n const { style, className, field } = props\n const fieldType = field?.type\n\n const { t } = useTranslation()\n\n const { timeOptions, boolOptions, intOptions, stringOptions, rdateOptions, rdateOptions2 } =\n useConditionSymbolOptions()\n\n const conditionOptions = {\n int: intOptions,\n timestamp: timeOptions,\n string: stringOptions,\n bool: boolOptions,\n float: intOptions,\n enum: stringOptions,\n }\n\n const [value, setValue] = useControllableValue(props)\n\n /* ============================== symbol =============================== */\n let symbolOptions = conditionOptions[fieldType as keyof typeof conditionOptions] ?? []\n let symbolDisabled = !props?.field\n let symbolValue = value?.condition\n let symbolOnChange = (v: string) => {\n let newValue = { ...value, condition: v }\n if (fieldType === 'timestamp') {\n newValue['rdate'] = 'exactdate'\n }\n setValue({ ...value, condition: v })\n }\n\n /* ============================== condition value =============================== */\n const val = value?.val\n const val2 = value?.val2\n const rdate = value?.rdate\n\n const enumDataApi = useAppContext()?.service?.enumDataApi\n const fieldMap = useAppContext()?.globalData?.fieldMap\n const { options: enumOptions, enumUrl } = useMemo(() => {\n let options: {\n label: unknown\n value: unknown\n }[] = []\n let enumUrl: string | undefined = undefined\n\n if (field?.type === 'enum') {\n options =\n field?.enum?.map(item => ({\n label: fieldMap?.[item.label] ?? item.label,\n value: item.value,\n })) ?? []\n enumUrl = field?.dynamic_call_enum_api\n }\n return {\n options,\n enumUrl,\n }\n }, [field, fieldMap])\n\n const handleConditionValueChange = useMemoizedFn((key: 'val' | 'val2' | 'rdate', v: unknown) => {\n //@ts-ignore\n let _v = v?.target?.value ?? v\n setValue({ ...value, [key]: _v })\n })\n\n const getVaildValue = <T,>(\n v: unknown,\n type?: 'string' | 'number' | 'dayjs' | 'boolean' | 'enum' | 'lazy_enum',\n defaultValue?: T\n ) => {\n let ret = defaultValue\n\n switch (type) {\n case 'number':\n return (typeof v === 'number' ? v : ret) as T\n case 'dayjs': //组件内部处理\n return (typeof v === 'string' ? v : ret) as T\n case 'boolean':\n return (typeof v === 'boolean' ? v : ret) as T\n case 'string':\n return (typeof v === 'string' ? v : ret) as T\n default:\n return v as T\n }\n }\n\n return (\n <>\n <Select\n style={{ width: '100px' }}\n popupMatchSelectWidth={200}\n disabled={symbolDisabled}\n options={symbolOptions}\n value={symbolValue}\n onChange={symbolOnChange}\n />\n {!fieldType && (\n <>\n <Input style={{ width: '100px' }} disabled />\n </>\n )}\n\n {!!fieldType && (\n <>\n {['int', 'float'].includes(fieldType) && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n <InputNumber\n style={{ width: '100px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val)}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n {symbolValue === 'contain' ? (\n <InputNumber\n style={{ width: '100px', marginLeft: '5px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val2)}\n onChange={v => {\n handleConditionValueChange('val2', v)\n }}\n />\n ) : null}\n </>\n ) : null}\n\n {fieldType === 'timestamp' && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n {symbolValue === '=' || symbolValue === '<' || symbolValue === '>' ? (\n <Select\n showSearch\n optionFilterProp=\"label\"\n style={{ width: '150px' }}\n options={symbolValue === '=' ? rdateOptions : rdateOptions2}\n value={getVaildValue(rdate)}\n onChange={v => {\n handleConditionValueChange('rdate', v)\n }}\n />\n ) : null}\n\n {rdate == 'exactdate' && symbolValue !== 'contain' ? (\n <DatePickerWrapper\n style={{ width: '150px' }}\n value={getVaildValue(val, 'dayjs')}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n ) : null}\n\n {symbolValue === 'contain' ? (\n <RangePickerWrapper\n value={[getVaildValue(val, 'dayjs'), getVaildValue(val2, 'dayjs')]}\n onChange={v => {\n setValue({ ...value, val: v[0], val2: v[1] })\n // handleConditionValueChange('val', v?.[0])\n // handleConditionValueChange('val2', v?.[1])\n }}\n />\n ) : null}\n </>\n ) : null}\n\n {['string'].includes(fieldType) && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n <InputWrapper\n style={{ width: '150px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val)}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n {symbolValue === 'contain' ? (\n <InputWrapper\n style={{ width: '150px', marginLeft: '5px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val2, 'dayjs')}\n onChange={v => {\n handleConditionValueChange('val2', v)\n }}\n />\n ) : null}\n </>\n ) : null}\n\n {['bool'].includes(fieldType) ? (\n <Switch\n value={getVaildValue(val, 'boolean')}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n ) : null}\n\n {['enum'].includes(fieldType) && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n {enumOptions && enumOptions?.length > 0 ? (\n <EnumSelectWrapper\n showSearch\n optionFilterProp=\"label\"\n style={{ width: '200px' }}\n options={enumOptions as { label: string; value: string }[]}\n value={getVaildValue(val)}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n {...(['include', 'notinclude'].includes(symbolValue)\n ? { mode: 'multiple', maxTagCount: 'responsive' }\n : {})}\n />\n ) : enumUrl ? (\n <DebounceEnumSelectWrapper<{ label: string; value: string }>\n // mode=\"multiple\"\n style={{ width: '200px' }}\n popupMatchSelectWidth={300}\n value={getVaildValue(val)}\n {...(['include', 'notinclude'].includes(symbolValue)\n ? { mode: 'multiple', maxTagCount: 'responsive' }\n : {})}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n fetchOptions={async value => {\n let dfUrl = enumUrl\n if (value) {\n dfUrl = `${dfUrl}?q=${value}`\n }\n return (await enumDataApi?.(dfUrl)?.then(res => res.data?.list)) ?? []\n }}\n />\n ) : null}\n </>\n ) : null}\n </>\n )}\n </>\n )\n}\n\nConditionSymbolAndValuePicker.displayName = 'ConditionSymbolAndValuePicker'\n\nexport default ConditionSymbolAndValuePicker\n\n/* ============================== split =============================== */\nconst format = 'YYYY-MM-DD'\n\nexport const DatePickerWrapper = (\n props: { value?: string; onChange?: (v: string) => void } & DatePickerProps\n) => {\n const { value = '', onChange, ...others } = props\n\n const dayjsValue = useMemo(() => {\n return !!value ? dayjs(value, format) : undefined\n }, [value])\n\n return (\n <DatePicker\n {...(others as unknown as any)}\n value={dayjsValue}\n onChange={(v: Dayjs | null) => {\n return onChange?.(v?.format(format) ?? '')\n }}\n />\n )\n}\n\nexport const RangePickerWrapper = (\n props: {\n value?: [string, string]\n onChange?: (v: [string, string]) => void\n } & Omit<DatePickerProps, 'value' | 'onChange'>\n) => {\n const { value, onChange, ...others } = props\n\n const dayjsValue = useMemo(() => {\n let start = !!value?.[0] ? dayjs(value?.[0], format) : undefined\n let end = !!value?.[1] ? dayjs(value?.[1], format) : undefined\n return [start, end]\n }, [value?.[0] ?? '', value?.[1] ?? ''])\n\n return (\n <DatePicker.RangePicker\n {...(others as unknown as any)}\n value={dayjsValue}\n allowClear={false}\n onChange={(v: [Dayjs, Dayjs] | null) => {\n let start = v?.[0]?.format(format) ?? ''\n let end = v?.[1]?.format(format) ?? ''\n onChange?.([start, end])\n }}\n />\n )\n}\n"],"names":["enumUrl","_a","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionSymbolAndValuePicker.js","sources":["../../../../packages/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.tsx"],"sourcesContent":["import { ChangeEventHandler, useEffect, useMemo, useState, type CSSProperties } from 'react'\nimport { DatePicker, DatePickerProps, Input, InputNumber, Select, SelectProps, Switch } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useControllableValue, useMemoizedFn } from 'ahooks'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { useAppContext } from '../../context'\nimport { FieldItem } from '../../types'\nimport { useConditionSymbolOptions } from '../add-module-modal/components/condition-modal/config'\nimport {\n DebounceEnumSelectWrapper,\n EnumSelectWrapper,\n} from '../add-module-modal/components/condition-modal/EnumSelect'\nimport InputWrapper from '../InputWrapper'\nimport { getSafeRegExp } from '../SelectWrapper'\nimport { ConditionListItemWrapper } from './interface'\n\nexport type ConditionSymbolAndValuePickerProps = {\n style?: CSSProperties\n className?: string\n\n field?: FieldItem\n\n value?: Omit<ConditionListItemWrapper, 'field'>\n onChange: (value: Omit<ConditionListItemWrapper, 'field'>) => void\n}\n\nexport const ConditionSymbolAndValuePicker = (props: ConditionSymbolAndValuePickerProps) => {\n const { style, className, field } = props\n const fieldType = field?.type\n\n const { t } = useTranslation()\n\n const { timeOptions, boolOptions, intOptions, stringOptions, rdateOptions, rdateOptions2 } =\n useConditionSymbolOptions()\n\n const conditionOptions = {\n int: intOptions,\n timestamp: timeOptions,\n string: stringOptions,\n bool: boolOptions,\n float: intOptions,\n enum: stringOptions,\n }\n\n const [value, setValue] = useControllableValue(props)\n\n /* ============================== symbol =============================== */\n let symbolOptions = conditionOptions[fieldType as keyof typeof conditionOptions] ?? []\n let symbolDisabled = !props?.field\n let symbolValue = value?.condition\n let symbolOnChange = (v: string) => {\n let newValue = { ...value, condition: v }\n if (fieldType === 'timestamp') {\n newValue['rdate'] = 'exactdate'\n }\n setValue({ ...value, condition: v })\n }\n\n /* ============================== condition value =============================== */\n const val = value?.val\n const val2 = value?.val2\n const rdate = value?.rdate\n\n const enumDataApi = useAppContext()?.service?.enumDataApi\n const fieldMap = useAppContext()?.globalData?.fieldMap\n const { options: enumOptions, enumUrl } = useMemo(() => {\n let options: {\n label: unknown\n value: unknown\n }[] = []\n let enumUrl: string | undefined = undefined\n\n if (field?.type === 'enum') {\n options =\n field?.enum?.map(item => ({\n label: fieldMap?.[item.label] ?? item.label,\n value: item.value,\n })) ?? []\n enumUrl = field?.dynamic_call_enum_api\n }\n return {\n options,\n enumUrl,\n }\n }, [field, fieldMap])\n\n const handleConditionValueChange = useMemoizedFn((key: 'val' | 'val2' | 'rdate', v: unknown) => {\n //@ts-ignore\n let _v = v?.target?.value ?? v\n setValue({ ...value, [key]: _v })\n })\n\n const getVaildValue = <T,>(\n v: unknown,\n type?: 'string' | 'number' | 'dayjs' | 'boolean' | 'enum' | 'lazy_enum',\n defaultValue?: T\n ) => {\n let ret = defaultValue\n\n switch (type) {\n case 'number':\n return (typeof v === 'number' ? v : ret) as T\n case 'dayjs': //组件内部处理\n return (typeof v === 'string' ? v : ret) as T\n case 'boolean':\n return (typeof v === 'boolean' ? v : ret) as T\n case 'string':\n return (typeof v === 'string' ? v : ret) as T\n default:\n return v as T\n }\n }\n\n return (\n <>\n <Select\n style={{ width: '100px' }}\n popupMatchSelectWidth={200}\n disabled={symbolDisabled}\n options={symbolOptions}\n value={symbolValue}\n onChange={symbolOnChange}\n />\n {!fieldType && (\n <>\n <InputWrapper style={{ width: '100px' }} disabled />\n </>\n )}\n\n {!!fieldType && (\n <>\n {['int', 'float'].includes(fieldType) && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n <InputNumber\n style={{ width: '100px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val)}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n {symbolValue === 'contain' ? (\n <InputNumber\n style={{ width: '100px', marginLeft: '5px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val2)}\n onChange={v => {\n handleConditionValueChange('val2', v)\n }}\n />\n ) : null}\n </>\n ) : null}\n\n {fieldType === 'timestamp' && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n {symbolValue === '=' || symbolValue === '<' || symbolValue === '>' ? (\n <Select\n showSearch\n filterOption={(input, option) => {\n const reg = getSafeRegExp(input)\n return reg ? reg?.test(`${option?.label ?? ''}`) : false\n }}\n optionFilterProp=\"label\"\n style={{ width: '150px' }}\n options={symbolValue === '=' ? rdateOptions : rdateOptions2}\n value={getVaildValue(rdate)}\n onChange={v => {\n handleConditionValueChange('rdate', v)\n }}\n />\n ) : null}\n\n {rdate == 'exactdate' && symbolValue !== 'contain' ? (\n <DatePickerWrapper\n style={{ width: '150px' }}\n value={getVaildValue(val, 'dayjs')}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n ) : null}\n\n {symbolValue === 'contain' ? (\n <RangePickerWrapper\n value={[getVaildValue(val, 'dayjs'), getVaildValue(val2, 'dayjs')]}\n onChange={v => {\n setValue({ ...value, val: v[0], val2: v[1] })\n // handleConditionValueChange('val', v?.[0])\n // handleConditionValueChange('val2', v?.[1])\n }}\n />\n ) : null}\n </>\n ) : null}\n\n {['string'].includes(fieldType) && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n <InputWrapper\n style={{ width: '150px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val)}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n {symbolValue === 'contain' ? (\n <InputWrapper\n style={{ width: '150px', marginLeft: '5px' }}\n placeholder={t('pleaseEnter')}\n value={getVaildValue(val2, 'dayjs')}\n onChange={v => {\n handleConditionValueChange('val2', v)\n }}\n />\n ) : null}\n </>\n ) : null}\n\n {['bool'].includes(fieldType) ? (\n <Switch\n value={getVaildValue(val, 'boolean')}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n />\n ) : null}\n\n {['enum'].includes(fieldType) && !['null', 'notnull'].includes(symbolValue) ? (\n <>\n {enumOptions && enumOptions?.length > 0 ? (\n <EnumSelectWrapper\n showSearch\n filterOption={(input, option) => {\n const reg = getSafeRegExp(input)\n return reg ? reg?.test(`${option?.label ?? ''}`) : false\n }}\n optionFilterProp=\"label\"\n style={{ width: '200px' }}\n options={enumOptions as { label: string; value: string }[]}\n value={getVaildValue(val)}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n {...(['include', 'notinclude'].includes(symbolValue)\n ? { mode: 'multiple', maxTagCount: 'responsive' }\n : {})}\n />\n ) : enumUrl ? (\n <DebounceEnumSelectWrapper<{ label: string; value: string }>\n // mode=\"multiple\"\n style={{ width: '200px' }}\n popupMatchSelectWidth={300}\n value={getVaildValue(val)}\n {...(['include', 'notinclude'].includes(symbolValue)\n ? { mode: 'multiple', maxTagCount: 'responsive' }\n : {})}\n onChange={v => {\n handleConditionValueChange('val', v)\n }}\n fetchOptions={async value => {\n let dfUrl = enumUrl\n if (value) {\n dfUrl = `${dfUrl}?q=${value}`\n }\n return (await enumDataApi?.(dfUrl)?.then(res => res.data?.list)) ?? []\n }}\n />\n ) : null}\n </>\n ) : null}\n </>\n )}\n </>\n )\n}\n\nConditionSymbolAndValuePicker.displayName = 'ConditionSymbolAndValuePicker'\n\nexport default ConditionSymbolAndValuePicker\n\n/* ============================== split =============================== */\nconst format = 'YYYY-MM-DD'\n\nexport const DatePickerWrapper = (\n props: { value?: string; onChange?: (v: string) => void } & DatePickerProps\n) => {\n const { value = '', onChange, ...others } = props\n\n const dayjsValue = useMemo(() => {\n return !!value ? dayjs(value, format) : undefined\n }, [value])\n\n return (\n <DatePicker\n {...(others as unknown as any)}\n value={dayjsValue}\n onChange={(v: Dayjs | null) => {\n return onChange?.(v?.format(format) ?? '')\n }}\n />\n )\n}\n\nexport const RangePickerWrapper = (\n props: {\n value?: [string, string]\n onChange?: (v: [string, string]) => void\n } & Omit<DatePickerProps, 'value' | 'onChange'>\n) => {\n const { value, onChange, ...others } = props\n\n const dayjsValue = useMemo(() => {\n let start = !!value?.[0] ? dayjs(value?.[0], format) : undefined\n let end = !!value?.[1] ? dayjs(value?.[1], format) : undefined\n return [start, end]\n }, [value?.[0] ?? '', value?.[1] ?? ''])\n\n return (\n <DatePicker.RangePicker\n {...(others as unknown as any)}\n value={dayjsValue}\n allowClear={false}\n onChange={(v: [Dayjs, Dayjs] | null) => {\n let start = v?.[0]?.format(format) ?? ''\n let end = v?.[1]?.format(format) ?? ''\n onChange?.([start, end])\n }}\n />\n )\n}\n"],"names":["enumUrl","_a","value"],"mappings":"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"}
|