diff --git a/frontend/app/(sidebar)/data-pipeline/page.tsx b/frontend/app/(sidebar)/data-pipeline/page.tsx index 2acdf94..44d3a88 100644 --- a/frontend/app/(sidebar)/data-pipeline/page.tsx +++ b/frontend/app/(sidebar)/data-pipeline/page.tsx @@ -1,10 +1,9 @@ -import { Button } from "@/components/ui/button" -import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" -import { Badge } from "@/components/ui/badge" -import { Clock, Database, Play, Plus, RefreshCw, Pause, AlertTriangle, Copy } from "lucide-react" -import Link from "next/link" -import PageHeader from "@/components/page-header" +import { Button } from "@/components/ui/button"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { Plus } from "lucide-react"; +import Link from "next/link"; +import PageHeader from "@/components/page-header"; +import { PipelineCard } from "@/components/pipeline/card"; export default function DataPipelinePage() { return ( @@ -135,108 +134,5 @@ export default function DataPipelinePage() { - ) + ); } - -interface PipelineCardProps { - title: string - description: string - status: "active" | "paused" | "error" - lastRun: string - nextRun: string - sources: number - records: number - error?: string - aiPowered?: boolean -} - -function PipelineCard({ - title, - description, - status, - lastRun, - nextRun, - sources, - records, - error, - aiPowered, -}: PipelineCardProps) { - return ( - - -
- {title} - -
- {description} -
- -
-
- - Last run: - {lastRun} -
-
- - Next run: - {nextRun} -
-
- - Sources: - {sources} - - Records: - {records} -
- {error && ( -
- - {error} -
- )} -
-
- - - - -
- - {status === "active" ? ( - - ) : ( - - )} - -
-
-
- ) -} - -function StatusBadge({ status }: { status: "active" | "paused" | "error" }) { - if (status === "active") { - return ( - - Active - - ) - } else if (status === "paused") { - return Paused - } else { - return Error - } -} - diff --git a/frontend/app/(sidebar)/maps/page.tsx b/frontend/app/(sidebar)/maps/page.tsx index a1f6c89..65630b2 100644 --- a/frontend/app/(sidebar)/maps/page.tsx +++ b/frontend/app/(sidebar)/maps/page.tsx @@ -83,7 +83,7 @@ export default function MapsPage() { return (
{/* Map Container */} -
+
{/* Map Placeholder - In a real implementation, this would be a map component */}
Map View
diff --git a/frontend/components/pipeline/badge.tsx b/frontend/components/pipeline/badge.tsx new file mode 100644 index 0000000..afc435d --- /dev/null +++ b/frontend/components/pipeline/badge.tsx @@ -0,0 +1,18 @@ +import { Badge } from "@/components/ui/badge"; + +export function StatusBadge({ status }: { status: "active" | "paused" | "error" }) { + if (status === "active") { + return ( + + Active + + ); + } else if (status === "paused") { + return Paused; + } else { + return Error; + } +} diff --git a/frontend/components/pipeline/card.tsx b/frontend/components/pipeline/card.tsx new file mode 100644 index 0000000..8302bf9 --- /dev/null +++ b/frontend/components/pipeline/card.tsx @@ -0,0 +1,132 @@ +import { + Clock, + Database, + Play, + RefreshCw, + Pause, + AlertTriangle, + Copy, +} from "lucide-react"; +import { + Card, + CardContent, + CardDescription, + CardFooter, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { StatusBadge } from "./badge"; +import Link from "next/link"; +import { Button } from "@/components/ui/button"; + + +interface PipelineCardProps { + title: string; + description: string; + status: "active" | "paused" | "error"; + lastRun: string; + nextRun: string; + sources: number; + records: number; + error?: string; + aiPowered?: boolean; +} + +export function PipelineCard({ + title, + description, + status, + lastRun, + nextRun, + sources, + records, + error, +}: PipelineCardProps) { + return ( + + +
+ {title} + +
+ {description} +
+ +
+
+ + Last run: + {lastRun} +
+
+ + Next run: + {nextRun} +
+
+ + Sources: + {sources} + + Records: + {records} +
+ {error && ( +
+ + {error} +
+ )} +
+
+ + + + +
+ + {status === "active" ? ( + + ) : ( + + )} + +
+
+
+ ); +}