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