feat: Update experiment creation and update functions to handle optional annotationTool and trim inputs; add datasets management page
This commit is contained in:
@@ -17,7 +17,7 @@ export async function createExperiment({
|
||||
name: string;
|
||||
description?: string;
|
||||
datasetId: number;
|
||||
annotationTool: string;
|
||||
annotationTool?: string;
|
||||
published?: boolean;
|
||||
}) {
|
||||
const result = await requireAdmin();
|
||||
@@ -34,7 +34,7 @@ export async function createExperiment({
|
||||
name: name.trim(),
|
||||
description: description?.trim() || null,
|
||||
datasetId,
|
||||
annotationTool: annotationTool.trim(),
|
||||
annotationTool: annotationTool?.trim(),
|
||||
published,
|
||||
});
|
||||
revalidatePath('/admin/experiments');
|
||||
@@ -67,7 +67,7 @@ export async function updateExperiment(
|
||||
updateData.description = updates.description.trim() || null;
|
||||
}
|
||||
if (updates.annotationTool !== undefined) {
|
||||
updateData.annotationTool = updates.annotationTool;
|
||||
updateData.annotationTool = updates.annotationTool?.trim();
|
||||
}
|
||||
if (updates.published !== undefined) {
|
||||
updateData.published = updates.published;
|
||||
|
||||
37
src/app/admin/datasets/page.tsx
Normal file
37
src/app/admin/datasets/page.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import Link from 'next/link';
|
||||
import DatasetsList from '@/components/DatasetsList';
|
||||
import CreateDatasetModal from '@/components/CreateDatasetModal';
|
||||
import { requireAdmin } from '@/lib/auth';
|
||||
import { redirect } from 'next/navigation';
|
||||
|
||||
export default async function DatasetsAdminPage() {
|
||||
const result = await requireAdmin();
|
||||
|
||||
if (!result.authenticated) {
|
||||
redirect("/user/sign-in");
|
||||
}
|
||||
|
||||
if (!result.admin) {
|
||||
redirect("/");
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="px-4 sm:px-6 lg:px-8 py-8">
|
||||
<Link
|
||||
href="/admin"
|
||||
className="text-blue-500 hover:text-blue-600 mb-6 inline-block"
|
||||
>
|
||||
← Back to Admin
|
||||
</Link>
|
||||
|
||||
<div className="mb-8">
|
||||
<h1 className="text-3xl font-bold mb-4">Datasets Management</h1>
|
||||
<p className="text-gray-600">Manage all datasets</p>
|
||||
</div>
|
||||
|
||||
<CreateDatasetModal />
|
||||
|
||||
<DatasetsList />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
import DatasetsList from "@/components/DatasetsList";
|
||||
import CreateDatasetModal from "@/components/CreateDatasetModal";
|
||||
import ExperimentsList from "@/components/ExperimentsList";
|
||||
import { AdminTokenForm } from "@/components/AdminTokenForm";
|
||||
import BuildInfo from "@/components/BuildInfo";
|
||||
@@ -22,12 +21,12 @@ export default async function AdminPage() {
|
||||
<div className="px-4 sm:px-6 lg:px-8 py-8">
|
||||
<div className="mb-8">
|
||||
<h1 className="text-3xl font-bold mb-4">Admin Panel</h1>
|
||||
<div className="flex gap-4">
|
||||
<div className="flex flex-wrap gap-4">
|
||||
<Link
|
||||
href="/admin/users"
|
||||
href="/admin/datasets"
|
||||
className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600"
|
||||
>
|
||||
Manage Users
|
||||
Manage Datasets
|
||||
</Link>
|
||||
<Link
|
||||
href="/admin/experiments"
|
||||
@@ -35,6 +34,12 @@ export default async function AdminPage() {
|
||||
>
|
||||
Manage Experiments
|
||||
</Link>
|
||||
<Link
|
||||
href="/admin/users"
|
||||
className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600"
|
||||
>
|
||||
Manage Users
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -42,16 +47,14 @@ export default async function AdminPage() {
|
||||
<BuildInfo />
|
||||
</div>
|
||||
|
||||
<div className="mt-8">
|
||||
<h2 className="text-2xl font-bold mb-4">Datasets</h2>
|
||||
<CreateDatasetModal />
|
||||
<DatasetsList />
|
||||
</div>
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 mt-8">
|
||||
<div>
|
||||
<DatasetsList />
|
||||
</div>
|
||||
|
||||
<div className="mt-12">
|
||||
<h2 className="text-2xl font-bold mb-4">Experiments</h2>
|
||||
<p className="text-gray-600 mb-4">Manage experiments globally or <Link href="/admin/experiments" className="text-blue-500 hover:text-blue-600 font-semibold">go to the experiments management page</Link></p>
|
||||
<ExperimentsList />
|
||||
<div>
|
||||
<ExperimentsList />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user