This is an automated email from the ASF dual-hosted git repository.
ppawar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push:
new 985211652 ATLAS-5105: [REACT UI] Incorrect errors being displayed when
assigning blank term to entity. (#453)
985211652 is described below
commit 985211652d6f6d729dfc018a13da0e5f98ab8e0c
Author: Prasad Pawar <[email protected]>
AuthorDate: Thu Sep 25 17:51:11 2025 +0530
ATLAS-5105: [REACT UI] Incorrect errors being displayed when assigning
blank term to entity. (#453)
---
dashboard/src/components/Forms/FormTreeView.tsx | 13 ++++++++++++-
dashboard/src/views/DetailPage/DetailPageAttributes.tsx | 12 ++++++++++++
dashboard/src/views/DetailPage/EntityDetailPage.tsx | 14 +++++++++++++-
dashboard/src/views/Glossary/AssignTerm.tsx | 6 ++++++
4 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/dashboard/src/components/Forms/FormTreeView.tsx
b/dashboard/src/components/Forms/FormTreeView.tsx
index 1b1cd7bc3..896fe6467 100644
--- a/dashboard/src/components/Forms/FormTreeView.tsx
+++ b/dashboard/src/components/Forms/FormTreeView.tsx
@@ -222,10 +222,21 @@ const FormTreeView: React.FC<{
node?.id && (
<CustomTreeItem
key={node.id}
- itemId={node.types != "parent" ? `${node.id}@${node?.parent}` :
node.id}
+ itemId={
+ node.types != "parent"
+ ? node.id === "No Records Found"
+ ? node.id
+ : `${node.id}@${node?.parent}`
+ : node.id
+ }
label={
<div
onClick={(_event: React.MouseEvent<HTMLElement>) => {
+ if (node.id === "No Records Found") {
+ toast.dismiss(toastId.current);
+ toastId.current = toast.info("No terms present");
+ return;
+ }
if (node.types == "parent" && isEmpty(node.children)) {
toast.dismiss(toastId.current);
toastId.current = toast.warning(`No ${treeName}`);
diff --git a/dashboard/src/views/DetailPage/DetailPageAttributes.tsx
b/dashboard/src/views/DetailPage/DetailPageAttributes.tsx
index 4fbe50e7c..403150836 100644
--- a/dashboard/src/views/DetailPage/DetailPageAttributes.tsx
+++ b/dashboard/src/views/DetailPage/DetailPageAttributes.tsx
@@ -31,6 +31,8 @@ import {
sanitizeHtmlContent
} from "@utils/Utils";
import { useState } from "react";
+import { useAppSelector } from "@hooks/reducerHook";
+import { toast } from "react-toastify";
import EditOutlinedIcon from "@mui/icons-material/EditOutlined";
import { removeClassification } from "@api/apiMethods/classificationApiMethod";
import { useParams, useSearchParams } from "react-router-dom";
@@ -104,6 +106,11 @@ const DetailPageAttribute = ({
const { name }: { name: string; found: boolean; key: any } =
extractKeyValueFromEntity(data);
+ const { glossaryData }: any = useAppSelector((state: any) => state.glossary);
+ const hasAnyGlossaryTerms = Array.isArray(glossaryData)
+ ? glossaryData.some((g: any) => Array.isArray(g?.terms) && g.terms.length
> 0)
+ : false;
+
return (
<>
<Stack
@@ -373,6 +380,11 @@ const DetailPageAttribute = ({
size="small"
color="primary"
onClick={() => {
+ if (!hasAnyGlossaryTerms) {
+ toast.dismiss();
+ toast.info("There are no available terms");
+ return;
+ }
setOpenAddTermModal(true);
}}
>
diff --git a/dashboard/src/views/DetailPage/EntityDetailPage.tsx
b/dashboard/src/views/DetailPage/EntityDetailPage.tsx
index 6d88d31b0..dfec7b491 100644
--- a/dashboard/src/views/DetailPage/EntityDetailPage.tsx
+++ b/dashboard/src/views/DetailPage/EntityDetailPage.tsx
@@ -33,6 +33,7 @@ import SkeletonLoader from "@components/SkeletonLoader";
import RelationshipsTab from "./EntityDetailTabs/RelationshipsTab";
import ClassificationsTab from "./EntityDetailTabs/ClassificationsTab";
import { CustomButton, LightTooltip, LinkTab } from
"@components/muiComponents";
+import { toast } from "react-toastify";
import AuditsTab from "./EntityDetailTabs/AuditsTab";
import { EntityState } from "@models/relationshipSearchType";
import { useSelector } from "react-redux";
@@ -82,6 +83,10 @@ const EntityDetailPage: React.FC = () => {
const { entity, referredEntities }: any = detailPageData || {};
const { classifications = {}, relationshipAttributes = {} } = entity || {};
const { meanings = [] } = relationshipAttributes || {};
+ const { glossaryData }: any = useAppSelector((state: any) => state.glossary);
+ const hasAnyGlossaryTerms = Array.isArray(glossaryData)
+ ? glossaryData.some((g: any) => Array.isArray(g?.terms) && g.terms.length
> 0)
+ : false;
const { name }: { name: string; found: boolean; key: any } =
extractKeyValueFromEntity(entity);
@@ -417,7 +422,14 @@ const EntityDetailPage: React.FC = () => {
tabIndex={-1}
size="small"
color="primary"
- onClick={() => setOpenAddTermModal(true)}
+ onClick={() => {
+ if (!hasAnyGlossaryTerms) {
+ toast.dismiss();
+ toast.info("There are no available terms");
+ return;
+ }
+ setOpenAddTermModal(true);
+ }}
>
<AddCircleOutlineIcon
className="mr-0"
diff --git a/dashboard/src/views/Glossary/AssignTerm.tsx
b/dashboard/src/views/Glossary/AssignTerm.tsx
index e7525a12c..61f66d1fe 100644
--- a/dashboard/src/views/Glossary/AssignTerm.tsx
+++ b/dashboard/src/views/Glossary/AssignTerm.tsx
@@ -294,6 +294,11 @@ const AssignTerm = ({
}, []);
const handleNodeSelect = (nodeId: any) => {
+ if (nodeId === "No Records Found") {
+ toast.dismiss(toastId.current);
+ toastId.current = toast.info("No terms present");
+ return;
+ }
setSelectedNode(nodeId);
};
@@ -445,6 +450,7 @@ const AssignTerm = ({
maxWidth="sm"
button2Handler={relatedTerm ? handleSubmit(onSubmit) : assignTerm}
disableButton2={isSubmitting}
+ isDirty={!isEmpty(selectedNode)}
>
{relatedTerm ? (
<Stack gap="16px" sx={{ width: "100%" }}>