fix: unify tender countdowns and add monthly calendar navigation
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import { useDeadlineClock } from '../hooks/useDeadlineClock';
|
||||
import { deadlineInfo } from '../services/tenderCalendar';
|
||||
import React, { useState } from 'react';
|
||||
import { useApp } from '../context/AppContext';
|
||||
import { Kanban, User, Calendar, MapPin, Star, Plus, ArrowRight, Eye } from 'lucide-react';
|
||||
|
||||
export const KanbanBoard = () => {
|
||||
const now = useDeadlineClock();
|
||||
const { tenders, updateKanbanStatus, setActiveTenderDetail, teamMembers } = useApp();
|
||||
const [selectedPersonel, setSelectedPersonel] = useState('');
|
||||
const [draggedTenderId, setDraggedTenderId] = useState(null);
|
||||
@@ -128,13 +131,11 @@ export const KanbanBoard = () => {
|
||||
#{t.ikn}
|
||||
</span>
|
||||
{t.gorev && (() => {
|
||||
// Teslim = ihale saati; kalan gün geri sayım (gecikme eskalasyonu kendiliğinden)
|
||||
const m = /^(\d{2})\.(\d{2})\.(\d{4})(?:\s+(\d{2}):(\d{2}))?/.exec(t.gorev.teslim || '');
|
||||
if (!m) return null;
|
||||
const kalan = Math.ceil((new Date(+m[3], +m[2] - 1, +m[1], +(m[4] || 23), +(m[5] || 59)) - Date.now()) / 86400000);
|
||||
const renk = kalan < 0 ? 'bg-slate-200 text-slate-600' : kalan <= 2 ? 'bg-red-100 text-red-800' : kalan <= 7 ? 'bg-amber-100 text-amber-800' : 'bg-emerald-100 text-emerald-800';
|
||||
return <span className={`text-[10px] font-extrabold px-2 py-0.5 rounded ${renk}`} title={`Teslim: ${t.gorev.teslim}`}>
|
||||
{kalan < 0 ? 'süresi geçti' : kalan === 0 ? 'BUGÜN' : `${kalan} gün`}
|
||||
const info = deadlineInfo(t, now);
|
||||
const kalan = info.days;
|
||||
const renk = info.expired || kalan === null ? 'bg-slate-200 text-slate-600' : kalan <= 2 ? 'bg-red-100 text-red-800' : kalan <= 7 ? 'bg-amber-100 text-amber-800' : 'bg-emerald-100 text-emerald-800';
|
||||
return <span className={`text-[10px] font-extrabold px-2 py-0.5 rounded ${renk}`} title={`İhale: ${t.tarih} ${t.saat || 'saat bilinmiyor'} (Türkiye saati)`}>
|
||||
{info.label}
|
||||
</span>;
|
||||
})()}
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user