Frontend: Enhance Admin Dashboard: Add AnalyticsChart for generated contacts and update layout spacing
This commit is contained in:
parent
1c3e682515
commit
7018533f3f
4 changed files with 18 additions and 9 deletions
|
|
@ -11,6 +11,7 @@ import {
|
|||
CardAction,
|
||||
CardContent,
|
||||
CardDescription,
|
||||
CardFooter,
|
||||
CardHeader,
|
||||
CardTitle,
|
||||
} from "~/components/ui/card";
|
||||
|
|
@ -72,7 +73,7 @@ export default function AnalyticsChart({
|
|||
const DatePickerLocale = locale === "it" ? it : enUS;
|
||||
|
||||
return (
|
||||
<Card className="@container/card w-full">
|
||||
<Card className="@container/card w-full pb-4">
|
||||
<CardHeader className="flex flex-col border-b @md/card:grid">
|
||||
<CardTitle>{title}</CardTitle>
|
||||
<CardDescription className={cn(!description && "sr-only")}>
|
||||
|
|
@ -150,6 +151,14 @@ export default function AnalyticsChart({
|
|||
)}
|
||||
</ChartContainer>
|
||||
</CardContent>
|
||||
<CardFooter className="flex justify-end border-t !pt-4">
|
||||
<span className="text-muted-foreground text-sm">
|
||||
Totale:{" "}
|
||||
<strong>
|
||||
{filteredData.reduce((acc, item) => acc + item.value, 0)}
|
||||
</strong>
|
||||
</span>
|
||||
</CardFooter>
|
||||
</Card>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,12 +108,7 @@ const ServizioInteraction = ({
|
|||
);
|
||||
}
|
||||
|
||||
return (
|
||||
//todo join table annuncioId e userId richieste di sblocco,per mostrare testo se già inviate, stessa funzionalità in pag ricerca con annunci compatibili con questo bottone
|
||||
//todo email di richiesta di sblocco deve avere un bottone che rimanda alla pagina di richiesta per poterla accettare o rifiutare
|
||||
//todo paginina di sunto per richiesta con info minime e link a annuncio e utente
|
||||
<InteressatoButton annuncioId={annuncioId} />
|
||||
);
|
||||
return <InteressatoButton annuncioId={annuncioId} />;
|
||||
};
|
||||
|
||||
export const InteressatoButton = ({
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ export const AdminDashboard = () => {
|
|||
if (isLoading) return <LoadingPage />;
|
||||
return (
|
||||
<div className="mx-1 flex-1 overflow-auto">
|
||||
<div className="mx-auto pt-4">
|
||||
<div className="mx-auto pt-4 pb-8">
|
||||
<div className="mx-3 items-start justify-between pb-3 md:flex">
|
||||
<div className="flex max-w-lg items-center gap-3">
|
||||
<h3 className="text-2xl font-bold">Admin Dashboard</h3>
|
||||
|
|
@ -34,6 +34,12 @@ export const AdminDashboard = () => {
|
|||
timeserie={stats.orderTimeserie}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex w-full justify-center">
|
||||
<AnalyticsChart
|
||||
title="Contatti generati"
|
||||
timeserie={stats.contattiTimeserie}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ export const statsRouter = createTRPCRouter({
|
|||
value: parseInt(String(item.value)),
|
||||
}));
|
||||
|
||||
//todo finire
|
||||
const contattiTimeserie = (
|
||||
await db
|
||||
.selectFrom("servizio_annunci")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue