| 123456789101112131415161718192021222324252627282930313233 |
- import Edge from "../../../graph/edge/Edge.js";
- import Graph from "../../../graph/Graph.js";
- import Node from "../../../graph/node/Node.js";
- import { JsonSerializer } from "./JsonSerializer.js";
- import DummyNode from "../../../graph/node/DummyNode.js";
- type JsonNode = { x: number, y: number, width: number, height: number, type: string, id: string };
- type JsonEdge = { from: JsonNode["id"], to: JsonNode["id"], waypoints: { x: number, y: number }[], id: string };
- /**
- * Стандартный JSON-сериализатор, преобразующий объект типа {@link Graph} в JSON
- */
- export default class DefaultJsonSerializer implements JsonSerializer<Graph<Node, Edge<Node>>> {
- /**
- * Преобразование объекта типа {@link Graph} в JSON
- * @param data Объект, который необходимо сериализовать
- */
- serialize(data: Graph<Node, Edge<Node>>): string {
- const edges: JsonEdge[] = [];
- data.getEdges().forEach((edge) => {
- edges.push({ from: edge.getFrom().getId(), to: edge.getTo().getId(), waypoints: edge.getWaypoints(), id: edge.getId() });
- })
- const nodes: JsonNode[] = [];
- data.getNodes().forEach((node) => {
- if(!(node instanceof DummyNode))
- nodes.push({ x: node.getX(), y: node.getY(), width: node.getWidth(), height: node.getHeight(), type: node.getType(), id: node.getId() });
- })
- return JSON.stringify({ nodes, edges }, null, 2);
- }
- }
|