/** * Farm Analytics Page * Vertical farm performance and resource analytics */ import { useState, useEffect } from 'react'; import Link from 'next/link'; import { KPICard, DateRangePicker, LineChart, BarChart, Gauge, DataTable, } from '../../components/analytics'; import { TimeRange, FarmAnalytics } from '../../lib/analytics/types'; export default function FarmAnalyticsPage() { const [timeRange, setTimeRange] = useState('30d'); const [loading, setLoading] = useState(true); const [data, setData] = useState(null); useEffect(() => { fetchData(); }, [timeRange]); const fetchData = async () => { setLoading(true); try { const response = await fetch(`/api/analytics/farms?timeRange=${timeRange}`); const result = await response.json(); setData(result.data); } catch (error) { console.error('Failed to fetch farm analytics:', error); } finally { setLoading(false); } }; const zoneColumns = [ { key: 'zoneName', header: 'Zone' }, { key: 'currentCrop', header: 'Crop' }, { key: 'healthScore', header: 'Health', align: 'right' as const, render: (v: number) => ( = 90 ? 'text-green-600' : v >= 70 ? 'text-yellow-600' : 'text-red-600'}`}> {v}% ), }, { key: 'yieldKg', header: 'Yield (kg)', align: 'right' as const, render: (v: number) => v.toFixed(1) }, { key: 'efficiency', header: 'Efficiency', align: 'right' as const, render: (v: number) => `${v}%` }, ]; const cropColumns = [ { key: 'cropType', header: 'Crop' }, { key: 'batches', header: 'Batches', align: 'right' as const }, { key: 'averageYieldKg', header: 'Avg Yield (kg)', align: 'right' as const, render: (v: number) => v.toFixed(1) }, { key: 'growthDays', header: 'Growth Days', align: 'right' as const }, { key: 'successRate', header: 'Success Rate', align: 'right' as const, render: (v: number) => ( = 90 ? 'text-green-600' : v >= 75 ? 'text-yellow-600' : 'text-red-600'}`}> {v.toFixed(1)}% ), }, ]; const predictionColumns = [ { key: 'cropType', header: 'Crop' }, { key: 'predictedYieldKg', header: 'Predicted Yield', align: 'right' as const, render: (v: number) => `${v.toFixed(1)} kg` }, { key: 'confidence', header: 'Confidence', align: 'right' as const, render: (v: number) => `${(v * 100).toFixed(0)}%` }, { key: 'harvestDate', header: 'Harvest Date' }, ]; return (
{/* Header */}

Farm Analytics

Vertical farm performance and resource optimization

{/* Time Range Selector */}
{/* Navigation Tabs */}
Overview Plants Transport Farms Sustainability
{/* KPI Cards */}
{/* Resource Gauges */}
{/* Resource Usage Stats */}

Resource Usage Summary

{data?.resourceUsage?.waterLiters?.toLocaleString() || 0}

Water Used (L)

{data?.resourceUsage?.energyKwh?.toLocaleString() || 0}

Energy Used (kWh)

{data?.resourceUsage?.nutrientsKg?.toLocaleString() || 0}

Nutrients Used (kg)

{/* Charts */}
{data?.batchCompletionTrend && ( )} {data?.topPerformingCrops && ( )}
{/* Tables */}
{data?.performanceByZone && ( )} {data?.topPerformingCrops && ( )} {data?.yieldPredictions && ( )}
); }