From 3fec9081b8ecc202ba072e0d244a9d74362b77f0 Mon Sep 17 00:00:00 2001 From: LZS911 <932177767@qq.com> Date: Mon, 18 Nov 2024 15:55:00 +0800 Subject: [PATCH] fix: Resolve type exception in updateTableFilterInfo function --- .../components/List/ConnectionResultColumn.tsx | 2 +- .../ActiontechTable/hooks/useCustomFilter.tsx | 8 ++++---- .../hooks/useTableFilterContainer.tsx | 4 ++-- .../hooks/useTableRequestParams.tsx | 17 +++++++++++++---- .../components/ActiontechTable/index.type.ts | 4 ++-- .../sqle/src/page/PluginAudit/List/columns.tsx | 7 ++++--- .../page/SqlManagementException/List/column.tsx | 2 +- .../src/page/VersionManagement/List/column.tsx | 7 ++++--- 8 files changed, 31 insertions(+), 20 deletions(-) diff --git a/packages/base/src/page/DataSource/components/List/ConnectionResultColumn.tsx b/packages/base/src/page/DataSource/components/List/ConnectionResultColumn.tsx index 4a94e60dc..44a1621ad 100644 --- a/packages/base/src/page/DataSource/components/List/ConnectionResultColumn.tsx +++ b/packages/base/src/page/DataSource/components/List/ConnectionResultColumn.tsx @@ -1,7 +1,7 @@ import { useTranslation } from 'react-i18next'; import { BasicTag, BasicToolTips } from '@actiontech/shared'; import { formatTime } from '@actiontech/shared/lib/utils/Common'; -import { Space, Tag, Typography } from 'antd'; +import { Space, Typography } from 'antd'; import { ListDBServiceLastConnectionTestStatusEnum } from '@actiontech/shared/lib/api/base/service/common.enum'; type Props = { diff --git a/packages/shared/lib/components/ActiontechTable/hooks/useCustomFilter.tsx b/packages/shared/lib/components/ActiontechTable/hooks/useCustomFilter.tsx index f8555daf5..f484b87cd 100644 --- a/packages/shared/lib/components/ActiontechTable/hooks/useCustomFilter.tsx +++ b/packages/shared/lib/components/ActiontechTable/hooks/useCustomFilter.tsx @@ -21,7 +21,7 @@ const useCustomFilter = () => { F extends Record >( meta: ActiontechTableFilterContainerMeta[0], - updateTableFilterInfo: UpdateTableFilterInfoType, + updateTableFilterInfo: UpdateTableFilterInfoType, filterCustomProps?: Map> ) => { const props = filterCustomProps?.get(meta.dataIndex); @@ -49,7 +49,7 @@ const useCustomFilter = () => { F extends Record >( meta: ActiontechTableFilterContainerMeta[0], - updateTableFilterInfo: UpdateTableFilterInfoType, + updateTableFilterInfo: UpdateTableFilterInfoType, filterCustomProps?: Map> ) => { const props = filterCustomProps?.get(meta.dataIndex); @@ -89,7 +89,7 @@ const useCustomFilter = () => { F extends Record >( meta: ActiontechTableFilterContainerMeta[0], - updateTableFilterInfo: UpdateTableFilterInfoType, + updateTableFilterInfo: UpdateTableFilterInfoType, filterCustomProps?: Map> ) => { const props = filterCustomProps?.get(meta.dataIndex); @@ -130,7 +130,7 @@ const useCustomFilter = () => { F extends Record >( meta: ActiontechTableFilterContainerMeta[0], - updateTableFilterInfo: UpdateTableFilterInfoType, + updateTableFilterInfo: UpdateTableFilterInfoType, filterCustomProps?: Map> ) => { const disabledDate: RangePickerProps['disabledDate'] = (current) => { diff --git a/packages/shared/lib/components/ActiontechTable/hooks/useTableFilterContainer.tsx b/packages/shared/lib/components/ActiontechTable/hooks/useTableFilterContainer.tsx index 0edad64c4..1718380a9 100644 --- a/packages/shared/lib/components/ActiontechTable/hooks/useTableFilterContainer.tsx +++ b/packages/shared/lib/components/ActiontechTable/hooks/useTableFilterContainer.tsx @@ -66,7 +66,7 @@ const useTableFilterContainer = < OtherKeys extends string = '' >( columns: ActiontechTableColumn, - updateTableFilterInfo: UpdateTableFilterInfoType, + updateTableFilterInfo: UpdateTableFilterInfoType, extraFilterMeta?: ActiontechTableFilterMeta ) => { const [filterButtonMeta, setFilterButtonMeta] = useState< @@ -109,7 +109,7 @@ const useTableFilterContainer = < const updateAllSelectedFilterItem = useCallback( (checked: boolean) => { - updateTableFilterInfo((_: F) => ({})); + updateTableFilterInfo((_: F) => ({} as F)); setFilterButtonMeta((meta) => { meta.forEach((value, key) => { meta.set(key, { ...value, checked }); diff --git a/packages/shared/lib/components/ActiontechTable/hooks/useTableRequestParams.tsx b/packages/shared/lib/components/ActiontechTable/hooks/useTableRequestParams.tsx index b3d36e799..a51e7de17 100644 --- a/packages/shared/lib/components/ActiontechTable/hooks/useTableRequestParams.tsx +++ b/packages/shared/lib/components/ActiontechTable/hooks/useTableRequestParams.tsx @@ -1,6 +1,10 @@ import { TableProps } from 'antd'; import { useCallback, useState } from 'react'; -import { TablePagination, UseTableRequestParamsOptions } from '../index.type'; +import { + TablePagination, + UpdateTableFilterInfoType, + UseTableRequestParamsOptions +} from '../index.type'; import { SorterResult } from 'antd/es/table/interface'; import { isEmpty, isEqual } from 'lodash'; @@ -29,9 +33,14 @@ const useTableRequestParams = < page_size: defaultPageSize }); - const updateTableFilterInfo = (filterInfo: F) => { - const filterInfoData = - typeof filterInfo === 'function' ? filterInfo() : filterInfo; + const isFilterInfoUpdaterFunction = ( + filterInfo: unknown + ): filterInfo is (prevFilterInfo: F) => F => typeof filterInfo === 'function'; + + const updateTableFilterInfo: UpdateTableFilterInfoType = (filterInfo) => { + const filterInfoData = isFilterInfoUpdaterFunction(filterInfo) + ? filterInfo(tableFilterInfo) + : filterInfo; if ( JSON.stringify(filterInfoData) === '{}' && JSON.stringify(tableFilterInfo) === '{}' diff --git a/packages/shared/lib/components/ActiontechTable/index.type.ts b/packages/shared/lib/components/ActiontechTable/index.type.ts index 451dbe838..f55d2e7aa 100644 --- a/packages/shared/lib/components/ActiontechTable/index.type.ts +++ b/packages/shared/lib/components/ActiontechTable/index.type.ts @@ -38,7 +38,7 @@ export type ICustomSearchInputProps = ICustomInputProps; * 更新表格筛选数据的方法, 一般为 useTableRequestParams 导出的 updateTableFilterInfo */ export type UpdateTableFilterInfoType> = ( - params: F + params: F | ((prevParams: F) => F) ) => void; /** @@ -102,7 +102,7 @@ export type TableFilterContainerProps< /** * 更新表格筛选数据 */ - updateTableFilterInfo: UpdateTableFilterInfoType; + updateTableFilterInfo: UpdateTableFilterInfoType; /** * 表格筛选项的输入组件类型的 props, 目前只有 select 以及 date-range, 可以处理一些 onChange 等事件. diff --git a/packages/sqle/src/page/PluginAudit/List/columns.tsx b/packages/sqle/src/page/PluginAudit/List/columns.tsx index 48aef642e..43db7e715 100644 --- a/packages/sqle/src/page/PluginAudit/List/columns.tsx +++ b/packages/sqle/src/page/PluginAudit/List/columns.tsx @@ -16,9 +16,10 @@ export type PluginAuditListTableFilterParamType = PageInfoWithoutIndexAndSize< export const PluginAuditListColumns: ( onOpenDrawer: (record: ISqlDEVRecord) => void -) => ActiontechTableColumn = ( - onOpenDrawer -) => { +) => ActiontechTableColumn< + ISqlDEVRecord, + PluginAuditListTableFilterParamType +> = (onOpenDrawer) => { return [ { dataIndex: 'sql_fingerprint', diff --git a/packages/sqle/src/page/SqlManagementException/List/column.tsx b/packages/sqle/src/page/SqlManagementException/List/column.tsx index bc12e1e33..64c19df17 100644 --- a/packages/sqle/src/page/SqlManagementException/List/column.tsx +++ b/packages/sqle/src/page/SqlManagementException/List/column.tsx @@ -21,7 +21,7 @@ export type SqlManagementExceptionTableFilterParamType = export const SqlManagementExceptionListColumns: () => ActiontechTableColumn< IBlacklistResV1, - IGetBlacklistV1Params + SqlManagementExceptionTableFilterParamType > = () => { return [ { diff --git a/packages/sqle/src/page/VersionManagement/List/column.tsx b/packages/sqle/src/page/VersionManagement/List/column.tsx index 0c4a4b986..0e5af5b31 100644 --- a/packages/sqle/src/page/VersionManagement/List/column.tsx +++ b/packages/sqle/src/page/VersionManagement/List/column.tsx @@ -17,9 +17,10 @@ export type VersionManagementTableFilterParamType = PageInfoWithoutIndexAndSize< export const VersionManagementTableColumns: ( projectID: string -) => ActiontechTableColumn = ( - projectID -) => { +) => ActiontechTableColumn< + ISqlVersionResV1, + VersionManagementTableFilterParamType +> = (projectID) => { return [ { dataIndex: 'version',