diff --git a/src/report/Gangguan/Rekap/RGangguan_ALL.ts b/src/report/Gangguan/Rekap/RGangguan_ALL.ts index 1097703..80d99f0 100644 --- a/src/report/Gangguan/Rekap/RGangguan_ALL.ts +++ b/src/report/Gangguan/Rekap/RGangguan_ALL.ts @@ -173,7 +173,11 @@ const formatData = (rawData: any) => { ? formatPercentage((summary.total_selesai / summary.total) * 100) : '100%', formatNumber(summary.total_inproses), - formatPercentage((summary.total_inproses / summary.total) * 100), + formatPercentage( + !summary.total_inproses || !summary.total + ? '0%' + : (summary.total_inproses / summary.total) * 100 + ), formatNumber(avgDurasiDispatch), formatWaktu(summary.max_durasi_dispatch), formatWaktu(summary.min_durasi_dispatch), @@ -221,9 +225,13 @@ const formatData = (rawData: any) => { { content: 'TOTAL', colSpan: 2, styles: { fontStyle: 'bold' } }, formatNumber(total.total), formatNumber(total.total_selesai), - formatPercentage((total.total_selesai / total.total) * 100), + formatPercentage( + !total.total_selesai || !total.total ? '0%' : (total.total_selesai / total.total) * 100 + ), formatNumber(total.total_inproses), - formatPercentage((total.total_inproses / total.total) * 100), + formatPercentage( + !total.total_inproses || !total.total ? '0%' : (total.total_inproses / total.total) * 100 + ), formatNumber( total.avg_durasi_dispatch.length ? total.avg_durasi_dispatch.reduce((a: any, b: any) => a + b) / diff --git a/src/report/Gangguan/Rekap/RGangguan_BerdasarMedia.ts b/src/report/Gangguan/Rekap/RGangguan_BerdasarMedia.ts index 7323526..c69256c 100644 --- a/src/report/Gangguan/Rekap/RGangguan_BerdasarMedia.ts +++ b/src/report/Gangguan/Rekap/RGangguan_BerdasarMedia.ts @@ -16,9 +16,8 @@ import { saveAs } from 'file-saver' import { jsPDF } from 'jspdf' import autoTable from 'jspdf-autotable' import { Workbook } from 'exceljs' -import { formatWaktu } from '@/components/Form/FiltersType/reference' import { setHeaderStyle } from '@/report/utils/xlsx' -import { formatNumber, formatPercentage } from '@/utils/numbers' +import { formatNumber } from '@/utils/numbers' const reportName = 'Rekapitulasi Gangguan Berdasarkan Media' const fontSize = 5 diff --git a/src/report/Gangguan/Rekap/RGangguan_PerPosko.ts b/src/report/Gangguan/Rekap/RGangguan_PerPosko.ts index df1f76f..45fa24f 100644 --- a/src/report/Gangguan/Rekap/RGangguan_PerPosko.ts +++ b/src/report/Gangguan/Rekap/RGangguan_PerPosko.ts @@ -88,10 +88,14 @@ const formatData = (rawData: any) => { data[nama_up3][i].nama_posko, formatNumber(data[nama_up3][i].total), formatNumber(data[nama_up3][i].total_selesai), - formatPercentage((data[nama_up3][i].total_selesai / data[nama_up3][i].total) * 100), + formatPercentage( + !data[nama_up3][i].total_selesai || !data[nama_up3][i].total + ? '0%' + : (data[nama_up3][i].total_selesai / data[nama_up3][i].total) * 100 + ), formatNumber(data[nama_up3][i].total_inproses), formatPercentage( - data[nama_up3][i].total_inproses == null || data[nama_up3][i].total == null + !data[nama_up3][i].total_inproses || !data[nama_up3][i].total ? '0%' : (data[nama_up3][i].total_inproses / data[nama_up3][i].total) * 100 ), @@ -146,9 +150,17 @@ const formatData = (rawData: any) => { { content: 'TOTAL', colSpan: 2, styles: { fontStyle: 'bold' } }, formatNumber(total.total_laporan), formatNumber(total.total_laporan_sudah_selesai), - formatPercentage((total.total_laporan_sudah_selesai / total.total_laporan) * 100), + formatPercentage( + !total.total_laporan_sudah_selesai || !total.total_laporan + ? '0%' + : (total.total_laporan_sudah_selesai / total.total_laporan) * 100 + ), formatNumber(total.total_laporan_belum_selesai), - formatPercentage((total.total_laporan_belum_selesai / total.total_laporan) * 100), + formatPercentage( + !total.total_laporan_belum_selesai || !total.total_laporan + ? '0%' + : (total.total_laporan_belum_selesai / total.total_laporan) * 100 + ), formatNumber(total.total_response_time_total), formatNumber( total.total_response_time_rata_rata.length @@ -178,9 +190,17 @@ const formatData = (rawData: any) => { { content: 'GRAND TOTAL', colSpan: 2, styles: { fontStyle: 'bold' } }, formatNumber(grandTotal.total_laporan), formatNumber(grandTotal.total_laporan_sudah_selesai), - formatPercentage((grandTotal.total_laporan_sudah_selesai / grandTotal.total_laporan) * 100), + formatPercentage( + !grandTotal.total_laporan_sudah_selesai || !grandTotal.total_laporan + ? '0%' + : (grandTotal.total_laporan_sudah_selesai / grandTotal.total_laporan) * 100 + ), formatNumber(grandTotal.total_laporan_belum_selesai), - formatPercentage((grandTotal.total_laporan_belum_selesai / grandTotal.total_laporan) * 100), + formatPercentage( + !grandTotal.total_laporan_belum_selesai || !grandTotal.total_laporan + ? '0%' + : (grandTotal.total_laporan_belum_selesai / grandTotal.total_laporan) * 100 + ), formatNumber(grandTotal.total_response_time_total), formatNumber( grandTotal.total_response_time_rata_rata.length diff --git a/src/report/Gangguan/Rekap/RGangguan_PerRegu.ts b/src/report/Gangguan/Rekap/RGangguan_PerRegu.ts index ce0625c..ac32735 100644 --- a/src/report/Gangguan/Rekap/RGangguan_PerRegu.ts +++ b/src/report/Gangguan/Rekap/RGangguan_PerRegu.ts @@ -91,10 +91,14 @@ const formatData = (rawData: any, groupBy: boolean) => { data[nama_uid][i].nama_regu, formatNumber(data[nama_uid][i].total), formatNumber(data[nama_uid][i].total_selesai), - formatPercentage((data[nama_uid][i].total_selesai / data[nama_uid][i].total) * 100), + formatPercentage( + !data[nama_uid][i].total || !data[nama_uid][i].total_selesai + ? '0%' + : (data[nama_uid][i].total_selesai / data[nama_uid][i].total) * 100 + ), formatNumber(data[nama_uid][i].total_inproses), formatPercentage( - data[nama_uid][i].total_inproses == null || data[nama_uid][i].total == null + !data[nama_uid][i].total_inproses || !data[nama_uid][i].total ? '0%' : (data[nama_uid][i].total_inproses / data[nama_uid][i].total) * 100 ), @@ -149,9 +153,17 @@ const formatData = (rawData: any, groupBy: boolean) => { { content: 'TOTAL', colSpan: 3, styles: { fontStyle: 'bold' } }, formatNumber(total.total_laporan), formatNumber(total.total_laporan_sudah_selesai), - formatPercentage((total.total_laporan_sudah_selesai / total.total_laporan) * 100), + formatPercentage( + !total.total_laporan || !total.total_laporan_sudah_selesai + ? '0%' + : (total.total_laporan_sudah_selesai / total.total_laporan) * 100 + ), formatNumber(total.total_laporan_belum_selesai), - formatPercentage((total.total_laporan_belum_selesai / total.total_laporan) * 100), + formatPercentage( + !total.total_laporan || !total.total_laporan_belum_selesai + ? '0%' + : (total.total_laporan_belum_selesai / total.total_laporan) * 100 + ), formatNumber(total.total_response_time_total), formatNumber( total.total_response_time_rata_rata.length @@ -184,10 +196,14 @@ const formatData = (rawData: any, groupBy: boolean) => { rawData[i].nama_regu, formatNumber(rawData[i].total), formatNumber(rawData[i].total_selesai), - formatPercentage((rawData[i].total_selesai / rawData[i].total) * 100), + formatPercentage( + !rawData[i].total || !rawData[i].total_selesai + ? '0%' + : (rawData[i].total_selesai / rawData[i].total) * 100 + ), formatNumber(rawData[i].total_inproses), formatPercentage( - rawData[i].total_inproses == null || rawData[i].total == null + !rawData[i].total_inproses || !rawData[i].total ? '0%' : (rawData[i].total_inproses / rawData[i].total) * 100 ), @@ -227,9 +243,17 @@ const formatData = (rawData: any, groupBy: boolean) => { { content: 'GRAND TOTAL', colSpan: 3, styles: { fontStyle: 'bold' } }, formatNumber(grandTotal.total_laporan), formatNumber(grandTotal.total_laporan_sudah_selesai), - formatPercentage((grandTotal.total_laporan_sudah_selesai / grandTotal.total_laporan) * 100), + formatPercentage( + !grandTotal.total_laporan || !grandTotal.total_laporan_sudah_selesai + ? '0%' + : (grandTotal.total_laporan_sudah_selesai / grandTotal.total_laporan) * 100 + ), formatNumber(grandTotal.total_laporan_belum_selesai), - formatPercentage((grandTotal.total_laporan_belum_selesai / grandTotal.total_laporan) * 100), + formatPercentage( + !grandTotal.total_laporan || !grandTotal.total_laporan_belum_selesai + ? '0%' + : (grandTotal.total_laporan_belum_selesai / grandTotal.total_laporan) * 100 + ), formatNumber(grandTotal.total_response_time_total), formatNumber( grandTotal.total_response_time_rata_rata.length diff --git a/src/report/Gangguan/Rekap/RGangguan_PerTanggal.ts b/src/report/Gangguan/Rekap/RGangguan_PerTanggal.ts index 1300c3f..466bf3b 100644 --- a/src/report/Gangguan/Rekap/RGangguan_PerTanggal.ts +++ b/src/report/Gangguan/Rekap/RGangguan_PerTanggal.ts @@ -90,10 +90,14 @@ const formatData = (rawData: any, groupBy: boolean) => { data[nama_uid][i].tanggal, formatNumber(data[nama_uid][i].total), formatNumber(data[nama_uid][i].total_selesai), - formatPercentage((data[nama_uid][i].total_selesai / data[nama_uid][i].total) * 100), + formatPercentage( + !data[nama_uid][i].total || !data[nama_uid][i].total_selesai + ? '0%' + : (data[nama_uid][i].total_selesai / data[nama_uid][i].total) * 100 + ), formatNumber(data[nama_uid][i].total_inproses), formatPercentage( - data[nama_uid][i].total_inproses == null || data[nama_uid][i].total == null + !data[nama_uid][i].total_inproses || !data[nama_uid][i].total ? '0%' : (data[nama_uid][i].total_inproses / data[nama_uid][i].total) * 100 ), @@ -148,9 +152,17 @@ const formatData = (rawData: any, groupBy: boolean) => { { content: 'TOTAL', colSpan: 2, styles: { fontStyle: 'bold' } }, formatNumber(total.total_laporan), formatNumber(total.total_laporan_sudah_selesai), - formatPercentage((total.total_laporan_sudah_selesai / total.total_laporan) * 100), + formatPercentage( + !total.total_laporan || !total.total_laporan_sudah_selesai + ? '0%' + : (total.total_laporan_sudah_selesai / total.total_laporan) * 100 + ), formatNumber(total.total_laporan_belum_selesai), - formatPercentage((total.total_laporan_belum_selesai / total.total_laporan) * 100), + formatPercentage( + !total.total_laporan_belum_selesai || !total.total_laporan + ? '0%' + : (total.total_laporan_belum_selesai / total.total_laporan) * 100 + ), formatNumber(total.total_response_time_total), formatNumber( total.total_response_time_rata_rata.length @@ -182,10 +194,14 @@ const formatData = (rawData: any, groupBy: boolean) => { rawData[i].tanggal, formatNumber(rawData[i].total), formatNumber(rawData[i].total_selesai), - formatPercentage((rawData[i].total_selesai / rawData[i].total) * 100), + formatPercentage( + !rawData[i].total || !rawData[i].total_selesai + ? '0%' + : (rawData[i].total_selesai / rawData[i].total) * 100 + ), formatNumber(rawData[i].total_inproses), formatPercentage( - rawData[i].total_inproses == null || rawData[i].total == null + !rawData[i].total_inproses || !rawData[i].total ? '0%' : (rawData[i].total_inproses / rawData[i].total) * 100 ), @@ -225,9 +241,17 @@ const formatData = (rawData: any, groupBy: boolean) => { { content: 'GRAND TOTAL', colSpan: 2, styles: { fontStyle: 'bold' } }, formatNumber(grandTotal.total_laporan), formatNumber(grandTotal.total_laporan_sudah_selesai), - formatPercentage((grandTotal.total_laporan_sudah_selesai / grandTotal.total_laporan) * 100), + formatPercentage( + !grandTotal.total_laporan || !grandTotal.total_laporan_sudah_selesai + ? '0%' + : (grandTotal.total_laporan_sudah_selesai / grandTotal.total_laporan) * 100 + ), formatNumber(grandTotal.total_laporan_belum_selesai), - formatPercentage((grandTotal.total_laporan_belum_selesai / grandTotal.total_laporan) * 100), + formatPercentage( + !grandTotal.total_laporan_belum_selesai || !grandTotal.total_laporan + ? '0%' + : (grandTotal.total_laporan_belum_selesai / grandTotal.total_laporan) * 100 + ), formatNumber(grandTotal.total_response_time_total), formatNumber( grandTotal.total_response_time_rata_rata.length