fix: formatPercentage in report rekapitulasi gangguan

This commit is contained in:
kur0nek-o 2024-03-30 13:37:44 +07:00
parent 2f399e53c3
commit 8577814bd4
5 changed files with 102 additions and 27 deletions

View File

@ -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) /

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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