Skip to content

Commit

Permalink
feat: add breadcrumb to issue listing
Browse files Browse the repository at this point in the history
Close #1014
  • Loading branch information
Francisco2002 committed Mar 7, 2025
1 parent a1546b3 commit 56c357f
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 0 deletions.
42 changes: 42 additions & 0 deletions dashboard/src/components/Breadcrumb/IssueBreadcrumb.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import type { MessageDescriptor } from 'react-intl';
import { FormattedMessage } from 'react-intl';

import { memo, type JSX } from 'react';

import type { LinkProps } from '@tanstack/react-router';

import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from './Breadcrumb';

const IssueBreadcrumb = ({
searchParams,
locationMessage,
}: {
searchParams: LinkProps['search'];
locationMessage: MessageDescriptor['id'];
}): JSX.Element => {
return (
<Breadcrumb className="pt-6 pb-6">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink to="/issues" search={searchParams}>
<FormattedMessage id="issue.path" />
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>
<FormattedMessage id={locationMessage} />
</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
};
export const MemoizedIssueBreadcrumb = memo(IssueBreadcrumb);
3 changes: 3 additions & 0 deletions dashboard/src/components/IssueTable/IssueTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import { valueOrEmpty } from '@/lib/string';

import { TooltipDateTime } from '@/components/TooltipDateTime';
import { shouldShowRelativeDate } from '@/lib/date';
import { RedirectFrom } from '@/types/general';

const getLinkProps = (
row: Row<IssueListingTableItem>,
Expand Down Expand Up @@ -74,6 +75,8 @@ const getLinkProps = (
params: { issueId: row.original.id },
state: s => ({
...s,
id: row.original.id,
from: RedirectFrom.Issues,
}),
};
};
Expand Down
1 change: 1 addition & 0 deletions dashboard/src/locales/messages/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ export const messages = {
'issue.firstSeen': 'First seen',
'issue.newIssue': 'New issue: This is the first time this issue was seen',
'issue.noIssueFound': 'No issue found.',
'issue.path': 'Issues',
'issue.searchPlaceholder': 'Search by issue comment with a regex',
'issue.tooltip':
'Issues groups several builds or tests by matching result status and logs.{br}They may also be linked to an external issue tracker or mailing list discussion.',
Expand Down
10 changes: 10 additions & 0 deletions dashboard/src/pages/IssueDetails/IssueDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { RedirectFrom } from '@/types/general';
import { MemoizedTreeBreadcrumb } from '@/components/Breadcrumb/TreeBreadcrumb';
import { MemoizedHardwareBreadcrumb } from '@/components/Breadcrumb/HardwareBreadcrumb';
import { useSearchStore } from '@/hooks/store/useSearchStore';
import { MemoizedIssueBreadcrumb } from '@/components/Breadcrumb/IssueBreadcrumb';

const getBuildTableRowLink = (buildId: string): LinkProps => ({
to: '/build/$buildId',
Expand Down Expand Up @@ -54,6 +55,15 @@ const IssueDetailsPage = (): JSX.Element => {
/>
);
}

if (historyState.from === RedirectFrom.Issues) {
return (
<MemoizedIssueBreadcrumb
searchParams={previousSearch}
locationMessage="issueDetails.issueDetails"
/>
);
}
}
}, [historyState.from, historyState.id, previousSearch]);

Expand Down
1 change: 1 addition & 0 deletions dashboard/src/types/general.ts
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,7 @@ export const getTargetFilter = (
export enum RedirectFrom {
Tree = 'tree',
Hardware = 'hardware',
Issues = 'issues',
}

export type PossibleMonitorPath = '/tree' | '/hardware' | '/issues';

0 comments on commit 56c357f

Please sign in to comment.