exportDiagramToJson method
Implementation
exportDiagramToJson(BuilderStyle context) {
Map<String, dynamic> jsonDiagram = {
"components": [],
"connections": [],
};
for (ComponentData component
in canvasReader.model.getAllComponents().values) {
if (component.type != 'port') {
BuilderComponentData componentData = component.data;
List<Map<String, dynamic>> ports = [];
for (String portId in component.childrenIds) {
var portComponent = canvasReader.model.getComponent(portId);
PortData portData = portComponent.data as PortData;
ports.add({
"id": portId,
"name": portData.name,
"type": portData.type,
"isInput": portData.isInput,
"isMandatory": portData.isMandatory,
"alignment": {
"x": portData.alignmentOnComponent.x,
"y": portData.alignmentOnComponent.y,
},
});
}
jsonDiagram["components"].add({
"id": component.id,
"name": componentData.name,
"type": component.type,
"parameters":
componentData.parameters.map((param) => param.toJson()).toList(),
"position": {"x": component.position.dx, "y": component.position.dy},
"size": {
"width": component.size.width,
"height": component.size.height
},
"color": componentData.color.value.toRadixString(16),
"ports": ports,
});
}
}
if (componentList.isNotEmpty) {
var allLinks = canvasReader.model.getAllLinks().values;
for (var link in allLinks) {
String sourcePortId = link.sourceComponentId;
String targetPortId = link.targetComponentId;
var sourcePort = canvasReader.model.getComponent(sourcePortId);
var targetPort = canvasReader.model.getComponent(targetPortId);
jsonDiagram["connections"].add({
"source": {
"block_id": sourcePort.parentId,
"port_id": sourcePortId,
"port_name": (sourcePort.data as PortData).name,
},
"target": {
"block_id": targetPort.parentId,
"port_id": targetPortId,
"port_name": (targetPort.data as PortData).name,
},
"color": link.linkStyle.color.value.toRadixString(16),
});
}
}
jsonDiagram["entry"] = context.toJson();
return jsonDiagram;
}