GraphJsonSerializer.ts 795 B

123456789101112131415161718192021
  1. import Edge from "../../../graph/Edge.js";
  2. import Graph from "../../../graph/Graph.js";
  3. import Node from "../../../graph/Node.js";
  4. import { JsonSerializer } from "./JsonSerializer.js";
  5. type NodeJson = { id: string, x: number, y: number };
  6. type EdgeJson = { id: string, from: NodeJson["id"], to: NodeJson["id"] };
  7. type GraphJson = { nodes: NodeJson[], edges: EdgeJson[] };
  8. export default class GraphJsonSerializer implements JsonSerializer<Graph<Node, Edge<Node>>> {
  9. serialize(data: Graph<Node, Edge<Node>>): string {
  10. const graphJson: GraphJson = {
  11. nodes: data.getNodes().map((node) => { return { id: node.id, x: node.x, y: node.y } }),
  12. edges: data.getEdges().map((edge) => {
  13. return { id: edge.id, from: edge.from, to: edge.to };
  14. })
  15. }
  16. return JSON.stringify(graphJson);
  17. }
  18. }