Spaces:
Running
Running
Hide visualization parameters by default.
Browse files
lynxkite-app/web/src/index.css
CHANGED
|
@@ -242,6 +242,20 @@ body {
|
|
| 242 |
}
|
| 243 |
}
|
| 244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 245 |
.directory {
|
| 246 |
.entry-list {
|
| 247 |
width: 100%;
|
|
|
|
| 242 |
}
|
| 243 |
}
|
| 244 |
|
| 245 |
+
.params-expander {
|
| 246 |
+
font-size: 15px;
|
| 247 |
+
padding: 4px;
|
| 248 |
+
color: #000a;
|
| 249 |
+
}
|
| 250 |
+
|
| 251 |
+
.flippy {
|
| 252 |
+
transition: transform 0.5s;
|
| 253 |
+
}
|
| 254 |
+
|
| 255 |
+
.flippy.flippy-90 {
|
| 256 |
+
transform: rotate(-90deg);
|
| 257 |
+
}
|
| 258 |
+
|
| 259 |
.directory {
|
| 260 |
.entry-list {
|
| 261 |
width: 100%;
|
lynxkite-app/web/src/workspace/nodes/NodeWithParams.tsx
CHANGED
|
@@ -1,4 +1,7 @@
|
|
| 1 |
import { useReactFlow } from "@xyflow/react";
|
|
|
|
|
|
|
|
|
|
| 2 |
import LynxKiteNode from "./LynxKiteNode";
|
| 3 |
import NodeGroupParameter from "./NodeGroupParameter";
|
| 4 |
import NodeParameter from "./NodeParameter";
|
|
@@ -8,6 +11,7 @@ export type UpdateOptions = { delay?: number };
|
|
| 8 |
function NodeWithParams(props: any) {
|
| 9 |
const reactFlow = useReactFlow();
|
| 10 |
const metaParams = props.data.meta?.params;
|
|
|
|
| 11 |
|
| 12 |
function setParam(name: string, newValue: any, opts: UpdateOptions) {
|
| 13 |
reactFlow.updateNodeData(props.id, (prevData: any) => ({
|
|
@@ -31,31 +35,40 @@ function NodeWithParams(props: any) {
|
|
| 31 |
|
| 32 |
return (
|
| 33 |
<LynxKiteNode {...props}>
|
| 34 |
-
{
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
setParam(name, value, opts || {})
|
| 42 |
-
}
|
| 43 |
-
deleteParam={(name: string, opts?: UpdateOptions) =>
|
| 44 |
-
deleteParam(name, opts || {})
|
| 45 |
-
}
|
| 46 |
-
/>
|
| 47 |
-
) : (
|
| 48 |
-
<NodeParameter
|
| 49 |
-
name={name}
|
| 50 |
-
key={name}
|
| 51 |
-
value={value}
|
| 52 |
-
meta={metaParams?.[name]}
|
| 53 |
-
onChange={(value: any, opts?: UpdateOptions) =>
|
| 54 |
-
setParam(name, value, opts || {})
|
| 55 |
-
}
|
| 56 |
-
/>
|
| 57 |
-
),
|
| 58 |
)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
{props.children}
|
| 60 |
</LynxKiteNode>
|
| 61 |
);
|
|
|
|
| 1 |
import { useReactFlow } from "@xyflow/react";
|
| 2 |
+
import React from "react";
|
| 3 |
+
// @ts-ignore
|
| 4 |
+
import Triangle from "~icons/tabler/triangle-inverted-filled.jsx";
|
| 5 |
import LynxKiteNode from "./LynxKiteNode";
|
| 6 |
import NodeGroupParameter from "./NodeGroupParameter";
|
| 7 |
import NodeParameter from "./NodeParameter";
|
|
|
|
| 11 |
function NodeWithParams(props: any) {
|
| 12 |
const reactFlow = useReactFlow();
|
| 13 |
const metaParams = props.data.meta?.params;
|
| 14 |
+
const [collapsed, setCollapsed] = React.useState(props.collapsed);
|
| 15 |
|
| 16 |
function setParam(name: string, newValue: any, opts: UpdateOptions) {
|
| 17 |
reactFlow.updateNodeData(props.id, (prevData: any) => ({
|
|
|
|
| 35 |
|
| 36 |
return (
|
| 37 |
<LynxKiteNode {...props}>
|
| 38 |
+
{props.collapsed && (
|
| 39 |
+
<div
|
| 40 |
+
className="params-expander"
|
| 41 |
+
onClick={() => setCollapsed(!collapsed)}
|
| 42 |
+
>
|
| 43 |
+
<Triangle className={`flippy ${collapsed ? "flippy-90" : ""}`} />
|
| 44 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
)}
|
| 46 |
+
{!collapsed &&
|
| 47 |
+
params.map(([name, value]) =>
|
| 48 |
+
metaParams?.[name]?.type === "group" ? (
|
| 49 |
+
<NodeGroupParameter
|
| 50 |
+
key={name}
|
| 51 |
+
value={value}
|
| 52 |
+
meta={metaParams?.[name]}
|
| 53 |
+
setParam={(name: string, value: any, opts?: UpdateOptions) =>
|
| 54 |
+
setParam(name, value, opts || {})
|
| 55 |
+
}
|
| 56 |
+
deleteParam={(name: string, opts?: UpdateOptions) =>
|
| 57 |
+
deleteParam(name, opts || {})
|
| 58 |
+
}
|
| 59 |
+
/>
|
| 60 |
+
) : (
|
| 61 |
+
<NodeParameter
|
| 62 |
+
name={name}
|
| 63 |
+
key={name}
|
| 64 |
+
value={value}
|
| 65 |
+
meta={metaParams?.[name]}
|
| 66 |
+
onChange={(value: any, opts?: UpdateOptions) =>
|
| 67 |
+
setParam(name, value, opts || {})
|
| 68 |
+
}
|
| 69 |
+
/>
|
| 70 |
+
),
|
| 71 |
+
)}
|
| 72 |
{props.children}
|
| 73 |
</LynxKiteNode>
|
| 74 |
);
|
lynxkite-app/web/src/workspace/nodes/NodeWithVisualization.tsx
CHANGED
|
@@ -22,7 +22,7 @@ const NodeWithVisualization = (props: any) => {
|
|
| 22 |
};
|
| 23 |
}, [props.data?.display?.value]);
|
| 24 |
return (
|
| 25 |
-
<NodeWithParams {...props}>
|
| 26 |
<div className="box" draggable={false} ref={chartsRef} />
|
| 27 |
</NodeWithParams>
|
| 28 |
);
|
|
|
|
| 22 |
};
|
| 23 |
}, [props.data?.display?.value]);
|
| 24 |
return (
|
| 25 |
+
<NodeWithParams collapsed {...props}>
|
| 26 |
<div className="box" draggable={false} ref={chartsRef} />
|
| 27 |
</NodeWithParams>
|
| 28 |
);
|