diff --git a/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx b/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx index 93d4f06..91ad715 100644 --- a/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx +++ b/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx @@ -2,13 +2,17 @@ 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, Plus } from "lucide-react" +import { ArrowLeft, Download, Edit, Play, Trash, Copy, Check } from "lucide-react" import Link from "next/link" import PageHeader from "@/components/page-header" -import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion" + 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" export default function PipelineDetailsPage() { return ( @@ -51,133 +55,8 @@ export default function PipelineDetailsPage() {
- - - - 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 Options - - -
- - -
- -
- - Export as JSON -
-
- -
-
- - -
- -
-
-
-
- - -
- -
- - Export as CSV -
-
- -
-
- - -
- -
-
-
-
- - -
- -
- - Export as SQLite -
-
- - - -
-
- - -
- -
- - Export as YAML -
-
- - - -
-
-
-
-
-
+ +
@@ -191,226 +70,11 @@ export default function PipelineDetailsPage() { - - -
-
- Data Schema & Field Management - Customize fields detected from your data sources -
-
-
- -
-
-

Detected Fields

- -
+ + -
-
-
- -
-
- - Auto-detected -
-

Property title or name

-
- -
- -
- -
-
- - Auto-detected -
-

Property price

-
- -
- -
- -
-
- - Auto-detected -
-

Property location

-
- -
- -
- -
-
- - Auto-detected -
-

Number of bedrooms

-
- -
- -
- -
-
- - Auto-detected -
-

Number of bathrooms

-
- -
- -
- -
- -
- -
-
-
- -
- - - - Create calculated fields - Use formulas to generate new fields from existing data - - -
-
-
- - Derived -
-
- Formula: - price / squareFeet -
-
- - -
-
-
-
- -
- - -
-
-
-
-
- - - - - Data Preview - Sample of the collected data - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDTitlePriceBedroomsBathroomsLocationSq. Ft.
P001Modern Apartment$350,00022Downtown1,200
P002Luxury Villa$1,250,00054Suburbs3,500
P003Cozy Studio$180,00011City Center650
-
-
-
+ + diff --git a/frontend/components/pipeline/data-preview.tsx b/frontend/components/pipeline/data-preview.tsx new file mode 100644 index 0000000..7d526a8 --- /dev/null +++ b/frontend/components/pipeline/data-preview.tsx @@ -0,0 +1,70 @@ +import { Card, CardHeader, CardTitle, CardDescription, CardContent } from "../ui/card"; + +export function PipelineDataPreview() { + return ( + + + Data Preview + Sample of the collected data + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID + Title + + Price + + Bedrooms + + Bathrooms + + Location + + Sq. Ft. +
P001Modern Apartment$350,00022Downtown1,200
P002Luxury Villa$1,250,00054Suburbs3,500
P003Cozy Studio$180,00011City Center650
+
+
+
+ ); +} \ No newline at end of file diff --git a/frontend/components/pipeline/data-schema.tsx b/frontend/components/pipeline/data-schema.tsx new file mode 100644 index 0000000..ea57a40 --- /dev/null +++ b/frontend/components/pipeline/data-schema.tsx @@ -0,0 +1,246 @@ +import { Plus } from "lucide-react"; +import { Button } from "../ui/button"; +import { Label } from "../ui/label"; +import { + Card, + CardHeader, + CardTitle, + CardDescription, + CardContent, +} from "../ui/card"; +import { Input } from "../ui/input"; +import { Badge } from "../ui/badge"; + +export function PipelineDataSchema() { + return ( + + +
+
+ Data Schema & Field Management + + Customize fields detected from your data sources + +
+
+
+ +
+
+

Detected Fields

+ +
+ +
+
+
+ +
+
+ + + Auto-detected + +
+

+ Property title or name +

+
+ +
+ +
+ +
+
+ + + Auto-detected + +
+

+ Property price +

+
+ +
+ +
+ +
+
+ + + Auto-detected + +
+

+ Property location +

+
+ +
+ +
+ +
+
+ + + Auto-detected + +
+

+ Number of bedrooms +

+
+ +
+ +
+ +
+
+ + + Auto-detected + +
+

+ Number of bathrooms +

+
+ +
+ +
+ +
+ +
+ +
+
+
+ +
+ + + + + Create calculated fields + + + Use formulas to generate new fields from existing data + + + +
+
+
+ + Derived +
+
+ + Formula: + + + price / squareFeet + +
+
+ + +
+
+
+
+ +
+ + +
+
+
+
+ ); +} diff --git a/frontend/components/pipeline/data-source.tsx b/frontend/components/pipeline/data-source.tsx new file mode 100644 index 0000000..7087059 --- /dev/null +++ b/frontend/components/pipeline/data-source.tsx @@ -0,0 +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

+
+
+
+
+ ); +} \ No newline at end of file diff --git a/frontend/components/pipeline/export-data.tsx b/frontend/components/pipeline/export-data.tsx new file mode 100644 index 0000000..b22cb69 --- /dev/null +++ b/frontend/components/pipeline/export-data.tsx @@ -0,0 +1,119 @@ +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/components/ui/accordion"; +import { Download } from "lucide-react"; +import { Button } from "../ui/button"; +import { Card, CardHeader, CardTitle, CardContent } from "../ui/card"; + +export function PipelineExportData() { + return ( + + + Export Options + + +
+ + +
+ +
+ + Export as JSON +
+
+ +
+
+ + +
+ +
+
+
+
+ + +
+ +
+ + Export as CSV +
+
+ +
+
+ + +
+ +
+
+
+
+ + +
+ +
+ + Export as SQLite +
+
+ + + +
+
+ + +
+ +
+ + Export as YAML +
+
+ + + +
+
+
+
+
+
+ ); +}