diff --git a/index.html b/index.html
index 7a6f96d..10aec1f 100644
--- a/index.html
+++ b/index.html
@@ -214,21 +214,45 @@ function renderDashboard(){
h+='
📥 Скачать сводный отчёт ';
h+=''+months.map(function(m,i){return''+M(i)+' '}).join("")+' ';
h+='— '+months.map(function(m,i){return''+M(i)+' '}).join("")+' ';
- h+='Скачать CSV
';
+ h+='Скачать CSV ';
+ h+='Скачать HTML ';
document.getElementById("tab-dashboard").innerHTML=h;
}
function downloadReport(){
var from=parseInt(document.getElementById("rptFrom").value),to=parseInt(document.getElementById("rptTo").value);
- var my=getMy(),csv="№;Мероприятие;Раздел;Дивизион;Статус;Прогресс;Срок;Факт;Отчёт (текст)\n";
+ var my=getMy(),csv="№;Мероприятие;Раздел;Дивизион;Статус;Прогресс;Срок;Факт;Отчёты по месяцам (текст);Файлы по месяцам (названия)\n";
my.forEach(function(e){
- var rep="";for(var i=from;i<=to;i++){var m=months[i],d=getMD(e.id);if(d[m]&&d[m].report)rep+=M(i)+": "+d[m].report.replace(/"/g,'""')+"; "}
- csv+=e.id+';"'+e.t.replace(/"/g,'""')+'";'+sections[e.sec]+';'+branches[e.b]+';'+statusMap[e.s]+';'+e.p+'%;'+e.due+';'+(e.done||"—")+';"'+rep+'"\n';
+ var rep="",fls="",d=getMD(e.id);
+ for(var i=from;i<=to;i++){var m=months[i];if(d[m]){if(d[m].report)rep+=M(i)+": "+d[m].report.replace(/"/g,'""')+"; ";if(d[m].files&&d[m].files.length)fls+=M(i)+": "+d[m].files.map(function(f){return f.name}).join(", ")+"; "}}
+ csv+=e.id+';"'+e.t.replace(/"/g,'""')+'";'+sections[e.sec]+';'+branches[e.b]+';'+statusMap[e.s]+';'+e.p+'%;'+e.due+';'+(e.done||"—")+';"'+rep+'";"'+fls+'"\n';
});
var blob=new Blob(["\uFEFF"+csv],{type:"text/csv;charset=utf-8"}),a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="otchet_pb_"+M(from)+"-"+M(to)+".csv";a.click()
}
+function downloadHTML(){
+ var from=parseInt(document.getElementById("rptFrom").value),to=parseInt(document.getElementById("rptTo").value);
+ var my=getMy(),h='Сводный отчёт ПБ ';
+ h+='ИИ-Агент ПБ — Сводный отчётПериод: '+M(from)+' — '+M(to)+' · Дивизион: '+branches[curUser.branch]+' · Сформирован: '+new Date().toLocaleDateString()+'
';
+ my.forEach(function(e){
+ var scls={done:"g",warn:"a",late:"r",wait:"w"}[e.s];
+ h+=''+e.id+'. '+esc(e.t)+' ';
+ h+='
Раздел: '+sections[e.sec]+' Дивизион: '+branches[e.b]+' Срок: '+e.due+' Факт: '+(e.done||"—")+' Прогресс: '+e.p+'% '+statusMap[e.s]+'
';
+ h+='
Ответственный: '+esc(e.r)+'
';
+ var d=getMD(e.id),has=false;
+ for(var i=from;i<=to;i++){var m=months[i];if(d[m]&&(d[m].report||(d[m].files&&d[m].files.length))){
+ has=true;h+='
'+M(i)+' ';
+ if(d[m].report)h+='
'+esc(d[m].report)+'
';
+ if(d[m].files&&d[m].files.length)h+='
'+d[m].files.map(function(f){return''+esc(f.name)+(f.desc?' — '+esc(f.desc):'')+' ('+(f.size/1024).toFixed(0)+' КБ) '}).join("")+' ';
+ h+='
'}}
+ if(!has)h+='
Нет отчётов за выбранный период
';
+ h+='
🤖 ИИ: '+esc(e.ai)+'
';
+ });
+ h+='';
+ var blob=new Blob(["\uFEFF"+h],{type:"text/html;charset=utf-8"}),a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="otchet_pb_"+M(from)+"-"+M(to)+".html";a.click()
+}
+
// ===== MY EVENTS =====
function renderMyEvents(){
var my=getMy(),h='';