feat: demo özelliklerini gerçekleştir — canlı veri + localStorage
- analytics.js: firmStats/itemStats/provinceDensity (gerçek hesaplama) - Rakip Radar: canlı veriden kazanan firma analizi (mock 3 firma kaldırıldı) - Fiyat Analizi: gerçek kalem min/medyan/ort/maks + CSV export - TurkeyHeatMap: 81 il gerçek interaktif yoğunluk haritası (tıkla→filtrele) - Favori kurumlar: kart yıldızı + hızlı filtre (localStorage) - Ekip yönetimi: gerçek CRUD (RightSidebar) + Kanban ataması ekipten - Bildirimler: gerçek Notification API + izin + test + sessiz saatler - PDF: jsPDF ile gerçek birim fiyat teklif cetveli (kaşe/imza alanı)
This commit is contained in:
@@ -3,7 +3,7 @@ import { useApp } from '../context/AppContext';
|
||||
import { Kanban, User, Calendar, MapPin, Star, Plus, ArrowRight, Eye } from 'lucide-react';
|
||||
|
||||
export const KanbanBoard = () => {
|
||||
const { tenders, updateKanbanStatus, setActiveTenderDetail } = useApp();
|
||||
const { tenders, updateKanbanStatus, setActiveTenderDetail, teamMembers } = useApp();
|
||||
const [selectedPersonel, setSelectedPersonel] = useState('');
|
||||
const [draggedTenderId, setDraggedTenderId] = useState(null);
|
||||
|
||||
@@ -16,7 +16,11 @@ export const KanbanBoard = () => {
|
||||
{ id: 'kaybedildi', title: 'Kaybedildi', color: 'bg-rose-50 border-rose-200 text-rose-900' }
|
||||
];
|
||||
|
||||
const personnelList = ['Hikmet Tanrıverdi', 'Ahmet Yılmaz', 'Zeynep Kaya', 'Mehmet Demir'];
|
||||
// Gerçek ekip üyelerinden (Ekip Yönetimi paneli) + atanmış eski isimler
|
||||
const personnelList = [...new Set([
|
||||
...teamMembers.map((m) => m.name),
|
||||
...tenders.map((t) => t.atananPersonel).filter(Boolean),
|
||||
])];
|
||||
|
||||
const filteredTenders = tenders.filter(t => {
|
||||
if (!t.takipte && !t.kanbanStatus) return false;
|
||||
|
||||
Reference in New Issue
Block a user