diff --git a/backend/internal/db/queries/query.sql b/backend/internal/db/queries/query.sql index 6d6ac5f..b849917 100644 --- a/backend/internal/db/queries/query.sql +++ b/backend/internal/db/queries/query.sql @@ -70,7 +70,11 @@ WHERE id = $21; -- name: GetDeliveryCount :many SELECT COUNT(*) as count, date FROM deliveries -WHERE date >= CURRENT_DATE AND date < CURRENT_DATE + INTERVAL '7 days' +WHERE date >= CURRENT_DATE + AND date < GREATEST( + CURRENT_DATE + INTERVAL '7 days', + DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 month' + ) GROUP BY date; -- name: UpdateDeliveryStatus :exec diff --git a/backend/internal/db/sqlc/query.sql.go b/backend/internal/db/sqlc/query.sql.go index 2f8bfe9..5b8c8ca 100644 --- a/backend/internal/db/sqlc/query.sql.go +++ b/backend/internal/db/sqlc/query.sql.go @@ -218,7 +218,11 @@ func (q *Queries) GetDeliveryByID(ctx context.Context, id pgtype.UUID) (Delivery const getDeliveryCount = `-- name: GetDeliveryCount :many SELECT COUNT(*) as count, date FROM deliveries -WHERE date >= CURRENT_DATE AND date < CURRENT_DATE + INTERVAL '7 days' +WHERE date >= CURRENT_DATE + AND date < GREATEST( + CURRENT_DATE + INTERVAL '7 days', + DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 month' + ) GROUP BY date ` diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 64d2caf..768164c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "delivery-tracker", - "version": "0.0.6", + "version": "0.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "delivery-tracker", - "version": "0.0.6", + "version": "0.0.7", "dependencies": { "@tailwindcss/vite": "^4.2.2", "date-fns": "^4.1.0", diff --git a/frontend/package.json b/frontend/package.json index 3ac3624..72c2df9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "delivery-tracker", "private": true, - "version": "0.0.6", + "version": "0.0.7", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index fff6bf3..5e626b8 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -1,6 +1,6 @@ import { useState, useEffect, useMemo } from 'react'; import { Plus, Printer, ChevronRight, CalendarDays } from 'lucide-react'; -import { format, startOfMonth, endOfMonth, eachDayOfInterval, isToday, getDay } from 'date-fns'; +import { addDays, format, startOfDay, startOfMonth, endOfMonth, eachDayOfInterval, isToday, getDay } from 'date-fns'; import { ru } from 'date-fns/locale'; import { useDeliveryStore } from '../stores/deliveryStore'; import type { Delivery } from '../types'; @@ -29,6 +29,11 @@ const Dashboard = ({ onDateSelect, onAddDelivery }: DashboardProps) => { return eachDayOfInterval({ start: monthStart, end: monthEnd }); }, [currentMonth]); + const upcomingDays = useMemo(() => { + const today = startOfDay(new Date()); + return eachDayOfInterval({ start: today, end: addDays(today, 6) }); + }, []); + const getCountForDate = (date: Date) => { const dateStr = format(date, 'dd-MM-yyyy'); return deliveryCounts[dateStr] || 0; @@ -186,9 +191,8 @@ const Dashboard = ({ onDateSelect, onAddDelivery }: DashboardProps) => {

Ближайшие даты с доставками

- {days + {upcomingDays .filter(day => getCountForDate(day) > 0) - .slice(0, 7) .map(day => { const count = getCountForDate(day); return ( @@ -232,7 +236,7 @@ const Dashboard = ({ onDateSelect, onAddDelivery }: DashboardProps) => { ); })} - {days.filter(day => getCountForDate(day) > 0).length === 0 && ( + {upcomingDays.filter(day => getCountForDate(day) > 0).length === 0 && (

Нет запланированных доставок