Skip to content

Commit 2976af7

Browse files
Copilotmikebarkmin
andcommitted
Add primitive type support for array elements with editable fields and update array header to show type format
Co-authored-by: mikebarkmin <2592379+mikebarkmin@users.noreply.github.com>
1 parent f5bceaa commit 2976af7

4 files changed

Lines changed: 30 additions & 4 deletions

File tree

src/ArrayCreationDialog.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export const ArrayCreationDialog = ({
4747
minWidth: "400px",
4848
maxWidth: "90vw",
4949
border: "1px solid #e5e7eb",
50+
margin: "20px",
5051
}}
5152
onClick={(e) => e.stopPropagation()}
5253
>

src/MemoryView.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,17 @@ export const MemoryView = () => {
218218
},
219219
};
220220
for (let i = 0; i < length; i++) {
221+
let value = undefined;
222+
if (elementType === "boolean") {
223+
value = false;
224+
} else if (numericDataTypes.includes(elementType)) {
225+
value = 0;
226+
} else if (elementType === "String") {
227+
value = "";
228+
}
221229
tempAttributes[`[${i}]`] = {
222230
dataType: elementType,
223-
value: undefined,
231+
value: value,
224232
};
225233
}
226234

@@ -232,6 +240,7 @@ export const MemoryView = () => {
232240
klass: klassName,
233241
attributes: tempAttributes,
234242
position,
243+
arrayElementType: elementType,
235244
},
236245
};
237246
const newEdge: CustomEdgeType = {
@@ -420,9 +429,17 @@ export const MemoryView = () => {
420429
},
421430
};
422431
for (let i = 0; i < length; i++) {
432+
let value = undefined;
433+
if (elementType === "boolean") {
434+
value = false;
435+
} else if (numericDataTypes.includes(elementType)) {
436+
value = 0;
437+
} else if (elementType === "String") {
438+
value = "";
439+
}
423440
objAttributes[`[${i}]`] = {
424441
dataType: elementType,
425-
value: undefined,
442+
value: value,
426443
};
427444
}
428445

@@ -434,6 +451,7 @@ export const MemoryView = () => {
434451
klass: type,
435452
attributes: objAttributes,
436453
position,
454+
arrayElementType: elementType,
437455
},
438456
};
439457

src/ObjectNode.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ function ObjectNode({ id, data }: NodeProps<ObjectNodeType>) {
123123
!isConnectedToMethodCall(id, nodes, edges);
124124

125125
const attributeEdges = edges.filter((e) => e.source == id);
126+
127+
// For arrays, display the element type in the header
128+
const displayName = data.klass === "Array" && data.arrayElementType
129+
? `:${data.arrayElementType}[]`
130+
: `:${data.klass}`;
131+
126132
return (
127133
<>
128134
<div className={`object-node__header ${gc ? "gc" : ""}`}>
@@ -132,14 +138,14 @@ function ObjectNode({ id, data }: NodeProps<ObjectNodeType>) {
132138
isConnectableStart={false}
133139
position={Position.Left}
134140
/>
135-
<div className="object-node__name">:{data.klass}</div>
141+
<div className="object-node__name">{displayName}</div>
136142
<div className="spacer-10"></div>
137143
</div>
138144
<div className={`object-node__body ${gc ? "gc" : ""}`}>
139145
{Object.entries(data.attributes).map(([name, value]) => (
140146
<AttributeHandle
141147
key={`${id}+${name}`}
142-
isFinal={data.klass === "Array"}
148+
isFinal={false}
143149
isConnected={
144150
attributeEdges.find((e) => e.sourceHandle == name)?.target != null
145151
}

src/memory.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export type Obj = {
4343
x: number;
4444
y: number;
4545
};
46+
arrayElementType?: DataType; // For arrays, stores the type of elements
4647
};
4748

4849
export type Variable = {

0 commit comments

Comments
 (0)