From 2a3fb6ebfa4d3b618c200a799a5ef49f4d3fc8ba Mon Sep 17 00:00:00 2001
From: ali asaria <aliasaria@users.noreply.github.com>
Date: Fri, 28 Feb 2025 11:18:05 -0500
Subject: [PATCH] show code button

---
 .../components/Experiment/Workflows/index.tsx | 56 ++++++++++++++-----
 1 file changed, 42 insertions(+), 14 deletions(-)

diff --git a/src/renderer/components/Experiment/Workflows/index.tsx b/src/renderer/components/Experiment/Workflows/index.tsx
index 67d33cf5..738fcf22 100644
--- a/src/renderer/components/Experiment/Workflows/index.tsx
+++ b/src/renderer/components/Experiment/Workflows/index.tsx
@@ -18,6 +18,7 @@ import {
 import '@xyflow/react/dist/style.css';
 import {
   AxeIcon,
+  BookOpenIcon,
   EllipsisIcon,
   PenIcon,
   PlayIcon,
@@ -33,12 +34,36 @@ import NewWorkflowModal from './NewWorkflowModal';
 import NewNodeModal from './NewNodeModal';
 import WorkflowCanvas from './WorkflowCanvas';
 
+function ShowCode({ code }) {
+  const config = code?.config;
+
+  if (!config) {
+    return <></>;
+  }
+
+  let parsedConfig = {};
+
+  try {
+    parsedConfig = JSON.parse(config);
+  } catch (e) {}
+
+  return (
+    <Box
+      sx={{ width: '100%', backgroundColor: '#F7F9FB', overflow: 'scroll' }}
+      p={4}
+    >
+      <pre>{JSON.stringify(parsedConfig, null, 2)}</pre>
+    </Box>
+  );
+}
+
 const fetcher = (url: any) => fetch(url).then((res) => res.json());
 
 export default function Workflows({ experimentInfo }) {
   const [selectedWorkflowId, setSelectedWorkflowId] = useState(null);
   const [newWorkflowModalOpen, setNewWorkflowModalOpen] = useState(false);
   const [newNodeflowModalOpen, setNewNodeflowModalOpen] = useState(false);
+  const [viewCodeMode, setViewCodeMode] = useState(false);
 
   const {
     data: workflowsData,
@@ -143,6 +168,14 @@ export default function Workflows({ experimentInfo }) {
             </Typography>
             <Box pl={2} display="flex" flexDirection="row" gap={1}>
               <>
+                <Button
+                  variant="plain"
+                  disabled={!selectedWorkflow}
+                  // startDecorator={<BookOpenIcon />}
+                  onClick={() => setViewCodeMode(!viewCodeMode)}
+                >
+                  {viewCodeMode ? 'View Graph' : 'View Code'}
+                </Button>
                 {selectedWorkflow?.status != 'RUNNING' ? (
                   <Button
                     disabled={!selectedWorkflow}
@@ -156,15 +189,6 @@ export default function Workflows({ experimentInfo }) {
                     Running
                   </Button>
                 )}
-
-                <Button
-                  startDecorator={<AxeIcon />}
-                  variant="outlined"
-                  disabled={!selectedWorkflow}
-                >
-                  Fight
-                </Button>
-
                 <Dropdown>
                   <MenuButton variant="plain" disabled={!selectedWorkflow}>
                     <EllipsisIcon />
@@ -216,11 +240,15 @@ export default function Workflows({ experimentInfo }) {
             }}
           >
             {selectedWorkflow ? (
-              <WorkflowCanvas
-                selectedWorkflow={selectedWorkflow}
-                setNewNodeModalOpen={setNewNodeflowModalOpen}
-                mutateWorkflows={mutateWorkflows}
-              />
+              viewCodeMode ? (
+                <ShowCode code={selectedWorkflow} />
+              ) : (
+                <WorkflowCanvas
+                  selectedWorkflow={selectedWorkflow}
+                  setNewNodeModalOpen={setNewNodeflowModalOpen}
+                  mutateWorkflows={mutateWorkflows}
+                />
+              )
             ) : (
               <Box sx={{ width: '100%', backgroundColor: '#F7F9FB' }} p={4}>
                 Select Workflow
-- 
GitLab