feat: add View Project links to admin tables, conditionally show Awards tab
- IndividualAssignmentsTable: add View Project (new tab) as first dropdown item - AwardShortlist: make project title a clickable link opening in new tab - ProjectStatesTable: change View Project from same-tab Link to new-tab anchor - Round page: Awards tab now only shown when roundAwards.length > 0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -492,7 +492,7 @@ export default function RoundDetailPage() {
|
|||||||
const isFiltering = round?.roundType === 'FILTERING'
|
const isFiltering = round?.roundType === 'FILTERING'
|
||||||
const isEvaluation = round?.roundType === 'EVALUATION'
|
const isEvaluation = round?.roundType === 'EVALUATION'
|
||||||
const hasJury = ['EVALUATION', 'LIVE_FINAL', 'DELIBERATION'].includes(round?.roundType ?? '')
|
const hasJury = ['EVALUATION', 'LIVE_FINAL', 'DELIBERATION'].includes(round?.roundType ?? '')
|
||||||
const hasAwards = hasJury
|
const hasAwards = roundAwards.length > 0
|
||||||
const isSimpleAdvance = ['INTAKE', 'SUBMISSION', 'MENTORING'].includes(round?.roundType ?? '')
|
const isSimpleAdvance = ['INTAKE', 'SUBMISSION', 'MENTORING'].includes(round?.roundType ?? '')
|
||||||
|
|
||||||
const poolLink = `/admin/projects?hasAssign=false&round=${roundId}` as Route
|
const poolLink = `/admin/projects?hasAssign=false&round=${roundId}` as Route
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ import {
|
|||||||
Search,
|
Search,
|
||||||
MoreHorizontal,
|
MoreHorizontal,
|
||||||
UserPlus,
|
UserPlus,
|
||||||
|
ExternalLink,
|
||||||
} from 'lucide-react'
|
} from 'lucide-react'
|
||||||
|
|
||||||
export type IndividualAssignmentsTableProps = {
|
export type IndividualAssignmentsTableProps = {
|
||||||
@@ -371,6 +372,13 @@ export function IndividualAssignmentsTable({
|
|||||||
</Button>
|
</Button>
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent align="end">
|
<DropdownMenuContent align="end">
|
||||||
|
<DropdownMenuItem asChild>
|
||||||
|
<a href={`/admin/projects/${a.project?.id}`} target="_blank" rel="noopener noreferrer">
|
||||||
|
<ExternalLink className="mr-2 h-4 w-4" />
|
||||||
|
View Project
|
||||||
|
</a>
|
||||||
|
</DropdownMenuItem>
|
||||||
|
<DropdownMenuSeparator />
|
||||||
{a.conflictOfInterest?.hasConflict && (
|
{a.conflictOfInterest?.hasConflict && (
|
||||||
<>
|
<>
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
|
|||||||
@@ -303,7 +303,15 @@ export function AwardShortlist({
|
|||||||
<td className="px-3 py-2">
|
<td className="px-3 py-2">
|
||||||
<div>
|
<div>
|
||||||
<p className={`font-medium ${isTop5 ? 'text-amber-900' : ''}`}>
|
<p className={`font-medium ${isTop5 ? 'text-amber-900' : ''}`}>
|
||||||
|
<a
|
||||||
|
href={`/admin/projects/${e.project.id}`}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
className="text-primary hover:underline font-medium"
|
||||||
|
onClick={(ev) => ev.stopPropagation()}
|
||||||
|
>
|
||||||
{e.project.title}
|
{e.project.title}
|
||||||
|
</a>
|
||||||
</p>
|
</p>
|
||||||
<p className="text-xs text-muted-foreground">
|
<p className="text-xs text-muted-foreground">
|
||||||
{[e.project.teamName, e.project.country, e.project.competitionCategory].filter(Boolean).join(', ') || '—'}
|
{[e.project.teamName, e.project.country, e.project.competitionCategory].filter(Boolean).join(', ') || '—'}
|
||||||
|
|||||||
@@ -406,10 +406,10 @@ export function ProjectStatesTable({ competitionId, roundId }: ProjectStatesTabl
|
|||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent align="end">
|
<DropdownMenuContent align="end">
|
||||||
<DropdownMenuItem asChild>
|
<DropdownMenuItem asChild>
|
||||||
<Link href={`/admin/projects/${ps.projectId}` as Route}>
|
<a href={`/admin/projects/${ps.projectId}`} target="_blank" rel="noopener noreferrer">
|
||||||
<ExternalLink className="h-3.5 w-3.5 mr-2" />
|
<ExternalLink className="h-3.5 w-3.5 mr-2" />
|
||||||
View Project
|
View Project
|
||||||
</Link>
|
</a>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuSeparator />
|
<DropdownMenuSeparator />
|
||||||
{PROJECT_STATES.filter((s) => s !== ps.state).map((state) => {
|
{PROJECT_STATES.filter((s) => s !== ps.state).map((state) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user