reduce complexity in Workspace (#3377)
This commit is contained in:
@@ -506,6 +506,7 @@ function Workspace({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative h-full w-full">
|
<div className="relative h-full w-full">
|
||||||
|
{/* cycle browser dialog */}
|
||||||
<Dialog
|
<Dialog
|
||||||
open={openCycleBrowserDialogue}
|
open={openCycleBrowserDialogue}
|
||||||
onOpenChange={(open) => {
|
onOpenChange={(open) => {
|
||||||
@@ -553,6 +554,7 @@ function Workspace({
|
|||||||
</DialogContent>
|
</DialogContent>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
|
{/* cache key value delete dialog */}
|
||||||
<Dialog
|
<Dialog
|
||||||
open={openConfirmCacheKeyValueDeleteDialogue}
|
open={openConfirmCacheKeyValueDeleteDialogue}
|
||||||
onOpenChange={(open) => {
|
onOpenChange={(open) => {
|
||||||
@@ -611,7 +613,7 @@ function Workspace({
|
|||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
{/* header panel */}
|
{/* header panel */}
|
||||||
<div className="absolute left-6 right-6 top-8 z-10 h-20">
|
<div className="absolute left-6 right-6 top-8 z-40 h-20">
|
||||||
<WorkflowHeader
|
<WorkflowHeader
|
||||||
cacheKeyValue={cacheKeyValue}
|
cacheKeyValue={cacheKeyValue}
|
||||||
cacheKeyValues={cacheKeyValues}
|
cacheKeyValues={cacheKeyValues}
|
||||||
@@ -692,63 +694,11 @@ function Workspace({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* sub panels in design mode */}
|
{/* infinite canvas and sub panels when not in debug mode */}
|
||||||
{!showBrowser && workflowPanelState.active && (
|
{!showBrowser && (
|
||||||
<div
|
<div className="relative flex h-full w-full overflow-hidden overflow-x-hidden">
|
||||||
className="absolute right-6 top-[8.5rem]"
|
{/* infinite canvas */}
|
||||||
style={{
|
|
||||||
height:
|
|
||||||
workflowPanelState.content === "nodeLibrary"
|
|
||||||
? "calc(100vh - 9.5rem)"
|
|
||||||
: "unset",
|
|
||||||
}}
|
|
||||||
onMouseDownCapture={() => {}}
|
|
||||||
>
|
|
||||||
{workflowPanelState.content === "cacheKeyValues" && (
|
|
||||||
<WorkflowCacheKeyValuesPanel
|
|
||||||
cacheKeyValues={cacheKeyValues}
|
|
||||||
pending={cacheKeyValuesLoading}
|
|
||||||
scriptKey={workflow.cache_key ?? "default"}
|
|
||||||
onDelete={(cacheKeyValue) => {
|
|
||||||
setToDeleteCacheKeyValue(cacheKeyValue);
|
|
||||||
setOpenConfirmCacheKeyValueDeleteDialogue(true);
|
|
||||||
}}
|
|
||||||
onPaginate={(page) => {
|
|
||||||
setPage(page);
|
|
||||||
}}
|
|
||||||
onSelect={(cacheKeyValue) => {
|
|
||||||
setCacheKeyValue(cacheKeyValue);
|
|
||||||
setCacheKeyValueFilter("");
|
|
||||||
closeWorkflowPanel();
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
{workflowPanelState.content === "parameters" && (
|
|
||||||
<WorkflowParametersPanel />
|
|
||||||
)}
|
|
||||||
{workflowPanelState.content === "nodeLibrary" && (
|
|
||||||
<WorkflowNodeLibraryPanel
|
|
||||||
onNodeClick={(props) => {
|
|
||||||
addNode(props);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<div className="relative flex h-full w-full overflow-hidden overflow-x-hidden">
|
|
||||||
{/* infinite canvas */}
|
|
||||||
<div
|
|
||||||
className={cn("skyvern-split-left h-full", {
|
|
||||||
"w-full": !showBrowser,
|
|
||||||
})}
|
|
||||||
style={{
|
|
||||||
width: showBrowser ? workflowWidth : "100%",
|
|
||||||
maxWidth: showBrowser ? workflowWidth : "100%",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<FlowRenderer
|
<FlowRenderer
|
||||||
hideBackground={showBrowser}
|
|
||||||
nodes={nodes}
|
nodes={nodes}
|
||||||
edges={edges}
|
edges={edges}
|
||||||
setNodes={setNodes}
|
setNodes={setNodes}
|
||||||
@@ -758,15 +708,84 @@ function Workspace({
|
|||||||
initialTitle={initialTitle}
|
initialTitle={initialTitle}
|
||||||
workflow={workflow}
|
workflow={workflow}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
{/* sub panels */}
|
||||||
|
{workflowPanelState.active && (
|
||||||
|
<div
|
||||||
|
className="pointer-events-none absolute right-6 top-[5rem] z-30"
|
||||||
|
style={{
|
||||||
|
height:
|
||||||
|
workflowPanelState.content === "nodeLibrary"
|
||||||
|
? "calc(100vh - 14rem)"
|
||||||
|
: "unset",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{workflowPanelState.content === "cacheKeyValues" && (
|
||||||
|
<WorkflowCacheKeyValuesPanel
|
||||||
|
cacheKeyValues={cacheKeyValues}
|
||||||
|
pending={cacheKeyValuesLoading}
|
||||||
|
scriptKey={workflow.cache_key ?? "default"}
|
||||||
|
onDelete={(cacheKeyValue) => {
|
||||||
|
setToDeleteCacheKeyValue(cacheKeyValue);
|
||||||
|
setOpenConfirmCacheKeyValueDeleteDialogue(true);
|
||||||
|
}}
|
||||||
|
onPaginate={(page) => {
|
||||||
|
setPage(page);
|
||||||
|
}}
|
||||||
|
onSelect={(cacheKeyValue) => {
|
||||||
|
setCacheKeyValue(cacheKeyValue);
|
||||||
|
setCacheKeyValueFilter("");
|
||||||
|
closeWorkflowPanel();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{workflowPanelState.content === "parameters" && (
|
||||||
|
<div className="pointer-events-auto relative right-0 top-[3.5rem] z-30">
|
||||||
|
<WorkflowParametersPanel />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{workflowPanelState.content === "nodeLibrary" && (
|
||||||
|
<div className="pointer-events-auto relative right-0 top-[3.5rem] z-30 h-full w-[25rem]">
|
||||||
|
<WorkflowNodeLibraryPanel
|
||||||
|
onNodeClick={(props) => {
|
||||||
|
addNode(props);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* divider if browser is in play */}
|
{/* infinite canvas, sub panels, browser, and timeline when in debug mode */}
|
||||||
{showBrowser && (
|
{showBrowser && (
|
||||||
|
<div className="relative flex h-full w-full overflow-hidden overflow-x-hidden">
|
||||||
|
{/* infinite canvas */}
|
||||||
|
<div
|
||||||
|
className="skyvern-split-left h-full"
|
||||||
|
style={{
|
||||||
|
width: workflowWidth,
|
||||||
|
maxWidth: workflowWidth,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<FlowRenderer
|
||||||
|
hideBackground={true}
|
||||||
|
nodes={nodes}
|
||||||
|
edges={edges}
|
||||||
|
setNodes={setNodes}
|
||||||
|
setEdges={setEdges}
|
||||||
|
onNodesChange={onNodesChange}
|
||||||
|
onEdgesChange={onEdgesChange}
|
||||||
|
initialTitle={initialTitle}
|
||||||
|
workflow={workflow}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* divider*/}
|
||||||
<div className="mt-[8rem] h-[calc(100%_-_8rem)] w-[1px] bg-slate-800" />
|
<div className="mt-[8rem] h-[calc(100%_-_8rem)] w-[1px] bg-slate-800" />
|
||||||
)}
|
|
||||||
|
|
||||||
{/* browser & timeline & sub-panels in debug mode */}
|
{/* browser & timeline & sub-panels in debug mode */}
|
||||||
{showBrowser && (
|
|
||||||
<div
|
<div
|
||||||
className="skyvern-split-right relative flex h-full items-end justify-center bg-[#020617] p-4 pl-6"
|
className="skyvern-split-right relative flex h-full items-end justify-center bg-[#020617] p-4 pl-6"
|
||||||
style={{
|
style={{
|
||||||
@@ -776,11 +795,10 @@ function Workspace({
|
|||||||
{/* sub panels */}
|
{/* sub panels */}
|
||||||
{workflowPanelState.active && (
|
{workflowPanelState.active && (
|
||||||
<div
|
<div
|
||||||
className={cn("absolute right-6 top-[8.5rem] z-20", {
|
className={cn("absolute right-6 top-[8.5rem] z-30", {
|
||||||
"left-6": workflowPanelState.content === "nodeLibrary",
|
"left-6": workflowPanelState.content === "nodeLibrary",
|
||||||
})}
|
})}
|
||||||
style={{
|
style={{
|
||||||
top: "10.5rem",
|
|
||||||
height:
|
height:
|
||||||
workflowPanelState.content === "nodeLibrary"
|
workflowPanelState.content === "nodeLibrary"
|
||||||
? "calc(100vh - 14rem)"
|
? "calc(100vh - 14rem)"
|
||||||
@@ -863,7 +881,7 @@ function Workspace({
|
|||||||
|
|
||||||
{/* timeline */}
|
{/* timeline */}
|
||||||
<div
|
<div
|
||||||
className={cn("h-full w-[5rem] overflow-visible", {
|
className={cn("z-20 h-full w-[5rem] overflow-visible", {
|
||||||
"pointer-events-none hidden w-[0px] overflow-hidden":
|
"pointer-events-none hidden w-[0px] overflow-hidden":
|
||||||
!blockLabel,
|
!blockLabel,
|
||||||
})}
|
})}
|
||||||
@@ -904,7 +922,7 @@ function Workspace({
|
|||||||
|
|
||||||
{/* slide indicator */}
|
{/* slide indicator */}
|
||||||
<div
|
<div
|
||||||
className="absolute left-0 top-0 z-10 flex h-full items-center justify-center p-1 opacity-30 transition-opacity hover:opacity-100 group-hover:opacity-100"
|
className="absolute left-0 top-0 z-20 flex h-full items-center justify-center p-1 opacity-30 transition-opacity hover:opacity-100 group-hover:opacity-100"
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
setTimelineMode(
|
setTimelineMode(
|
||||||
@@ -932,55 +950,8 @@ function Workspace({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
</div>
|
||||||
|
)}
|
||||||
{!showBrowser && workflowPanelState.active && (
|
|
||||||
<div
|
|
||||||
className={cn(
|
|
||||||
"pointer-events-none absolute right-6 top-[5rem] z-20",
|
|
||||||
)}
|
|
||||||
style={{
|
|
||||||
top: "8.5rem",
|
|
||||||
height:
|
|
||||||
workflowPanelState.content === "nodeLibrary"
|
|
||||||
? "calc(100vh - 14rem)"
|
|
||||||
: "unset",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{workflowPanelState.content === "cacheKeyValues" && (
|
|
||||||
<WorkflowCacheKeyValuesPanel
|
|
||||||
cacheKeyValues={cacheKeyValues}
|
|
||||||
pending={cacheKeyValuesLoading}
|
|
||||||
scriptKey={workflow.cache_key ?? "default"}
|
|
||||||
onDelete={(cacheKeyValue) => {
|
|
||||||
setToDeleteCacheKeyValue(cacheKeyValue);
|
|
||||||
setOpenConfirmCacheKeyValueDeleteDialogue(true);
|
|
||||||
}}
|
|
||||||
onPaginate={(page) => {
|
|
||||||
setPage(page);
|
|
||||||
}}
|
|
||||||
onSelect={(cacheKeyValue) => {
|
|
||||||
setCacheKeyValue(cacheKeyValue);
|
|
||||||
setCacheKeyValueFilter("");
|
|
||||||
closeWorkflowPanel();
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
{workflowPanelState.content === "parameters" && (
|
|
||||||
<WorkflowParametersPanel />
|
|
||||||
)}
|
|
||||||
{workflowPanelState.content === "nodeLibrary" && (
|
|
||||||
<div className="pointer-events-auto relative right-0 top-0 z-20 h-full w-[25rem]">
|
|
||||||
<WorkflowNodeLibraryPanel
|
|
||||||
onNodeClick={(props) => {
|
|
||||||
addNode(props);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user