Skip to content

Commit b603db9

Browse files
committed
fix: in react ui, have topology adopt block numbering scheme
(already used in masonry and timeline) Signed-off-by: Nick Mitchell <[email protected]>
1 parent 03fbc86 commit b603db9

File tree

7 files changed

+44
-25
lines changed

7 files changed

+44
-25
lines changed

pdl-live-react/src/view/masonry/MasonryCombo.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export default function MasonryCombo({ value }: Props) {
6666
>
6767
<Masonry model={masonry} as={as} sml={sml}>
6868
<Timeline model={base} numbering={numbering} />
69-
<Memory block={block} />
69+
<Memory block={block} numbering={numbering} />
7070
</Masonry>
7171
</PageSection>
7272

pdl-live-react/src/view/masonry/model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export default function computeModel(block: import("../../pdl_ast").PdlBlock) {
7575

7676
const numbering = masonry.reduce(
7777
(N, node, idx) => {
78-
N[node.id] = idx
78+
N[node.id] = idx + 1
7979
return N
8080
},
8181
{} as Record<string, number>,
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import { useMemo } from "react"
2-
//import { Link, useLocation } from "react-router"
32

43
import Topology from "./Topology"
54
import extractVariables from "./model"
65

76
type Props = {
87
block: import("../../pdl_ast").PdlBlock
8+
9+
/** Block id -> ordinal */
10+
numbering?: Record<string, number>
911
}
1012

11-
export default function Variables({ block }: Props) {
12-
//const { hash } = useLocation()
13+
export default function Variables({ block, numbering }: Props) {
1314
const { nodes, edges } = useMemo(() => extractVariables(block), [block])
14-
return <Topology nodes={nodes} edges={edges} />
15+
return <Topology nodes={nodes} edges={edges} numbering={numbering ?? {}} />
1516
}

pdl-live-react/src/view/memory/Node.tsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { type FunctionComponent } from "react"
22
import {
3+
BadgeLocation,
34
DefaultNode,
45
type GraphElement,
56
type WithSelectionProps,
@@ -12,16 +13,16 @@ type CustomNodeProps = WithSelectionProps & {
1213
const CustomNode: FunctionComponent<CustomNodeProps> = (
1314
props: CustomNodeProps,
1415
) => {
16+
const { ordinal } = props.element.getData()
1517
const label = props.element.getLabel()
16-
const badge = label[0].toUpperCase()
17-
const badgeColor = /read/.test(label)
18+
const badge = ordinal
19+
const badgeColor = /Read/.test(label)
1820
? "var(--pf-t--global--color--nonstatus--orange--default)"
19-
: /code/.test(label)
21+
: /Code/.test(label)
2022
? "var(--pf-t--global--color--nonstatus--blue--default)"
2123
: /LLM/.test(label)
2224
? "var(--pf-t--global--color--nonstatus--teal--default)"
23-
: undefined
24-
console.error(label, badgeColor)
25+
: "var(--pf-t--color--white)"
2526
/*const content =
2627
data && "content" in data && typeof data.content === "string"
2728
? data.content
@@ -38,7 +39,13 @@ const CustomNode: FunctionComponent<CustomNodeProps> = (
3839
*/
3940

4041
return (
41-
<DefaultNode {...props} badge={badge} badgeColor={badgeColor}>
42+
<DefaultNode
43+
{...props}
44+
badge={badge}
45+
badgeColor={badgeColor}
46+
badgeTextColor="var(--pf-t--color--black)"
47+
badgeLocation={BadgeLocation.below}
48+
>
4249
{/*content && (
4350
<g
4451
transform={`translate(${(-Math.min(30, content.length - 1) * 3.5) / 2 + 5}, 10.5)`}

pdl-live-react/src/view/memory/Topology.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
EdgeAnimationSpeed,
55
EdgeModel,
66
EdgeStyle,
7+
LabelPosition,
78
Model,
89
NodeModel,
910
NodeShape,
@@ -22,9 +23,10 @@ const NODE_DIAMETER = 10
2223
type Props = {
2324
nodes: import("./model").Node[]
2425
edges: import("./model").Edge[]
26+
numbering: Record<string, number>
2527
}
2628

27-
export default function Topology({ nodes, edges }: Props) {
29+
export default function Topology({ nodes, edges, numbering }: Props) {
2830
const [selectedIds, setSelectedIds] = useState<string[]>([])
2931

3032
const controller = useMemo(() => {
@@ -44,13 +46,17 @@ export default function Topology({ nodes, edges }: Props) {
4446
width: NODE_DIAMETER,
4547
height: NODE_DIAMETER,
4648
shape: NODE_SHAPE,
49+
labelPosition: LabelPosition.top,
50+
data: {
51+
ordinal: numbering[id],
52+
},
4753
}))
4854
const myEdges: EdgeModel[] = edges.map(({ source, target }) => ({
4955
id: `${source}-${target}`,
5056
type: "edge",
5157
source,
5258
target,
53-
edgeStyle: EdgeStyle.dashedMd,
59+
edgeStyle: EdgeStyle.dashedXl,
5460
animationSpeed: EdgeAnimationSpeed.medium,
5561
}))
5662
const model: Model = {
@@ -67,8 +73,10 @@ export default function Topology({ nodes, edges }: Props) {
6773
}, [nodes, edges, controller])
6874

6975
return (
70-
<VisualizationProvider controller={controller}>
71-
<VisualizationSurface state={{ selectedIds }} />
72-
</VisualizationProvider>
76+
<div className="pdl-memory-topology">
77+
<VisualizationProvider controller={controller}>
78+
<VisualizationSurface state={{ selectedIds }} />
79+
</VisualizationProvider>
80+
</div>
7381
)
7482
}

pdl-live-react/src/view/memory/layout.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {
2-
ForceLayout as ColaLayout,
2+
ColaLayout,
33
Graph,
44
Layout,
55
LayoutFactory,
@@ -9,11 +9,12 @@ const layoutFactory: LayoutFactory = (
99
type: string,
1010
graph: Graph,
1111
): Layout | undefined => {
12+
const nodeDistance = 28
1213
switch (type) {
1314
case "Cola":
14-
return new ColaLayout(graph)
15+
return new ColaLayout(graph, { nodeDistance })
1516
default:
16-
return new ColaLayout(graph, { layoutOnDrag: false })
17+
return new ColaLayout(graph, { nodeDistance, layoutOnDrag: false })
1718
}
1819
}
1920

pdl-live-react/src/view/memory/model.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ function label(id: string) {
2929
case "model":
3030
return "LLM"
3131
default:
32-
return l
32+
return l[0].toUpperCase() + l.slice(1)
3333
}
3434
}
3535

@@ -38,10 +38,12 @@ export default function extractVariables(block: PdlBlock): {
3838
edges: Edge[]
3939
} {
4040
const edges = extractVariablesIter(block)
41-
const nodes = edges.flatMap(({ source, target }) => [
42-
{ id: source, label: label(source) },
43-
{ id: target, label: label(target) },
44-
])
41+
const nodes = edges
42+
.flatMap(({ source, target }) => [
43+
{ id: source, label: label(source) },
44+
{ id: target, label: label(target) },
45+
])
46+
.sort((a, b) => -a.id.localeCompare(b.id))
4547
return { nodes, edges }
4648
}
4749

0 commit comments

Comments
 (0)