From 24f4378d51aa1a4aeafcf590b9db19d360834348 Mon Sep 17 00:00:00 2001 From: ivannoskov Date: Wed, 4 Mar 2026 08:46:53 +0300 Subject: [PATCH] feat: add projects selector to analytics page --- app/(auth)/login/page.tsx | 8 +-- .../[workspaceId]/analytics/projects/page.tsx | 57 ++++++++++++++++++- lib/api/client.ts | 6 +- 3 files changed, 62 insertions(+), 9 deletions(-) diff --git a/app/(auth)/login/page.tsx b/app/(auth)/login/page.tsx index 9aef4d1..f52ad57 100644 --- a/app/(auth)/login/page.tsx +++ b/app/(auth)/login/page.tsx @@ -110,13 +110,7 @@ export default function LoginPage() { className="w-full" size="lg" > - - - + telegram Войти через Telegram diff --git a/app/dashboard/[workspaceId]/analytics/projects/page.tsx b/app/dashboard/[workspaceId]/analytics/projects/page.tsx index 042f00a..07eeb27 100644 --- a/app/dashboard/[workspaceId]/analytics/projects/page.tsx +++ b/app/dashboard/[workspaceId]/analytics/projects/page.tsx @@ -796,6 +796,7 @@ export default function ProjectsAnalyticsPage() { from: subDays(new Date(), 29), to: new Date(), })); + const [tableProjectIds, setTableProjectIds] = useState([]); const sensors = useSensors( useSensor(PointerSensor), @@ -866,12 +867,13 @@ export default function ProjectsAnalyticsPage() { // Load table data useEffect(() => { loadTableData(); - }, [workspaceId, tableGrouping, tableDateGrouping, tableDateRange]); + }, [workspaceId, tableGrouping, tableDateGrouping, tableDateRange, tableProjectIds]); const loadTableData = async () => { try { setTableLoading(true); const response = await demoAwareAnalyticsApi.projects(workspaceId, { + project_ids: tableProjectIds.length > 0 ? tableProjectIds : undefined, date_from: tableDateRange?.from ? startOfDay(tableDateRange.from).toISOString() : undefined, @@ -1025,6 +1027,59 @@ export default function ProjectsAnalyticsPage() {
+ + + + + +
+ + +
+
+ {projects.map((project) => { + const isSelected = tableProjectIds.includes(project.id); + return ( +
{ + const newIds = isSelected + ? tableProjectIds.filter((id) => id !== project.id) + : [...tableProjectIds, project.id]; + setTableProjectIds(newIds); + }} + > + + {project.title} +
+ ); + })} +
+
+