diff --git a/src/components/Pages/PencarianData/PencarianData.vue b/src/components/Pages/PencarianData/PencarianData.vue
index 85064ad..a2ea09d 100755
--- a/src/components/Pages/PencarianData/PencarianData.vue
+++ b/src/components/Pages/PencarianData/PencarianData.vue
@@ -131,7 +131,7 @@
css-class="custom-table-column"
:width="170"
alignment="center"
- data-field=""
+ data-field="nama_regu"
caption="Petugas"
cell-template="formatText"
/>
@@ -223,7 +223,7 @@
Petugas:
-
+
diff --git a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.ts b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.ts
index 5b40e1e..a58469b 100644
--- a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.ts
+++ b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.ts
@@ -13,114 +13,82 @@ const reportName = '(Monalisa) Aging Complaint'
const fontSize = 5
const detailFontSize = 3
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- avg_durasi_recovery_gangguan: [],
- sla_gangguan: [],
- avg_durasi_recovery_keluhan: [],
- sla_keluhan: [],
- aging_complaint_gangguan: [],
- aging_complaint_keluhan: [],
- avg_aging_complaint: []
- }
- }
-
- groupedData[regional].summary.avg_durasi_recovery_gangguan.push(
- item.avg_durasi_recovery_gangguan
- )
- groupedData[regional].summary.sla_gangguan.push(item.sla_gangguan)
- groupedData[regional].summary.avg_durasi_recovery_keluhan.push(
- item.avg_durasi_recovery_keluhan
- )
- groupedData[regional].summary.sla_keluhan.push(item.sla_keluhan)
- groupedData[regional].summary.aging_complaint_gangguan.push(item.aging_complaint_gangguan)
- groupedData[regional].summary.aging_complaint_keluhan.push(item.aging_complaint_keluhan)
- groupedData[regional].summary.avg_aging_complaint.push(item.avg_aging_complaint)
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const key in groupedData) {
+ const data = groupedData[key].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[key].summary) {
+ groupedData[key].summary = {
+ avg_durasi_recovery_gangguan: [],
+ sla_gangguan: [],
+ avg_durasi_recovery_keluhan: [],
+ sla_keluhan: [],
+ aging_complaint_gangguan: [],
+ aging_complaint_keluhan: [],
+ avg_aging_complaint: []
+ }
+ }
+
+ groupedData[key].summary.avg_durasi_recovery_gangguan.push(item.avg_durasi_recovery_gangguan)
+ groupedData[key].summary.sla_gangguan.push(item.sla_gangguan)
+ groupedData[key].summary.avg_durasi_recovery_keluhan.push(item.avg_durasi_recovery_keluhan)
+ groupedData[key].summary.sla_keluhan.push(item.sla_keluhan)
+ groupedData[key].summary.aging_complaint_gangguan.push(item.aging_complaint_gangguan)
+ groupedData[key].summary.aging_complaint_keluhan.push(item.aging_complaint_keluhan)
+ groupedData[key].summary.avg_aging_complaint.push(item.avg_aging_complaint)
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -136,140 +104,85 @@ const formatData = (rawData: any, reportMeta: any) => {
avg_aging_complaint: []
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- formattedData.push([{ content: 'NASIONAL', colSpan: 8, styles: { fontStyle: 'bold' } }])
+ formattedData.push([{ content: title, colSpan: 8, styles: { fontStyle: 'bold' } }])
- for (const regional in data) {
- const summary = data[regional].summary
+ for (const regional in data) {
+ const summary = data[regional].summary
- const avg_durasi_recovery_gangguan =
- summary.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
- summary.avg_durasi_recovery_gangguan.length
- const sla_gangguan =
- summary.sla_gangguan.reduce((a: number, b: number) => a + b, 0) /
- summary.sla_gangguan.length
- const avg_durasi_recovery_keluhan =
- summary.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
- summary.avg_durasi_recovery_keluhan.length
- const sla_keluhan =
- summary.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / summary.sla_keluhan.length
- const aging_complaint_gangguan =
- summary.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
- summary.aging_complaint_gangguan.length
- const aging_complaint_keluhan =
- summary.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
- summary.aging_complaint_keluhan.length
- const avg_aging_complaint =
- summary.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
- summary.avg_aging_complaint.length
-
- formattedData.push([
- regional,
- formatNumber(avg_durasi_recovery_gangguan),
- formatNumber(sla_gangguan),
- formatNumber(avg_durasi_recovery_keluhan),
- formatNumber(sla_keluhan),
- formatPercentage(aging_complaint_gangguan),
- formatPercentage(aging_complaint_keluhan),
- formatPercentage(avg_aging_complaint)
- ])
-
- total.avg_durasi_recovery_gangguan.push(avg_durasi_recovery_gangguan)
- total.sla_gangguan.push(sla_gangguan)
- total.avg_durasi_recovery_keluhan.push(avg_durasi_recovery_keluhan)
- total.sla_keluhan.push(sla_keluhan)
- total.aging_complaint_gangguan.push(aging_complaint_gangguan)
- total.aging_complaint_keluhan.push(aging_complaint_keluhan)
- total.avg_aging_complaint.push(avg_aging_complaint)
- }
+ const avg_durasi_recovery_gangguan =
+ summary.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ summary.avg_durasi_recovery_gangguan.length
+ const sla_gangguan =
+ summary.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / summary.sla_gangguan.length
+ const avg_durasi_recovery_keluhan =
+ summary.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ summary.avg_durasi_recovery_keluhan.length
+ const sla_keluhan =
+ summary.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / summary.sla_keluhan.length
+ const aging_complaint_gangguan =
+ summary.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ summary.aging_complaint_gangguan.length
+ const aging_complaint_keluhan =
+ summary.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ summary.aging_complaint_keluhan.length
+ const avg_aging_complaint =
+ summary.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
+ summary.avg_aging_complaint.length
formattedData.push([
- { content: 'RATA-RATA', styles: { fontStyle: 'bold' } },
- formatNumber(
- total.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_gangguan.length
- ),
- formatNumber(
- total.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / total.sla_gangguan.length
- ),
- formatNumber(
- total.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_keluhan.length
- ),
- formatNumber(
- total.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / total.sla_keluhan.length
- ),
- formatPercentage(
- total.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_gangguan.length
- ),
- formatPercentage(
- total.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_keluhan.length
- ),
- formatPercentage(
- total.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
- total.avg_aging_complaint.length
- )
+ regional,
+ formatNumber(avg_durasi_recovery_gangguan),
+ formatNumber(sla_gangguan),
+ formatNumber(avg_durasi_recovery_keluhan),
+ formatNumber(sla_keluhan),
+ formatPercentage(aging_complaint_gangguan),
+ formatPercentage(aging_complaint_keluhan),
+ formatPercentage(avg_aging_complaint)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.avg_durasi_recovery_gangguan.push(item.avg_durasi_recovery_gangguan)
- total.sla_gangguan.push(item.sla_gangguan)
- total.avg_durasi_recovery_keluhan.push(item.avg_durasi_recovery_keluhan)
- total.sla_keluhan.push(item.sla_keluhan)
- total.aging_complaint_gangguan.push(item.aging_complaint_gangguan)
- total.aging_complaint_keluhan.push(item.aging_complaint_keluhan)
- total.avg_aging_complaint.push(item.avg_aging_complaint)
- })
-
- formattedData.push([{ content: parentName, colSpan: 8, styles: { fontStyle: 'bold' } }])
-
- const result = [
- formatNumber(
- total.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_gangguan.length
- ),
- formatNumber(
- total.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / total.sla_gangguan.length
- ),
- formatNumber(
- total.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_keluhan.length
- ),
- formatNumber(
- total.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / total.sla_keluhan.length
- ),
- formatPercentage(
- total.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_gangguan.length
- ),
- formatPercentage(
- total.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_keluhan.length
- ),
- formatPercentage(
- total.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
- total.avg_aging_complaint.length
- )
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'RATA-RATA', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.avg_durasi_recovery_gangguan.push(avg_durasi_recovery_gangguan)
+ total.sla_gangguan.push(sla_gangguan)
+ total.avg_durasi_recovery_keluhan.push(avg_durasi_recovery_keluhan)
+ total.sla_keluhan.push(sla_keluhan)
+ total.aging_complaint_gangguan.push(aging_complaint_gangguan)
+ total.aging_complaint_keluhan.push(aging_complaint_keluhan)
+ total.avg_aging_complaint.push(avg_aging_complaint)
}
+
+ formattedData.push([
+ { content: 'RATA-RATA', styles: { fontStyle: 'bold' } },
+ formatNumber(
+ total.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ total.avg_durasi_recovery_gangguan.length
+ ),
+ formatNumber(
+ total.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / total.sla_gangguan.length
+ ),
+ formatNumber(
+ total.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ total.avg_durasi_recovery_keluhan.length
+ ),
+ formatNumber(
+ total.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / total.sla_keluhan.length
+ ),
+ formatPercentage(
+ total.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ total.aging_complaint_gangguan.length
+ ),
+ formatPercentage(
+ total.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ total.aging_complaint_keluhan.length
+ ),
+ formatPercentage(
+ total.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
+ total.avg_aging_complaint.length
+ )
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_EnergyNotSales.ts b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_EnergyNotSales.ts
index 7f52f7a..9ac072f 100644
--- a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_EnergyNotSales.ts
+++ b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_EnergyNotSales.ts
@@ -10,102 +10,74 @@ import { exportToWord } from './doc/MonalisaLB_EnergyNotSales_DOC'
const reportName = '(Monalisa) Energy Not Sales (ENS)'
const fontSize = 5
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- terencana: 0,
- tidak_terencana: 0,
- bencana_alam: 0
- }
- }
-
- groupedData[regional].summary.terencana += item.terencana
- groupedData[regional].summary.tidak_terencana += item.tidak_terencana
- groupedData[regional].summary.bencana_alam += item.bencana_alam
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const key in groupedData) {
+ const data = groupedData[key].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[key].summary) {
+ groupedData[key].summary = {
+ terencana: 0,
+ tidak_terencana: 0,
+ bencana_alam: 0
+ }
+ }
+
+ groupedData[key].summary.terencana += item.terencana
+ groupedData[key].summary.tidak_terencana += item.tidak_terencana
+ groupedData[key].summary.bencana_alam += item.bencana_alam
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -117,73 +89,38 @@ const formatData = (rawData: any, reportMeta: any) => {
bencana_alam: 0
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- const total: any = {
- terencana: 0,
- tidak_terencana: 0,
- bencana_alam: 0
- }
+ formattedData.push([{ content: title, colSpan: 6, styles: { fontStyle: 'bold' } }])
- formattedData.push([{ content: 'NASIONAL', colSpan: 6, styles: { fontStyle: 'bold' } }])
-
- for (const regional in data) {
- const summary = data[regional].summary
-
- formattedData.push([
- regional,
- formatNumber(summary.terencana),
- formatNumber(summary.tidak_terencana),
- formatNumber(summary.bencana_alam),
- formatNumber(summary.terencana + summary.tidak_terencana + summary.bencana_alam),
- formatNumber(summary.terencana + summary.tidak_terencana)
- ])
-
- total.terencana += summary.terencana
- total.tidak_terencana += summary.tidak_terencana
- total.bencana_alam += summary.bencana_alam
- }
+ for (const key in data) {
+ const summary = data[key].summary
formattedData.push([
- { content: 'TOTAL', styles: { fontStyle: 'bold' } },
- formatNumber(total.terencana),
- formatNumber(total.tidak_terencana),
- formatNumber(total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana + total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana)
+ key,
+ formatNumber(summary.terencana),
+ formatNumber(summary.tidak_terencana),
+ formatNumber(summary.bencana_alam),
+ formatNumber(summary.terencana + summary.tidak_terencana + summary.bencana_alam),
+ formatNumber(summary.terencana + summary.tidak_terencana)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.terencana += item.terencana
- total.tidak_terencana += item.tidak_terencana
- total.bencana_alam += item.bencana_alam
- })
-
- formattedData.push([{ content: parentName, colSpan: 6, styles: { fontStyle: 'bold' } }])
-
- const result = [
- formatNumber(total.terencana),
- formatNumber(total.tidak_terencana),
- formatNumber(total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana + total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana)
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'TOTAL', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.terencana += summary.terencana
+ total.tidak_terencana += summary.tidak_terencana
+ total.bencana_alam += summary.bencana_alam
}
+
+ formattedData.push([
+ { content: 'TOTAL', styles: { fontStyle: 'bold' } },
+ formatNumber(total.terencana),
+ formatNumber(total.tidak_terencana),
+ formatNumber(total.bencana_alam),
+ formatNumber(total.terencana + total.tidak_terencana + total.bencana_alam),
+ formatNumber(total.terencana + total.tidak_terencana)
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_KADDalamPelaporan.ts b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_KADDalamPelaporan.ts
index cee2a48..d58ed2a 100644
--- a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_KADDalamPelaporan.ts
+++ b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_KADDalamPelaporan.ts
@@ -11,104 +11,76 @@ import { exportToWord } from './doc/MonalisaLB_KADDalamPelaporan_DOC'
const reportName = '(Monalisa) Kepatuhan dan Akurasi Dalam Pelaporan'
const fontSize = 5
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- gangguan_berulang: 0,
- gangguan_total: 0,
- keluhan_berulang: 0,
- keluhan_total: 0
- }
- }
-
- groupedData[regional].summary.gangguan_berulang += item.gangguan_berulang
- groupedData[regional].summary.gangguan_total += item.gangguan_total
- groupedData[regional].summary.keluhan_berulang += item.keluhan_berulang
- groupedData[regional].summary.keluhan_total += item.keluhan_total
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const key in groupedData) {
+ const data = groupedData[key].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[key].summary) {
+ groupedData[key].summary = {
+ gangguan_berulang: 0,
+ gangguan_total: 0,
+ keluhan_berulang: 0,
+ keluhan_total: 0
+ }
+ }
+
+ groupedData[key].summary.gangguan_berulang += item.gangguan_berulang
+ groupedData[key].summary.gangguan_total += item.gangguan_total
+ groupedData[key].summary.keluhan_berulang += item.keluhan_berulang
+ groupedData[key].summary.keluhan_total += item.keluhan_total
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -121,97 +93,57 @@ const formatData = (rawData: any, reportMeta: any) => {
keluhan_total: 0
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- formattedData.push([{ content: 'NASIONAL', colSpan: 6, styles: { fontStyle: 'bold' } }])
+ formattedData.push([{ content: title, colSpan: 6, styles: { fontStyle: 'bold' } }])
- for (const regional in data) {
- const summary = data[regional].summary
+ for (const regional in data) {
+ const summary = data[regional].summary
- const komplain_pelanggan =
- ((summary.gangguan_berulang / summary.gangguan_total +
- summary.keluhan_berulang / summary.keluhan_total) /
- 2) *
- 100
-
- formattedData.push([
- regional,
- formatNumber(summary.gangguan_berulang),
- formatNumber(summary.gangguan_total),
- formatNumber(summary.keluhan_berulang),
- formatNumber(summary.keluhan_total),
- formatPercentage(
- !komplain_pelanggan || !!isFinite(komplain_pelanggan) ? 0 : komplain_pelanggan
- )
- ])
-
- total.gangguan_berulang += summary.gangguan_berulang
- total.gangguan_total += summary.gangguan_total
- total.keluhan_berulang += summary.keluhan_berulang
- total.keluhan_total += summary.keluhan_total
- }
-
- const total_komplain_pelanggan =
- ((total.gangguan_berulang / total.gangguan_total +
- total.keluhan_berulang / total.keluhan_total) /
+ const komplain_pelanggan =
+ ((summary.gangguan_berulang / summary.gangguan_total +
+ summary.keluhan_berulang / summary.keluhan_total) /
2) *
100
formattedData.push([
- { content: 'TOTAL', styles: { fontStyle: 'bold' } },
- formatNumber(total.gangguan_berulang),
- formatNumber(total.gangguan_total),
- formatNumber(total.keluhan_berulang),
- formatNumber(total.keluhan_total),
+ regional,
+ formatNumber(summary.gangguan_berulang),
+ formatNumber(summary.gangguan_total),
+ formatNumber(summary.keluhan_berulang),
+ formatNumber(summary.keluhan_total),
formatPercentage(
- !total_komplain_pelanggan || !!isFinite(total_komplain_pelanggan)
- ? 0
- : total_komplain_pelanggan
+ !komplain_pelanggan || !!isFinite(komplain_pelanggan) ? 0 : komplain_pelanggan
)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.gangguan_berulang += item.gangguan_berulang
- total.gangguan_total += item.gangguan_total
- total.keluhan_berulang += item.keluhan_berulang
- total.keluhan_total += item.keluhan_total
- })
-
- formattedData.push([{ content: parentName, colSpan: 6, styles: { fontStyle: 'bold' } }])
-
- const total_komplain_pelanggan =
- ((total.gangguan_berulang / total.gangguan_total +
- total.keluhan_berulang / total.keluhan_total) /
- 2) *
- 100
-
- const result = [
- formatNumber(total.gangguan_berulang),
- formatNumber(total.gangguan_total),
- formatNumber(total.keluhan_berulang),
- formatNumber(total.keluhan_total),
- formatPercentage(
- !total_komplain_pelanggan || !!isFinite(total_komplain_pelanggan)
- ? 0
- : total_komplain_pelanggan
- )
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'TOTAL', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.gangguan_berulang += summary.gangguan_berulang
+ total.gangguan_total += summary.gangguan_total
+ total.keluhan_berulang += summary.keluhan_berulang
+ total.keluhan_total += summary.keluhan_total
}
+
+ const total_komplain_pelanggan =
+ ((total.gangguan_berulang / total.gangguan_total +
+ total.keluhan_berulang / total.keluhan_total) /
+ 2) *
+ 100
+
+ formattedData.push([
+ { content: 'TOTAL', styles: { fontStyle: 'bold' } },
+ formatNumber(total.gangguan_berulang),
+ formatNumber(total.gangguan_total),
+ formatNumber(total.keluhan_berulang),
+ formatNumber(total.keluhan_total),
+ formatPercentage(
+ !total_komplain_pelanggan || !!isFinite(total_komplain_pelanggan)
+ ? 0
+ : total_komplain_pelanggan
+ )
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_PenurunanJumlahKomplain.ts b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_PenurunanJumlahKomplain.ts
index 7f4856e..5348521 100644
--- a/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_PenurunanJumlahKomplain.ts
+++ b/src/report/Monalisa/Laporan/Bulanan/MonalisaLB_PenurunanJumlahKomplain.ts
@@ -13,129 +13,101 @@ const reportName = '(Monalisa) Penurunan Jumlah Komplain'
const fontSize = 5
const detailFontSize = 3
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- total_keluhan_tahun_sebelumnya: 0,
- total_gangguan_tahun_sebelumnya: 0,
- total_keluhan_informasi_tahun_sebelumnya: 0,
- total_gangguan_informasi_tahun_sebelumnya: 0,
- // total_informasi_tahun_sebelumnya
- // total_tahun_sebelumnya
- total_keluhan_tahun_ini: 0,
- total_gangguan_tahun_ini: 0,
- total_keluhan_informasi_tahun_ini: 0,
- total_gangguan_informasi_tahun_ini: 0
- // total_informasi_tahun_ini
- // total_tahun_ini
- // delta_keluhan
- // delta_gangguan
- // delta_informasi
- // persen_delta_keluhan
- // persen_delta_gangguan
- // persen_delta_informasi
- // persen_delta_total
- }
- }
-
- groupedData[regional].summary.total_keluhan_tahun_sebelumnya +=
- item.total_keluhan_tahun_sebelumnya
- groupedData[regional].summary.total_gangguan_tahun_sebelumnya +=
- item.total_gangguan_tahun_sebelumnya
- groupedData[regional].summary.total_keluhan_informasi_tahun_sebelumnya +=
- item.total_keluhan_informasi_tahun_sebelumnya
- groupedData[regional].summary.total_gangguan_informasi_tahun_sebelumnya +=
- item.total_gangguan_informasi_tahun_sebelumnya
- groupedData[regional].summary.total_keluhan_tahun_ini += item.total_keluhan_tahun_ini
- groupedData[regional].summary.total_gangguan_tahun_ini += item.total_gangguan_tahun_ini
- groupedData[regional].summary.total_keluhan_informasi_tahun_ini +=
- item.total_keluhan_informasi_tahun_ini
- groupedData[regional].summary.total_gangguan_informasi_tahun_ini +=
- item.total_gangguan_informasi_tahun_ini
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const regional in groupedData) {
+ const data = groupedData[regional].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[regional].summary) {
+ groupedData[regional].summary = {
+ total_keluhan_tahun_sebelumnya: 0,
+ total_gangguan_tahun_sebelumnya: 0,
+ total_keluhan_informasi_tahun_sebelumnya: 0,
+ total_gangguan_informasi_tahun_sebelumnya: 0,
+ // total_informasi_tahun_sebelumnya
+ // total_tahun_sebelumnya
+ total_keluhan_tahun_ini: 0,
+ total_gangguan_tahun_ini: 0,
+ total_keluhan_informasi_tahun_ini: 0,
+ total_gangguan_informasi_tahun_ini: 0
+ // total_informasi_tahun_ini
+ // total_tahun_ini
+ // delta_keluhan
+ // delta_gangguan
+ // delta_informasi
+ // persen_delta_keluhan
+ // persen_delta_gangguan
+ // persen_delta_informasi
+ // persen_delta_total
+ }
+ }
+
+ groupedData[regional].summary.total_keluhan_tahun_sebelumnya +=
+ item.total_keluhan_tahun_sebelumnya
+ groupedData[regional].summary.total_gangguan_tahun_sebelumnya +=
+ item.total_gangguan_tahun_sebelumnya
+ groupedData[regional].summary.total_keluhan_informasi_tahun_sebelumnya +=
+ item.total_keluhan_informasi_tahun_sebelumnya
+ groupedData[regional].summary.total_gangguan_informasi_tahun_sebelumnya +=
+ item.total_gangguan_informasi_tahun_sebelumnya
+ groupedData[regional].summary.total_keluhan_tahun_ini += item.total_keluhan_tahun_ini
+ groupedData[regional].summary.total_gangguan_tahun_ini += item.total_gangguan_tahun_ini
+ groupedData[regional].summary.total_keluhan_informasi_tahun_ini +=
+ item.total_keluhan_informasi_tahun_ini
+ groupedData[regional].summary.total_gangguan_informasi_tahun_ini +=
+ item.total_gangguan_informasi_tahun_ini
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -163,112 +135,47 @@ const formatData = (rawData: any, reportMeta: any) => {
// persen_delta_total
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- formattedData.push([{ content: 'NASIONAL', colSpan: 20, styles: { fontStyle: 'bold' } }])
+ formattedData.push([{ content: title, colSpan: 20, styles: { fontStyle: 'bold' } }])
- let no = 1
- for (const regional in data) {
- const summary = data[regional].summary
-
- const total_informasi_tahun_sebelumnya =
- summary.total_keluhan_informasi_tahun_sebelumnya +
- summary.total_gangguan_informasi_tahun_sebelumnya
- const total_tahun_sebelumnya =
- summary.total_keluhan_tahun_sebelumnya +
- summary.total_gangguan_tahun_sebelumnya +
- total_informasi_tahun_sebelumnya
- const total_informasi_tahun_ini =
- summary.total_keluhan_informasi_tahun_ini + summary.total_gangguan_informasi_tahun_ini
- const total_tahun_ini =
- summary.total_keluhan_tahun_ini +
- summary.total_gangguan_tahun_ini +
- total_informasi_tahun_ini
- const delta_keluhan = summary.total_keluhan_tahun_sebelumnya - summary.total_keluhan_tahun_ini
- const delta_gangguan =
- summary.total_gangguan_tahun_sebelumnya - summary.total_gangguan_tahun_ini
- const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
- const persen_delta_keluhan = 40 * (delta_keluhan / summary.total_keluhan_tahun_sebelumnya)
- const persen_delta_gangguan = 40 * (delta_gangguan / summary.total_gangguan_tahun_sebelumnya)
- const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
- const persen_delta_total =
- persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
-
- formattedData.push([
- regional,
- formatNumber(summary.total_keluhan_tahun_sebelumnya),
- formatNumber(summary.total_gangguan_tahun_sebelumnya),
- formatNumber(summary.total_keluhan_informasi_tahun_sebelumnya),
- formatNumber(summary.total_gangguan_informasi_tahun_sebelumnya),
- formatNumber(total_informasi_tahun_sebelumnya),
- formatNumber(total_tahun_sebelumnya),
- formatNumber(summary.total_keluhan_tahun_ini),
- formatNumber(summary.total_gangguan_tahun_ini),
- formatNumber(summary.total_keluhan_informasi_tahun_ini),
- formatNumber(summary.total_gangguan_informasi_tahun_ini),
- formatNumber(total_informasi_tahun_ini),
- formatNumber(total_tahun_ini),
- formatNumber(delta_keluhan),
- formatNumber(delta_gangguan),
- formatNumber(delta_informasi),
- formatPercentage(
- !persen_delta_keluhan || !!isFinite(persen_delta_keluhan) ? 0 : persen_delta_keluhan
- ),
- formatPercentage(
- !persen_delta_gangguan || !!isFinite(persen_delta_gangguan) ? 0 : persen_delta_gangguan
- ),
- formatPercentage(
- !persen_delta_informasi || !!isFinite(persen_delta_informasi) ? 0 : persen_delta_informasi
- ),
- formatPercentage(
- !persen_delta_total || !!isFinite(persen_delta_total) ? 0 : persen_delta_total
- )
- ])
-
- total.total_keluhan_tahun_sebelumnya += summary.total_keluhan_tahun_sebelumnya
- total.total_gangguan_tahun_sebelumnya += summary.total_gangguan_tahun_sebelumnya
- total.total_keluhan_informasi_tahun_sebelumnya +=
- summary.total_keluhan_informasi_tahun_sebelumnya
- total.total_gangguan_informasi_tahun_sebelumnya +=
- summary.total_gangguan_informasi_tahun_sebelumnya
- total.total_keluhan_tahun_ini += summary.total_keluhan_tahun_ini
- total.total_gangguan_tahun_ini += summary.total_gangguan_tahun_ini
- total.total_keluhan_informasi_tahun_ini += summary.total_keluhan_informasi_tahun_ini
- total.total_gangguan_informasi_tahun_ini += summary.total_gangguan_informasi_tahun_ini
- }
+ let no = 1
+ for (const regional in data) {
+ const summary = data[regional].summary
const total_informasi_tahun_sebelumnya =
- total.total_keluhan_informasi_tahun_sebelumnya +
- total.total_gangguan_informasi_tahun_sebelumnya
+ summary.total_keluhan_informasi_tahun_sebelumnya +
+ summary.total_gangguan_informasi_tahun_sebelumnya
const total_tahun_sebelumnya =
- total.total_keluhan_tahun_sebelumnya +
- total.total_gangguan_tahun_sebelumnya +
+ summary.total_keluhan_tahun_sebelumnya +
+ summary.total_gangguan_tahun_sebelumnya +
total_informasi_tahun_sebelumnya
const total_informasi_tahun_ini =
- total.total_keluhan_informasi_tahun_ini + total.total_gangguan_informasi_tahun_ini
+ summary.total_keluhan_informasi_tahun_ini + summary.total_gangguan_informasi_tahun_ini
const total_tahun_ini =
- total.total_keluhan_tahun_ini + total.total_gangguan_tahun_ini + total_informasi_tahun_ini
- const delta_keluhan = total.total_keluhan_tahun_sebelumnya - total.total_keluhan_tahun_ini
- const delta_gangguan = total.total_gangguan_tahun_sebelumnya - total.total_gangguan_tahun_ini
+ summary.total_keluhan_tahun_ini + summary.total_gangguan_tahun_ini + total_informasi_tahun_ini
+ const delta_keluhan = summary.total_keluhan_tahun_sebelumnya - summary.total_keluhan_tahun_ini
+ const delta_gangguan =
+ summary.total_gangguan_tahun_sebelumnya - summary.total_gangguan_tahun_ini
const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
- const persen_delta_keluhan = 40 * (delta_keluhan / total.total_keluhan_tahun_sebelumnya)
- const persen_delta_gangguan = 40 * (delta_gangguan / total.total_gangguan_tahun_sebelumnya)
+ const persen_delta_keluhan = 40 * (delta_keluhan / summary.total_keluhan_tahun_sebelumnya)
+ const persen_delta_gangguan = 40 * (delta_gangguan / summary.total_gangguan_tahun_sebelumnya)
const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
const persen_delta_total = persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
formattedData.push([
- { content: 'TOTAL', styles: { fontStyle: 'bold' } },
- formatNumber(total.total_keluhan_tahun_sebelumnya),
- formatNumber(total.total_gangguan_tahun_sebelumnya),
- formatNumber(total.total_keluhan_informasi_tahun_sebelumnya),
- formatNumber(total.total_gangguan_informasi_tahun_sebelumnya),
+ regional,
+ formatNumber(summary.total_keluhan_tahun_sebelumnya),
+ formatNumber(summary.total_gangguan_tahun_sebelumnya),
+ formatNumber(summary.total_keluhan_informasi_tahun_sebelumnya),
+ formatNumber(summary.total_gangguan_informasi_tahun_sebelumnya),
formatNumber(total_informasi_tahun_sebelumnya),
formatNumber(total_tahun_sebelumnya),
- formatNumber(total.total_keluhan_tahun_ini),
- formatNumber(total.total_gangguan_tahun_ini),
- formatNumber(total.total_keluhan_informasi_tahun_ini),
- formatNumber(total.total_gangguan_informasi_tahun_ini),
+ formatNumber(summary.total_keluhan_tahun_ini),
+ formatNumber(summary.total_gangguan_tahun_ini),
+ formatNumber(summary.total_keluhan_informasi_tahun_ini),
+ formatNumber(summary.total_gangguan_informasi_tahun_ini),
formatNumber(total_informasi_tahun_ini),
formatNumber(total_tahun_ini),
formatNumber(delta_keluhan),
@@ -288,84 +195,66 @@ const formatData = (rawData: any, reportMeta: any) => {
)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.total_keluhan_tahun_sebelumnya += item.total_keluhan_tahun_sebelumnya
- total.total_gangguan_tahun_sebelumnya += item.total_gangguan_tahun_sebelumnya
- total.total_keluhan_informasi_tahun_sebelumnya +=
- item.total_keluhan_informasi_tahun_sebelumnya
- total.total_gangguan_informasi_tahun_sebelumnya +=
- item.total_gangguan_informasi_tahun_sebelumnya
- total.total_keluhan_tahun_ini += item.total_keluhan_tahun_ini
- total.total_gangguan_tahun_ini += item.total_gangguan_tahun_ini
- total.total_keluhan_informasi_tahun_ini += item.total_keluhan_informasi_tahun_ini
- total.total_gangguan_informasi_tahun_ini += item.total_gangguan_informasi_tahun_ini
- })
-
- formattedData.push([{ content: parentName, colSpan: 20, styles: { fontStyle: 'bold' } }])
-
- const total_informasi_tahun_sebelumnya =
- total.total_keluhan_informasi_tahun_sebelumnya +
- total.total_gangguan_informasi_tahun_sebelumnya
- const total_tahun_sebelumnya =
- total.total_keluhan_tahun_sebelumnya +
- total.total_gangguan_tahun_sebelumnya +
- total_informasi_tahun_sebelumnya
- const total_informasi_tahun_ini =
- total.total_keluhan_informasi_tahun_ini + total.total_gangguan_informasi_tahun_ini
- const total_tahun_ini =
- total.total_keluhan_tahun_ini + total.total_gangguan_tahun_ini + total_informasi_tahun_ini
- const delta_keluhan = total.total_keluhan_tahun_sebelumnya - total.total_keluhan_tahun_ini
- const delta_gangguan = total.total_gangguan_tahun_sebelumnya - total.total_gangguan_tahun_ini
- const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
- const persen_delta_keluhan = 40 * (delta_keluhan / total.total_keluhan_tahun_sebelumnya)
- const persen_delta_gangguan = 40 * (delta_gangguan / total.total_gangguan_tahun_sebelumnya)
- const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
- const persen_delta_total = persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
-
- const result = [
- formatNumber(total.total_keluhan_tahun_sebelumnya),
- formatNumber(total.total_gangguan_tahun_sebelumnya),
- formatNumber(total.total_keluhan_informasi_tahun_sebelumnya),
- formatNumber(total.total_gangguan_informasi_tahun_sebelumnya),
- formatNumber(total_informasi_tahun_sebelumnya),
- formatNumber(total_tahun_sebelumnya),
- formatNumber(total.total_keluhan_tahun_ini),
- formatNumber(total.total_gangguan_tahun_ini),
- formatNumber(total.total_keluhan_informasi_tahun_ini),
- formatNumber(total.total_gangguan_informasi_tahun_ini),
- formatNumber(total_informasi_tahun_ini),
- formatNumber(total_tahun_ini),
- formatNumber(delta_keluhan),
- formatNumber(delta_gangguan),
- formatNumber(delta_informasi),
- formatPercentage(
- !persen_delta_keluhan || !!isFinite(persen_delta_keluhan) ? 0 : persen_delta_keluhan
- ),
- formatPercentage(
- !persen_delta_gangguan || !!isFinite(persen_delta_gangguan) ? 0 : persen_delta_gangguan
- ),
- formatPercentage(
- !persen_delta_informasi || !!isFinite(persen_delta_informasi) ? 0 : persen_delta_informasi
- ),
- formatPercentage(
- !persen_delta_total || !!isFinite(persen_delta_total) ? 0 : persen_delta_total
- )
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'TOTAL', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.total_keluhan_tahun_sebelumnya += summary.total_keluhan_tahun_sebelumnya
+ total.total_gangguan_tahun_sebelumnya += summary.total_gangguan_tahun_sebelumnya
+ total.total_keluhan_informasi_tahun_sebelumnya +=
+ summary.total_keluhan_informasi_tahun_sebelumnya
+ total.total_gangguan_informasi_tahun_sebelumnya +=
+ summary.total_gangguan_informasi_tahun_sebelumnya
+ total.total_keluhan_tahun_ini += summary.total_keluhan_tahun_ini
+ total.total_gangguan_tahun_ini += summary.total_gangguan_tahun_ini
+ total.total_keluhan_informasi_tahun_ini += summary.total_keluhan_informasi_tahun_ini
+ total.total_gangguan_informasi_tahun_ini += summary.total_gangguan_informasi_tahun_ini
}
+
+ const total_informasi_tahun_sebelumnya =
+ total.total_keluhan_informasi_tahun_sebelumnya + total.total_gangguan_informasi_tahun_sebelumnya
+ const total_tahun_sebelumnya =
+ total.total_keluhan_tahun_sebelumnya +
+ total.total_gangguan_tahun_sebelumnya +
+ total_informasi_tahun_sebelumnya
+ const total_informasi_tahun_ini =
+ total.total_keluhan_informasi_tahun_ini + total.total_gangguan_informasi_tahun_ini
+ const total_tahun_ini =
+ total.total_keluhan_tahun_ini + total.total_gangguan_tahun_ini + total_informasi_tahun_ini
+ const delta_keluhan = total.total_keluhan_tahun_sebelumnya - total.total_keluhan_tahun_ini
+ const delta_gangguan = total.total_gangguan_tahun_sebelumnya - total.total_gangguan_tahun_ini
+ const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
+ const persen_delta_keluhan = 40 * (delta_keluhan / total.total_keluhan_tahun_sebelumnya)
+ const persen_delta_gangguan = 40 * (delta_gangguan / total.total_gangguan_tahun_sebelumnya)
+ const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
+ const persen_delta_total = persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
+
+ formattedData.push([
+ { content: 'TOTAL', styles: { fontStyle: 'bold' } },
+ formatNumber(total.total_keluhan_tahun_sebelumnya),
+ formatNumber(total.total_gangguan_tahun_sebelumnya),
+ formatNumber(total.total_keluhan_informasi_tahun_sebelumnya),
+ formatNumber(total.total_gangguan_informasi_tahun_sebelumnya),
+ formatNumber(total_informasi_tahun_sebelumnya),
+ formatNumber(total_tahun_sebelumnya),
+ formatNumber(total.total_keluhan_tahun_ini),
+ formatNumber(total.total_gangguan_tahun_ini),
+ formatNumber(total.total_keluhan_informasi_tahun_ini),
+ formatNumber(total.total_gangguan_informasi_tahun_ini),
+ formatNumber(total_informasi_tahun_ini),
+ formatNumber(total_tahun_ini),
+ formatNumber(delta_keluhan),
+ formatNumber(delta_gangguan),
+ formatNumber(delta_informasi),
+ formatPercentage(
+ !persen_delta_keluhan || !!isFinite(persen_delta_keluhan) ? 0 : persen_delta_keluhan
+ ),
+ formatPercentage(
+ !persen_delta_gangguan || !!isFinite(persen_delta_gangguan) ? 0 : persen_delta_gangguan
+ ),
+ formatPercentage(
+ !persen_delta_informasi || !!isFinite(persen_delta_informasi) ? 0 : persen_delta_informasi
+ ),
+ formatPercentage(!persen_delta_total || !!isFinite(persen_delta_total) ? 0 : persen_delta_total)
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_AgingComplaint.ts b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_AgingComplaint.ts
index 7a6267e..6eeddd0 100644
--- a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_AgingComplaint.ts
+++ b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_AgingComplaint.ts
@@ -11,114 +11,86 @@ import { exportToWord } from './doc/MonalisaLK_AgingComplaint_DOC'
const reportName = 'Aging Complaint'
const fontSize = 5
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- avg_durasi_recovery_gangguan: [],
- sla_gangguan: [],
- avg_durasi_recovery_keluhan: [],
- sla_keluhan: [],
- aging_complaint_gangguan: [],
- aging_complaint_keluhan: [],
- avg_aging_complaint: []
- }
- }
-
- groupedData[regional].summary.avg_durasi_recovery_gangguan.push(
- item.avg_durasi_recovery_gangguan
- )
- groupedData[regional].summary.sla_gangguan.push(item.sla_gangguan)
- groupedData[regional].summary.avg_durasi_recovery_keluhan.push(
- item.avg_durasi_recovery_keluhan
- )
- groupedData[regional].summary.sla_keluhan.push(item.sla_keluhan)
- groupedData[regional].summary.aging_complaint_gangguan.push(item.aging_complaint_gangguan)
- groupedData[regional].summary.aging_complaint_keluhan.push(item.aging_complaint_keluhan)
- groupedData[regional].summary.avg_aging_complaint.push(item.avg_aging_complaint)
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const regional in groupedData) {
+ const data = groupedData[regional].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[regional].summary) {
+ groupedData[regional].summary = {
+ avg_durasi_recovery_gangguan: [],
+ sla_gangguan: [],
+ avg_durasi_recovery_keluhan: [],
+ sla_keluhan: [],
+ aging_complaint_gangguan: [],
+ aging_complaint_keluhan: [],
+ avg_aging_complaint: []
+ }
+ }
+
+ groupedData[regional].summary.avg_durasi_recovery_gangguan.push(
+ item.avg_durasi_recovery_gangguan
+ )
+ groupedData[regional].summary.sla_gangguan.push(item.sla_gangguan)
+ groupedData[regional].summary.avg_durasi_recovery_keluhan.push(
+ item.avg_durasi_recovery_keluhan
+ )
+ groupedData[regional].summary.sla_keluhan.push(item.sla_keluhan)
+ groupedData[regional].summary.aging_complaint_gangguan.push(item.aging_complaint_gangguan)
+ groupedData[regional].summary.aging_complaint_keluhan.push(item.aging_complaint_keluhan)
+ groupedData[regional].summary.avg_aging_complaint.push(item.avg_aging_complaint)
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -134,141 +106,85 @@ const formatData = (rawData: any, reportMeta: any) => {
avg_aging_complaint: []
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
- const formattedData: any = []
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- formattedData.push([{ content: 'NASIONAL', colSpan: 8, styles: { fontStyle: 'bold' } }])
+ formattedData.push([{ content: title, colSpan: 8, styles: { fontStyle: 'bold' } }])
- for (const regional in data) {
- const summary = data[regional].summary
+ for (const regional in data) {
+ const summary = data[regional].summary
- const avg_durasi_recovery_gangguan =
- summary.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
- summary.avg_durasi_recovery_gangguan.length
- const sla_gangguan =
- summary.sla_gangguan.reduce((a: number, b: number) => a + b, 0) /
- summary.sla_gangguan.length
- const avg_durasi_recovery_keluhan =
- summary.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
- summary.avg_durasi_recovery_keluhan.length
- const sla_keluhan =
- summary.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / summary.sla_keluhan.length
- const aging_complaint_gangguan =
- summary.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
- summary.aging_complaint_gangguan.length
- const aging_complaint_keluhan =
- summary.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
- summary.aging_complaint_keluhan.length
- const avg_aging_complaint =
- summary.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
- summary.avg_aging_complaint.length
-
- formattedData.push([
- regional,
- formatNumber(avg_durasi_recovery_gangguan),
- formatNumber(sla_gangguan),
- formatNumber(avg_durasi_recovery_keluhan),
- formatNumber(sla_keluhan),
- formatPercentage(aging_complaint_gangguan),
- formatPercentage(aging_complaint_keluhan),
- formatPercentage(avg_aging_complaint)
- ])
-
- total.avg_durasi_recovery_gangguan.push(avg_durasi_recovery_gangguan)
- total.sla_gangguan.push(sla_gangguan)
- total.avg_durasi_recovery_keluhan.push(avg_durasi_recovery_keluhan)
- total.sla_keluhan.push(sla_keluhan)
- total.aging_complaint_gangguan.push(aging_complaint_gangguan)
- total.aging_complaint_keluhan.push(aging_complaint_keluhan)
- total.avg_aging_complaint.push(avg_aging_complaint)
- }
+ const avg_durasi_recovery_gangguan =
+ summary.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ summary.avg_durasi_recovery_gangguan.length
+ const sla_gangguan =
+ summary.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / summary.sla_gangguan.length
+ const avg_durasi_recovery_keluhan =
+ summary.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ summary.avg_durasi_recovery_keluhan.length
+ const sla_keluhan =
+ summary.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / summary.sla_keluhan.length
+ const aging_complaint_gangguan =
+ summary.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ summary.aging_complaint_gangguan.length
+ const aging_complaint_keluhan =
+ summary.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ summary.aging_complaint_keluhan.length
+ const avg_aging_complaint =
+ summary.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
+ summary.avg_aging_complaint.length
formattedData.push([
- { content: 'RATA-RATA', styles: { fontStyle: 'bold' } },
- formatNumber(
- total.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_gangguan.length
- ),
- formatNumber(
- total.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / total.sla_gangguan.length
- ),
- formatNumber(
- total.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_keluhan.length
- ),
- formatNumber(
- total.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / total.sla_keluhan.length
- ),
- formatPercentage(
- total.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_gangguan.length
- ),
- formatPercentage(
- total.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_keluhan.length
- ),
- formatPercentage(
- total.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
- total.avg_aging_complaint.length
- )
+ regional,
+ formatNumber(avg_durasi_recovery_gangguan),
+ formatNumber(sla_gangguan),
+ formatNumber(avg_durasi_recovery_keluhan),
+ formatNumber(sla_keluhan),
+ formatPercentage(aging_complaint_gangguan),
+ formatPercentage(aging_complaint_keluhan),
+ formatPercentage(avg_aging_complaint)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.avg_durasi_recovery_gangguan.push(item.avg_durasi_recovery_gangguan)
- total.sla_gangguan.push(item.sla_gangguan)
- total.avg_durasi_recovery_keluhan.push(item.avg_durasi_recovery_keluhan)
- total.sla_keluhan.push(item.sla_keluhan)
- total.aging_complaint_gangguan.push(item.aging_complaint_gangguan)
- total.aging_complaint_keluhan.push(item.aging_complaint_keluhan)
- total.avg_aging_complaint.push(item.avg_aging_complaint)
- })
-
- formattedData.push([{ content: parentName, colSpan: 8, styles: { fontStyle: 'bold' } }])
-
- const result = [
- formatNumber(
- total.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_gangguan.length
- ),
- formatNumber(
- total.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / total.sla_gangguan.length
- ),
- formatNumber(
- total.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.avg_durasi_recovery_keluhan.length
- ),
- formatNumber(
- total.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / total.sla_keluhan.length
- ),
- formatPercentage(
- total.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_gangguan.length
- ),
- formatPercentage(
- total.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
- total.aging_complaint_keluhan.length
- ),
- formatPercentage(
- total.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
- total.avg_aging_complaint.length
- )
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'RATA-RATA', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.avg_durasi_recovery_gangguan.push(avg_durasi_recovery_gangguan)
+ total.sla_gangguan.push(sla_gangguan)
+ total.avg_durasi_recovery_keluhan.push(avg_durasi_recovery_keluhan)
+ total.sla_keluhan.push(sla_keluhan)
+ total.aging_complaint_gangguan.push(aging_complaint_gangguan)
+ total.aging_complaint_keluhan.push(aging_complaint_keluhan)
+ total.avg_aging_complaint.push(avg_aging_complaint)
}
+
+ formattedData.push([
+ { content: 'RATA-RATA', styles: { fontStyle: 'bold' } },
+ formatNumber(
+ total.avg_durasi_recovery_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ total.avg_durasi_recovery_gangguan.length
+ ),
+ formatNumber(
+ total.sla_gangguan.reduce((a: number, b: number) => a + b, 0) / total.sla_gangguan.length
+ ),
+ formatNumber(
+ total.avg_durasi_recovery_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ total.avg_durasi_recovery_keluhan.length
+ ),
+ formatNumber(
+ total.sla_keluhan.reduce((a: number, b: number) => a + b, 0) / total.sla_keluhan.length
+ ),
+ formatPercentage(
+ total.aging_complaint_gangguan.reduce((a: number, b: number) => a + b, 0) /
+ total.aging_complaint_gangguan.length
+ ),
+ formatPercentage(
+ total.aging_complaint_keluhan.reduce((a: number, b: number) => a + b, 0) /
+ total.aging_complaint_keluhan.length
+ ),
+ formatPercentage(
+ total.avg_aging_complaint.reduce((a: number, b: number) => a + b, 0) /
+ total.avg_aging_complaint.length
+ )
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_EnergyNotSales.ts b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_EnergyNotSales.ts
index 56d0e6f..3729aac 100644
--- a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_EnergyNotSales.ts
+++ b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_EnergyNotSales.ts
@@ -10,102 +10,74 @@ import { exportToWord } from './doc/MonalisaLK_EnergyNotSales_DOC'
const reportName = 'Energy Not Sales (ENS)'
const fontSize = 5
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- terencana: 0,
- tidak_terencana: 0,
- bencana_alam: 0
- }
- }
-
- groupedData[regional].summary.terencana += item.terencana
- groupedData[regional].summary.tidak_terencana += item.tidak_terencana
- groupedData[regional].summary.bencana_alam += item.bencana_alam
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const key in groupedData) {
+ const data = groupedData[key].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[key].summary) {
+ groupedData[key].summary = {
+ terencana: 0,
+ tidak_terencana: 0,
+ bencana_alam: 0
+ }
+ }
+
+ groupedData[key].summary.terencana += item.terencana
+ groupedData[key].summary.tidak_terencana += item.tidak_terencana
+ groupedData[key].summary.bencana_alam += item.bencana_alam
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -117,67 +89,38 @@ const formatData = (rawData: any, reportMeta: any) => {
bencana_alam: 0
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- formattedData.push([{ content: 'NASIONAL', colSpan: 6, styles: { fontStyle: 'bold' } }])
+ formattedData.push([{ content: title, colSpan: 6, styles: { fontStyle: 'bold' } }])
- for (const regional in data) {
- const summary = data[regional].summary
-
- formattedData.push([
- regional,
- formatNumber(summary.terencana),
- formatNumber(summary.tidak_terencana),
- formatNumber(summary.bencana_alam),
- formatNumber(summary.terencana + summary.tidak_terencana + summary.bencana_alam),
- formatNumber(summary.terencana + summary.tidak_terencana)
- ])
-
- total.terencana += summary.terencana
- total.tidak_terencana += summary.tidak_terencana
- total.bencana_alam += summary.bencana_alam
- }
+ for (const key in data) {
+ const summary = data[key].summary
formattedData.push([
- { content: 'TOTAL', styles: { fontStyle: 'bold' } },
- formatNumber(total.terencana),
- formatNumber(total.tidak_terencana),
- formatNumber(total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana + total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana)
+ key,
+ formatNumber(summary.terencana),
+ formatNumber(summary.tidak_terencana),
+ formatNumber(summary.bencana_alam),
+ formatNumber(summary.terencana + summary.tidak_terencana + summary.bencana_alam),
+ formatNumber(summary.terencana + summary.tidak_terencana)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.terencana += item.terencana
- total.tidak_terencana += item.tidak_terencana
- total.bencana_alam += item.bencana_alam
- })
-
- formattedData.push([{ content: parentName, colSpan: 6, styles: { fontStyle: 'bold' } }])
-
- const result = [
- formatNumber(total.terencana),
- formatNumber(total.tidak_terencana),
- formatNumber(total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana + total.bencana_alam),
- formatNumber(total.terencana + total.tidak_terencana)
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'TOTAL', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.terencana += summary.terencana
+ total.tidak_terencana += summary.tidak_terencana
+ total.bencana_alam += summary.bencana_alam
}
+
+ formattedData.push([
+ { content: 'TOTAL', styles: { fontStyle: 'bold' } },
+ formatNumber(total.terencana),
+ formatNumber(total.tidak_terencana),
+ formatNumber(total.bencana_alam),
+ formatNumber(total.terencana + total.tidak_terencana + total.bencana_alam),
+ formatNumber(total.terencana + total.tidak_terencana)
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_KDADPelaporan.ts b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_KDADPelaporan.ts
index 0e1a9a4..c6c3325 100644
--- a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_KDADPelaporan.ts
+++ b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_KDADPelaporan.ts
@@ -11,104 +11,76 @@ import { exportToWord } from './doc/MonalisaLK_KDADPelaporan_DOC'
const reportName = 'Kepatuhan dan Akurasi Dalam Pelaporan'
const fontSize = 5
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- gangguan_berulang: 0,
- gangguan_total: 0,
- keluhan_berulang: 0,
- keluhan_total: 0
- }
- }
-
- groupedData[regional].summary.gangguan_berulang += item.gangguan_berulang
- groupedData[regional].summary.gangguan_total += item.gangguan_total
- groupedData[regional].summary.keluhan_berulang += item.keluhan_berulang
- groupedData[regional].summary.keluhan_total += item.keluhan_total
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const regional in groupedData) {
+ const data = groupedData[regional].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[regional].summary) {
+ groupedData[regional].summary = {
+ gangguan_berulang: 0,
+ gangguan_total: 0,
+ keluhan_berulang: 0,
+ keluhan_total: 0
+ }
+ }
+
+ groupedData[regional].summary.gangguan_berulang += item.gangguan_berulang
+ groupedData[regional].summary.gangguan_total += item.gangguan_total
+ groupedData[regional].summary.keluhan_berulang += item.keluhan_berulang
+ groupedData[regional].summary.keluhan_total += item.keluhan_total
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -121,97 +93,57 @@ const formatData = (rawData: any, reportMeta: any) => {
keluhan_total: 0
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- formattedData.push([{ content: 'NASIONAL', colSpan: 6, styles: { fontStyle: 'bold' } }])
+ formattedData.push([{ content: title, colSpan: 6, styles: { fontStyle: 'bold' } }])
- for (const regional in data) {
- const summary = data[regional].summary
+ for (const regional in data) {
+ const summary = data[regional].summary
- const komplain_pelanggan =
- ((summary.gangguan_berulang / summary.gangguan_total +
- summary.keluhan_berulang / summary.keluhan_total) /
- 2) *
- 100
-
- formattedData.push([
- regional,
- formatNumber(summary.gangguan_berulang),
- formatNumber(summary.gangguan_total),
- formatNumber(summary.keluhan_berulang),
- formatNumber(summary.keluhan_total),
- formatPercentage(
- !komplain_pelanggan || !!isFinite(komplain_pelanggan) ? 0 : komplain_pelanggan
- )
- ])
-
- total.gangguan_berulang += summary.gangguan_berulang
- total.gangguan_total += summary.gangguan_total
- total.keluhan_berulang += summary.keluhan_berulang
- total.keluhan_total += summary.keluhan_total
- }
-
- const total_komplain_pelanggan =
- ((total.gangguan_berulang / total.gangguan_total +
- total.keluhan_berulang / total.keluhan_total) /
+ const komplain_pelanggan =
+ ((summary.gangguan_berulang / summary.gangguan_total +
+ summary.keluhan_berulang / summary.keluhan_total) /
2) *
100
formattedData.push([
- { content: 'TOTAL', styles: { fontStyle: 'bold' } },
- formatNumber(total.gangguan_berulang),
- formatNumber(total.gangguan_total),
- formatNumber(total.keluhan_berulang),
- formatNumber(total.keluhan_total),
+ regional,
+ formatNumber(summary.gangguan_berulang),
+ formatNumber(summary.gangguan_total),
+ formatNumber(summary.keluhan_berulang),
+ formatNumber(summary.keluhan_total),
formatPercentage(
- !total_komplain_pelanggan || !!isFinite(total_komplain_pelanggan)
- ? 0
- : total_komplain_pelanggan
+ !komplain_pelanggan || !!isFinite(komplain_pelanggan) ? 0 : komplain_pelanggan
)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.gangguan_berulang += item.gangguan_berulang
- total.gangguan_total += item.gangguan_total
- total.keluhan_berulang += item.keluhan_berulang
- total.keluhan_total += item.keluhan_total
- })
-
- const total_komplain_pelanggan =
- ((total.gangguan_berulang / total.gangguan_total +
- total.keluhan_berulang / total.keluhan_total) /
- 2) *
- 100
-
- formattedData.push([{ content: parentName, colSpan: 6, styles: { fontStyle: 'bold' } }])
-
- const result = [
- formatNumber(total.gangguan_berulang),
- formatNumber(total.gangguan_total),
- formatNumber(total.keluhan_berulang),
- formatNumber(total.keluhan_total),
- formatPercentage(
- !total_komplain_pelanggan || !!isFinite(total_komplain_pelanggan)
- ? 0
- : total_komplain_pelanggan
- )
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'TOTAL', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.gangguan_berulang += summary.gangguan_berulang
+ total.gangguan_total += summary.gangguan_total
+ total.keluhan_berulang += summary.keluhan_berulang
+ total.keluhan_total += summary.keluhan_total
}
+
+ const total_komplain_pelanggan =
+ ((total.gangguan_berulang / total.gangguan_total +
+ total.keluhan_berulang / total.keluhan_total) /
+ 2) *
+ 100
+
+ formattedData.push([
+ { content: 'TOTAL', styles: { fontStyle: 'bold' } },
+ formatNumber(total.gangguan_berulang),
+ formatNumber(total.gangguan_total),
+ formatNumber(total.keluhan_berulang),
+ formatNumber(total.keluhan_total),
+ formatPercentage(
+ !total_komplain_pelanggan || !!isFinite(total_komplain_pelanggan)
+ ? 0
+ : total_komplain_pelanggan
+ )
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_PenurunanJumlahKomplain.ts b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_PenurunanJumlahKomplain.ts
index 3e5f254..76360f9 100644
--- a/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_PenurunanJumlahKomplain.ts
+++ b/src/report/Monalisa/Laporan/Kumulatif/MonalisaLK_PenurunanJumlahKomplain.ts
@@ -11,129 +11,101 @@ import { exportToWord } from './doc/MonalisaLK_PenurunanJumlahKomplain_DOC'
const reportName = 'Penurunan Jumlah Komplain'
const fontSize = 5
-const getGroupParent = (reportMeta: any) => {
- if (reportMeta.ulp.id != 0) {
- return {
- parent: reportMeta.ulp.name,
- summaryName: reportMeta.ulp.name,
- summaryKey: 'nama_ulp'
- }
- }
-
- if (reportMeta.up3.id != 0) {
- return {
- parent: reportMeta.up3.name,
- summaryName: reportMeta.up3.name,
- summaryKey: 'nama_up3'
- }
- }
-
- if (reportMeta.uid.id != 0) {
- return {
- parent: reportMeta.uid.name,
- summaryName: reportMeta.uid.name,
- summaryKey: 'nama_uid'
- }
- }
-
- if (reportMeta.regional.id != 0) {
- return {
- parent: reportMeta.regional.name,
- summaryName: reportMeta.regional.name,
- summaryKey: 'nama_regional'
- }
- }
-
- return ''
-}
-
const groupingData = (data: any, reportMeta: any) => {
const groupedData: any = {}
- if (reportMeta.regional.id == 0) {
- data.forEach((item: any) => {
- const { nama_regional } = item
+ const reportMetaMapping: any = {
+ ulp: 'nama_ulp',
+ up3: 'nama_ulp',
+ uid: 'nama_up3',
+ regional: 'nama_uid',
+ default: 'nama_regional'
+ }
- if (!groupedData[nama_regional]) {
- groupedData[nama_regional] = { data: [] }
- }
-
- groupedData[nama_regional].data.push(item)
- })
-
- for (const regional in groupedData) {
- const data = groupedData[regional].data
-
- data.forEach((item: any) => {
- if (!groupedData[regional].summary) {
- groupedData[regional].summary = {
- total_keluhan_tahun_sebelumnya: 0,
- total_gangguan_tahun_sebelumnya: 0,
- total_keluhan_informasi_tahun_sebelumnya: 0,
- total_gangguan_informasi_tahun_sebelumnya: 0,
- // total_informasi_tahun_sebelumnya
- // total_tahun_sebelumnya
- total_keluhan_tahun_ini: 0,
- total_gangguan_tahun_ini: 0,
- total_keluhan_informasi_tahun_ini: 0,
- total_gangguan_informasi_tahun_ini: 0
- // total_informasi_tahun_ini
- // total_tahun_ini
- // delta_keluhan
- // delta_gangguan
- // delta_informasi
- // persen_delta_keluhan
- // persen_delta_gangguan
- // persen_delta_informasi
- // persen_delta_total
- }
- }
-
- groupedData[regional].summary.total_keluhan_tahun_sebelumnya +=
- item.total_keluhan_tahun_sebelumnya
- groupedData[regional].summary.total_gangguan_tahun_sebelumnya +=
- item.total_gangguan_tahun_sebelumnya
- groupedData[regional].summary.total_keluhan_informasi_tahun_sebelumnya +=
- item.total_keluhan_informasi_tahun_sebelumnya
- groupedData[regional].summary.total_gangguan_informasi_tahun_sebelumnya +=
- item.total_gangguan_informasi_tahun_sebelumnya
- groupedData[regional].summary.total_keluhan_tahun_ini += item.total_keluhan_tahun_ini
- groupedData[regional].summary.total_gangguan_tahun_ini += item.total_gangguan_tahun_ini
- groupedData[regional].summary.total_keluhan_informasi_tahun_ini +=
- item.total_keluhan_informasi_tahun_ini
- groupedData[regional].summary.total_gangguan_informasi_tahun_ini +=
- item.total_gangguan_informasi_tahun_ini
- })
- }
-
- return groupedData
- } else {
- const groupParent = getGroupParent(reportMeta)
-
- if (groupParent === '') {
- return {
- data,
- parent: '',
- summaryName: ''
- }
- }
-
- data.forEach((item: any) => {
- const group = item[groupParent.summaryKey]
-
- if (!groupedData[group]) {
- groupedData[group] = []
- }
-
- groupedData[group].push(item)
- })
-
- return {
- data: groupedData,
- parent: groupParent.parent,
- summaryName: groupParent.summaryName
+ let key = 'nama_regional'
+ for (const prop in reportMetaMapping) {
+ if (reportMeta[prop] && reportMeta[prop].id != 0) {
+ key = reportMetaMapping[prop]
+ break
}
}
+
+ data.forEach((item: any) => {
+ const groupKey = item[key]
+
+ if (!groupedData[groupKey]) {
+ groupedData[groupKey] = { data: [] }
+ }
+
+ groupedData[groupKey].data.push(item)
+ })
+
+ for (const regional in groupedData) {
+ const data = groupedData[regional].data
+
+ data.forEach((item: any) => {
+ if (!groupedData[regional].summary) {
+ groupedData[regional].summary = {
+ total_keluhan_tahun_sebelumnya: 0,
+ total_gangguan_tahun_sebelumnya: 0,
+ total_keluhan_informasi_tahun_sebelumnya: 0,
+ total_gangguan_informasi_tahun_sebelumnya: 0,
+ // total_informasi_tahun_sebelumnya
+ // total_tahun_sebelumnya
+ total_keluhan_tahun_ini: 0,
+ total_gangguan_tahun_ini: 0,
+ total_keluhan_informasi_tahun_ini: 0,
+ total_gangguan_informasi_tahun_ini: 0
+ // total_informasi_tahun_ini
+ // total_tahun_ini
+ // delta_keluhan
+ // delta_gangguan
+ // delta_informasi
+ // persen_delta_keluhan
+ // persen_delta_gangguan
+ // persen_delta_informasi
+ // persen_delta_total
+ }
+ }
+
+ groupedData[regional].summary.total_keluhan_tahun_sebelumnya +=
+ item.total_keluhan_tahun_sebelumnya
+ groupedData[regional].summary.total_gangguan_tahun_sebelumnya +=
+ item.total_gangguan_tahun_sebelumnya
+ groupedData[regional].summary.total_keluhan_informasi_tahun_sebelumnya +=
+ item.total_keluhan_informasi_tahun_sebelumnya
+ groupedData[regional].summary.total_gangguan_informasi_tahun_sebelumnya +=
+ item.total_gangguan_informasi_tahun_sebelumnya
+ groupedData[regional].summary.total_keluhan_tahun_ini += item.total_keluhan_tahun_ini
+ groupedData[regional].summary.total_gangguan_tahun_ini += item.total_gangguan_tahun_ini
+ groupedData[regional].summary.total_keluhan_informasi_tahun_ini +=
+ item.total_keluhan_informasi_tahun_ini
+ groupedData[regional].summary.total_gangguan_informasi_tahun_ini +=
+ item.total_gangguan_informasi_tahun_ini
+ })
+ }
+
+ return groupedData
+}
+
+const getTitle = (reportMeta: any) => {
+ if (reportMeta.ulp.id != 0) {
+ return reportMeta.ulp.name
+ }
+
+ if (reportMeta.up3.id != 0) {
+ return reportMeta.up3.name
+ }
+
+ if (reportMeta.uid.id != 0) {
+ return reportMeta.uid.name
+ }
+
+ if (reportMeta.regional.id != 0) {
+ return reportMeta.regional.name
+ }
+
+ return 'NASIONAL'
}
const formatData = (rawData: any, reportMeta: any) => {
@@ -161,113 +133,47 @@ const formatData = (rawData: any, reportMeta: any) => {
// persen_delta_total
}
- if (reportMeta.regional.id == 0) {
- const data = groupingData(rawData, reportMeta)
- const formattedData: any = []
+ const data = groupingData(rawData, reportMeta)
+ const title = getTitle(reportMeta)
- formattedData.push([{ content: 'NASIONAL', colSpan: 20, styles: { fontStyle: 'bold' } }])
+ formattedData.push([{ content: title, colSpan: 20, styles: { fontStyle: 'bold' } }])
- let no = 1
- for (const regional in data) {
- const summary = data[regional].summary
-
- const total_informasi_tahun_sebelumnya =
- summary.total_keluhan_informasi_tahun_sebelumnya +
- summary.total_gangguan_informasi_tahun_sebelumnya
- const total_tahun_sebelumnya =
- summary.total_keluhan_tahun_sebelumnya +
- summary.total_gangguan_tahun_sebelumnya +
- total_informasi_tahun_sebelumnya
- const total_informasi_tahun_ini =
- summary.total_keluhan_informasi_tahun_ini + summary.total_gangguan_informasi_tahun_ini
- const total_tahun_ini =
- summary.total_keluhan_tahun_ini +
- summary.total_gangguan_tahun_ini +
- total_informasi_tahun_ini
- const delta_keluhan = summary.total_keluhan_tahun_sebelumnya - summary.total_keluhan_tahun_ini
- const delta_gangguan =
- summary.total_gangguan_tahun_sebelumnya - summary.total_gangguan_tahun_ini
- const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
- const persen_delta_keluhan = 40 * (delta_keluhan / summary.total_keluhan_tahun_sebelumnya)
- const persen_delta_gangguan = 40 * (delta_gangguan / summary.total_gangguan_tahun_sebelumnya)
- const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
- const persen_delta_total =
- persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
-
- formattedData.push([
- regional,
- formatNumber(summary.total_keluhan_tahun_sebelumnya),
- formatNumber(summary.total_gangguan_tahun_sebelumnya),
- formatNumber(summary.total_keluhan_informasi_tahun_sebelumnya),
- formatNumber(summary.total_gangguan_informasi_tahun_sebelumnya),
- formatNumber(total_informasi_tahun_sebelumnya),
- formatNumber(total_tahun_sebelumnya),
- formatNumber(summary.total_keluhan_tahun_ini),
- formatNumber(summary.total_gangguan_tahun_ini),
- formatNumber(summary.total_keluhan_informasi_tahun_ini),
- formatNumber(summary.total_gangguan_informasi_tahun_ini),
- formatNumber(total_informasi_tahun_ini),
- formatNumber(total_tahun_ini),
- formatNumber(delta_keluhan),
- formatNumber(delta_gangguan),
- formatNumber(delta_informasi),
- formatPercentage(
- !persen_delta_keluhan || !!isFinite(persen_delta_keluhan) ? 0 : persen_delta_keluhan
- ),
- formatPercentage(
- !persen_delta_gangguan || !!isFinite(persen_delta_gangguan) ? 0 : persen_delta_gangguan
- ),
- formatPercentage(
- !persen_delta_informasi || !!isFinite(persen_delta_informasi) ? 0 : persen_delta_informasi
- ),
- formatPercentage(
- !persen_delta_total || !!isFinite(persen_delta_total) ? 0 : persen_delta_total
- )
- ])
-
- total.total_keluhan_tahun_sebelumnya += summary.total_keluhan_tahun_sebelumnya
- total.total_gangguan_tahun_sebelumnya += summary.total_gangguan_tahun_sebelumnya
- total.total_keluhan_informasi_tahun_sebelumnya +=
- summary.total_keluhan_informasi_tahun_sebelumnya
- total.total_gangguan_informasi_tahun_sebelumnya +=
- summary.total_gangguan_informasi_tahun_sebelumnya
- total.total_keluhan_tahun_ini += summary.total_keluhan_tahun_ini
- total.total_gangguan_tahun_ini += summary.total_gangguan_tahun_ini
- total.total_keluhan_informasi_tahun_ini += summary.total_keluhan_informasi_tahun_ini
- total.total_gangguan_informasi_tahun_ini += summary.total_gangguan_informasi_tahun_ini
- }
+ let no = 1
+ for (const regional in data) {
+ const summary = data[regional].summary
const total_informasi_tahun_sebelumnya =
- total.total_keluhan_informasi_tahun_sebelumnya +
- total.total_gangguan_informasi_tahun_sebelumnya
+ summary.total_keluhan_informasi_tahun_sebelumnya +
+ summary.total_gangguan_informasi_tahun_sebelumnya
const total_tahun_sebelumnya =
- total.total_keluhan_tahun_sebelumnya +
- total.total_gangguan_tahun_sebelumnya +
+ summary.total_keluhan_tahun_sebelumnya +
+ summary.total_gangguan_tahun_sebelumnya +
total_informasi_tahun_sebelumnya
const total_informasi_tahun_ini =
- total.total_keluhan_informasi_tahun_ini + total.total_gangguan_informasi_tahun_ini
+ summary.total_keluhan_informasi_tahun_ini + summary.total_gangguan_informasi_tahun_ini
const total_tahun_ini =
- total.total_keluhan_tahun_ini + total.total_gangguan_tahun_ini + total_informasi_tahun_ini
- const delta_keluhan = total.total_keluhan_tahun_sebelumnya - total.total_keluhan_tahun_ini
- const delta_gangguan = total.total_gangguan_tahun_sebelumnya - total.total_gangguan_tahun_ini
+ summary.total_keluhan_tahun_ini + summary.total_gangguan_tahun_ini + total_informasi_tahun_ini
+ const delta_keluhan = summary.total_keluhan_tahun_sebelumnya - summary.total_keluhan_tahun_ini
+ const delta_gangguan =
+ summary.total_gangguan_tahun_sebelumnya - summary.total_gangguan_tahun_ini
const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
- const persen_delta_keluhan = 40 * (delta_keluhan / total.total_keluhan_tahun_sebelumnya)
- const persen_delta_gangguan = 40 * (delta_gangguan / total.total_gangguan_tahun_sebelumnya)
+ const persen_delta_keluhan = 40 * (delta_keluhan / summary.total_keluhan_tahun_sebelumnya)
+ const persen_delta_gangguan = 40 * (delta_gangguan / summary.total_gangguan_tahun_sebelumnya)
const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
const persen_delta_total = persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
formattedData.push([
- { content: 'TOTAL', styles: { fontStyle: 'bold' } },
- formatNumber(total.total_keluhan_tahun_sebelumnya),
- formatNumber(total.total_gangguan_tahun_sebelumnya),
- formatNumber(total.total_keluhan_informasi_tahun_sebelumnya),
- formatNumber(total.total_gangguan_informasi_tahun_sebelumnya),
+ regional,
+ formatNumber(summary.total_keluhan_tahun_sebelumnya),
+ formatNumber(summary.total_gangguan_tahun_sebelumnya),
+ formatNumber(summary.total_keluhan_informasi_tahun_sebelumnya),
+ formatNumber(summary.total_gangguan_informasi_tahun_sebelumnya),
formatNumber(total_informasi_tahun_sebelumnya),
formatNumber(total_tahun_sebelumnya),
- formatNumber(total.total_keluhan_tahun_ini),
- formatNumber(total.total_gangguan_tahun_ini),
- formatNumber(total.total_keluhan_informasi_tahun_ini),
- formatNumber(total.total_gangguan_informasi_tahun_ini),
+ formatNumber(summary.total_keluhan_tahun_ini),
+ formatNumber(summary.total_gangguan_tahun_ini),
+ formatNumber(summary.total_keluhan_informasi_tahun_ini),
+ formatNumber(summary.total_gangguan_informasi_tahun_ini),
formatNumber(total_informasi_tahun_ini),
formatNumber(total_tahun_ini),
formatNumber(delta_keluhan),
@@ -287,84 +193,66 @@ const formatData = (rawData: any, reportMeta: any) => {
)
])
- return formattedData
- } else {
- const tempData = groupingData(rawData, reportMeta)
- const data = tempData.data[tempData.summaryName] || tempData.data
- const formattedData: any = []
-
- let parentName = tempData.parent
- let summaryName = tempData.summaryName ? tempData.summaryName : 'Seluruh Unit'
-
- data.forEach((item: any) => {
- total.total_keluhan_tahun_sebelumnya += item.total_keluhan_tahun_sebelumnya
- total.total_gangguan_tahun_sebelumnya += item.total_gangguan_tahun_sebelumnya
- total.total_keluhan_informasi_tahun_sebelumnya +=
- item.total_keluhan_informasi_tahun_sebelumnya
- total.total_gangguan_informasi_tahun_sebelumnya +=
- item.total_gangguan_informasi_tahun_sebelumnya
- total.total_keluhan_tahun_ini += item.total_keluhan_tahun_ini
- total.total_gangguan_tahun_ini += item.total_gangguan_tahun_ini
- total.total_keluhan_informasi_tahun_ini += item.total_keluhan_informasi_tahun_ini
- total.total_gangguan_informasi_tahun_ini += item.total_gangguan_informasi_tahun_ini
- })
-
- const total_informasi_tahun_sebelumnya =
- total.total_keluhan_informasi_tahun_sebelumnya +
- total.total_gangguan_informasi_tahun_sebelumnya
- const total_tahun_sebelumnya =
- total.total_keluhan_tahun_sebelumnya +
- total.total_gangguan_tahun_sebelumnya +
- total_informasi_tahun_sebelumnya
- const total_informasi_tahun_ini =
- total.total_keluhan_informasi_tahun_ini + total.total_gangguan_informasi_tahun_ini
- const total_tahun_ini =
- total.total_keluhan_tahun_ini + total.total_gangguan_tahun_ini + total_informasi_tahun_ini
- const delta_keluhan = total.total_keluhan_tahun_sebelumnya - total.total_keluhan_tahun_ini
- const delta_gangguan = total.total_gangguan_tahun_sebelumnya - total.total_gangguan_tahun_ini
- const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
- const persen_delta_keluhan = 40 * (delta_keluhan / total.total_keluhan_tahun_sebelumnya)
- const persen_delta_gangguan = 40 * (delta_gangguan / total.total_gangguan_tahun_sebelumnya)
- const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
- const persen_delta_total = persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
-
- formattedData.push([{ content: parentName, colSpan: 20, styles: { fontStyle: 'bold' } }])
-
- const result = [
- formatNumber(total.total_keluhan_tahun_sebelumnya),
- formatNumber(total.total_gangguan_tahun_sebelumnya),
- formatNumber(total.total_keluhan_informasi_tahun_sebelumnya),
- formatNumber(total.total_gangguan_informasi_tahun_sebelumnya),
- formatNumber(total_informasi_tahun_sebelumnya),
- formatNumber(total_tahun_sebelumnya),
- formatNumber(total.total_keluhan_tahun_ini),
- formatNumber(total.total_gangguan_tahun_ini),
- formatNumber(total.total_keluhan_informasi_tahun_ini),
- formatNumber(total.total_gangguan_informasi_tahun_ini),
- formatNumber(total_informasi_tahun_ini),
- formatNumber(total_tahun_ini),
- formatNumber(delta_keluhan),
- formatNumber(delta_gangguan),
- formatNumber(delta_informasi),
- formatPercentage(
- !persen_delta_keluhan || !!isFinite(persen_delta_keluhan) ? 0 : persen_delta_keluhan
- ),
- formatPercentage(
- !persen_delta_gangguan || !!isFinite(persen_delta_gangguan) ? 0 : persen_delta_gangguan
- ),
- formatPercentage(
- !persen_delta_informasi || !!isFinite(persen_delta_informasi) ? 0 : persen_delta_informasi
- ),
- formatPercentage(
- !persen_delta_total || !!isFinite(persen_delta_total) ? 0 : persen_delta_total
- )
- ]
-
- formattedData.push([summaryName, ...result])
- formattedData.push([{ content: 'TOTAL', styles: { fontStyle: 'bold' } }, ...result])
-
- return formattedData
+ total.total_keluhan_tahun_sebelumnya += summary.total_keluhan_tahun_sebelumnya
+ total.total_gangguan_tahun_sebelumnya += summary.total_gangguan_tahun_sebelumnya
+ total.total_keluhan_informasi_tahun_sebelumnya +=
+ summary.total_keluhan_informasi_tahun_sebelumnya
+ total.total_gangguan_informasi_tahun_sebelumnya +=
+ summary.total_gangguan_informasi_tahun_sebelumnya
+ total.total_keluhan_tahun_ini += summary.total_keluhan_tahun_ini
+ total.total_gangguan_tahun_ini += summary.total_gangguan_tahun_ini
+ total.total_keluhan_informasi_tahun_ini += summary.total_keluhan_informasi_tahun_ini
+ total.total_gangguan_informasi_tahun_ini += summary.total_gangguan_informasi_tahun_ini
}
+
+ const total_informasi_tahun_sebelumnya =
+ total.total_keluhan_informasi_tahun_sebelumnya + total.total_gangguan_informasi_tahun_sebelumnya
+ const total_tahun_sebelumnya =
+ total.total_keluhan_tahun_sebelumnya +
+ total.total_gangguan_tahun_sebelumnya +
+ total_informasi_tahun_sebelumnya
+ const total_informasi_tahun_ini =
+ total.total_keluhan_informasi_tahun_ini + total.total_gangguan_informasi_tahun_ini
+ const total_tahun_ini =
+ total.total_keluhan_tahun_ini + total.total_gangguan_tahun_ini + total_informasi_tahun_ini
+ const delta_keluhan = total.total_keluhan_tahun_sebelumnya - total.total_keluhan_tahun_ini
+ const delta_gangguan = total.total_gangguan_tahun_sebelumnya - total.total_gangguan_tahun_ini
+ const delta_informasi = total_informasi_tahun_sebelumnya - total_informasi_tahun_ini
+ const persen_delta_keluhan = 40 * (delta_keluhan / total.total_keluhan_tahun_sebelumnya)
+ const persen_delta_gangguan = 40 * (delta_gangguan / total.total_gangguan_tahun_sebelumnya)
+ const persen_delta_informasi = 20 * (delta_informasi / total_informasi_tahun_sebelumnya)
+ const persen_delta_total = persen_delta_keluhan + persen_delta_gangguan + persen_delta_informasi
+
+ formattedData.push([
+ { content: 'TOTAL', styles: { fontStyle: 'bold' } },
+ formatNumber(total.total_keluhan_tahun_sebelumnya),
+ formatNumber(total.total_gangguan_tahun_sebelumnya),
+ formatNumber(total.total_keluhan_informasi_tahun_sebelumnya),
+ formatNumber(total.total_gangguan_informasi_tahun_sebelumnya),
+ formatNumber(total_informasi_tahun_sebelumnya),
+ formatNumber(total_tahun_sebelumnya),
+ formatNumber(total.total_keluhan_tahun_ini),
+ formatNumber(total.total_gangguan_tahun_ini),
+ formatNumber(total.total_keluhan_informasi_tahun_ini),
+ formatNumber(total.total_gangguan_informasi_tahun_ini),
+ formatNumber(total_informasi_tahun_ini),
+ formatNumber(total_tahun_ini),
+ formatNumber(delta_keluhan),
+ formatNumber(delta_gangguan),
+ formatNumber(delta_informasi),
+ formatPercentage(
+ !persen_delta_keluhan || !!isFinite(persen_delta_keluhan) ? 0 : persen_delta_keluhan
+ ),
+ formatPercentage(
+ !persen_delta_gangguan || !!isFinite(persen_delta_gangguan) ? 0 : persen_delta_gangguan
+ ),
+ formatPercentage(
+ !persen_delta_informasi || !!isFinite(persen_delta_informasi) ? 0 : persen_delta_informasi
+ ),
+ formatPercentage(!persen_delta_total || !!isFinite(persen_delta_total) ? 0 : persen_delta_total)
+ ])
+
+ return formattedData
}
const exportToPDF = (reportMeta: any, rawData: any, preview: boolean = false) => {
diff --git a/src/utils/api/api.graphql.ts b/src/utils/api/api.graphql.ts
index d847025..89bc2a4 100755
--- a/src/utils/api/api.graphql.ts
+++ b/src/utils/api/api.graphql.ts
@@ -4020,6 +4020,7 @@ export const queries = {
nama_ulp
nama_posko
id_regu
+ nama_regu
waktu_lapor
waktu_response
waktu_recovery
@@ -4059,6 +4060,7 @@ export const queries = {
nama_ulp
nama_posko
id_regu
+ nama_regu
waktu_lapor
waktu_response
waktu_recovery