@localstack/appinspector-ui 1.0.89 → 1.0.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -26853,19 +26853,44 @@ var ServiceNode = memo11(({ data, selected }) => {
26853
26853
 
26854
26854
  // src/components/trace-graph/utils.ts
26855
26855
  import dagre from "@dagrejs/dagre";
26856
- var getLayoutedNodesAndEdges = (inputNodes, inputEdges) => {
26856
+ var getLayoutedNodesAndEdges = (inputNodes, inputEdges, order2 = "oldest_first") => {
26857
26857
  const dagreGraph = new dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));
26858
26858
  const direction = "LR";
26859
26859
  const nodeWidth = 200;
26860
26860
  const nodeHeight = 70;
26861
26861
  dagreGraph.setGraph({ rankdir: direction });
26862
+ const timestampMap = new Map(
26863
+ inputNodes.map((n2) => [n2.id, n2.data.event.start_time_unix_nano])
26864
+ );
26862
26865
  for (const node of inputNodes) {
26863
26866
  dagreGraph.setNode(node.id, { height: nodeHeight, width: nodeWidth });
26864
26867
  }
26865
26868
  for (const edge of inputEdges) {
26866
26869
  dagreGraph.setEdge(edge.source, edge.target);
26867
26870
  }
26868
- dagre.layout(dagreGraph);
26871
+ dagre.layout(dagreGraph, {
26872
+ customOrder: (g2) => {
26873
+ const rankMap = /* @__PURE__ */ new Map();
26874
+ for (const nodeId of g2.nodes()) {
26875
+ const rank = g2.node(nodeId).rank;
26876
+ if (rank === void 0) continue;
26877
+ const group4 = rankMap.get(rank) ?? [];
26878
+ group4.push(nodeId);
26879
+ rankMap.set(rank, group4);
26880
+ }
26881
+ for (const nodeIds of rankMap.values()) {
26882
+ nodeIds.sort((a3, b3) => {
26883
+ const tsA = timestampMap.get(a3) ?? "";
26884
+ const tsB = timestampMap.get(b3) ?? "";
26885
+ return order2 === "newest_first" ? tsB.localeCompare(tsA) : tsA.localeCompare(tsB);
26886
+ });
26887
+ for (const [index, nodeId] of nodeIds.entries()) {
26888
+ ;
26889
+ g2.node(nodeId).order = index;
26890
+ }
26891
+ }
26892
+ }
26893
+ });
26869
26894
  const layoutedNodes = inputNodes.map((node) => {
26870
26895
  const nodeWithPosition = dagreGraph.node(node.id);
26871
26896
  return {
@@ -26961,6 +26986,7 @@ var TraceGraph = ({
26961
26986
  initialFocusEventId,
26962
26987
  onEventSelect,
26963
26988
  onRefresh,
26989
+ order: order2 = "oldest_first",
26964
26990
  spans
26965
26991
  }) => {
26966
26992
  const [nodes, setNodes, onNodesChange] = useNodesState([]);
@@ -27006,7 +27032,7 @@ var TraceGraph = ({
27006
27032
  });
27007
27033
  }
27008
27034
  }
27009
- const { edges: layoutedEdges, nodes: layoutedNodes } = getLayoutedNodesAndEdges(allNodes, allEdges);
27035
+ const { edges: layoutedEdges, nodes: layoutedNodes } = getLayoutedNodesAndEdges(allNodes, allEdges, order2);
27010
27036
  for (const node of layoutedNodes) {
27011
27037
  if (node.id === initialFocusEventId) {
27012
27038
  node.selected = true;
@@ -27014,7 +27040,7 @@ var TraceGraph = ({
27014
27040
  }
27015
27041
  setNodes(layoutedNodes);
27016
27042
  setEdges(layoutedEdges);
27017
- }, [spans.data, initialFocusEventId, setNodes, setEdges]);
27043
+ }, [spans.data, initialFocusEventId, order2, setNodes, setEdges]);
27018
27044
  const theme = useTheme4();
27019
27045
  return /* @__PURE__ */ jsxs133(Fragment9, { children: [
27020
27046
  spans.error && /* @__PURE__ */ jsxs133(
@@ -27105,6 +27131,7 @@ var TraceGraphView = ({
27105
27131
  loading,
27106
27132
  navigateToSpansList,
27107
27133
  open,
27134
+ order: order2,
27108
27135
  selectedEvent,
27109
27136
  spanId,
27110
27137
  spans,
@@ -27166,6 +27193,7 @@ var TraceGraphView = ({
27166
27193
  onRefresh: () => {
27167
27194
  fetchSpans();
27168
27195
  },
27196
+ order: order2,
27169
27197
  spans: {
27170
27198
  data: spans,
27171
27199
  error: fetchError,
@@ -27217,7 +27245,7 @@ async function fetchConnectedTraces(api, traceIds, allSpans = /* @__PURE__ */ ne
27217
27245
  }
27218
27246
  return [...allSpans.values()];
27219
27247
  }
27220
- var TraceGraphPage = ({ onClose, spanId, traceId }) => {
27248
+ var TraceGraphPage = ({ onClose, order: order2 = "oldest_first", spanId, traceId }) => {
27221
27249
  const api = useAppInspectorApi();
27222
27250
  const [spans, setSpans] = useState17();
27223
27251
  const [loading, setLoading] = useState17(false);
@@ -27277,6 +27305,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
27277
27305
  loading,
27278
27306
  navigateToSpansList,
27279
27307
  open,
27308
+ order: order2,
27280
27309
  selectedEvent,
27281
27310
  spanId: spanId ?? void 0,
27282
27311
  spans,
@@ -27380,7 +27409,7 @@ var SpansListPage = () => {
27380
27409
  ),
27381
27410
  selectedTraceId !== void 0 && /* @__PURE__ */ jsx143(TraceGraphPage, { onClose: () => {
27382
27411
  setSelectedTraceId(void 0);
27383
- }, spanId: selectedSpanId, traceId: selectedTraceId })
27412
+ }, order: order2, spanId: selectedSpanId, traceId: selectedTraceId })
27384
27413
  ] });
27385
27414
  };
27386
27415