From 6dd66bfa2760305763fdb28c93c13dfe2cb4ad42 Mon Sep 17 00:00:00 2001 From: Aarsh Date: Thu, 10 Jul 2025 12:01:09 -0500 Subject: [PATCH 1/4] Implement data download when box runs --- .../src/components/DataExportBox.tsx | 120 +++++++++++++++++- 1 file changed, 113 insertions(+), 7 deletions(-) diff --git a/utk_curio/frontend/urban-workflows/src/components/DataExportBox.tsx b/utk_curio/frontend/urban-workflows/src/components/DataExportBox.tsx index 41c0562d..dfb64a47 100644 --- a/utk_curio/frontend/urban-workflows/src/components/DataExportBox.tsx +++ b/utk_curio/frontend/urban-workflows/src/components/DataExportBox.tsx @@ -1,4 +1,5 @@ import React, { useState, useEffect } from "react"; +import { useRef } from "react"; import { Handle, Position } from "reactflow"; import BoxEditor from "./editing/BoxEditor"; @@ -16,6 +17,7 @@ import DescriptionModal from "./DescriptionModal"; import TemplateModal from "./TemplateModal"; import { useUserContext } from "../providers/UserProvider"; import { InputIcon } from "./edges/InputIcon"; +import { fetchData } from "../services/api"; function DataExportBox({ data, isConnectable }) { const [output, setOutput] = useState<{ code: string; content: string, outputType: string }>({ @@ -24,7 +26,14 @@ function DataExportBox({ data, isConnectable }) { outputType: "" }); // stores the output produced by the last execution of this box const [code, setCode] = useState(""); - const [sendCode, setSendCode] = useState(); + const sendCode = async () => { + setOutput({ code: "exec", content: "", outputType: "" }); // trigger spinner + + await downloadData(); + + setOutput({ code: "success", content: "Download complete.", outputType: "" }); // hide spinner + }; + const [templateData, setTemplateData] = useState