This is an automated email from the ASF dual-hosted git repository. lauraxia pushed a commit to branch antdUI-gravitino-base1.1.0 in repository https://gitbox.apache.org/repos/asf/gravitino.git
commit 6c261cc2800af32400223df178a5989f6f045206 Author: Qian Xia <[email protected]> AuthorDate: Tue Jan 6 19:13:21 2026 +0800 [#9614][#9628][#9633][#9634] fix list tags issue, edit table issues --- .../app/catalogs/rightContent/CreateTableDialog.js | 44 +++++++++++++++------- .../entitiesContent/CatalogDetailsPage.js | 14 +++---- .../rightContent/entitiesContent/CatalogsPage.js | 5 +-- .../entitiesContent/FilesetDetailsPage.js | 8 +--- .../entitiesContent/ModelDetailsPage.js | 14 +------ .../entitiesContent/SchemaDetailsPage.js | 36 ++++-------------- .../entitiesContent/TableDetailsPage.js | 18 ++------- .../entitiesContent/TopicDetailsPage.js | 14 +------ web/web/src/components/ColumnTypeComponent.js | 22 +++++------ web/web/src/components/CustomTags.js | 27 +++++++++---- web/web/src/components/PolicyTag.js | 22 +++++++---- .../src/components/SpecialColumnTypeComponent.js | 6 ++- web/web/src/lib/store/metalakes/index.js | 7 +++- 13 files changed, 109 insertions(+), 128 deletions(-) diff --git a/web/web/src/app/catalogs/rightContent/CreateTableDialog.js b/web/web/src/app/catalogs/rightContent/CreateTableDialog.js index f46a0ab50b..0ea3d438b0 100644 --- a/web/web/src/app/catalogs/rightContent/CreateTableDialog.js +++ b/web/web/src/app/catalogs/rightContent/CreateTableDialog.js @@ -297,7 +297,7 @@ export default function CreateTableDialog({ ...props }) { form.setFieldValue(['columns', key, 'comment'], table.columns[key].comment || '') form.setFieldValue(['columns', key, 'isEdit'], true) if (typeof table.columns[key].type === 'string') { - form.setFieldValue(['columns', key, 'typeObj', 'type'], table.columns[key].type) + form.setFieldValue(['columns', key, 'typeObj', 'type'], capitalizeFirstLetter(table.columns[key].type)) } else { const type = table.columns[key].type.type const elementType = table.columns[key].type?.elementType @@ -308,7 +308,10 @@ export default function CreateTableDialog({ ...props }) { form.setFieldValue(['columns', key, 'typeObj'], { type: table.columns[key].type?.type, element: { - type: typeof elementType === 'string' ? elementType : elementType.type, + type: + typeof elementType === 'string' + ? capitalizeFirstLetter(elementType) + : capitalizeFirstLetter(elementType.type), required: !table.columns[key].type?.containsNull, ...getElementType(table.columns[key].type?.elementType) } @@ -318,12 +321,18 @@ export default function CreateTableDialog({ ...props }) { form.setFieldValue(['columns', key, 'typeObj'], { type: table.columns[key].type?.type, keyObj: { - type: typeof keyType === 'string' ? keyType : keyType.type, + type: + typeof keyType === 'string' + ? capitalizeFirstLetter(keyType) + : capitalizeFirstLetter(keyType.type), required: true, ...getElementType(table.columns[key].type?.keyType) }, valueObj: { - type: typeof valueType === 'string' ? valueType : valueType.type, + type: + typeof valueType === 'string' + ? capitalizeFirstLetter(valueType) + : capitalizeFirstLetter(valueType.type), required: !table.columns[key].type?.valueContainsNull, ...getElementType(table.columns[key].type?.valueType) } @@ -337,7 +346,10 @@ export default function CreateTableDialog({ ...props }) { id: col.name, name: col.name, typeObj: { - type: typeof col.type === 'string' ? col.type : col.type.type, + type: + typeof col.type === 'string' + ? capitalizeFirstLetter(col.type) + : capitalizeFirstLetter(col.type.type), ...getElementType(col.type) }, required: !col.nullable, @@ -352,7 +364,8 @@ export default function CreateTableDialog({ ...props }) { types: table.columns[key].type?.types.map(type => { return { typeObj: { - type: typeof type === 'string' ? type : type.type, + type: + typeof type === 'string' ? capitalizeFirstLetter(type) : capitalizeFirstLetter(type.type), ...getElementType(type) } } @@ -360,7 +373,10 @@ export default function CreateTableDialog({ ...props }) { }) break default: - form.setFieldValue(['columns', key, 'typeObj', 'type'], table.columns[key].type) + form.setFieldValue( + ['columns', key, 'typeObj', 'type'], + capitalizeFirstLetter(table.columns[key].type) + ) } } if (table.columns[key].defaultValue) { @@ -405,17 +421,19 @@ export default function CreateTableDialog({ ...props }) { table.indexes.forEach(item => { const fields = item.fieldNames.map(f => f[0]) form.setFieldValue(['indexes', idxIndex, 'name'], item.name) - form.setFieldValue(['indexes', idxIndex, 'indexType'], item.indexType) + form.setFieldValue(['indexes', idxIndex, 'indexType'], capitalizeFirstLetter(item.indexType)) form.setFieldValue(['indexes', idxIndex, 'fieldName'], fields) idxIndex++ }) } let idxProperty = 0 - Object.entries(table.properties || {}).forEach(([key, value]) => { - form.setFieldValue(['properties', idxProperty, 'key'], key) - form.setFieldValue(['properties', idxProperty, 'value'], value) - idxProperty++ - }) + if (table.properties && Object.keys(table.properties).length) { + Object.entries(table.properties).forEach(([key, value]) => { + form.setFieldValue(['properties', idxProperty, 'key'], key) + form.setFieldValue(['properties', idxProperty, 'value'], value) + idxProperty++ + }) + } handScroll() setIsLoading(false) } catch (e) { diff --git a/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js b/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js index b7ddb3459e..4fdfa1971e 100644 --- a/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js +++ b/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogDetailsPage.js @@ -147,7 +147,6 @@ export default function CatalogDetailsPage() { <div> <Tags readOnly={true} - metalake={currentMetalake} metadataObjectType={'catalog'} metadataObjectFullName={store.activatedDetails?.name || catalog} key={`catalog-${store.activatedDetails?.name || catalog}-tags`} @@ -159,7 +158,6 @@ export default function CatalogDetailsPage() { <div> <Policies readOnly={true} - metalake={currentMetalake} metadataObjectType={'catalog'} metadataObjectFullName={store.activatedDetails?.name || catalog} key={`catalog-${store.activatedDetails?.name || catalog}-policies`} @@ -294,10 +292,9 @@ export default function CatalogDetailsPage() { render: (_, record) => record?.node === 'schema' ? ( <Tags - metalake={currentMetalake} metadataObjectType={'schema'} - metadataObjectFullName={`${catalog}.${record.name}`} - key={`schema-${catalog}.${record.name}-tags`} + metadataObjectFullName={`${record.namespace.at(-1)}.${record.name}`} + key={`schema-${record.namespace.at(-1)}.${record.name}-tags`} /> ) : null }, @@ -309,10 +306,9 @@ export default function CatalogDetailsPage() { render: (_, record) => record?.node === 'schema' ? ( <Policies - metalake={currentMetalake} metadataObjectType={'schema'} - metadataObjectFullName={`${catalog}.${record.name}`} - key={`schema-${catalog}.${record.name}-policies`} + metadataObjectFullName={`${record.namespace.at(-1)}.${record.name}`} + key={`schema-${record.namespace.at(-1)}.${record.name}-policies`} /> ) : null }, @@ -375,7 +371,7 @@ export default function CatalogDetailsPage() { ] : []) ], - [currentMetalake, catalogType, catalog, anthEnable] + [catalogType, anthEnable] ) const { resizableColumns, components, tableWidth } = useAntdColumnResize(() => { diff --git a/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogsPage.js b/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogsPage.js index 53e8f5769f..e019769b4a 100644 --- a/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogsPage.js +++ b/web/web/src/app/catalogs/rightContent/entitiesContent/CatalogsPage.js @@ -225,7 +225,6 @@ export default function CatalogsPage() { render: (_, record) => record?.node === 'catalog' ? ( <Tags - metalake={currentMetalake} metadataObjectType={'catalog'} metadataObjectFullName={record.name} key={`catalog-${record.name}-tags`} @@ -240,10 +239,8 @@ export default function CatalogsPage() { render: (_, record) => record?.node === 'catalog' ? ( <Policies - metalake={currentMetalake} metadataObjectType={'catalog'} metadataObjectFullName={record.name} - isLoading={store.tableLoading} key={`catalog-${record.name}-policies`} /> ) : null @@ -318,7 +315,7 @@ export default function CatalogsPage() { } } ], - [currentMetalake, catalogType, anthEnable, store.tableLoading, store.tableData] + [catalogType, anthEnable, store.tableLoading, store.tableData] ) const { resizableColumns, components, tableWidth } = useAntdColumnResize(() => { diff --git a/web/web/src/app/catalogs/rightContent/entitiesContent/FilesetDetailsPage.js b/web/web/src/app/catalogs/rightContent/entitiesContent/FilesetDetailsPage.js index 50d5de49e3..b2df658d87 100644 --- a/web/web/src/app/catalogs/rightContent/entitiesContent/FilesetDetailsPage.js +++ b/web/web/src/app/catalogs/rightContent/entitiesContent/FilesetDetailsPage.js @@ -91,12 +91,7 @@ export default function FilesetDetailsPage({ ...props }) { const tagContent = ( <div> - <Tags - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'fileset'} - metadataObjectFullName={`${catalog}.${schema}.${fileset}`} - /> + <Tags readOnly={true} metadataObjectType={'fileset'} metadataObjectFullName={`${catalog}.${schema}.${fileset}`} /> </div> ) @@ -104,7 +99,6 @@ export default function FilesetDetailsPage({ ...props }) { <div> <Policies readOnly={true} - metalake={currentMetalake} metadataObjectType={'fileset'} metadataObjectFullName={`${catalog}.${schema}.${fileset}`} /> diff --git a/web/web/src/app/catalogs/rightContent/entitiesContent/ModelDetailsPage.js b/web/web/src/app/catalogs/rightContent/entitiesContent/ModelDetailsPage.js index fab49e67cc..edea952810 100644 --- a/web/web/src/app/catalogs/rightContent/entitiesContent/ModelDetailsPage.js +++ b/web/web/src/app/catalogs/rightContent/entitiesContent/ModelDetailsPage.js @@ -118,23 +118,13 @@ export default function ModelDetailsPage({ ...props }) { const tagContent = ( <div> - <Tags - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'model'} - metadataObjectFullName={`${catalog}.${schema}.${model}`} - /> + <Tags readOnly={true} metadataObjectType={'model'} metadataObjectFullName={`${catalog}.${schema}.${model}`} /> </div> ) const policyContent = ( <div> - <Policies - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'model'} - metadataObjectFullName={`${catalog}.${schema}.${model}`} - /> + <Policies readOnly={true} metadataObjectType={'model'} metadataObjectFullName={`${catalog}.${schema}.${model}`} /> </div> ) diff --git a/web/web/src/app/catalogs/rightContent/entitiesContent/SchemaDetailsPage.js b/web/web/src/app/catalogs/rightContent/entitiesContent/SchemaDetailsPage.js index 6b64ee5228..080539b5ae 100644 --- a/web/web/src/app/catalogs/rightContent/entitiesContent/SchemaDetailsPage.js +++ b/web/web/src/app/catalogs/rightContent/entitiesContent/SchemaDetailsPage.js @@ -202,23 +202,13 @@ export default function SchemaDetailsPage() { const tagContent = ( <div> - <Tags - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'schema'} - metadataObjectFullName={`${catalog}.${schema}`} - /> + <Tags readOnly={true} metadataObjectType={'schema'} metadataObjectFullName={`${catalog}.${schema}`} /> </div> ) const policyContent = ( <div> - <Policies - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'schema'} - metadataObjectFullName={`${catalog}.${schema}`} - /> + <Policies readOnly={true} metadataObjectType={'schema'} metadataObjectFullName={`${catalog}.${schema}`} /> </div> ) const properties = store.activatedDetails?.properties @@ -419,9 +409,8 @@ export default function SchemaDetailsPage() { render: (_, record) => record?.node === entityType ? ( <Tags - metalake={currentMetalake} metadataObjectType={entityType} - metadataObjectFullName={`${catalog}.${schema}.${record.name}`} + metadataObjectFullName={`${record.namespace.at(-2)}.${record.namespace.at(-1)}.${record.name}`} /> ) : null }, @@ -432,9 +421,8 @@ export default function SchemaDetailsPage() { render: (_, record) => record?.node === entityType ? ( <Policies - metalake={currentMetalake} metadataObjectType={entityType} - metadataObjectFullName={`${catalog}.${schema}.${record.name}`} + metadataObjectFullName={`${record.namespace.at(-2)}.${record.namespace.at(-1)}.${record.name}`} /> ) : null }, @@ -451,22 +439,14 @@ export default function SchemaDetailsPage() { anthEnable={anthEnable} handleEdit={() => handleEdit(record.name)} showDeleteConfirm={modal => showDeleteConfirm(modal, record, entityType)} - handleSetOwner={() => handleSetOwner(catalogType, `${catalog}.${schema}.${record.name}`)} + handleSetOwner={() => + handleSetOwner(catalogType, `${record.namespace.at(-2)}.${record.namespace.at(-1)}.${record.name}`) + } /> ) } ], - [ - nameCol, - catalog, - schema, - catalogType, - currentMetalake, - entityType, - store.tableLoading, - anthEnable, - catalogData?.provider - ] + [nameCol, entityType, store.tableLoading, anthEnable, catalogData?.provider] ) const { resizableColumns, components, tableWidth } = useAntdColumnResize(() => { diff --git a/web/web/src/app/catalogs/rightContent/entitiesContent/TableDetailsPage.js b/web/web/src/app/catalogs/rightContent/entitiesContent/TableDetailsPage.js index 843e1513ad..f0fd398689 100644 --- a/web/web/src/app/catalogs/rightContent/entitiesContent/TableDetailsPage.js +++ b/web/web/src/app/catalogs/rightContent/entitiesContent/TableDetailsPage.js @@ -128,23 +128,13 @@ export default function TableDetailsPage({ ...props }) { const tagContent = ( <div> - <Tags - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'table'} - metadataObjectFullName={`${catalog}.${schema}.${table}`} - /> + <Tags readOnly={true} metadataObjectType={'table'} metadataObjectFullName={`${catalog}.${schema}.${table}`} /> </div> ) const policyContent = ( <div> - <Policies - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'table'} - metadataObjectFullName={`${catalog}.${schema}.${table}`} - /> + <Policies readOnly={true} metadataObjectType={'table'} metadataObjectFullName={`${catalog}.${schema}.${table}`} /> </div> ) const properties = store.activatedDetails?.properties @@ -432,7 +422,6 @@ export default function TableDetailsPage({ ...props }) { render: (_, record) => !record?.node ? ( <Tags - metalake={currentMetalake} metadataObjectType={'column'} metadataObjectFullName={`${catalog}.${schema}.${table}.${record.name}`} /> @@ -445,14 +434,13 @@ export default function TableDetailsPage({ ...props }) { render: (_, record) => !record?.node ? ( <Policies - metalake={currentMetalake} metadataObjectType={'column'} metadataObjectFullName={`${catalog}.${schema}.${table}.${record.name}`} /> ) : null } ], - [currentMetalake, store.activatedDetails] + [store.activatedDetails] ) const { resizableColumns, components, tableWidth } = useAntdColumnResize(() => { diff --git a/web/web/src/app/catalogs/rightContent/entitiesContent/TopicDetailsPage.js b/web/web/src/app/catalogs/rightContent/entitiesContent/TopicDetailsPage.js index a22259dfb1..cbedf983cc 100644 --- a/web/web/src/app/catalogs/rightContent/entitiesContent/TopicDetailsPage.js +++ b/web/web/src/app/catalogs/rightContent/entitiesContent/TopicDetailsPage.js @@ -77,23 +77,13 @@ export default function TopicDetailsPage({ ...props }) { const tagContent = ( <div> - <Tags - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'topic'} - metadataObjectFullName={`${catalog}.${schema}.${topic}`} - /> + <Tags readOnly={true} metadataObjectType={'topic'} metadataObjectFullName={`${catalog}.${schema}.${topic}`} /> </div> ) const policyContent = ( <div> - <Policies - readOnly={true} - metalake={currentMetalake} - metadataObjectType={'topic'} - metadataObjectFullName={`${catalog}.${schema}.${topic}`} - /> + <Policies readOnly={true} metadataObjectType={'topic'} metadataObjectFullName={`${catalog}.${schema}.${topic}`} /> </div> ) const properties = store.activatedDetails?.properties diff --git a/web/web/src/components/ColumnTypeComponent.js b/web/web/src/components/ColumnTypeComponent.js index fcb61507f0..d3c54a72da 100644 --- a/web/web/src/components/ColumnTypeComponent.js +++ b/web/web/src/components/ColumnTypeComponent.js @@ -83,7 +83,7 @@ export default function ColumnTypeComponent({ ...props }) { setIsShowParamsInput(false) setErrorMsg('') const currentTypeParam = extractNumbersInParentheses(currentType) - const value = currentType?.replace(/\([^)]*\)/g, '') + const value = currentType?.replace(/\([^)]*\)/g, '')?.toLowerCase() if (currentTypeParam && !paramL && ColumnWithParamType.includes(value)) { setParamL(currentTypeParam) } @@ -95,29 +95,29 @@ export default function ColumnTypeComponent({ ...props }) { if (ColumnWithParamType.includes(value)) { form.setFieldValue( [...parentField, subField.name, 'typeObj', ...columnNamespace, 'type'], - value + `(${paramL || currentTypeParam})` + capitalizeFirstLetter(value) + `(${paramL || currentTypeParam})` ) if (!paramL && !currentTypeParam) { - setErrorMsg(t('common.missL')) + setErrorMsg('L is missing') } } if (value === 'decimal') { form.setFieldValue( [...parentField, subField.name, 'typeObj', ...columnNamespace, 'type'], - value + `(${paramP || currentTypeParam1 || ''},${paramS || currentTypeParam2 || ''})` + capitalizeFirstLetter(value) + `(${paramP || currentTypeParam1 || ''},${paramS || currentTypeParam2 || ''})` ) const errors = [] if (!paramP && !currentTypeParam1) { - errors.push(t('common.missP')) + errors.push('P is missing') } if (!paramS && !currentTypeParam2) { - errors.push(t('common.missS')) + errors.push('S is missing') } if (paramP && +paramP > 38) { - errors.push(t('common.errorP')) + errors.push('P can not > 38') } if (paramS && +paramP < +paramS) { - errors.push(t('common.errorS')) + errors.push('P can not < S') } if (errors.length) { setErrorMsg(errors.join(', ')) @@ -149,7 +149,7 @@ export default function ColumnTypeComponent({ ...props }) { () => ({ validator(_, type) { if (!type) { - return Promise.reject(new Error(t('table.columnTypeRequired'))) + return Promise.reject(new Error('The column type is required!')) } return Promise.resolve() @@ -195,7 +195,7 @@ export default function ColumnTypeComponent({ ...props }) { cancelText='Cancel' ></Popconfirm> - {currentType && ColumnSpesicalType.includes(currentType) && ( + {currentType && ColumnSpesicalType.includes(currentType.toLowerCase()) && ( <Button type='link' className='ml-1 h-min p-0' onClick={editSpecialColumnType}> Edit </Button> @@ -216,7 +216,7 @@ export default function ColumnTypeComponent({ ...props }) { </div> )} {typeof currentType === 'string' && - currentType?.replace(/\([^)]*\)/g, '') === 'decimal' && + currentType?.replace(/\([^)]*\)/g, '').toLowerCase() === 'decimal' && isShowParamsInput && ( <> <div className='ml-1 border-b focus-within:border-[color:theme(colors.defaultPrimary)]'> diff --git a/web/web/src/components/CustomTags.js b/web/web/src/components/CustomTags.js index 11f15b9120..79fcc3ff14 100644 --- a/web/web/src/components/CustomTags.js +++ b/web/web/src/components/CustomTags.js @@ -26,6 +26,7 @@ import { Flex, Select, Space, Tag, Tooltip, theme } from 'antd' import { useAppSelector, useAppDispatch } from '@/lib/hooks/useStore' import { associateTag } from '@/lib/store/tags' import { getCurrentEntityTags } from '@/lib/store/metalakes' +import { useSearchParams } from 'next/navigation' const tagInputStyle = { width: 100, @@ -35,7 +36,7 @@ const tagInputStyle = { } export default function Tags({ ...props }) { - const { readOnly, metalake, metadataObjectType, metadataObjectFullName } = props + const { readOnly, metadataObjectType, metadataObjectFullName } = props const { token } = theme.useToken() const [inputVisible, setInputVisible] = useState(false) const [optionList, setOptionList] = useState([]) @@ -44,10 +45,12 @@ export default function Tags({ ...props }) { const store = useAppSelector(state => state.tags) const dispatch = useAppDispatch() const [tagsForEntity, setTagsForEntity] = useState([]) + const searchParams = useSearchParams() + const currentMetalake = searchParams.get('metalake') const getTagsForEntity = async () => { const { payload } = await dispatch( - getCurrentEntityTags({ metalake, metadataObjectType, metadataObjectFullName, details: true }) + getCurrentEntityTags({ metalake: currentMetalake, metadataObjectType, metadataObjectFullName, details: true }) ) return payload?.tags || [] @@ -58,10 +61,10 @@ export default function Tags({ ...props }) { const tags = await getTagsForEntity() setTagsForEntity(tags) } - if (metalake && metadataObjectType && metadataObjectFullName) { + if (currentMetalake && metadataObjectType && metadataObjectFullName) { initLoad() } - }, [metalake, metadataObjectType, metadataObjectFullName]) + }, [metadataObjectType, metadataObjectFullName]) useEffect(() => { if (inputVisible) { @@ -101,7 +104,12 @@ export default function Tags({ ...props }) { const handleChange = async value => { if (value && !tagsForEntity?.map(tag => tag.name)?.includes(value)) { await dispatch( - associateTag({ metalake, metadataObjectType, metadataObjectFullName, data: { tagsToAdd: [value] } }) + associateTag({ + metalake: currentMetalake, + metadataObjectType, + metadataObjectFullName, + data: { tagsToAdd: [value] } + }) ) } const tags = await getTagsForEntity() @@ -111,7 +119,12 @@ export default function Tags({ ...props }) { const handleClose = async removedTag => { await dispatch( - associateTag({ metalake, metadataObjectType, metadataObjectFullName, data: { tagsToRemove: [removedTag] } }) + associateTag({ + metalake: currentMetalake, + metadataObjectType, + metadataObjectFullName, + data: { tagsToRemove: [removedTag] } + }) ) const tags = await getTagsForEntity() setTagsForEntity(tags) @@ -122,7 +135,7 @@ export default function Tags({ ...props }) { } const handleClick = name => () => { - router.push(`/metadataObjectsForTag?tag=${name}&metalake=${metalake}`) + router.push(`/metadataObjectsForTag?tag=${name}&metalake=${currentMetalake}`) } const tagPlusStyle = { diff --git a/web/web/src/components/PolicyTag.js b/web/web/src/components/PolicyTag.js index 88dd97b7ca..b795f53596 100644 --- a/web/web/src/components/PolicyTag.js +++ b/web/web/src/components/PolicyTag.js @@ -25,6 +25,7 @@ import { cn } from '@/lib/utils/tailwind' import { useAppSelector, useAppDispatch } from '@/lib/hooks/useStore' import { associatePolicy } from '@/lib/store/policies' import { getCurrentEntityPolicies } from '@/lib/store/metalakes' +import { useSearchParams } from 'next/navigation' const tagInputStyle = { width: 100, @@ -34,7 +35,7 @@ const tagInputStyle = { } export default function PolicyTag({ ...props }) { - const { readOnly, metalake, metadataObjectType, metadataObjectFullName } = props + const { readOnly, metadataObjectType, metadataObjectFullName } = props const { token } = theme.useToken() const [inputVisible, setInputVisible] = useState(false) const [optionList, setOptionList] = useState([]) @@ -43,10 +44,12 @@ export default function PolicyTag({ ...props }) { const store = useAppSelector(state => state.policies) const dispatch = useAppDispatch() const [policiesForEntity, setPoliciesForEntity] = useState([]) + const searchParams = useSearchParams() + const currentMetalake = searchParams.get('metalake') const getPoliciesForEntity = async () => { const { payload } = await dispatch( - getCurrentEntityPolicies({ metalake, metadataObjectType, metadataObjectFullName, details: true }) + getCurrentEntityPolicies({ metalake: currentMetalake, metadataObjectType, metadataObjectFullName, details: true }) ) return payload?.policies || [] @@ -57,10 +60,10 @@ export default function PolicyTag({ ...props }) { const policies = await getPoliciesForEntity() setPoliciesForEntity(policies) } - if (metalake && metadataObjectType && metadataObjectFullName) { + if (currentMetalake && metadataObjectType && metadataObjectFullName) { initLoad() } - }, [metalake, metadataObjectType, metadataObjectFullName]) + }, [metadataObjectType, metadataObjectFullName]) useEffect(() => { if (inputVisible) { @@ -101,7 +104,12 @@ export default function PolicyTag({ ...props }) { const handleChange = async value => { if (value && !policiesForEntity?.map(policy => policy.name)?.includes(value)) { await dispatch( - associatePolicy({ metalake, metadataObjectType, metadataObjectFullName, data: { policiesToAdd: [value] } }) + associatePolicy({ + metalake: currentMetalake, + metadataObjectType, + metadataObjectFullName, + data: { policiesToAdd: [value] } + }) ) const policies = await getPoliciesForEntity() setPoliciesForEntity(policies) @@ -112,7 +120,7 @@ export default function PolicyTag({ ...props }) { const handleClose = async removedPolicy => { await dispatch( associatePolicy({ - metalake, + metalake: currentMetalake, metadataObjectType, metadataObjectFullName, data: { policiesToRemove: [removedPolicy] } @@ -127,7 +135,7 @@ export default function PolicyTag({ ...props }) { } const handleClick = name => () => { - router.push(`/metadataObjectsForPolicy?policy=${name}&metalake=${metalake}`) + router.push(`/metadataObjectsForPolicy?policy=${name}&metalake=${currentMetalake}`) } const tagPlusStyle = { diff --git a/web/web/src/components/SpecialColumnTypeComponent.js b/web/web/src/components/SpecialColumnTypeComponent.js index e81db03ff0..e2118fea9d 100644 --- a/web/web/src/components/SpecialColumnTypeComponent.js +++ b/web/web/src/components/SpecialColumnTypeComponent.js @@ -27,7 +27,11 @@ import { cn } from '@/lib/utils/tailwind' export default function SpecialColumnTypeComponent({ ...props }) { const { form, parentField, subField, columnNamespace, isEdit, columnTypes, provider } = props - const currentType = Form.useWatch([...parentField, subField.name, 'typeObj', ...columnNamespace, 'type'], form) + + const currentType = Form.useWatch( + [...parentField, subField.name, 'typeObj', ...columnNamespace, 'type'], + form + )?.toLowerCase() const fieldColumns = Form.useWatch( [...parentField, subField.name, 'typeObj', ...columnNamespace, 'fieldColumns'], diff --git a/web/web/src/lib/store/metalakes/index.js b/web/web/src/lib/store/metalakes/index.js index ca311ae9f2..1d15d59bf8 100644 --- a/web/web/src/lib/store/metalakes/index.js +++ b/web/web/src/lib/store/metalakes/index.js @@ -935,11 +935,14 @@ export const getTableDetails = createAsyncThunk( type: 'sortOrders', icon: 'mdi:letter-s-circle', items: sortOrders.map(i => { + const fields = + i.sortTerm?.type === 'field' ? i.sortTerm.fieldName : i.sortTerm?.funcArgs.find(f => f.fieldName)?.fieldName + return { - fields: i.sortTerm.fieldName, + fields: fields, dir: i.direction, no: i.nullOrdering, - text: `${i.sortTerm.fieldName[0]} ${i.direction} ${i.nullOrdering}` + text: `${fields[0]} ${i.direction} ${i.nullOrdering}` } }) },
