This is an automated email from the ASF dual-hosted git repository.

ppawar pushed a commit to branch ATLAS-5168
in repository https://gitbox.apache.org/repos/asf/atlas.git

commit 033df62a520d8340b33c72c46865f9bedc10973c
Author: Prasad Pawar <[email protected]>
AuthorDate: Fri Dec 12 12:58:22 2025 +0530

    ATLAS-5168: React UI: Classification searches parent classification instead 
of child
---
 dashboard/src/components/Table/TableFilters.tsx    |  4 ++-
 dashboard/src/components/Table/TableLayout.tsx     |  4 ++-
 dashboard/src/components/TreeNodeIcons.tsx         | 27 ++++++++++-----
 dashboard/src/models/tableLayoutType.ts            |  1 +
 .../views/Administrator/BusinessMetadataTab.tsx    | 39 +++++++++-------------
 .../DetailPage/ClassificationDetailsLayout.tsx     |  2 +-
 .../PropertiesTab/BMAttributesFields.tsx           | 26 +++++++--------
 .../GlossaryDetails/GlossaryDetailsLayout.tsx      |  2 +-
 dashboard/src/views/SearchResult/SearchResult.tsx  | 10 +++---
 .../src/views/SideBar/SideBarTree/SideBarTree.tsx  | 18 +++++-----
 10 files changed, 69 insertions(+), 64 deletions(-)

