293 lines
8.8 KiB
TypeScript
293 lines
8.8 KiB
TypeScript
|
|
const company = "PT. PLN (Persero)";
|
|
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
|
|
console.log(rawData)
|
|
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
|
|
<style type="text/css" media="print">
|
|
@page Section1 {
|
|
size:841.95pt 21.0cm;
|
|
mso-page-orientation:landscape;
|
|
margin:72.0pt 72.0pt 72.0pt 72.0pt;
|
|
mso-header-margin:35.4pt;
|
|
mso-footer-margin:35.4pt;
|
|
mso-paper-source:0;
|
|
}
|
|
@page{
|
|
size: landscape;
|
|
font-size: 5px;
|
|
}
|
|
div.Section1 {
|
|
page:Section1;
|
|
}
|
|
table.main {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
text-transform: uppercase;
|
|
font-size: 8px;
|
|
}
|
|
table.main thead tr {
|
|
background-color: #c0c0c0;
|
|
}
|
|
</style>
|
|
</head><body>
|
|
<div class="Section1">
|
|
`;
|
|
var tbody = '';
|
|
for (let index = 0; index < rawData.length; index++) {
|
|
const element = rawData[index];
|
|
var column = '<tr>';
|
|
let styleTotal = '';
|
|
for (let i = 0; i < element.length; i++) {
|
|
const content = element[i];
|
|
const colSpan = content?.colSpan !== undefined ? `colspan="${content.colSpan}"` : ''
|
|
|
|
if (content && (content.content === 'TOTAL' || content.content === 'GRAND TOTAL')) {
|
|
styleTotal = 'style="background-color: #c0c0c0; font-weight: bold;"'
|
|
}
|
|
i === 0 ?
|
|
column += `<td ${styleTotal} ${colSpan} align="left">${content.content}</td>`
|
|
: column += `<td ${styleTotal}>${content}</td>`;
|
|
}
|
|
column += '</tr>';
|
|
tbody += column;
|
|
}
|
|
|
|
var body = `
|
|
<table border=0 style="border:none">
|
|
<tr>
|
|
<td colspan="3"> ${company.toUpperCase()}</td>
|
|
</tr>
|
|
<tr>
|
|
<td> Unit Induk Distribusi/Wilayah </td>
|
|
<td>:</td>
|
|
<td> ${reportMeta.uid
|
|
? reportMeta.uid.name.toUpperCase()
|
|
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
|
|
<tr>
|
|
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
|
|
<td>:</td>
|
|
<td> ${reportMeta.up3
|
|
? reportMeta.up3.name.toUpperCase()
|
|
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
|
|
</tr>
|
|
<tr>
|
|
<td> Posko</td>
|
|
<td>:</td>
|
|
<td> ${reportMeta.posko ? reportMeta.posko.name.toUpperCase() : 'Semua Posko'.toUpperCase()}</td>
|
|
</tr>
|
|
</table>
|
|
<center><h6>${filename.toUpperCase()}</h6></center>
|
|
<center><h6>Periode : ${periode.dateFromFormat} s/d ${periode.dateToFormat} (${periode.dayTo})<h6></center>
|
|
<table class="main">
|
|
<thead>
|
|
<tr>
|
|
<th rowspan="2">No</th>
|
|
<th rowspan="2">Nama Unit</th>
|
|
<th colspan="12">Bulan</th>
|
|
</tr>
|
|
<tr>
|
|
<th>Januari</th>
|
|
<th>Februari</th>
|
|
<th>Maret</th>
|
|
<th>April</th>
|
|
<th>Mei</th>
|
|
<th>Juni</th>
|
|
<th>Juli</th>
|
|
<th>Agustus</th>
|
|
<th>September</th>
|
|
<th>Oktober</th>
|
|
<th>November</th>
|
|
<th>Desember</th>
|
|
</tr>
|
|
|
|
|
|
</thead>
|
|
<tbody>
|
|
${tbody}
|
|
</tbody>
|
|
</table>
|
|
`
|
|
|
|
var postHtml = "</div></body></html>";
|
|
|
|
var html = preHtml + body + postHtml;
|
|
|
|
var url =
|
|
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
|
|
|
|
filename = filename ? filename + ".doc" : "document.doc";
|
|
|
|
var downloadLink = document.createElement("a");
|
|
|
|
document.body.appendChild(downloadLink);
|
|
|
|
downloadLink.href = url;
|
|
|
|
downloadLink.download = filename;
|
|
|
|
downloadLink.click();
|
|
|
|
document.body.removeChild(downloadLink);
|
|
}
|
|
|
|
const exportDetailToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
|
|
var preHtml = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><meta charset='utf-8'><title>${filename}</title>
|
|
<style type="text/css" media="print">
|
|
@page Section1 {
|
|
size:841.95pt 21.0cm;
|
|
mso-page-orientation:landscape;
|
|
margin:72.0pt 72.0pt 72.0pt 72.0pt;
|
|
mso-header-margin:35.4pt;
|
|
mso-footer-margin:35.4pt;
|
|
mso-paper-source:0;
|
|
}
|
|
@page{
|
|
size: landscape;
|
|
font-size: 5px;
|
|
}
|
|
div.Section1 {
|
|
page:Section1;
|
|
}
|
|
table.main {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
text-transform: uppercase;
|
|
font-size: 8px;
|
|
}
|
|
table.main thead tr {
|
|
background-color: #c0c0c0;
|
|
}
|
|
</style>
|
|
</head><body>
|
|
<div class="Section1">
|
|
`;
|
|
var tbody = ``;
|
|
var cr = ``;
|
|
rawData.map((item: any, i: any) => {
|
|
cr += '<tr>';
|
|
cr += `<td>${i + 1}</td>`;
|
|
cr += `<td>${item.no_laporan}</td>`;
|
|
cr += `<td>${item.tgl_lapor}</td>`;
|
|
cr += `<td>${item.tgl_lapor_sblm}</td>`;
|
|
cr += `<td>${item.tgl_lapor_sdh}</td>`;
|
|
cr += `<td>${item.tgl_penugasan_sblm}</td>`;
|
|
cr += `<td>${item.tgl_penugasan_sdh}</td>`;
|
|
cr += `<td>${item.tgl_perjalanan_sblm}</td>`;
|
|
cr += `<td>${item.tgl_perjalanan_sdh}</td>`;
|
|
cr += `<td>${item.tgl_pengerjaan_sblm}</td>`;
|
|
cr += `<td>${item.tgl_pengerjaan_sdh}</td>`;
|
|
cr += `<td>${item.tgl_nyala_sementara_sblm}</td>`;
|
|
cr += `<td>${item.tgl_nyala_sementara_sdh}</td>`;
|
|
cr += `<td>${item.tgl_nyala_sblm}</td>`;
|
|
cr += `<td>${item.tgl_nyala_sdh}</td>`;
|
|
cr += `<td>${item.tgl_selesai_sblm}</td>`;
|
|
cr += `<td>${item.tgl_selesai_sdh}</td>`;
|
|
cr += `<td>${item.durasi_response_time_sblm}</td>`;
|
|
cr += `<td>${item.durasi_response_time_sdh}</td>`;
|
|
cr += `<td>${item.durasi_recovery_time_sdh}</td>`;
|
|
cr += `<td>${item.kelompok_sblm}</td>`;
|
|
cr += `<td>${item.kelompok_sdh}</td>`;
|
|
cr += `<td>${item.sub_kelompok_sblm}</td>`;
|
|
cr += `<td>${item.sub_kelompok_sdh}</td>`;
|
|
cr += `<td>${item.fasilitas_id_sblm}</td>`;
|
|
cr += `<td>${item.fasilitas_id_sdh}</td>`;
|
|
cr += `<td>${item.sub_fasilitas_id_sblm}</td>`;
|
|
cr += `<td>${item.sub_fasilitas_id_sdh}</td>`;
|
|
cr += `<td>${item.equipment_id_sblm}</td>`;
|
|
cr += `<td>${item.equipment_id_sdh}</td>`;
|
|
cr += `<td>${item.event_damage_sblm}</td>`;
|
|
cr += `<td>${item.event_damage_sdh}</td>`;
|
|
cr += `<td>${item.cause_id_sblm}</td>`;
|
|
cr += `<td>${item.cause_id_sdh}</td>`;
|
|
cr += `<td>${item.cause_group_id_sblm}</td>`;
|
|
cr += `<td>${item.cause_group_id_sdh}</td>`;
|
|
cr += `<td>${item.weather_id_sblm}</td>`;
|
|
cr += `<td>${item.weather_id_sdh}</td>`;
|
|
cr += `<td>${item.group_koreksi}</td>`;
|
|
cr += `<td>${item.alasan}</td>`;
|
|
cr += `<td>${item.idpel_no_meter}</td>`;
|
|
cr += `<td>${item.keterangan_pelapor}</td>`;
|
|
cr += `<td>${item.nama_posko}</td>`;
|
|
cr += `<td>${item.tindakan}</td>`;
|
|
cr += `<td>${item.penyebab}</td>`;
|
|
cr += '</tr>';
|
|
});
|
|
tbody += cr;
|
|
|
|
var body = `
|
|
<table border=0 style="border:none">
|
|
<tr>
|
|
<td colspan="3"> ${company.toUpperCase()}</td>
|
|
</tr>
|
|
<tr>
|
|
<td> Unit Induk Distribusi/Wilayah </td>
|
|
<td>:</td>
|
|
<td> ${reportMeta.uid
|
|
? reportMeta.uid.name.toUpperCase()
|
|
: 'Semua Unit Induk Distribusi/Wilayah'.toUpperCase()}</td>
|
|
<tr>
|
|
<td> Unit Pelaksanaan Pelayanan Pelanggan</td>
|
|
<td>:</td>
|
|
<td> ${reportMeta.up3
|
|
? reportMeta.up3.name.toUpperCase()
|
|
: 'Semua Unit Pelaksanaan Pelayanan Pelanggan'.toUpperCase()}</td>
|
|
</tr>
|
|
<tr>
|
|
<td> Posko</td>
|
|
<td>:</td>
|
|
<td> ${reportMeta.posko ? reportMeta.posko.name.toUpperCase() : 'Semua Posko'.toUpperCase()}</td>
|
|
</tr>
|
|
</table>
|
|
<center><h6>${filename.toUpperCase()}</h6></center>
|
|
<center><h6>Periode : ${periode.dateFromFormat} s/d ${periode.dateToFormat} (${periode.dayTo})<h6></center>
|
|
<table class="main">
|
|
<thead>
|
|
<tr>
|
|
<th>No</th>
|
|
<th>No Laporan</th>
|
|
<th>Tgl Lapor</th>
|
|
<th>Tgl Datang</th>
|
|
<th>Tgl Nyala</th>
|
|
<th>Durasi Response Time</th>
|
|
<th>Durasi Recovery Time</th>
|
|
<th>Status</th>
|
|
<th>Referensi Marking</th>
|
|
<th>IDPEL/NO METER</th>
|
|
<th>Nama Pelapor</th>
|
|
<th>Alamat Pelapor</th>
|
|
<th>No Telp Pelapor</th>
|
|
<th>Keterangan Pelapor</th>
|
|
<th>Posko</th>
|
|
<th>Tindakan</th>
|
|
<th>Penyebab</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
${tbody}
|
|
</tbody>
|
|
</table>
|
|
`
|
|
|
|
var postHtml = "</div></body></html>";
|
|
|
|
var html = preHtml + body + postHtml;
|
|
|
|
var url =
|
|
"data:application/vnd.ms-word;charset=utf-8," + encodeURIComponent(html);
|
|
|
|
filename = filename ? filename + ".doc" : "document.doc";
|
|
|
|
var downloadLink = document.createElement("a");
|
|
|
|
document.body.appendChild(downloadLink);
|
|
|
|
downloadLink.href = url;
|
|
|
|
downloadLink.download = filename;
|
|
|
|
downloadLink.click();
|
|
|
|
document.body.removeChild(downloadLink);
|
|
}
|
|
|
|
export { exportToWord, exportDetailToWord } |