fix: openEv now uses IndexedDB file listing — async load with listFiles

This commit is contained in:
Dauren777 2026-06-11 05:41:50 +00:00
parent 7f4d581e52
commit 13d468694b

View File

@ -1291,38 +1291,11 @@ function openEv(id,subIdx){
}
h+="</select></div>";
h+="<div style='margin-bottom:12px'><textarea id='evn_"+e.id+"' placeholder='Примечание / описание выполнения...' style='width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:12px;resize:vertical;min-height:50px'>"+esc(subIdx!==undefined?((localStorage.getItem("sn_"+e.id+"_s"+subIdx)||"")):(localStorage.getItem("sn_"+e.id+"_m"+selMonth)||e.n||""))+"</textarea></div>";
h+="<div style='margin-bottom:12px'><strong>Файлы:</strong>";
h+="<div style='margin-bottom:12px'><strong>Файлы за месяц:</strong>";
var monthKey="_m"+selMonth;
if(cu&&cu.bg===0){
for(var bi=0;bi<brs.length;bi++){
var bk=fk+monthKey+"_b"+bi;
var fd=localStorage.getItem(bk);
if(fd){
try{
var fa=JSON.parse(fd);
if(fa.length)h+="<div style='font-size:11px;color:#64748B;margin-top:4px'><strong>"+esc(brs[bi])+":</strong></div>";
for(var fi=0;fi<fa.length;fi++){
var f=fa[fi];
h+="<div class='file-item'><span class='fn'>"+esc(f.n)+"</span><span class='fs'>("+(f.s?Math.round(f.s/1024)+"KB":"")+", "+esc(f.u||"")+" "+esc(f.d||"")+")</span><a onclick='dlFile("+e.id+","+fi+")'>Скачать</a><a style='color:#EF4444;margin-left:4px' onclick='delFile("+e.id+","+fi+")'>Удалить</a></div>"
}
}catch(ex){}
}
}
}else{
var bk=fk+monthKey+"_b"+(cu?cu.bg:0);
var fd=localStorage.getItem(bk);
if(fd){
try{
var fa=JSON.parse(fd);
for(var fi=0;fi<fa.length;fi++){
var f=fa[fi];
h+="<div class='file-item'><span class='fn'>"+esc(f.n)+"</span><span class='fs'>("+(f.s?Math.round(f.s/1024)+"KB":"")+", "+esc(f.u||"")+" "+esc(f.d||"")+")</span><a onclick='dlFile("+e.id+","+fi+")'>Скачать</a><a style='color:#EF4444;margin-left:4px' onclick='delFile("+e.id+","+fi+")'>Удалить</a></div>"
}
}catch(ex){}
}
}
h+="<div style='margin-top:6px'><input type='file' id='fu_"+e.id+"' style='font-size:12px' onchange='upFile("+e.id+(subIdx!==undefined?","+subIdx:"")+")'></div>";
h+="</div>";
var prefix=fk+monthKey;
h+="<div id='fileList_"+e.id+"' style='font-size:12px;color:#64748B'>Загрузка...</div>";
h+="</div><div style='margin-top:6px'><input type='file' id='fu_"+e.id+"' style='font-size:12px' onchange='upFile("+e.id+(subIdx!==undefined?","+subIdx:"")+")'></div></div>";
if(subIdx===undefined&&e.sub&&e.sub.length>0){
h+="<div style='margin-bottom:12px'><strong>Подпункты:</strong>";
var ss=localStorage.getItem("ss_"+e.id);
@ -1336,7 +1309,30 @@ function openEv(id,subIdx){
h+="<div style='margin-top:16px;text-align:right;border-top:1px solid #E2E8F0;padding-top:12px'><button class='btn btn-sm btn-g' onclick='saveEvModal("+e.id+")'>Сохранить</button>";
h+="<button class='btn btn-sm' style='margin-left:8px;background:#E2E8F0;color:#0B1A2E' onclick='closeModal()'>Отмена</button></div>";
h+="</div>";
showModal(h)
showModal(h);
listFiles(prefix+"_b",function(files){
var fdiv=document.getElementById("fileList_"+e.id);
if(!fdiv)return;
if(!files||!files.length){fdiv.innerHTML="Нет файлов";return}
var fh="";var mnames2=["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"];
var groups={};
for(var fi=0;fi<files.length;fi++){
var f=files[fi];var parts=f.id.split("_b");var brIdx=parseInt(parts[1])||0;
if(!groups[brIdx])groups[brIdx]=[];
groups[brIdx].push(f)
}
for(var bi=0;bi<brs.length;bi++){
if(!groups[bi]||!groups[bi].length)continue;
if(cu&&cu.bg===0)fh+="<div style='font-size:11px;color:#64748B;margin-top:4px'><strong>"+esc(brs[bi])+":</strong></div>";
for(var fi=0;fi<groups[bi].length;fi++){
var f=groups[bi][fi];
var kb=Math.round(f.size/1024);var sz=kb<1024?kb+" KB":(kb/1024).toFixed(1)+" MB";
var d=new Date(f.ts);var ds=d.getDate()+"."+String(d.getMonth()+1).padStart(2,"0")+"."+d.getFullYear();
fh+="<div class='file-item'><span class='fn'>"+esc(f.name)+"</span><span class='fs'>("+sz+", "+ds+")</span><a onclick='dlFile(0,\""+f.id+"\")'>Скачать</a><a style='color:#EF4444;margin-left:4px' onclick='delFile(0,\""+f.id+"\")'>Удалить</a></div>"
}
}
fdiv.innerHTML=fh||"Нет файлов"
})
}
function showModal(html){