forked from izu/student-web-if-development-kit
57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
/**
|
|
* Main Entry Point Kelompok C4A.
|
|
* Menghubungkan pengambilan data dengan rendering UI dan interaksi halaman.
|
|
*/
|
|
|
|
import { getStaffData, getSopData, getFaqData } from './data.js';
|
|
import {
|
|
renderStaffCards,
|
|
renderSopCards,
|
|
renderFaqSection,
|
|
initSopInteraction,
|
|
initAnimations,
|
|
initFaq
|
|
} from './ui.js';
|
|
|
|
// Cache data secara global untuk mendukung rendering UI
|
|
let cachedStaffData = [];
|
|
let cachedSopData = [];
|
|
|
|
/**
|
|
* Menginisialisasi aplikasi dengan mengambil seluruh data secara pararel,
|
|
* merender konten awal, serta mendaftarkan event listener interaksi UI.
|
|
* @returns {Promise<void>}
|
|
*/
|
|
async function initApp() {
|
|
try {
|
|
const [staffData, sopData, faqData] = await Promise.all([
|
|
getStaffData(),
|
|
getSopData(),
|
|
getFaqData()
|
|
]);
|
|
|
|
cachedStaffData = staffData || [];
|
|
cachedSopData = sopData || [];
|
|
|
|
renderStaffCards(cachedStaffData);
|
|
renderSopCards(cachedSopData);
|
|
renderFaqSection(faqData || []);
|
|
|
|
initSopInteraction();
|
|
initFaq();
|
|
|
|
// Memberikan sedikit waktu tunda (jeda) agar rendering DOM selesai sebelum memulai animasi.
|
|
setTimeout(() => {
|
|
initAnimations();
|
|
}, 100);
|
|
} catch (error) {
|
|
console.error('Terjadi kesalahan saat menginisialisasi aplikasi C4A:', error);
|
|
}
|
|
}
|
|
|
|
// NOTE: Fitur bilingual sudah dihapus - languageChanged listener tidak lagi diperlukan
|
|
// Silakan hapus atau archive jika ada implementasi global untuk bahasa
|
|
|
|
// Jalankan inisialisasi aplikasi saat DOM siap
|
|
document.addEventListener('DOMContentLoaded', initApp);
|