From 024844d9b76c320fe07d937b7b7f5235d1a46977 Mon Sep 17 00:00:00 2001 From: Dede Fuji Abdul Date: Tue, 2 Apr 2024 14:56:47 +0700 Subject: [PATCH] Add custom summary calculations to RGangguan_PerTanggal.vue --- .../Gangguan/Rekap/RGangguan_PerTanggal.vue | 204 +++++++++++++++++- 1 file changed, 202 insertions(+), 2 deletions(-) diff --git a/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue b/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue index cff22f2..51af73a 100755 --- a/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue +++ b/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue @@ -53,7 +53,7 @@ :width="120" alignment="center" data-field="nama_uid" - caption="Nama UID" + caption="UID" css-class="custom-table-column" group-index="0" v-if="isGroupBy" @@ -296,6 +296,155 @@ {{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}

+ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -645,7 +794,9 @@ import { DxPaging, DxScrolling, DxSearchPanel, - DxSelection + DxSelection, + DxSummary, + DxTotalItem } from 'devextreme-vue/data-grid' import { queries, requestGraphQl } from '@/utils/api/api.graphql' import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' @@ -835,6 +986,55 @@ const filterData = async (params: any) => { }) } +let total = 0 +let total_selesai = 0 +let persen_selesai = 0 +let total_inproses = 0 +let persen_inproses = 0 +const calculateCustomSummary = (options: any) => { + if (options.name === 'total') { + if (options.summaryProcess === 'calculate') { + total += options.value + } else if (options.summaryProcess === 'finalize') { + options.totalValue = total + } + } + + if (options.name === 'total_selesai') { + if (options.summaryProcess === 'calculate') { + total_selesai += options.value + } else if (options.summaryProcess === 'finalize') { + options.totalValue = total_selesai + } + } + + if (options.name === 'total_inproses') { + if (options.summaryProcess === 'calculate') { + total_inproses += options.value + } else if (options.summaryProcess === 'finalize') { + options.totalValue = total_inproses + } + } + + if (options.name === 'persen_selesai') { + if (options.summaryProcess === 'start') { + total = 0 + total_selesai = 0 + } else if (options.summaryProcess === 'finalize') { + options.totalValue = (total_selesai / total) * 100 + } + } + + if (options.name === 'persen_inproses') { + if (options.summaryProcess === 'start') { + total = 0 + total_inproses = 0 + } else if (options.summaryProcess === 'finalize') { + options.totalValue = (total_inproses / total) * 100 + } + } +} + onMounted(() => { if (import.meta.env.DEV) { data.value = [