fix collapse menu

This commit is contained in:
2025-11-06 21:46:29 +03:00
parent b978902c7f
commit 0b75345856
2 changed files with 118 additions and 78 deletions

View File

@@ -23,10 +23,19 @@
availableYears.push(currentYear - i); availableYears.push(currentYear - i);
} }
let initialLoadDone = false;
onMount(async () => { onMount(async () => {
await loadFuelData(); await loadFuelData();
initialLoadDone = true;
}); });
// Watch for year changes and reload data
$: if (initialLoadDone && selectedYear) {
loadFuelData();
expandedMonths = new Set();
}
async function loadFuelData() { async function loadFuelData() {
if (!user) { if (!user) {
error = 'Kullanıcı bilgisi bulunamadı.'; error = 'Kullanıcı bilgisi bulunamadı.';
@@ -38,10 +47,6 @@
error = ''; error = '';
try { try {
// Get approved fuel slips for this goods manager for the selected year
const startDate = `${selectedYear}-01-01`;
const endDate = `${selectedYear}-12-31`;
const url = `/api/fuel-slips?manager_id=${user.id}&status=approved`; const url = `/api/fuel-slips?manager_id=${user.id}&status=approved`;
const response = await fetch(url); const response = await fetch(url);
@@ -55,15 +60,12 @@
const slipDate = new Date(slip.date); const slipDate = new Date(slip.date);
return slipDate.getFullYear() === selectedYear; return slipDate.getFullYear() === selectedYear;
}) })
.sort((a, b) => new Date(b.date) - new Date(a.date)); // Sort by date descending .sort((a, b) => new Date(b.date) - new Date(a.date));
console.log(`✅ Loaded ${fuelData.length} fuel slips for year ${selectedYear}`);
} else { } else {
error = 'Yakıt verileri yüklenemedi.'; error = 'Yakıt verileri yüklenemedi.';
} }
} catch (err) { } catch (err) {
console.error('Load fuel data error:', err); error = `Bağlantı hatası: ${err.message}`;
error = 'Bağlantı hatası.';
} finally { } finally {
loading = false; loading = false;
} }
@@ -75,7 +77,7 @@
} else { } else {
expandedMonths.add(monthIndex); expandedMonths.add(monthIndex);
} }
expandedMonths = expandedMonths; // Trigger reactivity expandedMonths = expandedMonths;
} }
function getMonthData(monthIndex) { function getMonthData(monthIndex) {
@@ -114,13 +116,34 @@
return getMonthData(monthIndex).length; return getMonthData(monthIndex).length;
} }
$: monthlyData = Array.from({length: 12}, (_, i) => ({ function getMonthDataSummary() {
const months = ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'];
return months.map((month, index) => ({
month,
count: getSlipCount(index),
total: getMonthTotal(index)
})).filter(m => m.count > 0);
}
// Reactive statement that rebuilds when fuelData or expandedMonths changes
$: monthlyData = (() => {
const months = [];
// Show all 12 months for the selected year
for (let i = 11; i >= 0; i--) {
const data = getMonthData(i);
const monthData = {
month: i, month: i,
data: getMonthData(i), data: data,
total: getMonthTotal(i), total: getMonthTotal(i),
count: getSlipCount(i), count: data.length,
isExpanded: expandedMonths.has(i) isExpanded: expandedMonths.has(i)
})); };
months.push(monthData);
}
return months;
})();
</script> </script>
<div class="monthly-fuel-report"> <div class="monthly-fuel-report">
@@ -171,7 +194,6 @@
<!-- Monthly Accordion --> <!-- Monthly Accordion -->
<div class="months-container"> <div class="months-container">
{#each monthlyData as month (month.month)} {#each monthlyData as month (month.month)}
{#if !isMonthInFuture(month.month)}
<div class="month-card"> <div class="month-card">
<div <div
class="month-header" class="month-header"
@@ -232,7 +254,6 @@
</div> </div>
{/if} {/if}
</div> </div>
{/if}
{/each} {/each}
</div> </div>
{/if} {/if}
@@ -350,8 +371,9 @@
gap: 2rem; gap: 2rem;
padding: 1.5rem; padding: 1.5rem;
margin-bottom: 2rem; margin-bottom: 2rem;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); background: #E0E7FF;
color: white; color: #4338CA;
border: 1px solid #C7D2FE;
} }
.summary-item { .summary-item {

View File

@@ -17,6 +17,7 @@ export async function GET({ request, url }) {
const manager_id = searchParams.get('manager_id'); const manager_id = searchParams.get('manager_id');
const fuel_manager_id = searchParams.get('fuel_manager_id'); const fuel_manager_id = searchParams.get('fuel_manager_id');
return new Promise((resolve) => { return new Promise((resolve) => {
const db = getDatabase(); const db = getDatabase();
@@ -41,9 +42,14 @@ export async function GET({ request, url }) {
params.push(fuel_manager_id); params.push(fuel_manager_id);
} }
// Tarihe göre ters sırala // Tarihe göre ters sırala
query += ' ORDER BY created_at DESC'; query += ' ORDER BY created_at DESC';
console.log(`🔍 API Query: ${query}`);
console.log(`📋 API Parameters:`, params);
db.all(query, params, (err, rows) => { db.all(query, params, (err, rows) => {
db.close(); db.close();
@@ -53,6 +59,8 @@ export async function GET({ request, url }) {
return; return;
} }
console.log(`📊 Database returned ${rows.length} rows`);
// JSON string olarak saklanan alanları parse et // JSON string olarak saklanan alanları parse et
const fuelSlips = rows.map(row => ({ const fuelSlips = rows.map(row => ({
...row, ...row,
@@ -62,6 +70,16 @@ export async function GET({ request, url }) {
fuel_manager_info: row.fuel_manager_info ? JSON.parse(row.fuel_manager_info) : null fuel_manager_info: row.fuel_manager_info ? JSON.parse(row.fuel_manager_info) : null
})); }));
console.log(`✅ Processed ${fuelSlips.length} fuel slips for API response`);
console.log(`📋 Fuel slips summary:`, fuelSlips.map(s => ({
id: s.id,
date: s.date,
goods_manager_id: s.goods_manager_id,
status: s.status,
liters: s.liters,
vehicle: s.vehicle_info?.plate
})));
resolve(json({ fuelSlips })); resolve(json({ fuelSlips }));
}); });
}); });