Skip to content

Commit 0605a28

Browse files
committed
small tweak in export to ocif, but better implementation needed
1 parent cc2a941 commit 0605a28

File tree

1 file changed

+36
-6
lines changed

1 file changed

+36
-6
lines changed

libs/app-canvas/src/app/exporters/export-ocif.ts

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
6565
return false;
6666
}
6767

68+
isExtensionInNode(node: any, extensionType: string): boolean {
69+
if (node && node.data) {
70+
return node.data.some(
71+
(extension: any) => extensionType === extension.type
72+
);
73+
}
74+
return false;
75+
}
76+
6877
isValidCodeFlowCanvasNode(node: any): boolean {
6978
if (node.data && Array.isArray(node.data)) {
7079
return node.data.some(
@@ -76,6 +85,10 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
7685
return false;
7786
}
7887

88+
isOcifCompatibleCodeFlowCanvasNode(nodeType: string) {
89+
return codeFlowCanvasToOcif[nodeType] !== undefined;
90+
}
91+
7992
doesRootOCIFNodeExistInFlow(
8093
id: string,
8194
elements: ElementNodeMap<BaseNodeInfo>
@@ -123,8 +136,9 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
123136
) {
124137
const nodeType = codeFlowCanvasToOcif[d.type] ?? d.type;
125138
if (
126-
nodeType === '@ocif/node/rect' ||
127-
nodeType === '@ocif/node/oval'
139+
!this.isExtensionInNode(codeFlowCanvasNode, nodeType) &&
140+
(nodeType === '@ocif/node/rect' ||
141+
nodeType === '@ocif/node/oval')
128142
) {
129143
const canvasNode = this.getNodeFromElements(
130144
node.id,
@@ -215,18 +229,34 @@ export class OCIFExporter extends BaseExporter<OCIFFile, OCIFInfo> {
215229
ports: ports,
216230
});
217231
}
218-
const clonedNodeInfo = structuredClone(nodeInfo) as any;
219-
delete clonedNodeInfo.fillColor;
220-
delete clonedNodeInfo.strokeColor;
221-
delete clonedNodeInfo.strokeWidth;
222232

233+
const clonedNodeInfo = structuredClone(nodeInfo) as any;
223234
const ocifNode: OCIFNode = {
224235
id: `${node.id}`,
225236
position: [node.x, node.y],
226237
size: [node.width ?? 0, node.height ?? 0],
227238
data: [...portsNode],
228239
resource: `${node.id}-resource`,
229240
};
241+
242+
if (
243+
ocifNode &&
244+
ocifNode.data &&
245+
nodeInfo.type &&
246+
this.isOcifCompatibleCodeFlowCanvasNode(nodeInfo.type)
247+
) {
248+
const ocifType = codeFlowCanvasToOcif[nodeInfo.type];
249+
ocifNode.data.push({
250+
fillColor: clonedNodeInfo.fillColor,
251+
strokeColor: clonedNodeInfo.strokeColor,
252+
strokeWidth: clonedNodeInfo.strokeWidth,
253+
type: ocifType,
254+
});
255+
}
256+
delete clonedNodeInfo.fillColor;
257+
delete clonedNodeInfo.strokeColor;
258+
delete clonedNodeInfo.strokeWidth;
259+
230260
if (nodeInfo.type === 'group') {
231261
// only export group as a relation
232262
if (

0 commit comments

Comments
 (0)