Files
apkt-eis/src/report/Gangguan/Rekap/doc/RGangguan_JenisGangguanSE_DOC.ts
2024-04-09 15:22:49 +07:00

304 lines
8.9 KiB
TypeScript

const company = 'PT. PLN (Persero)'
const exportToWord = (reportMeta: any, rawData: any, filename: any, periode: any) => {
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
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="3">No</th>
<th rowspan="3">Kode</th>
<th rowspan="3" style="width: 25%">Sub Kelompok (Equipment)</th>
<th colspan="5">Laporan</th>
<th colspan="6">Response Time</th>
<th colspan="6">Recovery Time</th>
</tr>
<tr>
<th rowspan="2">Total</th>
<th colspan="2">Sudah Selesai</th>
<th colspan="2">Belum Selesai</th>
<th colspan="4">Menit</th>
<th colspan="2">Laporan</th>
<th colspan="4">Menit</th>
<th colspan="2">Laporan</th>
</tr>
<tr>
<th>Jml</th>
<th>%</th>
<th>Jml</th>
<th>%</th>
<th>Total</th>
<th>Rata-Rata</th>
<th>Max</th>
<th>Min</th>
<th>>Sla</th>
<th><Sla</th>
<th>Total</th>
<th>Rata-Rata</th>
<th>Max</th>
<th>Min</th>
<th>>Sla</th>
<th><Sla</th>
</tr>
</thead>
<tbody>
${tbody}
</tbody>
</table>
`
var postHtml = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></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) => {
const day = new Date().toLocaleString('id-ID', { weekday: 'long' })
const date = new Date().getDate()
const month = new Date().toLocaleString('id-ID', { month: 'long' })
const year = new Date().getFullYear()
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.waktu_lapor}</td>`
cr += `<td> ${item.waktu_response}</td>`
cr += `<td> ${item.waktu_recovery}</td>`
cr += `<td> ${item.durasi_response_time}</td>`
cr += `<td> ${item.durasi_recovery_time}</td>`
cr += `<td> ${item.status_akhir}</td>`
cr += `<td> ${item.referensi_marking}</td>`
cr += `<td> ${item.id_pelnomormeter}</td>`
cr += `<td> ${item.nama_pelapor}</td>`
cr += `<td> ${item.alamat_pelapor}</td>`
cr += `<td> ${item.no_telp_pelapor}</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 = `<br>
<footer>
<p style="text-align: right; font-size: 10px;">${day}, ${date}-${month}-${year}</p>
<br>
<p style="text-align: right; font-size: 10px;">(.........................................)</p>
</footer></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 }