Fix: buat helper function getTodayIndonesia untuk konsistensi timezone UTC+7
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user