@localstack/appinspector-ui 1.0.14 → 1.0.16

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
@@ -1,6 +1,6 @@
1
1
  // src/pages/spans-list-page.tsx
2
2
  import { Box as Box6 } from "@mui/material";
3
- import { useCallback as useCallback5, useEffect as useEffect4, useRef as useRef3, useState as useState5 } from "react";
3
+ import { useCallback as useCallback5, useEffect as useEffect4, useMemo as useMemo4, useRef as useRef3, useState as useState5 } from "react";
4
4
  import { useNavigate } from "react-router-dom";
5
5
 
6
6
  // src/api/use-api.tsx
@@ -2524,7 +2524,7 @@ var AwsServiceIcon = ({ hideTooltip, service, size = "medium", title }) => {
2524
2524
  import { Box } from "@mui/material";
2525
2525
  import { jsx as jsx122 } from "react/jsx-runtime";
2526
2526
  var defaultBackgroundColor = "background.paper";
2527
- var defaultBorderColor = "text.secondary";
2527
+ var defaultBorderColor = "palette.divider";
2528
2528
  var PillCell = ({
2529
2529
  backgroundColor = defaultBackgroundColor,
2530
2530
  borderColor = defaultBorderColor,
@@ -2592,7 +2592,9 @@ var ServiceCell = ({
2592
2592
  Typography,
2593
2593
  {
2594
2594
  sx: {
2595
- borderRight: resource ? `1px solid ${borderColor}` : "none",
2595
+ borderRightColor: resource ? borderColor : "none",
2596
+ borderRightStyle: resource ? "solid" : "none",
2597
+ borderRightWidth: resource ? "1px" : "none",
2596
2598
  fontWeight: "bold",
2597
2599
  overflow: "hidden",
2598
2600
  padding: "1px 8px",
@@ -2701,9 +2703,15 @@ var SpansDataGrid = ({
2701
2703
  loading,
2702
2704
  onClearSpans,
2703
2705
  onFilterWriteOperationsChange,
2706
+ onPageChange,
2707
+ onPageSizeChange,
2704
2708
  onRefresh,
2705
2709
  onSpanClick,
2710
+ page,
2711
+ pageSize,
2712
+ rowCount,
2706
2713
  rows,
2714
+ rowsPerPageOptions,
2707
2715
  // setRows,
2708
2716
  sortingOption = defaultSortingOption
2709
2717
  }) => {
@@ -2802,15 +2810,26 @@ var SpansDataGrid = ({
2802
2810
  getRowId: (row) => row.span_id,
2803
2811
  initialState: {
2804
2812
  pagination: {
2805
- page: 0,
2806
- pageSize: 50
2813
+ page,
2814
+ pageSize
2807
2815
  }
2808
2816
  },
2809
2817
  loading,
2818
+ onPageChange: (newPage) => {
2819
+ onPageChange(newPage);
2820
+ },
2821
+ onPageSizeChange: (newPageSize) => {
2822
+ onPageSizeChange(newPageSize);
2823
+ },
2810
2824
  onRowClick: handleRowClick,
2811
2825
  onSortModelChange: handleSortModelChange,
2826
+ page,
2827
+ pageSize,
2828
+ paginationMode: "server",
2829
+ rowCount,
2812
2830
  rowHeight: 40,
2813
2831
  rows: filteredRows,
2832
+ rowsPerPageOptions,
2814
2833
  sortModel,
2815
2834
  sx: { flexGrow: 1 }
2816
2835
  }
@@ -2843,9 +2862,15 @@ var SpansList = (props) => {
2843
2862
  loading: props.spans.loading,
2844
2863
  onClearSpans: props.onClearSpans,
2845
2864
  onFilterWriteOperationsChange: props.onFilterWriteOperationsChange,
2865
+ onPageChange: props.onPageChange,
2866
+ onPageSizeChange: props.onPageSizeChange,
2846
2867
  onRefresh: props.onRefresh,
2847
2868
  onSpanClick: props.onSpanClick,
2869
+ page: props.page,
2870
+ pageSize: props.pageSize,
2871
+ rowCount: props.spanCount,
2848
2872
  rows: props.spans.data ?? [],
2873
+ rowsPerPageOptions: props.spansPerPageOptions,
2849
2874
  sortingOption: { field: "start_time_unix_nano", sort: "asc" }
2850
2875
  }
2851
2876
  )
@@ -3367,24 +3392,37 @@ var SpansListPage = () => {
3367
3392
  const [loading, setLoading] = useState5(false);
3368
3393
  const hasFetched = useRef3(false);
3369
3394
  const [filterWriteOperations, setFilterWriteOperations] = useLocalStorage("filterWriteOperations", true);
3395
+ const mapPageToNextCursor = useRef3({});
3396
+ const [page, setPage] = useState5(0);
3397
+ const [pageSize, setPageSize] = useState5(100);
3398
+ const [spansPerPageOptions] = useState5(() => [25, 50, 100]);
3399
+ const [spanCount, setSpanCount] = useState5();
3400
+ const queryOptions = useMemo4(() => {
3401
+ return {
3402
+ is_write_operation: filterWriteOperations ? true : void 0,
3403
+ limit: pageSize,
3404
+ pagination_token: mapPageToNextCursor.current[page - 1]
3405
+ };
3406
+ }, [filterWriteOperations, pageSize, page]);
3370
3407
  const [fetchError, setFetchError] = useState5();
3371
3408
  const { checkStatus, error: statusError, status } = useStatus();
3372
3409
  const fetchSpans = useCallback5(async () => {
3373
3410
  setLoading(true);
3374
3411
  try {
3375
- const response = await api.getSpans({
3376
- is_write_operation: filterWriteOperations ? true : void 0,
3377
- limit: 100
3378
- });
3412
+ const response = await api.getSpans(queryOptions);
3379
3413
  setSpans(response.spans);
3414
+ setSpanCount(response.pagination.total_count);
3380
3415
  setFetchError(void 0);
3416
+ if (response.pagination.cursor) {
3417
+ mapPageToNextCursor.current[page] = response.pagination.cursor;
3418
+ }
3381
3419
  } catch (error) {
3382
3420
  console.error(error);
3383
3421
  setFetchError(error instanceof Error ? error : new Error("Unknown error", { cause: error }));
3384
3422
  } finally {
3385
3423
  setLoading(false);
3386
3424
  }
3387
- }, [api, filterWriteOperations]);
3425
+ }, [api, page, queryOptions]);
3388
3426
  const fetchSpansSync = useCallback5(() => {
3389
3427
  void fetchSpans();
3390
3428
  }, [fetchSpans]);
@@ -3450,17 +3488,23 @@ var SpansListPage = () => {
3450
3488
  onFilterWriteOperationsChange: (value) => {
3451
3489
  setFilterWriteOperations(value);
3452
3490
  },
3491
+ onPageChange: setPage,
3492
+ onPageSizeChange: setPageSize,
3453
3493
  onRefresh: () => {
3454
3494
  fetchSpansSync();
3455
3495
  },
3456
3496
  onSpanClick: (span) => {
3457
3497
  navigateToSpan(span);
3458
3498
  },
3499
+ page,
3500
+ pageSize,
3501
+ spanCount,
3459
3502
  spans: {
3460
3503
  data: spans,
3461
3504
  error: fetchError,
3462
3505
  loading
3463
- }
3506
+ },
3507
+ spansPerPageOptions
3464
3508
  }
3465
3509
  )
3466
3510
  }
@@ -3637,10 +3681,10 @@ import { memo, useCallback as useCallback6 } from "react";
3637
3681
  // src/components/trace-graph/problem-indicator.tsx
3638
3682
  import { Error as ErrorIcon, Info, Warning } from "@mui/icons-material";
3639
3683
  import { Box as Box10, Tooltip as Tooltip2 } from "@mui/material";
3640
- import { useMemo as useMemo4 } from "react";
3684
+ import { useMemo as useMemo5 } from "react";
3641
3685
  import { jsx as jsx132 } from "react/jsx-runtime";
3642
3686
  var ProblemIndicator = ({ error }) => {
3643
- const icon = useMemo4(() => {
3687
+ const icon = useMemo5(() => {
3644
3688
  switch (error.level) {
3645
3689
  case "error": {
3646
3690
  return /* @__PURE__ */ jsx132(ErrorIcon, { sx: { color: "#d32f2f", fontSize: "14px" } });
@@ -3653,7 +3697,7 @@ var ProblemIndicator = ({ error }) => {
3653
3697
  }
3654
3698
  }
3655
3699
  }, [error.level]);
3656
- const color = useMemo4(() => {
3700
+ const color = useMemo5(() => {
3657
3701
  switch (error.level) {
3658
3702
  case "error": {
3659
3703
  return "#d32f2f";
@@ -3734,8 +3778,8 @@ var ServiceNode = memo(function ServiceNode2({ data, selected }) {
3734
3778
  /* @__PURE__ */ jsx133(
3735
3779
  ServiceCell,
3736
3780
  {
3737
- borderColor: selected ? "text.primary" : "text.secondary",
3738
- borderWidth: selected ? "1.5px" : "1px",
3781
+ borderColor: selected ? "text.primary" : void 0,
3782
+ borderWidth: selected ? "1.5px" : void 0,
3739
3783
  height: "32px",
3740
3784
  resource: data.event.resource_name,
3741
3785
  service: data.event.service_name,