diff --git a/index.html b/index.html
index 4a4b127..2e54467 100644
--- a/index.html
+++ b/index.html
@@ -215,7 +215,9 @@ function renderDashboard(){
h+='';
h+='—';
h+='';
- h+='';
+ h+='';
+ h+='
Хранилище: '+fmtStorage()+'
';
+ h+='';
document.getElementById("tab-dashboard").innerHTML=h;
}
@@ -442,6 +444,10 @@ function setMD(id,o,si){var k=si>=0?'sf_'+id+'_s'+si:'sf_'+id;localStorage.setIt
function getSC(id){var r=localStorage.getItem("ss_"+id);return r?JSON.parse(r):[]}
function setSC(id,a){localStorage.setItem("ss_"+id,JSON.stringify(a))}
+function storageUsed(){var t=0;for(var i=0;i1048576?(b/1048576).toFixed(1)+' МБ':(b/1024).toFixed(0)+' КБ'}
+function clearAllFiles(){if(!confirm('Удалить ВСЕ загруженные файлы и отчёты? Это нельзя отменить.'))return;var keys=[];for(var i=0;i 4 МБ пропущены");closeEM();openEdit(eid,curMonth,si>=0?si:undefined)}
+ function fin(){
+ try{setMD(eid,ad,si)}catch(e){
+ var bak=JSON.parse(JSON.stringify(ad));bak[mk].files=bak[mk].files.slice(0,-(pr-sk)||0);try{setMD(eid,bak,si)}catch(e2){}
+ alert("⚠️ Хранилище заполнено. Удалите старые файлы (кнопка «Очистить все файлы» на дашборде).");
+ }
+ if(sk)alert(sk+" файл(ов) > 1.5 МБ пропущены");closeEM();openEdit(eid,curMonth,si>=0?si:undefined)
+ }
for(var i=0;iMAX){sk++;pr++;if(pr===fi.files.length)fin();return}
var r=new FileReader();r.onload=function(ev){arr.push({name:f.name,size:f.size,type:f.type,desc:desc,date:new Date().toLocaleDateString(),data:ev.target.result});pr++;if(pr===fi.files.length)fin()};
r.onerror=function(){pr++;if(pr===fi.files.length)fin()};r.readAsDataURL(f)})(fi.files[i])}