diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index b134c3ecb..81d99c8d5 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -18,7 +18,7 @@ import { scapedJSONStringfy, } from "../../utils/reactflowUtils"; import { nodeColors, nodeIconsLucide } from "../../utils/styleUtils"; -import { classNames, toTitleCase } from "../../utils/utils"; +import { classNames, getFieldTitle } from "../../utils/utils"; import ParameterComponent from "./components/parameterComponent"; export default function GenericNode({ @@ -239,15 +239,10 @@ export default function GenericNode({ ] ?? nodeColors.unknown } - title={ - data.node?.template[templateField].display_name - ? data.node.template[templateField].display_name - : data.node?.template[templateField].name - ? toTitleCase( - data.node.template[templateField].name - ) - : toTitleCase(templateField) - } + title={getFieldTitle( + data.node?.template!, + templateField + )} info={data.node?.template[templateField].info} name={templateField} tooltipTitle={ @@ -448,15 +443,10 @@ export default function GenericNode({ ] ?? nodeColors.unknown } - title={ - data.node?.template[templateField].display_name - ? data.node.template[templateField].display_name - : data.node?.template[templateField].name - ? toTitleCase( - data.node.template[templateField].name - ) - : toTitleCase(templateField) - } + title={getFieldTitle( + data.node?.template!, + templateField + )} info={data.node?.template[templateField].info} name={templateField} tooltipTitle={ diff --git a/src/frontend/src/types/api/index.ts b/src/frontend/src/types/api/index.ts index 49b989ac2..69bc8a670 100644 --- a/src/frontend/src/types/api/index.ts +++ b/src/frontend/src/types/api/index.ts @@ -47,6 +47,8 @@ export type TemplateVariableType = { dynamic?: boolean; proxy?: { id: string; field: string }; input_types?: Array; + display_name?: string; + name?: string; [key: string]: any; }; export type sendAllProps = { diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 26c9e1e41..64c978c42 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -25,8 +25,7 @@ import { unselectAllNodesType, updateEdgesHandleIdsType, } from "../types/utils/reactflowUtils"; -import { toNormalCase, toTitleCase } from "./utils"; -const uid = new ShortUniqueId({ length: 5 }); +import { getFieldTitle } from "./utils"; export function cleanEdges({ flow: { edges, nodes }, @@ -240,11 +239,7 @@ export function validateNode(node: NodeType, edges: Edge[]): Array { node.id ) ) { - errors.push( - `${type} is missing ${ - template.display_name || toNormalCase(template[t].name) - }.` - ); + errors.push(`${type} is missing ${getFieldTitle(template, t)}.`); } else if ( template[t].type === "dict" && template[t].required && @@ -255,15 +250,14 @@ export function validateNode(node: NodeType, edges: Edge[]): Array { ) { if (hasDuplicateKeys(template[t].value)) errors.push( - `${type} (${ - template.display_name || template[t].name - }) contains duplicate keys with the same values.` + `${type} (${getFieldTitle( + template, + t + )}) contains duplicate keys with the same values.` ); if (hasEmptyKey(template[t].value)) errors.push( - `${type} (${ - template.display_name || template[t].name - }) field must not be empty.` + `${type} (${getFieldTitle(template, t)}) field must not be empty.` ); } return errors; diff --git a/src/frontend/src/utils/utils.ts b/src/frontend/src/utils/utils.ts index ef56e45ea..60433a149 100644 --- a/src/frontend/src/utils/utils.ts +++ b/src/frontend/src/utils/utils.ts @@ -1,7 +1,11 @@ import clsx, { ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; import { ADJECTIVES, DESCRIPTIONS, NOUNS } from "../flow_constants"; -import { APIDataType, TemplateVariableType } from "../types/api"; +import { + APIDataType, + APITemplateType, + TemplateVariableType, +} from "../types/api"; import { IVarHighlightType, groupedObjType, @@ -550,3 +554,14 @@ export function tabsArray(codes: string[], method: number) { }, ]; } + +export function getFieldTitle( + template: APITemplateType, + templateField: string +): string { + return template[templateField].display_name + ? template[templateField].display_name! + : template[templateField].name + ? toTitleCase(template[templateField].name!) + : toTitleCase(templateField); +}