diff --git a/public/dashboard/js/dashboard.js b/public/dashboard/js/dashboard.js index c627eb8..5521da5 100644 --- a/public/dashboard/js/dashboard.js +++ b/public/dashboard/js/dashboard.js @@ -19,6 +19,13 @@ import { getCategoryChart } from './charts.js'; +// Helper function untuk mendapatkan tanggal hari ini dalam timezone Indonesia (UTC+7) +function getTodayIndonesia() { + const now = new Date(); + const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7 + return indonesiaTime.toISOString().split('T')[0]; +} + // State akan di-set ke hari ini saat DOMContentLoaded const state = { date: '', // Akan di-set ke hari ini saat DOMContentLoaded @@ -29,8 +36,8 @@ const state = { // Function untuk auto-detect tanggal terakhir yang ada data async function getLastAvailableDate() { try { - // Coba ambil data hari ini dulu - const today = new Date().toISOString().split('T')[0]; + // Coba ambil data hari ini dulu (gunakan timezone Indonesia UTC+7) + const today = getTodayIndonesia(); const todayData = await apiGetSummary({ date: today }); console.log('[Dashboard] getLastAvailableDate - today data:', todayData); @@ -47,9 +54,10 @@ async function getLastAvailableDate() { return today; } - // Jika tidak, coba kemarin - const yesterday = new Date(); - yesterday.setDate(yesterday.getDate() - 1); + // Jika tidak, coba kemarin (gunakan timezone Indonesia UTC+7) + const now = new Date(); + const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7 + const yesterday = new Date(indonesiaTime.getTime() - (24 * 60 * 60 * 1000)); const yesterdayStr = yesterday.toISOString().split('T')[0]; const yesterdayData = await apiGetSummary({ date: yesterdayStr }); @@ -66,10 +74,11 @@ async function getLastAvailableDate() { return yesterdayStr; } - // Jika tidak ada data kemarin, cek 7 hari terakhir + // Jika tidak ada data kemarin, cek 7 hari terakhir (gunakan timezone Indonesia UTC+7) + const now = new Date(); + const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7 for (let i = 2; i <= 7; i++) { - const prevDate = new Date(); - prevDate.setDate(prevDate.getDate() - i); + const prevDate = new Date(indonesiaTime.getTime() - (i * 24 * 60 * 60 * 1000)); const prevDateStr = prevDate.toISOString().split('T')[0]; const prevData = await apiGetSummary({ date: prevDateStr }); @@ -94,8 +103,8 @@ async function getLastAvailableDate() { } catch (error) { console.error('[Dashboard] Error getting last available date:', error); // Fallback ke hari ini (selalu gunakan hari ini, bukan hardcoded date) - const today = new Date().toISOString().split('T')[0]; - return today; + // Gunakan timezone Indonesia UTC+7 + return getTodayIndonesia(); } } @@ -768,10 +777,9 @@ document.addEventListener('DOMContentLoaded', async () => { // Set default date ke hari ini (selalu update ke hari ini setiap kali page load) // Gunakan timezone Indonesia (UTC+7) untuk mendapatkan tanggal lokal yang benar - const now = new Date(); - const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7 - const today = indonesiaTime.toISOString().split('T')[0]; + const today = getTodayIndonesia(); state.date = today; + const now = new Date(); console.log('[Dashboard] Default date set to today (Indonesia timezone):', state.date, 'UTC time:', now.toISOString()); // Set dateInput value SECARA LANGSUNG untuk override browser cache/autofill