From c81a156fcdc7abc5a8a96789d77126c1be6ece41 Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Mon, 16 Oct 2023 12:44:35 -0300 Subject: [PATCH 1/2] fix bug for capital case errors --- src/frontend/src/utils/reactflowUtils.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 5cb549471..cb2f8962b 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -13,7 +13,7 @@ import { cleanEdgesType, unselectAllNodesType, } from "../types/utils/reactflowUtils"; -import { toNormalCase } from "./utils"; +import { toTitleCase } from "./utils"; export function cleanEdges({ flow: { edges, nodes }, @@ -216,7 +216,9 @@ export function validateNode(node: NodeType, edges: Edge[]): Array { ) { errors.push( `${type} is missing ${ - template.display_name || toNormalCase(template[t].name) + template[t].display_name || + toTitleCase(template[t].name) || + toTitleCase(t) }.` ); } else if ( From 233cec6f0dba480aa504dc4920c7fdee77d5e9e8 Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Mon, 16 Oct 2023 15:03:48 -0300 Subject: [PATCH 2/2] fix(GenericNode): import getFieldTitle function from utils/utils to fix compilation error fix(GenericNode): replace calls to toTitleCase with getFieldTitle function to improve code readability and maintainability fix(GenericNode): replace calls to getFieldTitle with getFieldTitle function to improve code readability and maintainability fix(reactflowUtils): import getFieldTitle function from utils/utils to fix compilation error fix(reactflowUtils): replace calls to toTitleCase with getFieldTitle function to improve code readability and maintainability fix(reactflowUtils): replace calls to getFieldTitle with getFieldTitle function to improve code readability and maintainability fix(utils): add getFieldTitle function to handle getting the display name or name of a template field --- .../src/CustomNodes/GenericNode/index.tsx | 28 ++++++------------- src/frontend/src/types/api/index.ts | 2 ++ src/frontend/src/utils/reactflowUtils.ts | 21 +++++--------- src/frontend/src/utils/utils.ts | 17 ++++++++++- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/frontend/src/CustomNodes/GenericNode/index.tsx b/src/frontend/src/CustomNodes/GenericNode/index.tsx index 524b54ead..9a30f5598 100644 --- a/src/frontend/src/CustomNodes/GenericNode/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/index.tsx @@ -12,7 +12,7 @@ import { validationStatusType } from "../../types/components"; import { NodeDataType } from "../../types/flow"; import { cleanEdges } 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({ @@ -199,15 +199,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={ @@ -368,15 +363,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 42ec05ead..7094faa5a 100644 --- a/src/frontend/src/types/api/index.ts +++ b/src/frontend/src/types/api/index.ts @@ -41,6 +41,8 @@ export type TemplateVariableType = { multiline?: boolean; value?: any; 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 cb2f8962b..4e4d62067 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -13,7 +13,7 @@ import { cleanEdgesType, unselectAllNodesType, } from "../types/utils/reactflowUtils"; -import { toTitleCase } from "./utils"; +import { getFieldTitle } from "./utils"; export function cleanEdges({ flow: { edges, nodes }, @@ -214,13 +214,7 @@ export function validateNode(node: NodeType, edges: Edge[]): Array { edge.targetHandle.split("|")[2] === node.id ) ) { - errors.push( - `${type} is missing ${ - template[t].display_name || - toTitleCase(template[t].name) || - toTitleCase(t) - }.` - ); + errors.push(`${type} is missing ${getFieldTitle(template, t)}.`); } else if ( template[t].type === "dict" && template[t].required && @@ -231,15 +225,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 f06a8f63c..c5561953c 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, @@ -527,3 +531,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); +}