Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export async function GET(_request: Request, context: RouteContext) {
} catch (error) {
return NextResponse.json(
{
detail: `Ergon API is unavailable while loading runtime events for sample ${sampleId}.`,
detail: `Ergon API is unavailable while loading events for sample ${sampleId}.`,
error: error instanceof Error ? error.message : "Unknown backend fetch failure",
},
{ status: 503 },
Expand Down
228 changes: 0 additions & 228 deletions ergon-dashboard/src/app/experiments/[definitionId]/page.tsx

This file was deleted.

18 changes: 18 additions & 0 deletions ergon-dashboard/src/app/experiments/[experimentId]/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { notFound } from "next/navigation";

import { ExperimentDetail } from "@/components/experiments/ExperimentDetail";
import { loadExperimentDetail } from "@/lib/server-data/experiments";

interface ExperimentPageProps {
params: Promise<{ experimentId: string }>;
}

export default async function ExperimentPage({ params }: ExperimentPageProps) {
const { experimentId } = await params;
const result = await loadExperimentDetail(experimentId);
if (!result.ok) {
if (result.status === 404) notFound();
throw new Error(`Failed to load experiment ${experimentId}: ${result.status}`);
}
return <ExperimentDetail state={result.data} />;
}
10 changes: 5 additions & 5 deletions ergon-dashboard/src/app/experiments/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ export default async function ExperimentsPage() {

const runningCount = experiments.reduce(
(sum, experiment) =>
sum + experiment.status_counts.executing + experiment.status_counts.evaluating,
sum + experiment.samples.filter((sample) => ["executing", "evaluating"].includes(sample.status)).length,
0,
);
const failedCount = experiments.reduce(
(sum, experiment) => sum + experiment.failure_count,
(sum, experiment) => sum + experiment.samples.filter((sample) => sample.status === "failed").length,
0,
);
const totalRuns = experiments.reduce((sum, experiment) => sum + experiment.run_count, 0);
const totalSamples = experiments.reduce((sum, experiment) => sum + experiment.sampleCount, 0);

return (
<main className="mx-auto w-full max-w-7xl px-6 py-8">
Expand Down Expand Up @@ -51,8 +51,8 @@ export default async function ExperimentsPage() {
<div className="mt-1 font-mono text-2xl text-[var(--ink)]">{failedCount}</div>
</div>
<div className="border border-[var(--line)] bg-[var(--card)] px-4 py-3">
<div className="text-xs uppercase tracking-[0.08em] text-[var(--faint)]">Runs</div>
<div className="mt-1 font-mono text-2xl text-[var(--ink)]">{totalRuns}</div>
<div className="text-xs uppercase tracking-[0.08em] text-[var(--faint)]">Samples</div>
<div className="mt-1 font-mono text-2xl text-[var(--ink)]">{totalSamples}</div>
</div>
</div>

Expand Down
21 changes: 21 additions & 0 deletions ergon-dashboard/src/app/samples/[sampleId]/detail/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { notFound } from "next/navigation";

import { SampleDetail } from "@/components/samples/SampleDetail";
import { loadSampleState } from "@/lib/server-data/samples";

interface SampleDetailPageProps {
params: Promise<{
sampleId: string;
}>;
}

export default async function SampleDetailPage({ params }: SampleDetailPageProps) {
const { sampleId } = await params;
const result = await loadSampleState(sampleId);
if (!result.ok) {
if (result.status === 404) notFound();
throw new Error(`Failed to load sample ${sampleId}: ${result.status}`);
}

return <SampleDetail state={result.data} />;
}
21 changes: 4 additions & 17 deletions ergon-dashboard/src/app/samples/[sampleId]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
import { SampleWorkspacePage } from "@/components/sample/SampleWorkspacePage";
import { loadSampleSnapshot } from "@/lib/server-data/samples";
import type { SerializedSampleWorkspaceState } from "@/lib/types";
import { redirect } from "next/navigation";

interface LegacyRunPageProps {
interface SamplePageProps {
params: Promise<{
sampleId: string;
}>;
}

export default async function RunPage({ params }: LegacyRunPageProps) {
export default async function SamplePage({ params }: SamplePageProps) {
const { sampleId } = await params;
let initialRunState: SerializedSampleWorkspaceState | null = null;
let ssrError: string | null = null;

const result = await loadSampleSnapshot(sampleId);
if (result.ok) {
initialRunState = result.data;
} else {
const detail = (result.body as { detail?: string })?.detail;
ssrError = detail ?? `Run API returned ${result.status}`;
}

return <SampleWorkspacePage sampleId={sampleId} initialRunState={initialRunState} ssrError={ssrError} />;
redirect(`/samples/${sampleId}/detail`);
}
2 changes: 2 additions & 0 deletions ergon-dashboard/src/components/common/StatusBadge.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"use client";

import React from "react";

import { SampleLifecycleStatus, TaskStatus } from "@/lib/types";

type StatusType = TaskStatus | SampleLifecycleStatus | string;
Expand Down
Loading
Loading