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}`
           }
         })
       },

Reply via email to