diff --git a/dashboard/src/components/Table/TableFilters.tsx 
b/dashboard/src/components/Table/TableFilters.tsx
index 94d424296..a60d2e959 100644
--- a/dashboard/src/components/Table/TableFilters.tsx
+++ b/dashboard/src/components/Table/TableFilters.tsx
@@ -104,7 +104,8 @@ export const TableFilter = ({
   columnVisibilityParams,
   setUpdateTable,
   getSelectedRowModel,
-  memoizedData
+  memoizedData,
+  customLeftButton
 }: any) => {
   const [open, setOpen] = useState<null | HTMLElement>(null);
   const location = useLocation();
@@ -299,6 +300,7 @@ export const TableFilter = ({
     <>
       <Stack direction="row" justifyContent={"space-between"}>
         <Stack direction="row" spacing={1}>
+          {customLeftButton}
           {allTableFilters && (
             <CustomButton
               variant="outlined"
diff --git a/dashboard/src/components/Table/TableLayout.tsx 
b/dashboard/src/components/Table/TableLayout.tsx
index 97143aa65..0eed92e27 100644
--- a/dashboard/src/components/Table/TableLayout.tsx
+++ b/dashboard/src/components/Table/TableLayout.tsx
@@ -352,7 +352,8 @@ const TableLayout: FC<TableProps> = ({
   isClientSidePagination,
   isEmptyData,
   setIsEmptyData,
-  showGoToPage
+  showGoToPage,
+  customLeftButton
 }) => {
   let defaultHideColumns = { ...defaultColumnVisibility };
   const location = useLocation();
@@ -550,6 +551,7 @@ const TableLayout: FC<TableProps> = ({
                   setUpdateTable={setUpdateTable}
                   getSelectedRowModel={getSelectedRowModel}
                   memoizedData={memoizedData}
+                  customLeftButton={customLeftButton}
                 />
               )}
               {isfilterQuery && <Divider />}
diff --git a/dashboard/src/components/TreeNodeIcons.tsx 
b/dashboard/src/components/TreeNodeIcons.tsx
index ea835dae6..93c734a7b 100644
--- a/dashboard/src/components/TreeNodeIcons.tsx
+++ b/dashboard/src/components/TreeNodeIcons.tsx
@@ -277,14 +277,12 @@ const TreeNodeIcons = (props: {
             onClick={(_e) => {
               if (treeName == "Classifications") {
                 const searchParams = new URLSearchParams();
-                searchParams.set(
-                  "tag",
-                  node.types == "child" ? node.label : node.nodeName
-                );
+                const classificationName = node.label
+                  ? node.label.split(" (")[0]
+                  : node.nodeName || node.id;
+                searchParams.set("tag", classificationName);
                 navigate({
-                  pathname: `/tag/tagAttribute/${
-                    node.types == "child" ? node.label : node.nodeName
-                  }`,
+                  pathname: `/tag/tagAttribute/${classificationName}`,
                   search: searchParams.toString()
                 });
                 setExpandNode(null);
@@ -380,9 +378,20 @@ const TreeNodeIcons = (props: {
               const searchParams = new URLSearchParams();
               searchParams.set("searchType", "basic");
               if (treeName == "Classifications") {
-                searchParams.set("tag", node.nodeName || node.id);
+                let classificationName: string;
+                if (node.label) {
+                  classificationName = node.label.split(" (")[0];
+                } else if (node.nodeName) {
+                  classificationName = node.nodeName;
+                } else {
+                  classificationName = node.id;
+                }
+                searchParams.set("tag", classificationName);
               } else if (treeName == "Glossary") {
-                searchParams.set("term", node.id);
+                const termValue = node.types == "child" && node.parent
+                  ? `${node.id}@${node.parent}`
+                  : node.id;
+                searchParams.set("term", termValue);
               }
               navigate({
                 pathname: "/search/searchResult",
diff --git a/dashboard/src/models/tableLayoutType.ts 
b/dashboard/src/models/tableLayoutType.ts
index 0baeb064f..0e8258cb2 100644
--- a/dashboard/src/models/tableLayoutType.ts
+++ b/dashboard/src/models/tableLayoutType.ts
@@ -56,4 +56,5 @@ export interface TableProps {
   isEmptyData?: boolean;
   setIsEmptyData?: React.Dispatch<React.SetStateAction<boolean>>;
   showGoToPage?: boolean;
+  customLeftButton?: React.ReactNode;
 }
diff --git a/dashboard/src/views/Administrator/BusinessMetadataTab.tsx 
b/dashboard/src/views/Administrator/BusinessMetadataTab.tsx
index 6c4a69e30..327561db3 100644
--- a/dashboard/src/views/Administrator/BusinessMetadataTab.tsx
+++ b/dashboard/src/views/Administrator/BusinessMetadataTab.tsx
@@ -197,29 +197,7 @@ const BusinessMetadataTab = ({ setForm, setBMAttribute }: 
any) => {
 
   return (
     <Stack direction="column">
-      <Stack padding={2} position="relative">
-        <div style={{ height: "0" }}>
-          <CustomButton
-            variant="contained"
-            sx={{
-              position: "absolute",
-              marginTop: "13px",
-              marginLeft: "13px",
-              left: "16px"
-            }}
-            size="small"
-            onClick={(_e: any) => {
-              setForm(true);
-              setBMAttribute({});
-              dispatchState(setEditBMAttribute({}));
-            }}
-            startIcon={<AddIcon fontSize="small" />}
-            data-cy="createBusinessMetadata"
-          >
-            Create Business Metadata
-          </CustomButton>
-        </div>
-
+      <Stack padding={2}>
         <TableLayout
           data={businessMetadataDefs || []}
           columns={defaultColumns}
@@ -233,6 +211,21 @@ const BusinessMetadataTab = ({ setForm, setBMAttribute }: 
any) => {
           showRowSelection={false}
           tableFilters={true}
           expandRow={true}
+          customLeftButton={
+            <CustomButton
+              variant="contained"
+              size="small"
+              onClick={(_e: any) => {
+                setForm(true);
+                setBMAttribute({});
+                dispatchState(setEditBMAttribute({}));
+              }}
+              startIcon={<AddIcon fontSize="small" />}
+              data-cy="createBusinessMetadata"
+            >
+              Create Business Metadata
+            </CustomButton>
+          }
           auditTableDetails={{
             Component: BusinessMetadataAtrribute,
             componentProps: {
diff --git a/dashboard/src/views/DetailPage/ClassificationDetailsLayout.tsx 
b/dashboard/src/views/DetailPage/ClassificationDetailsLayout.tsx
index 48adc6111..8f954565e 100644
--- a/dashboard/src/views/DetailPage/ClassificationDetailsLayout.tsx
+++ b/dashboard/src/views/DetailPage/ClassificationDetailsLayout.tsx
@@ -56,7 +56,7 @@ const ClassificationDetailsLayout = () => {
         loading={loading}
         attributeDefs={attributeDefs}
       />
-      <SearchResult classificationParams={tagName} />
+      <SearchResult classificationParams={tagName} hideFilters={true} />
     </Stack>
   );
 };
diff --git 
a/dashboard/src/views/DetailPage/EntityDetailTabs/PropertiesTab/BMAttributesFields.tsx
 
b/dashboard/src/views/DetailPage/EntityDetailTabs/PropertiesTab/BMAttributesFields.tsx
index 76f618e8d..e5da5fb97 100644
--- 
a/dashboard/src/views/DetailPage/EntityDetailTabs/PropertiesTab/BMAttributesFields.tsx
+++ 
b/dashboard/src/views/DetailPage/EntityDetailTabs/PropertiesTab/BMAttributesFields.tsx
@@ -140,20 +140,20 @@ const BMAttributesFields = ({ obj, control, index }: any) 
=> {
         defaultValue={""}
         render={({ field }) => {
           return (
-            <Stack gap="0.5rem">
-              <div style={{ position: "relative", flexBasis: "100%" }}>
-                {typeName == "string" ? (
-                  <ReactQuill
+          <Stack gap="0.5rem">
+            <div style={{ position: "relative", flexBasis: "100%" }}>
+              {typeName == "string" ? (
+                <ReactQuill
                     key={`quill-${index}-${name}`}
-                    theme="snow"
-                    placeholder={"Enter String"}
-                    onChange={(text) => {
-                      field.onChange(text);
-                    }}
-                    className="classification-form-editor"
-                    value={typeof field.value === "string" ? field.value : ""}
-                  />
-                ) : (
+                  theme="snow"
+                  placeholder={"Enter String"}
+                  onChange={(text) => {
+                    field.onChange(text);
+                  }}
+                  className="classification-form-editor"
+                  value={typeof field.value === "string" ? field.value : ""}
+                />
+              ) : (
                 <TextField
                   margin="none"
                   fullWidth
diff --git 
a/dashboard/src/views/DetailPage/GlossaryDetails/GlossaryDetailsLayout.tsx 
b/dashboard/src/views/DetailPage/GlossaryDetails/GlossaryDetailsLayout.tsx
index d724a4cde..6cd480eea 100644
--- a/dashboard/src/views/DetailPage/GlossaryDetails/GlossaryDetailsLayout.tsx
+++ b/dashboard/src/views/DetailPage/GlossaryDetails/GlossaryDetailsLayout.tsx
@@ -142,7 +142,7 @@ const GlossaryDetailLayout = () => {
                 {(activeTab == undefined || activeTab === "entities") &&
                   !isEmpty(data) && (
                     <div style={{ padding: "16px" }}>
-                      <SearchResult glossaryTypeParams={qualifiedName} />
+                      <SearchResult glossaryTypeParams={qualifiedName} 
hideFilters={true} />
                     </div>
                   )}
                 {activeTab === "entitiesProperties" && (
diff --git a/dashboard/src/views/SearchResult/SearchResult.tsx 
b/dashboard/src/views/SearchResult/SearchResult.tsx
index e2e4cca9f..ff5d9d90d 100644
--- a/dashboard/src/views/SearchResult/SearchResult.tsx
+++ b/dashboard/src/views/SearchResult/SearchResult.tsx
@@ -83,7 +83,7 @@ let defaultColumnsName: Array<string> = [
   "term"
 ];
 
-const SearchResult = ({ classificationParams, glossaryTypeParams }: any) => {
+const SearchResult = ({ classificationParams, glossaryTypeParams, hideFilters 
}: any) => {
   const [searchParams, setSearchParams] = useSearchParams();
   const [searchData, setSearchData] = useState<any>([]);
   const [loader, setLoader] = useState(true);
@@ -947,7 +947,7 @@ const SearchResult = ({ classificationParams, 
glossaryTypeParams }: any) => {
         showPagination={true}
         showRowSelection={!isDslAggregate}
         // showRowSelection={true}
-        tableFilters={true}
+        tableFilters={!hideFilters}
         assignFilters={
           !isEmpty(classificationParams || glossaryTypeParams)
             ? {
@@ -956,10 +956,10 @@ const SearchResult = ({ classificationParams, 
glossaryTypeParams }: any) => {
               }
             : null
         }
-        queryBuilder={true}
-        allTableFilters={true}
+        queryBuilder={!hideFilters}
+        allTableFilters={!hideFilters}
         setUpdateTable={setUpdateTable}
-        isfilterQuery={true}
+        isfilterQuery={!hideFilters}
         isEmptyData={isEmptyData}
         setIsEmptyData={setIsEmptyData}
         showGoToPage={true}
diff --git a/dashboard/src/views/SideBar/SideBarTree/SideBarTree.tsx 
b/dashboard/src/views/SideBar/SideBarTree/SideBarTree.tsx
index fd4bf92f9..b3bf46a5d 100644
--- a/dashboard/src/views/SideBar/SideBarTree/SideBarTree.tsx
+++ b/dashboard/src/views/SideBar/SideBarTree/SideBarTree.tsx
@@ -595,15 +595,13 @@ const BarTreeView: FC<{
         break;
     }
 
-    // Note: Don't delete filters here for CustomFilters - they will be set by 
setCustomFiltersSearchParams
     if (treeName !== "CustomFilters") {
-      searchParams.delete("attributes");
-      searchParams.delete("entityFilters");
-      searchParams.delete("tagFilters");
-      searchParams.delete("relationshipFilters");
-      // Always reset pagination defaults on tree navigation
-      searchParams.set("pageLimit", "25");
-      searchParams.set("pageOffset", "0");
+    searchParams.delete("attributes");
+    searchParams.delete("entityFilters");
+    searchParams.delete("tagFilters");
+    searchParams.delete("relationshipFilters");
+    searchParams.set("pageLimit", "25");
+    searchParams.set("pageOffset", "0");
     }
   };
 
@@ -654,7 +652,7 @@ const BarTreeView: FC<{
         
         // Step 1: Set searchType based on saved search type
         if (params.searchType) {
-          const searchTypeValue = params.searchType.toLowerCase() === 
"advanced" ? "advanced" : "basic";
+          const searchTypeValue = params.searchType === "ADVANCED" ? "dsl" : 
"basic";
           searchParams.set("searchType", searchTypeValue);
         }
         
@@ -729,7 +727,7 @@ const BarTreeView: FC<{
           }
         }
         
-        searchParams.set("isCF", "true");
+      searchParams.set("isCF", "true");
       }
     } else {
       searchParams.set("relationshipName", node.id);

Reply via email to