fix upcoming deliveries display count on calendar
Build and Push Docker Images / build-backend (push) Canceled after 0s
Build and Push Docker Images / build-frontend (push) Canceled after 0s

This commit is contained in:
Egor Pozharov
2026-08-03 14:06:05 +06:00
parent 906563c7c3
commit 1860e52b88
5 changed files with 21 additions and 9 deletions
+5 -1
View File
@@ -70,7 +70,11 @@ WHERE id = $21;
-- name: GetDeliveryCount :many -- name: GetDeliveryCount :many
SELECT COUNT(*) as count, date FROM deliveries 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; GROUP BY date;
-- name: UpdateDeliveryStatus :exec -- name: UpdateDeliveryStatus :exec
+5 -1
View File
@@ -218,7 +218,11 @@ func (q *Queries) GetDeliveryByID(ctx context.Context, id pgtype.UUID) (Delivery
const getDeliveryCount = `-- name: GetDeliveryCount :many const getDeliveryCount = `-- name: GetDeliveryCount :many
SELECT COUNT(*) as count, date FROM deliveries 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 GROUP BY date
` `
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "delivery-tracker", "name": "delivery-tracker",
"version": "0.0.6", "version": "0.0.7",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "delivery-tracker", "name": "delivery-tracker",
"version": "0.0.6", "version": "0.0.7",
"dependencies": { "dependencies": {
"@tailwindcss/vite": "^4.2.2", "@tailwindcss/vite": "^4.2.2",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "delivery-tracker", "name": "delivery-tracker",
"private": true, "private": true,
"version": "0.0.6", "version": "0.0.7",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
+8 -4
View File
@@ -1,6 +1,6 @@
import { useState, useEffect, useMemo } from 'react'; import { useState, useEffect, useMemo } from 'react';
import { Plus, Printer, ChevronRight, CalendarDays } from 'lucide-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 { ru } from 'date-fns/locale';
import { useDeliveryStore } from '../stores/deliveryStore'; import { useDeliveryStore } from '../stores/deliveryStore';
import type { Delivery } from '../types'; import type { Delivery } from '../types';
@@ -29,6 +29,11 @@ const Dashboard = ({ onDateSelect, onAddDelivery }: DashboardProps) => {
return eachDayOfInterval({ start: monthStart, end: monthEnd }); return eachDayOfInterval({ start: monthStart, end: monthEnd });
}, [currentMonth]); }, [currentMonth]);
const upcomingDays = useMemo(() => {
const today = startOfDay(new Date());
return eachDayOfInterval({ start: today, end: addDays(today, 6) });
}, []);
const getCountForDate = (date: Date) => { const getCountForDate = (date: Date) => {
const dateStr = format(date, 'dd-MM-yyyy'); const dateStr = format(date, 'dd-MM-yyyy');
return deliveryCounts[dateStr] || 0; return deliveryCounts[dateStr] || 0;
@@ -186,9 +191,8 @@ const Dashboard = ({ onDateSelect, onAddDelivery }: DashboardProps) => {
<div className="space-y-3"> <div className="space-y-3">
<h3 className="font-semibold text-[#1b1b1d]">Ближайшие даты с доставками</h3> <h3 className="font-semibold text-[#1b1b1d]">Ближайшие даты с доставками</h3>
{days {upcomingDays
.filter(day => getCountForDate(day) > 0) .filter(day => getCountForDate(day) > 0)
.slice(0, 7)
.map(day => { .map(day => {
const count = getCountForDate(day); const count = getCountForDate(day);
return ( 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 && (
<Card className="p-8 text-center"> <Card className="p-8 text-center">
<p className="text-[#75777d]">Нет запланированных доставок</p> <p className="text-[#75777d]">Нет запланированных доставок</p>
<Button onClick={onAddDelivery} variant="ghost" className="mt-2"> <Button onClick={onAddDelivery} variant="ghost" className="mt-2">