DzwfJsonSerializer.ts 876 B

1234567891011121314151617181920212223
  1. import {JsonSerializer} from "./JsonSerializer.js";
  2. import Node from "../../../graph/node/Node.js";
  3. import Edge from "../../../graph/edge/Edge.js";
  4. import Graph from "../../../graph/Graph.js";
  5. import {DZWFData} from "../../dzwf/DZWFData.js";
  6. import SerializerError from "../../../errors/SerializerError.js";
  7. export default class DzwfJsonSerializer implements JsonSerializer<{ dzwfData: DZWFData, graph: Graph<Node, Edge<Node>> }> {
  8. serialize(data: { dzwfData: DZWFData, graph: Graph<Node, Edge<Node>> }): string {
  9. const { dzwfData, graph } = data;
  10. for(const element of dzwfData.elements) {
  11. const node = graph.getNode(element.id);
  12. if(!node)
  13. throw new SerializerError(`Can't find node with id ${element.id} in result graph`);
  14. element.diagram.position.x = node.getX();
  15. element.diagram.position.y = node.getY();
  16. }
  17. return JSON.stringify(dzwfData);
  18. }
  19. }