import React, { useState } from "react"; import { api } from "@/src/utils/api"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogBody, } from "@/src/components/ui/dialog"; import { Button } from "@/src/components/ui/button"; import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell, } from "@/src/components/ui/table"; export interface SelectDashboardDialogProps { open: boolean; onOpenChange: (open: boolean) => void; projectId: string; onSelectDashboard: (dashboardId: string) => void; onSkip: () => void; } export function SelectDashboardDialog({ open, onOpenChange, projectId, onSelectDashboard, onSkip, }: SelectDashboardDialogProps) { const [selectedDashboardId, setSelectedDashboardId] = useState( null, ); const dashboards = api.dashboard.allDashboards.useQuery( { projectId, orderBy: { column: "updatedAt", order: "DESC", }, page: 0, limit: 100, }, { enabled: Boolean(projectId) && open, }, ); const handleAdd = () => { if (selectedDashboardId) { onSelectDashboard(selectedDashboardId); onOpenChange(false); } }; const handleSkip = () => { onSkip(); onOpenChange(false); }; return ( Select dashboard to add widget to
{dashboards.isLoading ? (
Loading dashboards...
) : dashboards.isError ? (
Error: {dashboards.error.message}
) : dashboards.data?.dashboards.length === 0 ? (
No dashboards found.
) : ( Name Description Updated {dashboards.data?.dashboards .filter((d) => d.owner === "PROJECT") .map((d) => ( setSelectedDashboardId(d.id)} className={`cursor-pointer hover:bg-muted ${ selectedDashboardId === d.id ? "bg-muted" : "" }`} > {d.name} {d.description} {new Date(d.updatedAt).toLocaleString()} ))}
)}
); }