TradingAgents/frontend/app/analysis/new/page.tsx

46 lines
1.3 KiB
TypeScript

"use client";
import { useRouter } from "next/navigation";
import { useState } from "react";
import AnalysisForm from "@/components/AnalysisForm";
import { AnalysisRequest } from "@/lib/types";
import { startAnalysis } from "@/lib/api";
export default function NewAnalysisPage() {
const router = useRouter();
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
const handleSubmit = async (request: AnalysisRequest) => {
setIsLoading(true);
setError(null);
try {
const { analysis_id } = await startAnalysis(request);
router.push(`/analysis/${analysis_id}`);
} catch (err) {
setError(err instanceof Error ? err.message : "Failed to start analysis");
setIsLoading(false);
}
};
return (
<div className="min-h-screen bg-gray-50">
<div className="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
<div className="bg-white rounded-lg shadow p-8">
<h1 className="text-3xl font-bold mb-6">New Analysis</h1>
{error && (
<div className="mb-4 p-4 bg-red-50 border border-red-200 rounded-md text-red-700">
{error}
</div>
)}
<AnalysisForm onSubmit={handleSubmit} isLoading={isLoading} />
</div>
</div>
</div>
);
}