Fix: buat helper function getTodayIndonesia untuk konsistensi timezone UTC+7

This commit is contained in:
mwpn
2025-12-19 05:37:24 +07:00
parent 3e2044106c
commit 0baf490090

View File

@@ -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