FPSMS-frontend
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

34 linhas
963 B

  1. import { ItemLotTraceResponse } from "@/app/api/itemTracing";
  2. import {
  3. buildTraceGraphLayout,
  4. TraceGraphLayout,
  5. TraceGraphLayoutNode,
  6. } from "./traceGraphLayout";
  7. import { resolveTraceFlowEdgePairs } from "./traceGraphSemantics";
  8. import type { TraceGraphCompileLabels } from "./traceGraphLabels";
  9. export type TraceFlowEdgePair = { fromId: string; toId: string };
  10. export type CompiledTraceGraph = {
  11. layout: TraceGraphLayout;
  12. edgePairs: TraceFlowEdgePair[];
  13. nodes: TraceGraphLayoutNode[];
  14. };
  15. export const compileTraceGraph = (
  16. data: ItemLotTraceResponse,
  17. labels: TraceGraphCompileLabels,
  18. ): CompiledTraceGraph => {
  19. const layout = buildTraceGraphLayout(data, labels);
  20. const backendEdges = data.traceGraph?.edges?.map((e) => ({
  21. fromKey: e.fromKey,
  22. toKey: e.toKey,
  23. }));
  24. const edgePairs = resolveTraceFlowEdgePairs(layout.nodes, layout.phaseOrder, backendEdges);
  25. return {
  26. layout,
  27. edgePairs,
  28. nodes: layout.nodes,
  29. };
  30. };