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