feat: ZIP export with files by event, quick month buttons, PPT fix
This commit is contained in:
parent
f5a0263cc3
commit
0602460ba6
65
index.html
65
index.html
@ -152,6 +152,7 @@ tr:hover{background:#FAFBFC}
|
||||
<option value="h1">1-е полугодие</option>
|
||||
<option value="h2">2-е полугодие</option>
|
||||
</select>
|
||||
<div style="display:flex;gap:4px;flex-wrap:wrap;margin-bottom:6px" id="rp_quick_months"></div>
|
||||
<span style="font-size:12px;color:#64748B">с</span> <select id="rp_month_from" onchange="renderReports()" style="padding:6px 8px;border:1px solid #E2E8F0;border-radius:6px;font-size:12px">
|
||||
<option value="0">Январь</option><option value="1">Февраль</option><option value="2">Март</option>
|
||||
<option value="3">Апрель</option><option value="4">Май</option><option value="5">Июнь</option>
|
||||
@ -178,6 +179,7 @@ tr:hover{background:#FAFBFC}
|
||||
<button class="btn btn-sm btn-g" onclick="dlCSV()">CSV</button>
|
||||
<button class="btn btn-sm" onclick="dlHTML()">HTML</button>
|
||||
<button class="btn btn-sm btn-o" onclick="dlWord()">Word</button>
|
||||
<button class="btn btn-sm" style="background:#7C3AED;color:#fff" onclick="dlZip()">ZIP</button>
|
||||
<button class="btn btn-sm btn-r" onclick="dlPdf()">PDF</button>
|
||||
</div>
|
||||
<p id="rp_count" style="font-size:12px;color:#64748B;margin-top:8px"></p>
|
||||
@ -1355,6 +1357,7 @@ function getReportMonths(){
|
||||
var months=[];if(period==="year"){for(var i=0;i<12;i++)months.push(i)}else if(period==="q1")months=[0,1,2];else if(period==="q2")months=[3,4,5];else if(period==="q3")months=[6,7,8];else if(period==="q4")months=[9,10,11];else if(period==="h1")months=[0,1,2,3,4,5];else if(period==="h2")months=[6,7,8,9,10,11];else if(period==="month")months=[mFrom];else{for(var i=mFrom;i<=mTo;i++)months.push(i)}return months
|
||||
}
|
||||
function renderReports(){
|
||||
var qm=document.getElementById("rp_quick_months");if(qm){var mn2=["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"];var h="";for(var i=0;i<12;i++){h+="<button class=\'btn btn-sm\' style=\'padding:3px 8px;font-size:11px\' onclick=\'document.getElementById(\\\"rp_period\\\").value=\\\"month\\\";document.getElementById(\\\"rp_month_from\\\").value="+i+";document.getElementById(\\\"rp_month_to\\\").value="+i+";renderReports()\'>"+mn2[i]+"</button>"}qm.innerHTML=h}
|
||||
var fl=getFilteredEvs();
|
||||
var cnt=document.getElementById("rp_count");
|
||||
if(cnt)cnt.textContent="Выбрано мероприятий: "+fl.length;
|
||||
@ -1376,6 +1379,46 @@ function dlCSV(){
|
||||
function dlHTML(){var fl=getFilteredEvs();var periodLabel=getReportPeriod();var months=getReportMonths();var mn=["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"];var hh="<!DOCTYPE html><html><head><meta charset='utf-8'><title>\u041E\u0442\u0447\u0451\u0442 \u041F\u0411 \u0437\u0430 "+periodLabel+"</title><style>body{font:14px Arial;padding:30px;color:#1A1A2E}h3{font-size:14px;color:#005BAA;border-bottom:1px solid #ddd;padding-bottom:6px}.meta{font-size:12px;color:#1A1A2E;background:#F0F4FF;padding:6px 10px;border-radius:4px;margin:2px 0 6px}.desc{font-size:12px;padding:10px;background:#F0F4FF;border-left:4px solid #005BAA;border-radius:4px;margin:6px 0}.files{font-size:11px;margin:6px 0}.files .fg{margin:4px 0 8px;padding:4px 8px;background:#f9f9f9;border-radius:4px}.files .fgl{font-weight:600;color:#005BAA;font-size:11px}.files a{color:#005BAA;display:block;margin:2px 0 2px 8px}@media print{body{padding:10mm}}</style></head><body><h2>\u041F\u043B\u0430\u043D \u041F\u0411</h2><p>QAZAQtelecom HSE \u0437\u0430 "+periodLabel+"</p><p style='font-size:11px;color:#64748B'>"+new Date().toLocaleDateString("ru-RU")+"</p><br>";for(var i=0;i<fl.length;i++){var e=fl[i];var sn=secs[e.sec].split(". ")[1]||secs[e.sec];hh+="<h3>N"+e.id+". "+esc(e.t)+"</h3>";hh+="<div class='meta'>\u0420\u0430\u0437\u0434\u0435\u043B | "+esc(sn)+" | \u0421\u0440\u043E\u043A: "+e.due+" | "+stn[e.s]+"</div>";var rn="";for(var mi=0;mi<months.length;mi++){var nk="sn_"+e.id+"_m"+months[mi];var sv=localStorage.getItem(nk);if(sv){rn=sv;break}}if(!rn&&e.n)rn=e.n;if(rn)hh+="<div class='desc'><strong>\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435:</strong><br>"+esc(rn)+"</div>";var fhtml="";var hasAny=false;for(var mi=0;mi<months.length;mi++){var fg="";var mk="_m"+months[mi];for(var si=-1;si<(e.sub?e.sub.length:0);si++){var sk=si>=0?"_s"+si:"";for(var bk=0;bk<brs.length;bk++){var key="sf_"+e.id+mk+sk+"_b"+bk;var fd=localStorage.getItem(key);if(fd){try{var arr=JSON.parse(fd);for(var fi=0;fi<arr.length;fi++){var f=arr[fi];if(f&&f.n&&f.data)fg+="<a href='"+f.data+"' download='"+esc(f.n)+"'>\uD83D\uDCC4 "+esc(f.n)+" ("+Math.round((f.s||0)/1024)+" KB)</a>"}}catch(ex){}}}}if(fg){fhtml+="<div class='fg'><div class='fgl'>"+mn[months[mi]]+":</div>"+fg+"</div>";hasAny=true}}if(hasAny)hh+="<div class='files'><strong>\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B:</strong>"+fhtml+"</div>"}hh+="<p style='font-size:11px;color:#64748B'><em>"+new Date().toLocaleDateString("ru-RU")+"</em></p></body></html>";var blob=new Blob([hh],{type:"text/html"});var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="report_pb_"+periodLabel.replace(/\s/g,"_")+".html";a.click()}
|
||||
function dlWord(){var fl=getFilteredEvs();var periodLabel=getReportPeriod();var months=getReportMonths();var mn=["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"];var hh="<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word'><head><meta charset='utf-8'><title>\u041E\u0442\u0447\u0451\u0442 \u041F\u0411 \u0437\u0430 "+periodLabel+"</title><style>@page{size:A4;margin:20mm}body{font:12pt 'Times New Roman'}h2{font-size:16pt;text-align:center}h3{font-size:12pt;color:#005BAA;border-bottom:1px solid #ccc}.meta{font-size:10pt;color:#555}.desc{font-size:10pt;padding:6pt;background:#f9f9f9}.files{font-size:9pt}.files a{color:#005BAA;display:block}</style></head><body><h2>\u041F\u043B\u0430\u043D \u041F\u0411</h2><p style='text-align:center'>AO \u00AB\u041A\u0430\u0437\u0430\u0445\u0442\u0435\u043B\u0435\u043A\u043E\u043C\u00BB \u0437\u0430 "+periodLabel+"</p><br>";for(var i=0;i<fl.length;i++){var e=fl[i];var sn=secs[e.sec].split(". ")[1]||secs[e.sec];hh+="<h3>N"+e.id+". "+esc(e.t)+"</h3>";hh+="<p class='meta'>\u0420\u0430\u0437\u0434\u0435\u043B | "+esc(sn)+" | \u0421\u0440\u043E\u043A: "+e.due+" | "+stn[e.s]+"</p>";var rn="";for(var mi=0;mi<months.length;mi++){var nk="sn_"+e.id+"_m"+months[mi];var sv=localStorage.getItem(nk);if(sv){rn=sv;break}}if(!rn&&e.n)rn=e.n;if(rn)hh+="<p class='desc'><strong>\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435:</strong> "+esc(rn)+"</p>";var fhtml="";for(var mi=0;mi<months.length;mi++){var fg="";var mk="_m"+months[mi];for(var si=-1;si<(e.sub?e.sub.length:0);si++){var sk=si>=0?"_s"+si:"";for(var bk=0;bk<brs.length;bk++){var key="sf_"+e.id+mk+sk+"_b"+bk;var fd=localStorage.getItem(key);if(fd){try{var arr=JSON.parse(fd);for(var fi=0;fi<arr.length;fi++){var f=arr[fi];if(f&&f.n)fg+="<a href='"+f.data+"'>"+esc(f.n)+" ("+Math.round((f.s||0)/1024)+" KB)</a>"}}catch(ex){}}}}if(fg)fhtml+="<p><strong>"+mn[months[mi]]+":</strong><br>"+fg+"</p>"}if(fhtml)hh+="<div class='files'><strong>\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B:</strong><br>"+fhtml+"</div>"}hh+="<p style='font-size:9pt;color:#888'>"+new Date().toLocaleDateString("ru-RU")+"</p></body></html>";var blob=new Blob([hh],{type:"application/msword"});var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="report_pb_"+periodLabel.replace(/\s/g,"_")+".doc";a.click()}
|
||||
function dlPdf(){var fl=getFilteredEvs();var periodLabel=getReportPeriod();var hh="<!DOCTYPE html><html><head><meta charset='utf-8'><title>\u041E\u0442\u0447\u0451\u0442 \u041F\u0411 \u0437\u0430 "+periodLabel+"</title><style>body{font:14px Arial;padding:20px}table{border-collapse:collapse;width:100%}th,td{border:1px solid #ccc;padding:6px 10px;font-size:12px}th{background:#0A1628;color:#fff}@media print{body{padding:10mm}}</style></head><body><h2>\u041F\u043B\u0430\u043D \u041F\u0411</h2><p>QAZAQtelecom HSE \u0437\u0430 "+periodLabel+"</p><br><table><tr><th>N</th><th>\u041C\u0435\u0440\u043E\u043F\u0440\u0438\u044F\u0442\u0438\u0435</th><th>\u0424\u0438\u043B\u0438\u0430\u043B</th><th>\u0421\u0440\u043E\u043A</th><th>\u0421\u0442\u0430\u0442\u0443\u0441</th><th>%</th><th>\u041F\u0440\u0438\u043C\u0435\u0447\u0430\u043D\u0438\u0435</th></tr>";for(var i=0;i<fl.length;i++){var e=fl[i];hh+="<tr><td>"+e.id+"</td><td>"+esc(e.t)+"</td><td>"+brs[e.b]+"</td><td>"+e.due+"</td><td>"+stn[e.s]+"</td><td>"+(e.p||0)+"%</td><td>"+esc(e.n||"")+"</td></tr>"}hh+="</table><p><em>"+new Date().toLocaleDateString("ru-RU")+"</em></p><script>window.onload=function(){window.print()}<\/script></body></html>";var w=window.open("","_blank","width=900,height=700");w.document.write(hh);w.document.close()}
|
||||
function dlZip(){
|
||||
var fl=getFilteredEvs();var periodLabel=getReportPeriod();var months=getReportMonths();
|
||||
var zipParts=[];var offsets=[];var centralDir=[];var offset=0;
|
||||
var mn=["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"];
|
||||
function addFile(name,bytes){
|
||||
var encoder=new TextEncoder();var data=typeof bytes==="string"?encoder.encode(bytes):new Uint8Array(bytes);
|
||||
var nameBytes=encoder.encode(name);var crc=crc32(data);
|
||||
var lh=new Uint8Array(30+nameBytes.length);var v=new DataView(lh.buffer);
|
||||
v.setUint32(0,0x04034b50,true);v.setUint16(8,0,true);v.setUint16(10,0,true);v.setUint16(26,nameBytes.length,true);
|
||||
v.setUint32(14,crc,true);v.setUint32(18,data.length,true);v.setUint32(22,data.length,true);lh.set(nameBytes,30);
|
||||
zipParts.push(lh);zipParts.push(data);
|
||||
var cd=new Uint8Array(46+nameBytes.length);var cv=new DataView(cd.buffer);
|
||||
cv.setUint32(0,0x02014b50,true);cv.setUint16(8,0,true);cv.setUint16(10,0,true);cv.setUint16(28,nameBytes.length,true);
|
||||
cv.setUint32(16,crc,true);cv.setUint32(20,data.length,true);cv.setUint32(24,data.length,true);cv.setUint32(42,offset,true);cd.set(nameBytes,46);
|
||||
centralDir.push(cd);offset+=30+nameBytes.length+data.length
|
||||
}
|
||||
function crc32(data){var c=0xffffffff;for(var i=0;i<data.length;i++){c^=data[i];for(var j=0;j<8;j++){if(c&1)c=(c>>>1)^0xedb88320;else c>>>=1}}return(c^0xffffffff)>>>0}
|
||||
var html='<!DOCTYPE html><html><head><meta charset="utf-8"><title>\u041E\u0442\u0447\u0451\u0442 \u041F\u0411 \u0437\u0430 '+periodLabel+'</title><style>body{font:14px Arial;padding:20px}h2{font-size:20px}h3{font-size:14px;color:#005BAA;border-bottom:1px solid #ccc}.meta{font-size:12px;color:#555}.desc{font-size:12px;padding:8px;background:#f9f9f9;margin:6px 0}</style></head><body><h2>\u041F\u043B\u0430\u043D \u041F\u0411 \u2014 QAZAQtelecom HSE</h2><p>\u041F\u0435\u0440\u0438\u043E\u0434: '+periodLabel+'</p><p>\u0414\u0430\u0442\u0430: '+new Date().toLocaleDateString("ru-RU")+'</p><br>';
|
||||
for(var i=0;i<fl.length;i++){var e=fl[i];var sn=secs[e.sec].split(". ")[1]||secs[e.sec];
|
||||
html+='<h3>N'+e.id+'. '+esc(e.t)+'</h3><div class="meta">\u0420\u0430\u0437\u0434\u0435\u043B | '+esc(sn)+' | \u0421\u0440\u043E\u043A: '+e.due+' | '+stn[e.s]+'</div>';
|
||||
var rn="";for(var mi=0;mi<months.length;mi++){var nk="sn_"+e.id+"_m"+months[mi];var sv=localStorage.getItem(nk);if(sv){rn=sv;break}}if(!rn&&e.n)rn=e.n;if(rn)html+='<div class="desc"><strong>\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435:</strong><br>'+esc(rn)+'</div>'
|
||||
}
|
||||
html+='<p><em>'+new Date().toLocaleDateString("ru-RU")+'</em></p></body></html>';
|
||||
addFile("report.html",html);
|
||||
for(var i=0;i<fl.length;i++){var e=fl[i];
|
||||
for(var mi=0;mi<12;mi++){var mk="_m"+mi;
|
||||
for(var si=-1;si<(e.sub?e.sub.length:0);si++){var sk=si>=0?"_s"+si:"";
|
||||
for(var bk=0;bk<brs.length;bk++){var key="sf_"+e.id+mk+sk+"_b"+bk;var fd=localStorage.getItem(key);
|
||||
if(fd){try{var arr=JSON.parse(fd);for(var fi=0;fi<arr.length;fi++){var f=arr[fi];if(f&&f.n&&f.data){var b64=f.data.split(",")[1];if(b64){var bin=Uint8Array.from(atob(b64),function(c){return c.charCodeAt(0)});addFile("event_"+e.id+"/"+esc(f.n),bin)}}}}catch(ex){}}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
var cdOff=offset;for(var i=0;i<centralDir.length;i++)zipParts.push(centralDir[i]);
|
||||
var cdSz=zipParts.reduce(function(s,p){return s+p.length},0)-cdOff;
|
||||
var eocd=new Uint8Array(22);var ev=new DataView(eocd.buffer);
|
||||
ev.setUint32(0,0x06054b50,true);ev.setUint16(8,centralDir.length,true);ev.setUint16(10,centralDir.length,true);
|
||||
ev.setUint32(12,cdSz,true);ev.setUint32(16,cdOff,true);zipParts.push(eocd);
|
||||
var blob=new Blob(zipParts,{type:"application/zip"});var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="report_pb_"+periodLabel.replace(/\s/g,"_")+".zip";a.click()
|
||||
}
|
||||
function hseSend(){
|
||||
var btn=document.getElementById("hse_btn");
|
||||
var result=document.getElementById("hse_result");
|
||||
@ -1729,21 +1772,17 @@ function saveUsers(){
|
||||
try{localStorage.setItem("ext_users",JSON.stringify(ex))}catch(e){}
|
||||
}
|
||||
function dlAnalyticsPPT(){
|
||||
var total=evs.length;
|
||||
var done=0,late=0,warn=0;
|
||||
for(var i=0;i<evs.length;i++){
|
||||
if(evs[i].s==="done")done++;else if(evs[i].s==="late")late++;else warn++
|
||||
}
|
||||
var total=evs.length;var done=0,late=0,warn=0;
|
||||
for(var i=0;i<evs.length;i++){if(evs[i].s==="done")done++;else if(evs[i].s==="late")late++;else warn++}
|
||||
var pct=total?Math.round(done/total*100):0;
|
||||
var brd=[];
|
||||
for(var i=0;i<brs.length;i++){brd.push({n:brs[i],t:0,d:0})}
|
||||
var brd=[];for(var i=0;i<brs.length;i++){brd.push({n:brs[i],t:0,d:0})}
|
||||
for(var i=0;i<evs.length;i++){var e=evs[i];brd[e.b].t++;if(e.s==="done")brd[e.b].d++}
|
||||
brd.sort(function(a,b){return(b.d/b.t||0)-(a.d/a.t||0)});
|
||||
var h="<!DOCTYPE html><html><head><meta charset='utf-8'><title>\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 HSE</title><style>body{font:16px Arial;padding:30px}@page{size:A4 landscape;margin:10mm}h1{color:#005BAA;font-size:24px}.num{font-size:36px;font-weight:800;color:#005BAA}.bar{height:20px;background:#005BAA;border-radius:4px;margin:2px 0}table{border-collapse:collapse}td{padding:8px 16px;border:1px solid #ddd}@media print{body{padding:5mm}}</style></head><body><h1>QAZAQtelecom HSE \u2014 \u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430</h1><p>\u0414\u0430\u0442\u0430: "+new Date().toLocaleDateString("ru-RU")+"</p><br><table><tr><td style='text-align:center'><div class='num'>"+total+"</div>\u0412\u0441\u0435\u0433\u043E</td><td style='text-align:center'><div class='num'>"+done+"</div>\u0418\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u043E</td><td style='text-align:center'><div class='num'>"+warn+"</div>\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435</td><td style='text-align:center'><div class='num'>"+late+"</div>\u041F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043E</td></tr></table><br><p>\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435: <strong>"+pct+"%</strong></p><div class='bar' style='width:"+Math.round(pct*4)+"px'></div><br><h3>\u0420\u0435\u0439\u0442\u0438\u043D\u0433 \u0444\u0438\u043B\u0438\u0430\u043B\u043E\u0432</h3><table>";
|
||||
for(var i=0;i<brd.length;i++){var bp=brd[i].t?Math.round(brd[i].d/brd[i].t*100):0;h+="<tr><td>"+(i+1)+". "+esc(brd[i].n)+"</td><td>"+brd[i].d+"/"+brd[i].t+"</td><td><div class='bar' style='width:"+bp+"px'></div></td><td>"+bp+"%</td></tr>"}
|
||||
h+="</table></body></html>";
|
||||
var blob=new Blob([h],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"});
|
||||
var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics_"+new Date().toISOString().slice(0,10)+".pptx";a.click()
|
||||
var h="<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:p='urn:schemas-microsoft-com:office:powerpoint'><head><meta charset='utf-8'><title>\u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 HSE</title><style>body{font:18px Arial;padding:30px}@page{size:A4 landscape;margin:15mm}h1{color:#005BAA;font-size:28px}.num{font-size:48px;font-weight:800;color:#005BAA}.pct{font-size:72px;font-weight:800;color:"+(pct>=70?"#10B981":pct>=40?"#F59E0B":"#EF4444")+"}.bar{height:28px;background:#005BAA;border-radius:6px;margin:8px 0}.slide{page-break-after:always;min-height:350px}table{border-collapse:collapse;width:100%}td{padding:12px 20px;border:1px solid #ddd;font-size:16px}th{background:#0A1628;color:#fff;padding:10px 14px;font-size:13px}</style></head><body><div class='slide'><h1>QAZAQtelecom HSE \u2014 \u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 \u041F\u0411</h1><p>\u0414\u0430\u0442\u0430: "+new Date().toLocaleDateString("ru-RU")+"</p><br><div style='text-align:center'><div class='pct'>"+pct+"%</div><p style='font-size:20px;color:#64748B'>\u041E\u0431\u0449\u0438\u0439 \u043F\u0440\u043E\u0446\u0435\u043D\u0442 \u0438\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F</p></div><br><table><tr><td style='text-align:center'><div class='num'>"+total+"</div>\u0412\u0441\u0435\u0433\u043E</td><td style='text-align:center'><div class='num'>"+done+"</div>\u0418\u0441\u043F\u043E\u043B\u043D\u0435\u043D\u043E</td><td style='text-align:center'><div class='num'>"+warn+"</div>\u0412 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u0435</td><td style='text-align:center'><div class='num' style='color:#EF4444'>"+late+"</div>\u041F\u0440\u043E\u0441\u0440\u043E\u0447\u0435\u043D\u043E</td></tr></table><div class='bar' style='width:"+Math.round(pct*5)+"px'></div></div><div class='slide'><h2>\u0420\u0435\u0439\u0442\u0438\u043D\u0433 \u0444\u0438\u043B\u0438\u0430\u043B\u043E\u0432</h2><table><tr><th>\u2116</th><th>\u0424\u0438\u043B\u0438\u0430\u043B</th><th>\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043E</th><th>%</th></tr>";
|
||||
for(var i=0;i<brd.length;i++){var bp=brd[i].t?Math.round(brd[i].d/brd[i].t*100):0;h+="<tr><td>"+(i+1)+"</td><td>"+esc(brd[i].n)+"</td><td>"+brd[i].d+"/"+brd[i].t+"</td><td><div class='bar' style='width:"+(bp*2)+"px'></div> "+bp+"%</td></tr>"}
|
||||
h+="</table></div></body></html>";
|
||||
var blob=new Blob([h],{type:"application/vnd.ms-powerpoint"});
|
||||
var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics_"+new Date().toISOString().slice(0,10)+".ppt";a.click()
|
||||
}
|
||||
function dlAnalyticsPDF(){
|
||||
var h=document.getElementById("tab_analytics").innerHTML;
|
||||
@ -1762,6 +1801,6 @@ function dlAnalyticsWord(){
|
||||
var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics.doc";a.click()
|
||||
}
|
||||
|
||||
</script></script></script>
|
||||
</script></script></script></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user