@localstack/appinspector-ui 1.0.15 → 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
@@ -2703,9 +2703,15 @@ var SpansDataGrid = ({
2703
2703
  loading,
2704
2704
  onClearSpans,
2705
2705
  onFilterWriteOperationsChange,
2706
+ onPageChange,
2707
+ onPageSizeChange,
2706
2708
  onRefresh,
2707
2709
  onSpanClick,
2710
+ page,
2711
+ pageSize,
2712
+ rowCount,
2708
2713
  rows,
2714
+ rowsPerPageOptions,
2709
2715
  // setRows,
2710
2716
  sortingOption = defaultSortingOption
2711
2717
  }) => {
@@ -2804,15 +2810,26 @@ var SpansDataGrid = ({
2804
2810
  getRowId: (row) => row.span_id,
2805
2811
  initialState: {
2806
2812
  pagination: {
2807
- page: 0,
2808
- pageSize: 50
2813
+ page,
2814
+ pageSize
2809
2815
  }
2810
2816
  },
2811
2817
  loading,
2818
+ onPageChange: (newPage) => {
2819
+ onPageChange(newPage);
2820
+ },
2821
+ onPageSizeChange: (newPageSize) => {
2822
+ onPageSizeChange(newPageSize);
2823
+ },
2812
2824
  onRowClick: handleRowClick,
2813
2825
  onSortModelChange: handleSortModelChange,
2826
+ page,
2827
+ pageSize,
2828
+ paginationMode: "server",
2829
+ rowCount,
2814
2830
  rowHeight: 40,
2815
2831
  rows: filteredRows,
2832
+ rowsPerPageOptions,
2816
2833
  sortModel,
2817
2834
  sx: { flexGrow: 1 }
2818
2835
  }
@@ -2845,9 +2862,15 @@ var SpansList = (props) => {
2845
2862
  loading: props.spans.loading,
2846
2863
  onClearSpans: props.onClearSpans,
2847
2864
  onFilterWriteOperationsChange: props.onFilterWriteOperationsChange,
2865
+ onPageChange: props.onPageChange,
2866
+ onPageSizeChange: props.onPageSizeChange,
2848
2867
  onRefresh: props.onRefresh,
2849
2868
  onSpanClick: props.onSpanClick,
2869
+ page: props.page,
2870
+ pageSize: props.pageSize,
2871
+ rowCount: props.spanCount,
2850
2872
  rows: props.spans.data ?? [],
2873
+ rowsPerPageOptions: props.spansPerPageOptions,
2851
2874
  sortingOption: { field: "start_time_unix_nano", sort: "asc" }
2852
2875
  }
2853
2876
  )
@@ -3369,24 +3392,37 @@ var SpansListPage = () => {
3369
3392
  const [loading, setLoading] = useState5(false);
3370
3393
  const hasFetched = useRef3(false);
3371
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]);
3372
3407
  const [fetchError, setFetchError] = useState5();
3373
3408
  const { checkStatus, error: statusError, status } = useStatus();
3374
3409
  const fetchSpans = useCallback5(async () => {
3375
3410
  setLoading(true);
3376
3411
  try {
3377
- const response = await api.getSpans({
3378
- is_write_operation: filterWriteOperations ? true : void 0,
3379
- limit: 100
3380
- });
3412
+ const response = await api.getSpans(queryOptions);
3381
3413
  setSpans(response.spans);
3414
+ setSpanCount(response.pagination.total_count);
3382
3415
  setFetchError(void 0);
3416
+ if (response.pagination.cursor) {
3417
+ mapPageToNextCursor.current[page] = response.pagination.cursor;
3418
+ }
3383
3419
  } catch (error) {
3384
3420
  console.error(error);
3385
3421
  setFetchError(error instanceof Error ? error : new Error("Unknown error", { cause: error }));
3386
3422
  } finally {
3387
3423
  setLoading(false);
3388
3424
  }
3389
- }, [api, filterWriteOperations]);
3425
+ }, [api, page, queryOptions]);
3390
3426
  const fetchSpansSync = useCallback5(() => {
3391
3427
  void fetchSpans();
3392
3428
  }, [fetchSpans]);
@@ -3452,17 +3488,23 @@ var SpansListPage = () => {
3452
3488
  onFilterWriteOperationsChange: (value) => {
3453
3489
  setFilterWriteOperations(value);
3454
3490
  },
3491
+ onPageChange: setPage,
3492
+ onPageSizeChange: setPageSize,
3455
3493
  onRefresh: () => {
3456
3494
  fetchSpansSync();
3457
3495
  },
3458
3496
  onSpanClick: (span) => {
3459
3497
  navigateToSpan(span);
3460
3498
  },
3499
+ page,
3500
+ pageSize,
3501
+ spanCount,
3461
3502
  spans: {
3462
3503
  data: spans,
3463
3504
  error: fetchError,
3464
3505
  loading
3465
- }
3506
+ },
3507
+ spansPerPageOptions
3466
3508
  }
3467
3509
  )
3468
3510
  }
@@ -3639,10 +3681,10 @@ import { memo, useCallback as useCallback6 } from "react";
3639
3681
  // src/components/trace-graph/problem-indicator.tsx
3640
3682
  import { Error as ErrorIcon, Info, Warning } from "@mui/icons-material";
3641
3683
  import { Box as Box10, Tooltip as Tooltip2 } from "@mui/material";
3642
- import { useMemo as useMemo4 } from "react";
3684
+ import { useMemo as useMemo5 } from "react";
3643
3685
  import { jsx as jsx132 } from "react/jsx-runtime";
3644
3686
  var ProblemIndicator = ({ error }) => {
3645
- const icon = useMemo4(() => {
3687
+ const icon = useMemo5(() => {
3646
3688
  switch (error.level) {
3647
3689
  case "error": {
3648
3690
  return /* @__PURE__ */ jsx132(ErrorIcon, { sx: { color: "#d32f2f", fontSize: "14px" } });
@@ -3655,7 +3697,7 @@ var ProblemIndicator = ({ error }) => {
3655
3697
  }
3656
3698
  }
3657
3699
  }, [error.level]);
3658
- const color = useMemo4(() => {
3700
+ const color = useMemo5(() => {
3659
3701
  switch (error.level) {
3660
3702
  case "error": {
3661
3703
  return "#d32f2f";