fix(ui): respect rootOnlyDefault, disable adjacent run navigation in inspector views (#2781)

## Changelog

- Add disableAdjacentRows prop to TaskRunsTable component to control
table state encoding
- Pass rootOnlyDefault prop from loader to TaskRunsTable for proper
state management
- Disable adjacent run navigation in schedule, waitpoint, and other
inspector views
- Preserve adjacent run navigation on main runs list page with rootOnly
filter support
This commit is contained in:
Oskar Otwinowski
2025-12-12 12:16:29 +00:00
committed by Oskar Otwinowski
parent f028f266f8
commit ce5aef08cd
4 changed files with 13 additions and 1 deletions
@@ -56,6 +56,7 @@ import {
TaskRunStatusCombo,
} from "./TaskRunStatus";
import { useOptimisticLocation } from "~/hooks/useOptimisticLocation";
import { useSearchParams } from "~/hooks/useSearchParam";
type RunsTableProps = {
total: number;
@@ -63,9 +64,11 @@ type RunsTableProps = {
filters: NextRunListAppliedFilters;
showJob?: boolean;
runs: NextRunListItem[];
rootOnlyDefault?: boolean;
isLoading?: boolean;
allowSelection?: boolean;
variant?: TableVariant;
disableAdjacentRows?: boolean;
};
export function TaskRunsTable({
@@ -73,6 +76,8 @@ export function TaskRunsTable({
hasFilters,
filters,
runs,
rootOnlyDefault,
disableAdjacentRows = false,
isLoading = false,
allowSelection = false,
variant = "dimmed",
@@ -82,8 +87,12 @@ export function TaskRunsTable({
const checkboxes = useRef<(HTMLInputElement | null)[]>([]);
const { has, hasAll, select, deselect, toggle } = useSelectedItems(allowSelection);
const { isManagedCloud } = useFeatures();
const { value } = useSearchParams();
const location = useOptimisticLocation();
const tableStateParam = encodeURIComponent(location.search ? `${location.search}&rt=1` : "rt=1");
const rootOnly = value("rootOnly") ? `` : `rootOnly=${rootOnlyDefault}`;
const search = rootOnly ? `${rootOnly}&${location.search}` : location.search;
/** TableState has to be encoded as a separate URI component, so it's merged under one, 'tableState' param */
const tableStateParam = disableAdjacentRows ? '' : encodeURIComponent(search);
const showCompute = isManagedCloud;
@@ -298,6 +298,7 @@ function RunsList({
runs={list.runs}
isLoading={isLoading}
allowSelection
rootOnlyDefault={rootOnlyDefault}
/>
</div>
)}
@@ -318,6 +318,7 @@ export default function Page() {
runs={schedule.runs}
isLoading={false}
variant="bright"
disableAdjacentRows
/>
</div>
<div className="flex flex-col gap-1 pt-2">
@@ -126,6 +126,7 @@ export default function Page() {
runs={waitpoint.connectedRuns}
isLoading={false}
variant="bright"
disableAdjacentRows
/>
</div>
</div>