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){} }