From 8c3b2c58aaabec891a67526364d2376366fc2194 Mon Sep 17 00:00:00 2001 From: Ian Arawjo Date: Thu, 11 May 2023 22:38:55 -0400 Subject: [PATCH] Fixed bug in CSV node --- chain-forge/src/CsvNode.js | 48 +++++++++++++++++--------------- chain-forge/src/InspectorNode.js | 2 +- chain-forge/src/PromptNode.js | 3 +- chain-forge/src/index.css | 4 +-- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/chain-forge/src/CsvNode.js b/chain-forge/src/CsvNode.js index 1d2c437..58cc5d6 100644 --- a/chain-forge/src/CsvNode.js +++ b/chain-forge/src/CsvNode.js @@ -21,6 +21,7 @@ const CsvNode = ({ data, id }) => { const processCsv = (csv) => { var matches = csv.match(/(\s*"[^"]+"\s*|\s*[^,]+|,)(?=,|$)/g); + if (!matches) return; for (var n = 0; n < matches.length; ++n) { matches[n] = matches[n].trim(); if (matches[n] == ',') matches[n] = ''; @@ -45,7 +46,7 @@ const CsvNode = ({ data, id }) => { }, [id, setDataPropsForNode]); const handKeyDown = useCallback((event) => { - if (event.key === 'Enter') { + if (event.key === 'Enter' && data.text && data.text.trim().length > 0) { setIsEditing(false); setCsvInput(null); } @@ -57,14 +58,14 @@ const CsvNode = ({ data, id }) => { }, []); const handleOnBlur = useCallback((event) => { - setIsEditing(false); - setCsvInput(null); - }, []); + if (data.text && data.text.trim().length > 0) + setIsEditing(false); + }, [data.text]); // render csv div const renderCsvDiv = useCallback(() => { // Take the data.text as csv (only 1 row), and get individual elements - const elements = data.fields; + const elements = data.fields || []; // generate a HTML code that highlights the elements const html = []; @@ -76,36 +77,39 @@ const CsvNode = ({ data, id }) => { } }); - setContentDiv(
- {html} -
); - setCountText({elements.length} elements); + setContentDiv( +
+ {html} +
+ ); + setCountText( + {elements.length} elements + ); }, [data.text, handleDivOnClick]); // When isEditing changes, add input useEffect(() => { - if (!isEditing) { + if (!isEditing && data.text && data.text.trim().length > 0) { setCsvInput(null); renderCsvDiv(); return; } - if (!csvInput) { - var text_val = data.text || ''; - setCsvInput( -
-