function showRestoreModal(){
const input=document.createElement('input');
input.type='file';input.accept='.json';
input.onchange=(e)=>{
const file=e.target.files[0];
if(!file)return;
const reader=new FileReader();
reader.onload=(event)=>{
try{
const backup=JSON.parse(event.target.result);
Object.assign(siswaData,backup.siswaData);
// PERBAIKAN DI SINI
mapelNasional.splice(0, mapelNasional.length);
mapelNasional.push(...backup.mapelNasional);
mapelPesantren.splice(0, mapelPesantren.length);
mapelPesantren.push(...backup.mapelPesantren);
Object.assign(nilaiData,backup.nilaiData);
nilaiColumns.splice(0, nilaiColumns.length);
nilaiColumns.push(...backup.nilaiColumns);
updateDashboard();updateTotalSiswa();renderSiswa();populateMapelDropdown();renderMapel();
showToast('Data berhasil direstore');
}catch(err){showToast('Error: File tidak valid')}
};
reader.readAsText(file);
};
input.click();
}
function loadAppData(){
const saved=localStorage.getItem('smaQonitaAppData');
if(!saved)return;
try{
const data=JSON.parse(saved);
Object.assign(siswaData,data.siswaData);
// PERBAIKAN DI SINI
mapelNasional.splice(0, mapelNasional.length);
mapelNasional.push(...data.mapelNasional);
mapelPesantren.splice(0, mapelPesantren.length);
mapelPesantren.push(...data.mapelPesantren);
Object.assign(nilaiData,data.nilaiData);
nilaiColumns.splice(0, nilaiColumns.length);
nilaiColumns.push(...data.nilaiColumns);
}catch(err){}
}