From 3e66acf506a3fbb35664554bf423713f02152be1 Mon Sep 17 00:00:00 2001 From: Bircck <55695195+Bircck@users.noreply.github.com> Date: Fri, 11 Sep 2026 08:50:30 +0200 Subject: [PATCH] Show consistent relationship behavior labels and details --- .../entity/CascadeConfiguration.tsx | 83 +++++++------------ 1 file changed, 31 insertions(+), 52 deletions(-) diff --git a/Website/components/datamodelview/entity/CascadeConfiguration.tsx b/Website/components/datamodelview/entity/CascadeConfiguration.tsx index 58ce68f..e09b966 100644 --- a/Website/components/datamodelview/entity/CascadeConfiguration.tsx +++ b/Website/components/datamodelview/entity/CascadeConfiguration.tsx @@ -1,65 +1,44 @@ 'use client' +import { Tooltip } from "@mui/material"; import { CascadeConfigurationType, CascadeType } from "@/lib/Types"; -export function CascadeConfiguration({ config }: { config: CascadeConfigurationType | null }): JSX.Element { - if (!config) { - return None - } +const actions = ["Assign", "Reparent", "Delete", "Share", "Unshare", "Merge", "Archive", "RollupView"] as const; +const configurableActions = ["Assign", "Reparent", "Share", "Unshare"] as const; - if (isReferential(config)) { - return Referential +export function getRelationshipBehavior(config: CascadeConfigurationType): "Referential" | "Parental" | "Custom" { + // Merge depends on table support; Archive and RollupView are independent settings. + // They remain visible in the details without changing the behavior family. + if (configurableActions.every(action => config[action] === CascadeType.None) && + (config.Delete === CascadeType.RemoveLink || config.Delete === CascadeType.Restrict)) { + return "Referential"; } - - if (isReferentialRestrictDelete(config)) { - return Referential, Restrict Delete + if (configurableActions.every(action => config[action] === CascadeType.Cascade) && + config.Delete === CascadeType.Cascade) { + return "Parental"; } + return "Custom"; +} - if (isParential(config)) { - return Parential +export function CascadeConfiguration({ config }: { config: CascadeConfigurationType | null }): JSX.Element { + if (!config) { + return None } return ( -