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);
}
let initialLoadDone = false;
onMount(async () => {
await loadFuelData();
initialLoadDone = true;
});
// Watch for year changes and reload data
$: if (initialLoadDone && selectedYear) {
loadFuelData();
expandedMonths = new Set();
}
async function loadFuelData() {
if (!user) {
error = 'Kullanıcı bilgisi bulunamadı.';
@@ -38,10 +47,6 @@
error = '';
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 response = await fetch(url);
@@ -55,15 +60,12 @@
const slipDate = new Date(slip.date);
return slipDate.getFullYear() === selectedYear;
})
.sort((a, b) => new Date(b.date) - new Date(a.date)); // Sort by date descending
console.log(`✅ Loaded ${fuelData.length} fuel slips for year ${selectedYear}`);
.sort((a, b) => new Date(b.date) - new Date(a.date));
} else {
error = 'Yakıt verileri yüklenemedi.';
}
} catch (err) {
console.error('Load fuel data error:', err);
error = 'Bağlantı hatası.';
error = `Bağlantı hatası: ${err.message}`;
} finally {
loading = false;
}
@@ -75,7 +77,7 @@
} else {
expandedMonths.add(monthIndex);
}
expandedMonths = expandedMonths; // Trigger reactivity
expandedMonths = expandedMonths;
}
function getMonthData(monthIndex) {
@@ -114,13 +116,34 @@
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,
data: getMonthData(i),
data: data,
total: getMonthTotal(i),
count: getSlipCount(i),
count: data.length,
isExpanded: expandedMonths.has(i)
}));
};
months.push(monthData);
}
return months;
})();
</script>
<div class="monthly-fuel-report">
@@ -171,7 +194,6 @@
<!-- Monthly Accordion -->
<div class="months-container">
{#each monthlyData as month (month.month)}
{#if !isMonthInFuture(month.month)}
<div class="month-card">
<div
class="month-header"
@@ -232,7 +254,6 @@
</div>
{/if}
</div>
{/if}
{/each}
</div>
{/if}
@@ -350,8 +371,9 @@
gap: 2rem;
padding: 1.5rem;
margin-bottom: 2rem;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
background: #E0E7FF;
color: #4338CA;
border: 1px solid #C7D2FE;
}
.summary-item {

View File

@@ -17,6 +17,7 @@ export async function GET({ request, url }) {
const manager_id = searchParams.get('manager_id');
const fuel_manager_id = searchParams.get('fuel_manager_id');
return new Promise((resolve) => {
const db = getDatabase();
@@ -41,9 +42,14 @@ export async function GET({ request, url }) {
params.push(fuel_manager_id);
}
// Tarihe göre ters sırala
query += ' ORDER BY created_at DESC';
console.log(`🔍 API Query: ${query}`);
console.log(`📋 API Parameters:`, params);
db.all(query, params, (err, rows) => {
db.close();
@@ -53,6 +59,8 @@ export async function GET({ request, url }) {
return;
}
console.log(`📊 Database returned ${rows.length} rows`);
// JSON string olarak saklanan alanları parse et
const fuelSlips = rows.map(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
}));
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 }));
});
});