diff --git a/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx b/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx index 91ad715..58ac495 100644 --- a/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx +++ b/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx @@ -1,18 +1,16 @@ -import { Button } from "@/components/ui/button" -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" -import { Badge } from "@/components/ui/badge" -import { ArrowLeft, Download, Edit, Play, Trash, Copy, Check } from "lucide-react" -import Link from "next/link" -import PageHeader from "@/components/page-header" - -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" -import { PipelineStatus } from "@/components/pipeline/status" -import { PipelineDataSource } from "@/components/pipeline/data-source" -import { PipelineExportData } from "@/components/pipeline/export-data" -import { PipelineDataSchema } from "@/components/pipeline/data-schema" -import { PipelineDataPreview } from "@/components/pipeline/data-preview" +import { Button } from "@/components/ui/button"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; +import { ArrowLeft, Edit, Play, Trash, Copy } from "lucide-react"; +import Link from "next/link"; +import PageHeader from "@/components/page-header"; +import { PipelineStatus } from "@/components/pipeline/status"; +import { PipelineDataSource } from "@/components/pipeline/data-source"; +import { PipelineExportData } from "@/components/pipeline/export-data"; +import { PipelineDataSchema } from "@/components/pipeline/data-schema"; +import { PipelineDataPreview } from "@/components/pipeline/data-preview"; +import { PipelineOutputConfig } from "@/components/pipeline/output-config"; +import { PipelineRunHistory } from "@/components/pipeline/run-history"; +import { PipelineSettings } from "@/components/pipeline/settings"; export default function PipelineDetailsPage() { return ( @@ -22,7 +20,10 @@ export default function PipelineDetailsPage() { breadcrumb={[ { title: "Home", href: "/" }, { title: "Data Pipeline", href: "/data-pipeline" }, - { title: "Property Listings", href: "/data-pipeline/property-listings" }, + { + title: "Property Listings", + href: "/data-pipeline/property-listings", + }, ]} /> @@ -35,15 +36,24 @@ export default function PipelineDetailsPage() {
- - - @@ -70,250 +80,26 @@ export default function PipelineDetailsPage() { - - + + - - + + - - - Output Configuration - Configure how your data will be structured and exported - - -
-
- -
-
-
- JSON - -
-

Structured data format

-
-
- CSV -

Spreadsheet compatible

-
-
- SQLite -

Portable database

-
-
- YAML -

Human-readable format

-
-
-
- -
-
- - Sample Data -
-
-
-                        {`{
-  "properties": [
-    {
-      "id": "P001",
-      "title": "Modern Apartment",
-      "price": 350000,
-      "bedrooms": 2,
-      "location": "Downtown"
-    },
-    {
-      "id": "P002",
-      "title": "Luxury Villa",
-      "price": 1250000,
-      "bedrooms": 5,
-      "location": "Suburbs"
-    }
-  ]
-}`}
-                      
-
-
- -
- -
-
-
-
+
- - - Run History - History of pipeline executions - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Run IDDateStatusDurationRecordsActions
RUN-123Today, 10:30 AM - - Success - - 2m 15s1,240 - -
RUN-122Yesterday, 10:30 AM - - Success - - 2m 10s1,235 - -
RUN-1212 days ago, 10:30 AM - - Success - - 2m 05s1,228 - -
-
-
-
-
+
- - - Pipeline Settings - Configure pipeline behavior - - -
-
-

Scheduling

-
-
- - -
- -
- - -
-
-
- -
-

Data Collection

-
-
- - -
- -
- - -
-
-
- -
-

Notifications

-
-
- - -
-
- - -
-
-
- -
- -
-
-
-
+
- ) + ); } - diff --git a/frontend/components/pipeline/badge.tsx b/frontend/components/pipeline/badge.tsx index afc435d..50b1442 100644 --- a/frontend/components/pipeline/badge.tsx +++ b/frontend/components/pipeline/badge.tsx @@ -1,6 +1,10 @@ import { Badge } from "@/components/ui/badge"; -export function StatusBadge({ status }: { status: "active" | "paused" | "error" }) { +export function StatusBadge({ + status, +}: { + status: "active" | "paused" | "error"; +}) { if (status === "active") { return ( ); -} \ No newline at end of file +} diff --git a/frontend/components/pipeline/data-source.tsx b/frontend/components/pipeline/data-source.tsx index 7087059..1ad4316 100644 --- a/frontend/components/pipeline/data-source.tsx +++ b/frontend/components/pipeline/data-source.tsx @@ -1,48 +1,48 @@ import { Badge } from "../ui/badge"; import { Card, CardHeader, CardTitle, CardContent } from "../ui/card"; -export function PipelineDataSource(){ - return ( - - - Data Sources - - -
-
-
- example-realty.com - Website -
-

- Last updated: 2 hours ago -

-

540 records

-
- -
-
- property-listings.com - Website -
-

- Last updated: 2 hours ago -

-

420 records

-
- -
-
- real-estate-api.com - API -
-

- Last updated: 2 hours ago -

-

280 records

+export function PipelineDataSource() { + return ( + + + Data Sources + + +
+
+
+ example-realty.com + Website
+

+ Last updated: 2 hours ago +

+

540 records

- - - ); -} \ No newline at end of file + +
+
+ property-listings.com + Website +
+

+ Last updated: 2 hours ago +

+

420 records

+
+ +
+
+ real-estate-api.com + API +
+

+ Last updated: 2 hours ago +

+

280 records

+
+
+
+
+ ); +} diff --git a/frontend/components/pipeline/output-config.tsx b/frontend/components/pipeline/output-config.tsx new file mode 100644 index 0000000..0a136c4 --- /dev/null +++ b/frontend/components/pipeline/output-config.tsx @@ -0,0 +1,96 @@ +import { Check, Download } from "lucide-react"; +import { Badge } from "../ui/badge"; +import { Button } from "../ui/button"; +import { Label } from "../ui/label"; +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, +} from "../ui/card"; + +export function PipelineOutputConfig() { + return ( + + + Output Configuration + + Configure how your data will be structured and exported + + + +
+
+ +
+
+
+ JSON + +
+

+ Structured data format +

+
+
+ CSV +

+ Spreadsheet compatible +

+
+
+ SQLite +

+ Portable database +

+
+
+ YAML +

+ Human-readable format +

+
+
+
+ +
+
+ + Sample Data +
+
+
+                {`{
+  "properties": [
+    {
+      "id": "P001",
+      "title": "Modern Apartment",
+      "price": 350000,
+      "bedrooms": 2,
+      "location": "Downtown"
+    },
+    {
+      "id": "P002",
+      "title": "Luxury Villa",
+      "price": 1250000,
+      "bedrooms": 5,
+      "location": "Suburbs"
+    }
+  ]
+}`}
+              
+
+
+ +
+ +
+
+
+
+ ); +} diff --git a/frontend/components/pipeline/run-history.tsx b/frontend/components/pipeline/run-history.tsx new file mode 100644 index 0000000..7807dcf --- /dev/null +++ b/frontend/components/pipeline/run-history.tsx @@ -0,0 +1,109 @@ +import { Badge } from "../ui/badge"; +import { Button } from "../ui/button"; +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, +} from "../ui/card"; + +export function PipelineRunHistory() { + return ( + + + Run History + History of pipeline executions + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Run ID + + Date + + Status + + Duration + + Records + + Actions +
RUN-123Today, 10:30 AM + + Success + + 2m 15s1,240 + +
RUN-122Yesterday, 10:30 AM + + Success + + 2m 10s1,235 + +
RUN-1212 days ago, 10:30 AM + + Success + + 2m 05s1,228 + +
+
+
+
+
+ ); +} diff --git a/frontend/components/pipeline/settings.tsx b/frontend/components/pipeline/settings.tsx new file mode 100644 index 0000000..fb76b03 --- /dev/null +++ b/frontend/components/pipeline/settings.tsx @@ -0,0 +1,100 @@ +import { Button } from "../ui/button"; +import { Label } from "../ui/label"; +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, +} from "../ui/card"; +import { Input } from "../ui/input"; + +export function PipelineSettings() { + return ( + + + Pipeline Settings + Configure pipeline behavior + + +
+
+

Scheduling

+
+
+ + +
+ +
+ + +
+
+
+ +
+

Data Collection

+
+
+ + +
+ +
+ + +
+
+
+ +
+

Notifications

+
+
+ + +
+
+ + +
+
+
+ +
+ +
+
+
+
+ ); +} diff --git a/frontend/components/pipeline/status.tsx b/frontend/components/pipeline/status.tsx index 4266684..63f9e7e 100644 --- a/frontend/components/pipeline/status.tsx +++ b/frontend/components/pipeline/status.tsx @@ -2,40 +2,40 @@ import { Badge } from "../ui/badge"; import { Card, CardHeader, CardTitle, CardContent } from "../ui/card"; export function PipelineStatus() { - return ( - - - Pipeline Status - - -
-
- Status: - - Active - -
-
- Last Run: - 2 hours ago -
-
- Next Run: - Tomorrow at 9:00 AM -
-
- Run Frequency: - Daily -
-
- Total Records: - 1,240 -
+ return ( + + + Pipeline Status + + +
+
+ Status: + + Active +
- - - ); -} \ No newline at end of file +
+ Last Run: + 2 hours ago +
+
+ Next Run: + Tomorrow at 9:00 AM +
+
+ Run Frequency: + Daily +
+
+ Total Records: + 1,240 +
+
+
+
+ ); +}