Add total_durasi_response and total_durasi_recovery fields to api.graphql.ts
This commit is contained in:
parent
4943cbec09
commit
a2cd210269
File diff suppressed because it is too large
Load Diff
@ -1,14 +1,31 @@
|
||||
<template>
|
||||
<Filters @reset-form="data = []" :report-button="true" @run-search="() => filterData(filters)"
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)" class="mb-4">
|
||||
<Filters
|
||||
@reset-form="data = []"
|
||||
:report-button="true"
|
||||
@run-search="() => filterData(filters)"
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)"
|
||||
class="mb-4"
|
||||
>
|
||||
<Type1 @update:filters="(value) => (filters = value)" />
|
||||
</Filters>
|
||||
|
||||
<div id="data">
|
||||
<DxDataGrid ref="dataGridRef" :allow-column-reordering="true" class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
|
||||
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true">
|
||||
<DxDataGrid
|
||||
ref="dataGridRef"
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
:word-wrap-enabled="true"
|
||||
>
|
||||
<DxGrouping expand-mode="rowClick" />
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :enabled="false" />
|
||||
@ -16,30 +33,86 @@
|
||||
<!-- -->
|
||||
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
<DxColumnFixing :enabled="true" />
|
||||
|
||||
<DxColumn css-class="custom-table-column" :width="50" alignment="center" data-field="number" caption="No"
|
||||
cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" :min-width="180" data-field="nama_up3" caption="Nama UP3"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn alignment="center" :min-width="180" data-field="nama_uid" caption="Nama UID"
|
||||
css-class="custom-table-column" :group-index="0" />
|
||||
<DxColumn
|
||||
css-class="custom-table-column"
|
||||
:width="50"
|
||||
alignment="center"
|
||||
data-field="number"
|
||||
caption="No"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
:min-width="180"
|
||||
data-field="nama_up3"
|
||||
caption="Nama UP3"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
:min-width="180"
|
||||
data-field="nama_uid"
|
||||
caption="Nama UID"
|
||||
css-class="custom-table-column"
|
||||
:group-index="0"
|
||||
/>
|
||||
|
||||
<DxColumn alignment="center" :min-width="180" data-field="nama_posko" caption="Nama Posko"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="180" alignment="center" data-field="posko_in" caption="Posko IN" css-class="custom-table-column"
|
||||
cell-template="formatNumberPoskoIn" />
|
||||
<DxColumn :width="180" alignment="center" data-field="posko_out" caption="Posko OUT"
|
||||
css-class="custom-table-column" cell-template="formatNumberPoskoOut" />
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
:min-width="180"
|
||||
data-field="nama_posko"
|
||||
caption="Nama Posko"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="180"
|
||||
alignment="center"
|
||||
data-field="posko_in"
|
||||
caption="Posko IN"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumberPoskoIn"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="180"
|
||||
alignment="center"
|
||||
data-field="posko_out"
|
||||
caption="Posko OUT"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumberPoskoOut"
|
||||
/>
|
||||
|
||||
<DxSummary>
|
||||
<DxGroupItem :show-in-group-footer="true" column="number" display-format="Total" css-class="!text-left"
|
||||
:customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="posko_in" summary-type="sum" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="posko_out" summary-type="sum" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="nama_up3"
|
||||
display-format="Total"
|
||||
css-class="!text-left"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="posko_in"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="posko_out"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
</DxSummary>
|
||||
|
||||
<template #formatText="{ data }">
|
||||
@ -86,59 +159,192 @@
|
||||
</DxDataGrid>
|
||||
</div>
|
||||
|
||||
<DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan Alih Posko" @on-close="closeDialog"
|
||||
:full-width="true">
|
||||
<DetailDialog
|
||||
:open="dialogDetail"
|
||||
title="Detail Rekapitulasi Gangguan Alih Posko"
|
||||
@on-close="closeDialog"
|
||||
:full-width="true"
|
||||
>
|
||||
<div class="w-full mb-4 lg:w-[70%] lg:float-left">
|
||||
<div class="p-4 bg-white rounded-xl lg:mr-4">
|
||||
<DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub"
|
||||
:show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true"
|
||||
:hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100"
|
||||
@exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget">
|
||||
<DxDataGrid
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)]"
|
||||
:data-source="dataSub"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSubSelectionChanged"
|
||||
:column-width="100"
|
||||
@exporting="onExportingDetail"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :page-size="20" :enabled="true" />
|
||||
<DxPager :visible="true" :allowed-page-sizes="[20, 50, 100]" display-mode="full"
|
||||
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" />
|
||||
<DxPager
|
||||
:visible="true"
|
||||
:allowed-page-sizes="[20, 50, 100]"
|
||||
display-mode="full"
|
||||
:show-page-size-selector="true"
|
||||
:show-info="true"
|
||||
:show-navigation-buttons="true"
|
||||
/>
|
||||
<!-- -->
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
|
||||
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number"
|
||||
caption="No" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="idpel_nometer" caption="IDPEL/NO METER"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="media" caption="Sumber Lapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="Nama Petugas" css-class="custom-table-column"
|
||||
cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="Posko Asal" css-class="custom-table-column"
|
||||
cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="Posko Tujuan" css-class="custom-table-column"
|
||||
cell-template="formatText" />
|
||||
<DxColumn
|
||||
css-class="custom-table-column"
|
||||
:width="50"
|
||||
alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1"
|
||||
data-type="number"
|
||||
caption="No"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="no_laporan"
|
||||
caption="No Laporan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_lapor"
|
||||
caption="Tgl Lapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_response"
|
||||
caption="Tgl Datang"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_recovery"
|
||||
caption="Tgl Nyala"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_response_time"
|
||||
caption="Durasi Response Time"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_recovery_time"
|
||||
caption="Durasi Recovery Time"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="status_akhir"
|
||||
caption="Status"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="idpel_nometer"
|
||||
caption="IDPEL/NO METER"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_pelapor"
|
||||
caption="Nama Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="alamat_pelapor"
|
||||
caption="Alamat Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="no_telp_pelapor"
|
||||
caption="No Telp Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="200"
|
||||
alignment="center"
|
||||
data-field="keterangan_pelapor"
|
||||
caption="Keterangan Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_posko"
|
||||
caption="Posko"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="media"
|
||||
caption="Sumber Lapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field=""
|
||||
caption="Nama Petugas"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field=""
|
||||
caption="Posko Asal"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field=""
|
||||
caption="Posko Tujuan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
|
||||
<template #formatText="{ data }">
|
||||
<p class="text-left cursor-pointer">
|
||||
@ -174,28 +380,46 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_response"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_recovery"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_response_time)
|
||||
? formatWaktu(dataSubSelected?.durasi_response_time)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
? formatWaktu(dataSubSelected?.durasi_recovery_time)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -215,17 +439,29 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.alamat_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.no_telp_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.keterangan_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -268,7 +504,6 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxScrolling,
|
||||
DxSearchPanel,
|
||||
|
@ -1,50 +1,162 @@
|
||||
<template>
|
||||
<Filters @run-report="() => exportToPDF(reportMeta, data, true)" @reset-form="data = []"
|
||||
@run-search="() => filterData(filters)" :report-button="true" class="mb-4">
|
||||
<Filters
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)"
|
||||
@reset-form="data = []"
|
||||
@run-search="() => filterData(filters)"
|
||||
:report-button="true"
|
||||
class="mb-4"
|
||||
>
|
||||
<Type1 @update:filters="(value) => (filters = value)" />
|
||||
</Filters>
|
||||
|
||||
<div id="data">
|
||||
<DxDataGrid ref="dataGridRef" :allow-column-reordering="true" class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
|
||||
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true">
|
||||
<DxDataGrid
|
||||
ref="dataGridRef"
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
:word-wrap-enabled="true"
|
||||
>
|
||||
<DxGrouping :auto-expand-all="false" expand-mode="rowClick" />
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :enabled="false" />
|
||||
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
||||
<!-- -->
|
||||
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
<DxColumnFixing :enabled="true" />
|
||||
|
||||
<DxColumn width="200" alignment="center" data-field="nama_ulp" caption="Nama Unit" css-class="custom-table-column"
|
||||
cell-template="formatText" />
|
||||
<DxColumn
|
||||
v-if="grouping.length > 0"
|
||||
v-for="(group, index) in grouping"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
:data-field="group.data"
|
||||
:caption="group.caption"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
:group-index="index"
|
||||
/>
|
||||
|
||||
<DxColumn
|
||||
width="200"
|
||||
alignment="center"
|
||||
data-field="nama_ulp"
|
||||
caption="Nama Unit"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn alignment="center" caption="Bulan" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" data-field="month1" data-type="number" caption="Januari"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month2" data-type="number" caption="Februari"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month3" data-type="number" caption="Maret"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month4" data-type="number" caption="April"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month5" data-type="number" caption="Mei"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month6" data-type="number" caption="Juni"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month7" data-type="number" caption="Juli"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month8" data-type="number" caption="Agustus"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month9" data-type="number" caption="September"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month10" data-type="number" caption="Oktober"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month11" data-type="number" caption="November"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn alignment="center" data-field="month12" data-type="number" caption="Desember"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month1"
|
||||
data-type="number"
|
||||
caption="Januari"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month2"
|
||||
data-type="number"
|
||||
caption="Februari"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month3"
|
||||
data-type="number"
|
||||
caption="Maret"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month4"
|
||||
data-type="number"
|
||||
caption="April"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month5"
|
||||
data-type="number"
|
||||
caption="Mei"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month6"
|
||||
data-type="number"
|
||||
caption="Juni"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month7"
|
||||
data-type="number"
|
||||
caption="Juli"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month8"
|
||||
data-type="number"
|
||||
caption="Agustus"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month9"
|
||||
data-type="number"
|
||||
caption="September"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month10"
|
||||
data-type="number"
|
||||
caption="Oktober"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month11"
|
||||
data-type="number"
|
||||
caption="November"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
data-field="month12"
|
||||
data-type="number"
|
||||
caption="Desember"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
|
||||
<template #formatText="{ data }">
|
||||
@ -64,48 +176,157 @@
|
||||
}}
|
||||
</p>
|
||||
</template>
|
||||
|
||||
<DxSummary>
|
||||
<DxGroupItem
|
||||
v-for="i in 12"
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
:column="`month${i}`"
|
||||
summary-type="sum"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
</DxSummary>
|
||||
</DxDataGrid>
|
||||
</div>
|
||||
|
||||
<DetailDialog :open="dialogDetail" title="Data Detail Cleansing Transaksi TM" @on-close="closedialogDetail"
|
||||
:full-width="true">
|
||||
<DetailDialog
|
||||
:open="dialogDetail"
|
||||
title="Data Detail Cleansing Transaksi TM"
|
||||
@on-close="closedialogDetail"
|
||||
:full-width="true"
|
||||
>
|
||||
<div class="w-full mb-4 lg:w-[70%] lg:float-left">
|
||||
<div class="p-4 bg-white rounded-xl lg:mr-4">
|
||||
<DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub"
|
||||
:show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true"
|
||||
:hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100"
|
||||
@exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget">
|
||||
<DxDataGrid
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)]"
|
||||
:data-source="dataSub"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSubSelectionChanged"
|
||||
:column-width="100"
|
||||
@exporting="onExportingDetail"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :page-size="20" :enabled="true" />
|
||||
<DxPager :visible="true" :allowed-page-sizes="[20, 50, 100]" display-mode="full"
|
||||
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" />
|
||||
<DxPager
|
||||
:visible="true"
|
||||
:allowed-page-sizes="[20, 50, 100]"
|
||||
display-mode="full"
|
||||
:show-page-size-selector="true"
|
||||
:show-info="true"
|
||||
:show-navigation-buttons="true"
|
||||
/>
|
||||
<!-- -->
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
|
||||
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number"
|
||||
caption="No" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="tgl_catat" caption="Tgl Catat"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="tgl_pekerjaan" caption="Tgl Pekerjaan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="tgl_nyala" caption="Tgl Nyala"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_pencatatan" caption="Durasi Pencatatan"
|
||||
:allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time"
|
||||
:allow-resizing="false" css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="keterangan_cleansing" caption="Keterangan Cleansing"
|
||||
:allow-resizing="false" css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko" :allow-resizing="false"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tindakan" :allow-resizing="false"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab" :allow-resizing="false"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn
|
||||
css-class="custom-table-column"
|
||||
:width="50"
|
||||
alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1"
|
||||
data-type="number"
|
||||
caption="No"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="no_laporan"
|
||||
caption="No Laporan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="tgl_catat"
|
||||
caption="Tgl Catat"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="tgl_pekerjaan"
|
||||
caption="Tgl Pekerjaan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="tgl_nyala"
|
||||
caption="Tgl Nyala"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_pencatatan"
|
||||
caption="Durasi Pencatatan"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_recovery_time"
|
||||
caption="Durasi Recovery Time"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="keterangan_cleansing"
|
||||
caption="Keterangan Cleansing"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_posko"
|
||||
caption="Posko"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="tindakan"
|
||||
caption="Tindakan"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="penyebab"
|
||||
caption="Penyebab"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
|
||||
<template #formatText="{ data }">
|
||||
<p class="text-left cursor-pointer">
|
||||
@ -152,23 +373,37 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Pencatatan:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_pencatatan)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_pencatatan)
|
||||
? formatWaktu(dataSubSelected?.durasi_pencatatan)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
? formatWaktu(dataSubSelected?.durasi_recovery_time)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan CLeansing:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.keterangan_cleansing" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.keterangan_cleansing"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -203,15 +438,17 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxGroupItem,
|
||||
DxGrouping,
|
||||
DxPaging,
|
||||
DxScrolling,
|
||||
DxSearchPanel,
|
||||
DxSelection
|
||||
DxSelection,
|
||||
DxSummary
|
||||
} from 'devextreme-vue/data-grid'
|
||||
import { queries, requestGraphQl } from '@/utils/api/api.graphql'
|
||||
import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers'
|
||||
import { formatWaktu, years } from '@/components/Form/FiltersType/reference'
|
||||
import { formatWaktu } from '@/components/Form/FiltersType/reference'
|
||||
import { apolloClient } from '@/utils/api/api.graphql'
|
||||
import { provideApolloClient } from '@vue/apollo-composable'
|
||||
import { getMonthNumber } from '@/utils/texts'
|
||||
@ -247,6 +484,24 @@ const reportMeta = ref({
|
||||
posko: { id: 0, name: 'Semua Posko' },
|
||||
periode: ''
|
||||
})
|
||||
const grouping = ref<any[]>([
|
||||
{
|
||||
data: '',
|
||||
caption: 'Semua Unit'
|
||||
},
|
||||
{
|
||||
data: 'nama_regional',
|
||||
caption: 'Regional'
|
||||
},
|
||||
{
|
||||
data: 'nama_uid',
|
||||
caption: 'UID'
|
||||
},
|
||||
{
|
||||
data: 'nama_up3',
|
||||
caption: 'UP3'
|
||||
}
|
||||
])
|
||||
|
||||
const setMonth = (month: any) => {
|
||||
if (month != '') {
|
||||
@ -266,6 +521,50 @@ const filterData = async (params: any) => {
|
||||
const dateValue = params.periode.split(' s/d ')
|
||||
const { posko, uid, up3 } = params
|
||||
|
||||
var groupList: any[] = [
|
||||
{
|
||||
data: '',
|
||||
caption: 'Semua Unit'
|
||||
},
|
||||
{
|
||||
data: 'nama_regional',
|
||||
caption: 'Regional'
|
||||
},
|
||||
{
|
||||
data: 'nama_uid',
|
||||
caption: 'UID'
|
||||
},
|
||||
{
|
||||
data: 'nama_up3',
|
||||
caption: 'UP3'
|
||||
}
|
||||
]
|
||||
|
||||
if (uid?.id != 0) {
|
||||
groupList.forEach((item, index) => {
|
||||
if (item.caption == 'Semua Unit' || item.caption == 'Regional') {
|
||||
groupList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
|
||||
if (up3?.id != 0) {
|
||||
groupList.forEach((item, index) => {
|
||||
if (item.caption == 'UID') {
|
||||
groupList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
|
||||
if (posko?.id != 0) {
|
||||
groupList.forEach((item, index) => {
|
||||
if (item.caption == 'UP3') {
|
||||
groupList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
grouping.value = groupList
|
||||
|
||||
const query = {
|
||||
dateFrom: dateValue[0]
|
||||
? dateValue[0].split('-').reverse().join('-')
|
||||
|
@ -1,60 +1,135 @@
|
||||
<template>
|
||||
<Filters @reset-form="data = []" @run-report="() => exportToPDF(reportMeta, data, true)"
|
||||
@run-search="() => filterData(filters)" :report-button="true" class="mb-4">
|
||||
<Filters
|
||||
@reset-form="data = []"
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)"
|
||||
@run-search="() => filterData(filters)"
|
||||
:report-button="true"
|
||||
class="mb-4"
|
||||
>
|
||||
<Type1 @update:filters="(value) => (filters = value)" />
|
||||
</Filters>
|
||||
|
||||
<div id="data">
|
||||
<DxDataGrid ref="dataGridRef" :allow-column-reordering="true" class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
|
||||
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true">
|
||||
<DxDataGrid
|
||||
ref="dataGridRef"
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
:word-wrap-enabled="true"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :enabled="false" />
|
||||
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
||||
<!-- -->
|
||||
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
<DxColumnFixing :enabled="true" />
|
||||
|
||||
<DxColumn :width="50" alignment="center" caption="NO" css-class="custom-table-column" rowspan="4" colspan="2">
|
||||
<DxColumn :width="50" alignment="center"
|
||||
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" caption="a"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="50"
|
||||
alignment="center"
|
||||
caption="NO"
|
||||
css-class="custom-table-column"
|
||||
rowspan="4"
|
||||
colspan="2"
|
||||
>
|
||||
<DxColumn
|
||||
:width="50"
|
||||
alignment="center"
|
||||
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1"
|
||||
caption="a"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn :width="150" alignment="center" caption="Nama Regu" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_regu" caption="b" css-class="custom-table-column"
|
||||
cell-template="formatText" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_regu"
|
||||
caption="b"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn :width="150" alignment="center" caption="Kode Regu" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="kode_regu" caption="c" css-class="custom-table-column"
|
||||
cell-template="formatText" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="kode_regu"
|
||||
caption="c"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
</DxColumn>
|
||||
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Total" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total" caption="d=(e+g)" css-class="custom-table-column"
|
||||
cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total"
|
||||
caption="d=(e+g)"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Jml" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total_selesai" caption="e"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_selesai"
|
||||
caption="e"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="%" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="persen_selesai" caption="f=(e/d)*100"
|
||||
css-class="custom-table-column" cell-template="formatPercentage" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="persen_selesai"
|
||||
caption="f=(e/d)*100"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatPercentage"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Jml" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total_inproses" caption="g"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_inproses"
|
||||
caption="g"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="%" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="persen_inproses" caption="h=(g/d)*100"
|
||||
css-class="custom-table-column" cell-template="formatPercentage" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="persen_inproses"
|
||||
caption="h=(g/d)*100"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatPercentage"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
@ -64,23 +139,47 @@
|
||||
<DxColumn alignment="center" caption="Non Marking" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Total" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total_mobile_nonmarking" caption="i"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_mobile_nonmarking"
|
||||
caption="i"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="%" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="j=(i/d)*100"
|
||||
css-class="custom-table-column" cell-template="formatPercentage" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field=""
|
||||
caption="j=(i/d)*100"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatPercentage"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Response" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_mobile_nonmarking"
|
||||
caption="k" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_response_time_mobile_nonmarking"
|
||||
caption="k"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Recovery" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_mobile_nonmarking"
|
||||
caption="l" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_recovery_time_mobile_nonmarking"
|
||||
caption="l"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
@ -88,23 +187,47 @@
|
||||
<DxColumn alignment="center" caption="Marking" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Total" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total_mobile_marking" caption="m"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_mobile_marking"
|
||||
caption="m"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="%" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="n=(m/d)*100"
|
||||
css-class="custom-table-column" cell-template="formatPercentage" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field=""
|
||||
caption="n=(m/d)*100"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatPercentage"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Response" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_mobile_marking"
|
||||
caption="o" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_response_time_mobile_marking"
|
||||
caption="o"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Recovery" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_mobile_marking"
|
||||
caption="p" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_recovery_time_mobile_marking"
|
||||
caption="p"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
@ -114,23 +237,47 @@
|
||||
<DxColumn alignment="center" caption="Non Marking" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Total" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total_nonmobile_nonmarking" caption="q"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_nonmobile_nonmarking"
|
||||
caption="q"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="%" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="r=(q/d)*100"
|
||||
css-class="custom-table-column" cell-template="formatPercentage" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field=""
|
||||
caption="r=(q/d)*100"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatPercentage"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Response" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_nonmobile_nonmarking"
|
||||
caption="s" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_response_time_nonmobile_nonmarking"
|
||||
caption="s"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Recovery" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_nonmobile_nonmarking"
|
||||
caption="t" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_recovery_time_nonmobile_nonmarking"
|
||||
caption="t"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
@ -138,23 +285,47 @@
|
||||
<DxColumn alignment="center" caption="Marking" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Total" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total_nonmobile_marking" caption="u"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_nonmobile_marking"
|
||||
caption="u"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="%" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="v=(u/d)*100"
|
||||
css-class="custom-table-column" cell-template="formatPercentage" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field=""
|
||||
caption="v=(u/d)*100"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatPercentage"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxColumn alignment="center" caption="Waktu Rata-Rata" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Response" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_response_time_nonmobile_marking"
|
||||
caption="w" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_response_time_nonmobile_marking"
|
||||
caption="w"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Recovery" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_time_nonmobile_marking"
|
||||
caption="x" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_recovery_time_nonmobile_marking"
|
||||
caption="x"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
@ -192,74 +363,242 @@
|
||||
</template>
|
||||
|
||||
<DxSummary>
|
||||
<DxTotalItem display-format="TOTAL" show-in-column="nama_regu" css-class="text-white !text-right" />
|
||||
<DxTotalItem column="total" summary-type="sum" display-format="{0}" css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_selesai" summary-type="sum" display-format="{0}" css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_mobile_marking" summary-type="sum" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_mobile_nonmarking" summary-type="sum" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_nonmobile_marking" summary-type="sum" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_nonmobile_nonmarking" summary-type="sum" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem
|
||||
display-format="TOTAL"
|
||||
show-in-column="nama_regu"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_selesai"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_inproses"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_mobile_marking"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_mobile_nonmarking"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_nonmobile_marking"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_nonmobile_nonmarking"
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
</DxSummary>
|
||||
</DxDataGrid>
|
||||
</div>
|
||||
|
||||
<DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan Diselesaikan Mobile APKT"
|
||||
@on-close="closeDialog" :full-width="true">
|
||||
<DetailDialog
|
||||
:open="dialogDetail"
|
||||
title="Detail Rekapitulasi Gangguan Diselesaikan Mobile APKT"
|
||||
@on-close="closeDialog"
|
||||
:full-width="true"
|
||||
>
|
||||
<div class="w-full mb-4 lg:w-[70%] lg:float-left">
|
||||
<div class="p-4 bg-white rounded-xl lg:mr-4">
|
||||
<DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub"
|
||||
:show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true"
|
||||
:hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100"
|
||||
@exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget">
|
||||
<DxDataGrid
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)]"
|
||||
:data-source="dataSub"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSubSelectionChanged"
|
||||
:column-width="100"
|
||||
@exporting="onExportingDetail"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :page-size="20" :enabled="true" />
|
||||
<DxPager :visible="true" :allowed-page-sizes="[20, 50, 100]" display-mode="full"
|
||||
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" />
|
||||
<DxPager
|
||||
:visible="true"
|
||||
:allowed-page-sizes="[20, 50, 100]"
|
||||
display-mode="full"
|
||||
:show-page-size-selector="true"
|
||||
:show-info="true"
|
||||
:show-navigation-buttons="true"
|
||||
/>
|
||||
<!-- -->
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
|
||||
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number"
|
||||
caption="No" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="referensi_marking" caption="Referensi Marking"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="idpel_nometer" caption="IDPEL/NO METER"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tidakan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn
|
||||
css-class="custom-table-column"
|
||||
:width="50"
|
||||
alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1"
|
||||
data-type="number"
|
||||
caption="No"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="no_laporan"
|
||||
caption="No Laporan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_lapor"
|
||||
caption="Tgl Lapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_response"
|
||||
caption="Tgl Datang"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_recovery"
|
||||
caption="Tgl Nyala"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_response_time"
|
||||
caption="Durasi Response Time"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_recovery_time"
|
||||
caption="Durasi Recovery Time"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="status_akhir"
|
||||
caption="Status"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="referensi_marking"
|
||||
caption="Referensi Marking"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="idpel_nometer"
|
||||
caption="IDPEL/NO METER"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_pelapor"
|
||||
caption="Nama Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="alamat_pelapor"
|
||||
caption="Alamat Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="no_telp_pelapor"
|
||||
caption="No Telp Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="200"
|
||||
alignment="center"
|
||||
data-field="keterangan_pelapor"
|
||||
caption="Keterangan Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_posko"
|
||||
caption="Posko"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="tindakan"
|
||||
caption="Tidakan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="penyebab"
|
||||
caption="Penyebab"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
|
||||
<template #formatText="{ data }">
|
||||
<p class="text-left cursor-pointer">
|
||||
@ -295,28 +634,46 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_response"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_recovery"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_response_time)
|
||||
? formatWaktu(dataSubSelected?.durasi_response_time)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
? formatWaktu(dataSubSelected?.durasi_recovery_time)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -326,7 +683,11 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.referensi_marking" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.referensi_marking"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -341,17 +702,29 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.alamat_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.no_telp_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.keterangan_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -384,7 +757,6 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPager,
|
||||
DxPaging,
|
||||
DxScrolling,
|
||||
|
@ -1,123 +1,558 @@
|
||||
<!-- Rekapitulasi Gangguan/Jenis Gangguan -->
|
||||
|
||||
<template>
|
||||
<Filters :report-button="true" @reset-form="data = []" @run-search="() => filterData(filters)"
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)" class="mb-4">
|
||||
<Filters
|
||||
:report-button="true"
|
||||
@reset-form="data = []"
|
||||
@run-search="() => filterData(filters)"
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)"
|
||||
class="mb-4"
|
||||
>
|
||||
<Type1 @update:filters="(value) => (filters = value)" />
|
||||
</Filters>
|
||||
|
||||
<div id="data">
|
||||
<DxDataGrid ref="dataGridRef" :allow-column-reordering="true" class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
|
||||
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget">
|
||||
<DxDataGrid
|
||||
ref="dataGridRef"
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSelectionChanged"
|
||||
@exporting="onExporting"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :enabled="false" />
|
||||
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
||||
<!-- -->
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
<DxColumnFixing :enabled="true" />
|
||||
<DxGrouping :auto-expand-all="true" :context-menu-enabled="true" expand-mode="rowClick" />
|
||||
|
||||
<DxColumn :width="60" alignment="center" data-field="no" caption="NO" css-class="custom-table-column"
|
||||
cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="kode" caption="Kode" css-class="custom-table-column"
|
||||
cell-template="formatText" />
|
||||
<DxColumn :width="120" alignment="center" data-field="sub_kelompok" css-class="custom-table-column"
|
||||
:group-index="0" caption="" cell-template="formatText" :calculate-group-value="(rowData: any) => `${rowData.sub_kelompok} (${rowData.nama_sub_kelompok})`
|
||||
" />
|
||||
<DxColumn :width="250" alignment="center" data-field="tipe_permasalahan" caption="Jenis Gangguan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn
|
||||
:width="60"
|
||||
alignment="center"
|
||||
data-field="no"
|
||||
caption="NO"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="kode"
|
||||
caption="Kode"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="sub_kelompok"
|
||||
css-class="custom-table-column"
|
||||
:group-index="0"
|
||||
caption=""
|
||||
cell-template="formatText"
|
||||
:calculate-group-value="
|
||||
(rowData: any) => `${rowData.sub_kelompok} (${rowData.nama_sub_kelompok})`
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="250"
|
||||
alignment="center"
|
||||
data-field="tipe_permasalahan"
|
||||
caption="Jenis Gangguan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total" data-type="number" caption="Total"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_selesai" data-type="number" caption="Jml"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="70" alignment="center" data-field="persen_selesai" data-type="number" caption="%"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_selesai"
|
||||
data-type="number"
|
||||
caption="Jml"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="70"
|
||||
alignment="center"
|
||||
data-field="persen_selesai"
|
||||
data-type="number"
|
||||
caption="%"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_inproses" data-type="number" caption="Jml"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="70" alignment="center" data-field="persen_inproses" data-type="number" caption="%"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_inproses"
|
||||
data-type="number"
|
||||
caption="Jml"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="70"
|
||||
alignment="center"
|
||||
data-field="persen_inproses"
|
||||
data-type="number"
|
||||
caption="%"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Response Time" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Menit" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_durasi_response" data-type="number"
|
||||
caption="Total" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="avg_durasi_response" data-type="number"
|
||||
caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="120" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_durasi_response"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_response"
|
||||
data-type="number"
|
||||
caption="Rata-Rata"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="max_durasi_response"
|
||||
data-type="number"
|
||||
caption="Max"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="min_durasi_response"
|
||||
data-type="number"
|
||||
caption="Min"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_diatas_sla_response" data-type="number"
|
||||
caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_response" data-type="number"
|
||||
caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_diatas_sla_response"
|
||||
data-type="number"
|
||||
caption=">SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_dibawah_sla_response"
|
||||
data-type="number"
|
||||
caption="≤SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Menit" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_durasi_recovery" data-type="number"
|
||||
caption="Total" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="avg_durasi_recovery" data-type="number"
|
||||
caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="120" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Rata-Rata"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="max_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Max"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="min_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Min"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_diatas_sla_recovery" data-type="number"
|
||||
caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number"
|
||||
caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_diatas_sla_recovery"
|
||||
data-type="number"
|
||||
caption=">SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_dibawah_sla_recovery"
|
||||
data-type="number"
|
||||
caption="≤SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxGroupItem :show-in-group-footer="true" column="no" display-format="Total" css-class="!text-left" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total" summary-type="sum" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_selesai" summary-type="sum" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="persen_selesai" summary-type="avg" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_inproses" summary-type="sum" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="persen_inproses" summary-type="avg" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_durasi_response" summary-type="sum" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="avg_durasi_response" summary-type="avg" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="max_durasi_response" summary-type="max" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="min_durasi_response" summary-type="min" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_diatas_sla_response" summary-type="sum"
|
||||
display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_dibawah_sla_response" summary-type="sum"
|
||||
display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_durasi_recovery" summary-type="sum" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="avg_durasi_recovery" summary-type="avg" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="max_durasi_recovery" summary-type="max" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="min_durasi_recovery" summary-type="min" display-format="{0}"
|
||||
css-class="!text-right" :customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_diatas_sla_recovery" summary-type="sum"
|
||||
display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="true" column="total_dibawah_sla_recovery" summary-type="sum"
|
||||
display-format="{0}" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="kode"
|
||||
display-format="Total"
|
||||
css-class="!text-left"
|
||||
/>
|
||||
<DxTotalItem column="kode" display-format="Total" css-class="!text-left text-white" />
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total"
|
||||
name="total"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_selesai"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="persen_selesai"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_inproses"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="persen_inproses"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_durasi_response"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="avg_durasi_response"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="max_durasi_response"
|
||||
summary-type="max"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="min_durasi_response"
|
||||
summary-type="min"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_diatas_sla_response"
|
||||
summary-type="sum"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_dibawah_sla_response"
|
||||
summary-type="sum"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_durasi_recovery"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="avg_durasi_recovery"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="max_durasi_recovery"
|
||||
summary-type="max"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="min_durasi_recovery"
|
||||
summary-type="min"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_diatas_sla_recovery"
|
||||
summary-type="sum"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_dibawah_sla_recovery"
|
||||
summary-type="sum"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
|
||||
<DxTotalItem
|
||||
column="total"
|
||||
name="total"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_selesai"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="persen_selesai"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_inproses"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
|
||||
<DxTotalItem
|
||||
column="persen_inproses"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_durasi_response"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_response"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="max_durasi_response"
|
||||
summary-type="max"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="min_durasi_response"
|
||||
summary-type="min"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_diatas_sla_response"
|
||||
summary-type="sum"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_dibawah_sla_response"
|
||||
summary-type="sum"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_durasi_recovery"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_recovery"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="max_durasi_recovery"
|
||||
summary-type="max"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="min_durasi_recovery"
|
||||
summary-type="min"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_diatas_sla_recovery"
|
||||
summary-type="sum"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_dibawah_sla_recovery"
|
||||
summary-type="sum"
|
||||
css-class="!text-right text-white"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
</DxSummary>
|
||||
|
||||
<template #formatText="{ data }">
|
||||
@ -153,25 +588,28 @@
|
||||
import Filters from '@/components/Form/Filters.vue'
|
||||
import Type1 from '@/components/Form/FiltersType/Type1.vue'
|
||||
import { formatWaktu } from '@/components/Form/FiltersType/reference'
|
||||
import { onMounted, ref, watch } from 'vue'
|
||||
import { onMounted, ref } from 'vue'
|
||||
import { DxDataGrid } from 'devextreme-vue'
|
||||
import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxGroupItem,
|
||||
DxGroupPanel,
|
||||
DxGrouping,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxScrolling,
|
||||
DxSearchPanel,
|
||||
DxSelection,
|
||||
DxSummary
|
||||
DxSummary,
|
||||
DxTotalItem
|
||||
} from 'devextreme-vue/data-grid'
|
||||
import { queries, requestGraphQl } from '@/utils/api/api.graphql'
|
||||
import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers'
|
||||
import { exportToPDF, exportToXLSX, exportToDOCX } from '@/report/Gangguan/Rekap/RGangguan_JenisGangguan'
|
||||
import {
|
||||
exportToPDF,
|
||||
exportToXLSX,
|
||||
exportToDOCX
|
||||
} from '@/report/Gangguan/Rekap/RGangguan_JenisGangguan'
|
||||
import { apolloClient } from '@/utils/api/api.graphql'
|
||||
import { provideApolloClient } from '@vue/apollo-composable'
|
||||
import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
|
||||
@ -312,12 +750,10 @@ const filterData = async (params: any) => {
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_dispatch = 0
|
||||
let total_durasi_dispatch = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let count_durasi_recovery = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 0
|
||||
const calculateCustomSummary = (options: any) => {
|
||||
if (options.name === 'total') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
@ -351,6 +787,74 @@ const calculateCustomSummary = (options: any) => {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const filters = ref()
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -131,6 +131,20 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Jumlah Response"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.avg_durasi_response * rowData.total_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
@ -191,6 +205,20 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Jumlah Recovery"
|
||||
:allow-resizing="false"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.avg_durasi_recovery * rowData.total_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
@ -241,59 +269,74 @@
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="no"
|
||||
column="nama_posko"
|
||||
display-format="Total"
|
||||
css-class="!text-left"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total"
|
||||
summary-type="sum"
|
||||
name="total"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_selesai"
|
||||
summary-type="sum"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="persen_selesai"
|
||||
summary-type="avg"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_inproses"
|
||||
summary-type="sum"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="persen_inproses"
|
||||
summary-type="avg"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_durasi_response"
|
||||
summary-type="sum"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="avg_durasi_response"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
@ -328,14 +371,24 @@
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_durasi_recovery"
|
||||
summary-type="sum"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="avg_durasi_recovery"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
@ -371,49 +424,63 @@
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="Total"
|
||||
show-in-column="no"
|
||||
css-class="text-white !text-right"
|
||||
show-in-column="nama_posko"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
summary-type="custom"
|
||||
show-in-column="total"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_selesai"
|
||||
summary-type="sum"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="persen_selesai"
|
||||
summary-type="avg"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_inproses"
|
||||
summary-type="sum"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="persen_inproses"
|
||||
summary-type="avg"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_durasi_response"
|
||||
summary-type="sum"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_response"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
@ -443,13 +510,22 @@
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_durasi_recovery"
|
||||
summary-type="sum"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_recovery"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
@ -872,7 +948,7 @@
|
||||
import Filters from '@/components/Form/Filters.vue'
|
||||
import { formatWaktu } from '@/components/Form/FiltersType/reference'
|
||||
import Type8 from '@/components/Form/FiltersType/Type8.vue'
|
||||
import { onMounted, ref, watch } from 'vue'
|
||||
import { onMounted, ref } from 'vue'
|
||||
import { DxDataGrid } from 'devextreme-vue'
|
||||
import {
|
||||
DxColumn,
|
||||
@ -880,7 +956,6 @@ import {
|
||||
DxExport,
|
||||
DxGroupItem,
|
||||
DxGrouping,
|
||||
DxLoadPanel,
|
||||
DxPager,
|
||||
DxPaging,
|
||||
DxScrolling,
|
||||
@ -926,6 +1001,116 @@ const reportMeta = ref({
|
||||
const agreeToShowDialog = ref(false)
|
||||
const progressSelected = ref(0)
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setAgreementDialog = (status: boolean, progress: number) => {
|
||||
agreeToShowDialog.value = status
|
||||
progressSelected.value = progress
|
||||
|
@ -135,6 +135,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Jumlah Durasi"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
@ -195,6 +208,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Jumlah Durasi"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
@ -245,59 +271,74 @@
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="no"
|
||||
column="kode_regu"
|
||||
display-format="Total"
|
||||
css-class="!text-left"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total"
|
||||
summary-type="sum"
|
||||
name="total"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_selesai"
|
||||
summary-type="sum"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="persen_selesai"
|
||||
summary-type="avg"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_inproses"
|
||||
summary-type="sum"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="persen_inproses"
|
||||
summary-type="avg"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_durasi_response"
|
||||
summary-type="sum"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="avg_durasi_response"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
@ -332,14 +373,24 @@
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="total_durasi_recovery"
|
||||
summary-type="sum"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="true"
|
||||
column="avg_durasi_recovery"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
css-class="!text-right"
|
||||
/>
|
||||
@ -375,49 +426,63 @@
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="Total"
|
||||
show-in-column="no"
|
||||
css-class="text-white !text-right"
|
||||
show-in-column="kode_regu"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
summary-type="custom"
|
||||
show-in-column="total"
|
||||
column="total"
|
||||
name="total"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_selesai"
|
||||
summary-type="sum"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="persen_selesai"
|
||||
summary-type="avg"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_inproses"
|
||||
summary-type="sum"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="persen_inproses"
|
||||
summary-type="avg"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_durasi_response"
|
||||
summary-type="sum"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_response"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
@ -447,13 +512,22 @@
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_durasi_recovery"
|
||||
summary-type="sum"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_recovery"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
@ -888,7 +962,6 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPager,
|
||||
DxPaging,
|
||||
DxScrolling,
|
||||
@ -910,7 +983,6 @@ import {
|
||||
exportDetailToXLSX,
|
||||
exportToDOCX,
|
||||
exportDetailToDOCX
|
||||
|
||||
} from '@/report/Gangguan/Rekap/RGangguan_PerRegu'
|
||||
import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
|
||||
|
||||
@ -938,6 +1010,116 @@ const agreeToShowDialog = ref(false)
|
||||
const progressSelected = ref(0)
|
||||
const isGroupBy = ref(false)
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setAgreementDialog = (status: boolean, progress: number) => {
|
||||
agreeToShowDialog.value = status
|
||||
progressSelected.value = progress
|
||||
@ -1008,7 +1190,6 @@ const onExporting = (e: any) => {
|
||||
exportToXLSX(reportMeta.value, e)
|
||||
} else {
|
||||
exportToDOCX(reportMeta.value, data.value)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1019,7 +1200,6 @@ const onExportingDetail = (e: any) => {
|
||||
exportDetailToXLSX(reportMeta.value, e)
|
||||
} else {
|
||||
exportDetailToDOCX(reportMeta.value, dataSub.value)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,81 +1,265 @@
|
||||
<template>
|
||||
<Filters @reset-form="data = []" @run-search="() => filterData(filters)"
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)" :report-button="true" class="mb-4">
|
||||
<Filters
|
||||
@reset-form="data = []"
|
||||
@run-search="() => filterData(filters)"
|
||||
@run-report="() => exportToPDF(reportMeta, data, true)"
|
||||
:report-button="true"
|
||||
class="mb-4"
|
||||
>
|
||||
<Type9 @update:filters="(value) => (filters = value)" />
|
||||
</Filters>
|
||||
|
||||
<div id="data">
|
||||
<DxDataGrid ref="dataGridRef" :allow-column-reordering="true" class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data" :show-column-lines="true" :show-row-lines="false" :show-borders="true"
|
||||
:row-alternation-enabled="true" :hover-state-enabled="true" @selection-changed="onDataSelectionChanged"
|
||||
:column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget"
|
||||
:word-wrap-enabled="true">
|
||||
<DxDataGrid
|
||||
ref="dataGridRef"
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)] mb-10"
|
||||
:data-source="data"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSelectionChanged"
|
||||
:column-width="100"
|
||||
@exporting="onExporting"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
:word-wrap-enabled="true"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :enabled="false" />
|
||||
<DxScrolling column-rendering-mode="virtual" mode="virtual" />
|
||||
<!-- -->
|
||||
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
<DxColumnFixing :enabled="true" />
|
||||
|
||||
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
|
||||
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No"
|
||||
cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="nama_uid" caption="UID" css-class="custom-table-column"
|
||||
group-index="0" v-if="isGroupBy" />
|
||||
<DxColumn :width="170" alignment="center" data-field="tanggal" caption="Tanggal Lapor"
|
||||
css-class="custom-table-column" />
|
||||
<DxColumn
|
||||
css-class="custom-table-column"
|
||||
:width="50"
|
||||
alignment="center"
|
||||
:calculate-display-value="(item: any) => data.findIndex((i) => i == item) + 1"
|
||||
data-type="number"
|
||||
caption="No"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="nama_uid"
|
||||
caption="UID"
|
||||
css-class="custom-table-column"
|
||||
group-index="0"
|
||||
v-if="isGroupBy"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="170"
|
||||
alignment="center"
|
||||
data-field="tanggal"
|
||||
caption="Tanggal Lapor"
|
||||
css-class="custom-table-column"
|
||||
/>
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total" data-type="number" caption="Total"
|
||||
css-class="custom-table-column" cell-template="formatNumberLaporanTotal" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumberLaporanTotal"
|
||||
/>
|
||||
<DxColumn alignment="center" caption="Sudah Selesai" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_selesai" data-type="number" caption="Jml"
|
||||
css-class="custom-table-column" cell-template="formatNumberLaporanJmlSelesai" />
|
||||
<DxColumn :width="70" alignment="center" data-field="persen_selesai" data-type="number" caption="%"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_selesai"
|
||||
data-type="number"
|
||||
caption="Jml"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumberLaporanJmlSelesai"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="70"
|
||||
alignment="center"
|
||||
data-field="persen_selesai"
|
||||
data-type="number"
|
||||
caption="%"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_inproses" data-type="number" caption="Jml"
|
||||
css-class="custom-table-column" cell-template="formatNumberLaporanJmlBelumSelesai" />
|
||||
<DxColumn :width="70" alignment="center" data-field="persen_inproses" data-type="number" caption="%"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_inproses"
|
||||
data-type="number"
|
||||
caption="Jml"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumberLaporanJmlBelumSelesai"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="70"
|
||||
alignment="center"
|
||||
data-field="persen_inproses"
|
||||
data-type="number"
|
||||
caption="%"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Response Time" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Menit" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_durasi_response" data-type="number"
|
||||
caption="Total" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="avg_durasi_response" data-type="number"
|
||||
caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="120" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_durasi_response"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Jumlah Response"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_response"
|
||||
data-type="number"
|
||||
caption="Rata-Rata"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="max_durasi_response"
|
||||
data-type="number"
|
||||
caption="Max"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="min_durasi_response"
|
||||
data-type="number"
|
||||
caption="Min"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_diatas_sla_response" data-type="number"
|
||||
caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_response" data-type="number"
|
||||
caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_diatas_sla_response"
|
||||
data-type="number"
|
||||
caption=">SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_dibawah_sla_response"
|
||||
data-type="number"
|
||||
caption="≤SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Recovery Time" css-class="custom-table-column">
|
||||
<DxColumn alignment="center" caption="Menit" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_durasi_recovery" data-type="number"
|
||||
caption="Total" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="avg_durasi_recovery" data-type="number"
|
||||
caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="120" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Jumlah Response"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Rata-Rata"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="max_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Max"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="min_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Min"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
|
||||
<DxColumn :width="120" alignment="center" data-field="total_diatas_sla_recovery" data-type="number"
|
||||
caption=">SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="120" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number"
|
||||
caption="≤SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_diatas_sla_recovery"
|
||||
data-type="number"
|
||||
caption=">SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="120"
|
||||
alignment="center"
|
||||
data-field="total_dibawah_sla_recovery"
|
||||
data-type="number"
|
||||
caption="≤SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
@ -140,101 +324,323 @@
|
||||
</template>
|
||||
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxTotalItem display-format="TOTAL" show-in-column="tanggal" css-class="text-white !text-left" />
|
||||
<DxTotalItem column="total" name="total" summary-type="custom" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_selesai" name="total_selesai" summary-type="custom" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="persen_selesai" name="persen_selesai" summary-type="custom" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatPercentage(e.value)" />
|
||||
<DxTotalItem
|
||||
display-format="TOTAL"
|
||||
show-in-column="tanggal"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total"
|
||||
name="total"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_selesai"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="persen_selesai"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
|
||||
<DxTotalItem column="total_inproses" name="total_inproses" summary-type="custom" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="persen_inproses" name="persen_inproses" summary-type="custom" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatPercentage(e.value)" />
|
||||
<DxTotalItem
|
||||
column="total_inproses"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="persen_inproses"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
|
||||
<DxTotalItem column="total_durasi_response" name="total_durasi_response" summary-type="sum" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="avg_durasi_response" name="avg_durasi_response" summary-type="avg" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="max_durasi_response" name="max_durasi_response" summary-type="max" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" />
|
||||
<DxTotalItem column="min_durasi_response" name="min_durasi_response" summary-type="min" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" />
|
||||
<DxTotalItem
|
||||
column="total_durasi_response"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_response"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="max_durasi_response"
|
||||
summary-type="max"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatWaktu(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="min_durasi_response"
|
||||
summary-type="min"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatWaktu(e.value)"
|
||||
/>
|
||||
|
||||
<DxTotalItem column="total_diatas_sla_response" name="total_diatas_sla_response" summary-type="sum"
|
||||
display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_dibawah_sla_response" name="total_dibawah_sla_response" summary-type="sum"
|
||||
display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem
|
||||
column="total_diatas_sla_response"
|
||||
summary-type="sum"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_dibawah_sla_response"
|
||||
summary-type="sum"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
|
||||
<DxTotalItem column="total_durasi_recovery" name="total_durasi_recovery" summary-type="sum" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="avg_durasi_recovery" name="avg_durasi_recovery" summary-type="avg" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="max_durasi_recovery" name="max_durasi_recovery" summary-type="max" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" />
|
||||
<DxTotalItem column="min_durasi_recovery" name="min_durasi_recovery" summary-type="min" display-format="{0}"
|
||||
css-class="text-white !text-right" :customize-text="(e: any) => formatWaktu(e.value)" />
|
||||
<DxTotalItem
|
||||
column="total_durasi_recovery"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="avg_durasi_recovery"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="max_durasi_recovery"
|
||||
summary-type="max"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatWaktu(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="min_durasi_recovery"
|
||||
summary-type="min"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatWaktu(e.value)"
|
||||
/>
|
||||
|
||||
<DxTotalItem column="total_diatas_sla_recovery" name="total_diatas_sla_recovery" summary-type="sum"
|
||||
display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem column="total_dibawah_sla_recovery" name="total_dibawah_sla_recovery" summary-type="sum"
|
||||
display-format="{0}" css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxTotalItem
|
||||
column="total_diatas_sla_recovery"
|
||||
summary-type="sum"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
column="total_dibawah_sla_recovery"
|
||||
summary-type="sum"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
</DxSummary>
|
||||
</DxDataGrid>
|
||||
</div>
|
||||
|
||||
<DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Gangguan/Tanggal" @on-close="closeDialog"
|
||||
:full-width="true">
|
||||
<DetailDialog
|
||||
:open="dialogDetail"
|
||||
title="Detail Rekapitulasi Gangguan/Tanggal"
|
||||
@on-close="closeDialog"
|
||||
:full-width="true"
|
||||
>
|
||||
<div class="w-full mb-4 lg:w-[70%] lg:float-left">
|
||||
<div class="p-4 bg-white rounded-xl lg:mr-4">
|
||||
<DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub"
|
||||
:show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true"
|
||||
:hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100"
|
||||
@exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget">
|
||||
<DxDataGrid
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)]"
|
||||
:data-source="dataSub"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSubSelectionChanged"
|
||||
:column-width="100"
|
||||
@exporting="onExportingDetail"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :page-size="20" :enabled="true" />
|
||||
<DxPager :visible="true" :allowed-page-sizes="[20, 50, 100]" display-mode="full"
|
||||
:show-page-size-selector="true" :show-info="true" :show-navigation-buttons="true" />
|
||||
<DxPager
|
||||
:visible="true"
|
||||
:allowed-page-sizes="[20, 50, 100]"
|
||||
display-mode="full"
|
||||
:show-page-size-selector="true"
|
||||
:show-info="true"
|
||||
:show-navigation-buttons="true"
|
||||
/>
|
||||
<!-- -->
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
|
||||
<DxColumn css-class="custom-table-column" :width="50" alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1" data-type="number"
|
||||
caption="No" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="no_laporan" caption="No Laporan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_lapor" caption="Tgl Lapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_response" caption="Tgl Datang"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="waktu_recovery" caption="Tgl Nyala"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_response_time" caption="Durasi Response Time"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="durasi_recovery_time" caption="Durasi Recovery Time"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="status_akhir" caption="Status"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="referensi_marking" caption="Referensi Marking"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="id_pelnomormeter" caption="IDPEL/NO METER"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_pelapor" caption="Nama Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="alamat_pelapor" caption="Alamat Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="no_telp_pelapor" caption="No Telp Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="200" alignment="center" data-field="keterangan_pelapor" caption="Keterangan Pelapor"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_posko" caption="Posko"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="tindakan" caption="Tidakan"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn :width="150" alignment="center" data-field="penyebab" caption="Penyebab"
|
||||
css-class="custom-table-column" cell-template="formatText" />
|
||||
<DxColumn
|
||||
css-class="custom-table-column"
|
||||
:width="50"
|
||||
alignment="center"
|
||||
:calculate-display-value="(item: any) => dataSub.findIndex((i) => i == item) + 1"
|
||||
data-type="number"
|
||||
caption="No"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="no_laporan"
|
||||
caption="No Laporan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_lapor"
|
||||
caption="Tgl Lapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_response"
|
||||
caption="Tgl Datang"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="waktu_recovery"
|
||||
caption="Tgl Nyala"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_response_time"
|
||||
caption="Durasi Response Time"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="durasi_recovery_time"
|
||||
caption="Durasi Recovery Time"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="status_akhir"
|
||||
caption="Status"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="referensi_marking"
|
||||
caption="Referensi Marking"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="id_pelnomormeter"
|
||||
caption="IDPEL/NO METER"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_pelapor"
|
||||
caption="Nama Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="alamat_pelapor"
|
||||
caption="Alamat Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="no_telp_pelapor"
|
||||
caption="No Telp Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="200"
|
||||
alignment="center"
|
||||
data-field="keterangan_pelapor"
|
||||
caption="Keterangan Pelapor"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="nama_posko"
|
||||
caption="Posko"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="tindakan"
|
||||
caption="Tidakan"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="penyebab"
|
||||
caption="Penyebab"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
/>
|
||||
|
||||
<template #formatText="{ data }">
|
||||
<p class="text-left cursor-pointer">
|
||||
@ -270,28 +676,46 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Datang:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_response"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Tgl Nyala:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_recovery"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Response Time:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_response_time)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_response_time)
|
||||
? formatWaktu(dataSubSelected?.durasi_response_time)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Durasi Recovery Time:</h3>
|
||||
<InputText :readonly="true" :value="parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="
|
||||
parseInt(dataSubSelected?.durasi_recovery_time)
|
||||
? formatWaktu(dataSubSelected?.durasi_recovery_time)
|
||||
: '-'
|
||||
" class-name="flex-1" />
|
||||
"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -301,12 +725,20 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Referensi Marking:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.referensi_marking" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.referensi_marking"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">IDPEL/NO METER:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.id_pelnomormeter" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.id_pelnomormeter"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -316,17 +748,29 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.alamat_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">No Telp Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.no_telp_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.keterangan_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -354,13 +798,12 @@
|
||||
import Filters from '@/components/Form/Filters.vue'
|
||||
import Type9 from '@/components/Form/FiltersType/Type9.vue'
|
||||
import { formatWaktu } from '@/components/Form/FiltersType/reference'
|
||||
import { onMounted, ref, watch } from 'vue'
|
||||
import { onMounted, ref } from 'vue'
|
||||
import { DxDataGrid } from 'devextreme-vue'
|
||||
import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPager,
|
||||
DxPaging,
|
||||
DxScrolling,
|
||||
@ -558,9 +1001,11 @@ const filterData = async (params: any) => {
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let persen_selesai = 0
|
||||
let total_inproses = 0
|
||||
let persen_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 0
|
||||
const calculateCustomSummary = (options: any) => {
|
||||
if (options.name === 'total') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
@ -603,6 +1048,65 @@ const calculateCustomSummary = (options: any) => {
|
||||
options.totalValue = (total_inproses / total) * 100
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
<div>
|
||||
<DxDataGrid
|
||||
@cell-click="onCellClicked"
|
||||
@cell-click=""
|
||||
ref="dataGridRef"
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)] mb-10"
|
||||
@ -27,97 +27,296 @@
|
||||
column-resizing-mode="widget"
|
||||
>
|
||||
<DxPaging :enabled="false" />
|
||||
<DxGrouping :auto-expand-all="false" :context-menu-enabled="true" />
|
||||
<DxGrouping :auto-expand-all="false" :context-menu-enabled="true" expand-mode="rowClick" />
|
||||
<DxSelection mode="single" />
|
||||
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
|
||||
<DxColumn alignment="center" :width="200" data-field="nama_ulp" caption="Nama Unit"
|
||||
css-class="custom-table-column" />
|
||||
<DxColumn
|
||||
alignment="center"
|
||||
:width="200"
|
||||
data-field="nama_ulp"
|
||||
caption="Nama Unit"
|
||||
css-class="custom-table-column"
|
||||
/>
|
||||
|
||||
<DxColumn :width="150" alignment="center" data-field="" caption="Semua Unit" css-class="custom-table-column"
|
||||
:group-index="0" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_regional" caption="Regional"
|
||||
css-class="custom-table-column" :group-index="1" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_uid" caption="UID" css-class="custom-table-column"
|
||||
:group-index="2" />
|
||||
<DxColumn :width="150" alignment="center" data-field="nama_up3" caption="UP3" css-class="custom-table-column"
|
||||
:group-index="3" />
|
||||
<DxColumn
|
||||
v-if="grouping.length > 0"
|
||||
v-for="(group, index) in grouping"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
:data-field="group.data"
|
||||
:caption="group.caption"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatText"
|
||||
:group-index="index"
|
||||
/>
|
||||
|
||||
<DxColumn alignment="center" caption="Response Time" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="total" data-type="number" caption="Total"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="total_selesai" data-type="number" caption="Selesai"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="70" alignment="center" data-field="persen_selesai" data-type="number" caption="%"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="total_inproses" data-type="number" caption="InProgress"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="70" alignment="center" data-field="persen_inproses" data-type="number" caption="%"
|
||||
css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_response" data-type="number"
|
||||
caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="max_durasi_response" data-type="number" caption="Max"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="min_durasi_response" data-type="number" caption="Min"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="total_diatas_sla_response" data-type="number"
|
||||
caption="> SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="total_dibawah_sla_response" data-type="number"
|
||||
caption="≤ SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_selesai"
|
||||
data-type="number"
|
||||
caption="Selesai"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="70"
|
||||
alignment="center"
|
||||
data-field="persen_selesai"
|
||||
data-type="number"
|
||||
caption="%"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_inproses"
|
||||
data-type="number"
|
||||
caption="InProgress"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="70"
|
||||
alignment="center"
|
||||
data-field="persen_inproses"
|
||||
data-type="number"
|
||||
caption="%"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_response"
|
||||
data-type="number"
|
||||
caption="Rata-Rata"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_durasi_response"
|
||||
data-type="number"
|
||||
caption="Total Durasi"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Jumlah Durasi"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.avg_durasi_response * rowData.total_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="max_durasi_response"
|
||||
data-type="number"
|
||||
caption="Max"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="min_durasi_response"
|
||||
data-type="number"
|
||||
caption="Min"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_diatas_sla_response"
|
||||
data-type="number"
|
||||
caption="> SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_dibawah_sla_response"
|
||||
data-type="number"
|
||||
caption="≤ SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
<DxColumn alignment="center" caption="Penyelesaian" css-class="custom-table-column">
|
||||
<DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery" data-type="number"
|
||||
caption="Rata-Rata" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="max_durasi_recovery" data-type="number" caption="Max"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="min_durasi_recovery" data-type="number" caption="Min"
|
||||
css-class="custom-table-column" cell-template="formatTime" />
|
||||
<DxColumn :width="150" alignment="center" data-field="total_diatas_sla_recovery" data-type="number"
|
||||
caption="> SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn :width="150" alignment="center" data-field="total_dibawah_sla_recovery" data-type="number"
|
||||
caption="≤ SLA" css-class="custom-table-column" cell-template="formatNumber" />
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="avg_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Rata-Rata"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Total Durasi"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Jumlah Durasi"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.avg_durasi_recovery * rowData.total_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="max_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Max"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="min_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Min"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatTime"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_diatas_sla_recovery"
|
||||
data-type="number"
|
||||
caption="> SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="total_dibawah_sla_recovery"
|
||||
data-type="number"
|
||||
caption="≤ SLA"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total" summary-type="sum"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_selesai" summary-type="sum"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="persen_selesai" summary-type="avg"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="total_inproses" summary-type="sum"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="persen_inproses" summary-type="avg"
|
||||
css-class="!text-right" :customize-text="(e: any) => formatPercentage(e.value)" />
|
||||
<DxGroupItem :show-in-group-footer="false" :align-by-column="true" column="avg_durasi_dispatch"
|
||||
summary-type="avg" css-class="!text-right" :customize-text="(e: any) => formatNumber(e.value)" />
|
||||
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="max_durasi_dispatch"
|
||||
summary-type="max"
|
||||
column="total"
|
||||
name="total"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="min_durasi_dispatch"
|
||||
summary-type="min"
|
||||
column="total_selesai"
|
||||
name="total_selesai"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="persen_selesai"
|
||||
name="persen_selesai"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="total_inproses"
|
||||
name="total_inproses"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="persen_inproses"
|
||||
name="persen_inproses"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="avg_durasi_response"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="total_durasi_response"
|
||||
name="total_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="count_durasi_response"
|
||||
name="count_durasi_response"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
@ -154,7 +353,26 @@
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="avg_durasi_recovery"
|
||||
summary-type="avg"
|
||||
name="avg_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="total_durasi_recovery"
|
||||
name="total_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
:show-in-group-footer="false"
|
||||
:align-by-column="true"
|
||||
column="count_durasi_recovery"
|
||||
name="count_durasi_recovery"
|
||||
summary-type="custom"
|
||||
css-class="!text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
@ -218,14 +436,29 @@
|
||||
</DxDataGrid>
|
||||
</div>
|
||||
|
||||
<DetailDialog :open="dialogDetail" title="Detail Rekapitulasi Keluhan All" @on-close="closedialogDetail"
|
||||
:full-width="true">
|
||||
<DetailDialog
|
||||
:open="dialogDetail"
|
||||
title="Detail Rekapitulasi Keluhan All"
|
||||
@on-close="closedialogDetail"
|
||||
:full-width="true"
|
||||
>
|
||||
<div class="w-full mb-4 lg:w-[70%] lg:float-left">
|
||||
<div class="p-4 bg-white rounded-xl lg:mr-4">
|
||||
<DxDataGrid :allow-column-reordering="true" class="max-h-[calc(100vh-140px)]" :data-source="dataSub"
|
||||
:show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true"
|
||||
:hover-state-enabled="true" @selection-changed="onDataSubSelectionChanged" :column-width="100"
|
||||
@exporting="onExportingDetail" :allow-column-resizing="true" column-resizing-mode="widget">
|
||||
<DxDataGrid
|
||||
:allow-column-reordering="true"
|
||||
class="max-h-[calc(100vh-140px)]"
|
||||
:data-source="dataSub"
|
||||
:show-column-lines="true"
|
||||
:show-row-lines="false"
|
||||
:show-borders="true"
|
||||
:row-alternation-enabled="true"
|
||||
:hover-state-enabled="true"
|
||||
@selection-changed="onDataSubSelectionChanged"
|
||||
:column-width="100"
|
||||
@exporting="onExportingDetail"
|
||||
:allow-column-resizing="true"
|
||||
column-resizing-mode="widget"
|
||||
>
|
||||
<DxSelection mode="single" />
|
||||
<DxPaging :page-size="20" :enabled="true" />
|
||||
<DxPager
|
||||
@ -238,7 +471,11 @@
|
||||
/>
|
||||
|
||||
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
|
||||
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" />
|
||||
<DxExport
|
||||
:enabled="true"
|
||||
:formats="['pdf', 'xlsx', 'document']"
|
||||
:allow-export-selected-data="false"
|
||||
/>
|
||||
|
||||
<DxColumn
|
||||
css-class="custom-table-column"
|
||||
@ -418,12 +655,20 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Dalam Proses Bidang:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_response" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_response"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Selesai Bidang Unit:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.waktu_recovery" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.waktu_recovery"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -469,17 +714,30 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Alamat Pelapor:</h3>
|
||||
<InputText :readonly="true" type="textarea" :value="dataSubSelected?.alamat_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
type="textarea"
|
||||
:value="dataSubSelected?.alamat_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">NO Telp Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.no_telp_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.no_telp_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Keterangan Pelapor:</h3>
|
||||
<InputText :readonly="true" :value="dataSubSelected?.keterangan_pelapor" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
:value="dataSubSelected?.keterangan_pelapor"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -489,7 +747,12 @@
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
<h3 class="text-sm font-medium w-[135px] text-gray-800">Uraian:</h3>
|
||||
<InputText :readonly="true" type="textarea" :value="dataSubSelected?.uraian" class-name="flex-1" />
|
||||
<InputText
|
||||
:readonly="true"
|
||||
type="textarea"
|
||||
:value="dataSubSelected?.uraian"
|
||||
class-name="flex-1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-center justify-between w-full">
|
||||
@ -517,12 +780,9 @@ import { ref, onMounted } from 'vue'
|
||||
import { DxDataGrid } from 'devextreme-vue'
|
||||
import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxPager,
|
||||
DxScrolling,
|
||||
DxSearchPanel,
|
||||
DxSelection,
|
||||
DxSummary,
|
||||
@ -569,6 +829,134 @@ const reportMeta = ref({
|
||||
ulp: { id: 0, name: 'Semua Unit Layanan Pelanggan' },
|
||||
periode: ''
|
||||
})
|
||||
const grouping = ref<any[]>([
|
||||
{
|
||||
data: '',
|
||||
caption: 'Semua Unit'
|
||||
},
|
||||
{
|
||||
data: 'nama_regional',
|
||||
caption: 'Regional'
|
||||
},
|
||||
{
|
||||
data: 'nama_uid',
|
||||
caption: 'UID'
|
||||
},
|
||||
{
|
||||
data: 'nama_up3',
|
||||
caption: 'UP3'
|
||||
}
|
||||
])
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const onCellClicked = (e: any) => {
|
||||
console.log('cell clicked', e)
|
||||
@ -638,6 +1026,50 @@ const filterData = async (params: any) => {
|
||||
const { ulp, uid, up3 } = params
|
||||
const dateValue = params.periode.split(' s/d ')
|
||||
|
||||
var groupList: any[] = [
|
||||
{
|
||||
data: '',
|
||||
caption: 'Semua Unit'
|
||||
},
|
||||
{
|
||||
data: 'nama_regional',
|
||||
caption: 'Regional'
|
||||
},
|
||||
{
|
||||
data: 'nama_uid',
|
||||
caption: 'UID'
|
||||
},
|
||||
{
|
||||
data: 'nama_up3',
|
||||
caption: 'UP3'
|
||||
}
|
||||
]
|
||||
|
||||
if (uid?.id != 0) {
|
||||
groupList.forEach((item, index) => {
|
||||
if (item.caption == 'Semua Unit' || item.caption == 'Regional') {
|
||||
groupList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
|
||||
if (up3?.id != 0) {
|
||||
groupList.forEach((item, index) => {
|
||||
if (item.caption == 'UID') {
|
||||
groupList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
|
||||
if (ulp?.id != 0) {
|
||||
groupList.forEach((item, index) => {
|
||||
if (item.caption == 'UP3') {
|
||||
groupList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
grouping.value = groupList
|
||||
|
||||
const query = {
|
||||
dateFrom: dateValue[0]
|
||||
? dateValue[0].split('-').reverse().join('-')
|
||||
|
@ -45,7 +45,6 @@
|
||||
:width="50"
|
||||
alignment="center"
|
||||
data-type="number"
|
||||
data-field="number"
|
||||
caption="No"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
@ -139,6 +138,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Jumlah Respon"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -199,6 +211,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Jumlah Respon"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -249,59 +274,70 @@
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="Total"
|
||||
show-in-column="Fungsi Bidang"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_selesai"
|
||||
column="total_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}%"
|
||||
summary-type="custom"
|
||||
name="persen_selesai"
|
||||
column="persen_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_inproses"
|
||||
column="total_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}%"
|
||||
summary-type="custom"
|
||||
name="persen_inproses"
|
||||
column="persen_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_response"
|
||||
column="total_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_response"
|
||||
column="count_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_response"
|
||||
column="avg_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
column="min_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
@ -318,35 +354,45 @@
|
||||
display-format="{0}"
|
||||
column="total_diatas_sla_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
column="total_dibawah_sla_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_recovery"
|
||||
column="total_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_recovery"
|
||||
column="count_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_recovery"
|
||||
column="avg_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
summary-type="min"
|
||||
display-format="{0}"
|
||||
column="min_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => (parseInt(e.value) ? formatWaktu(e.value) : '-')"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
summary-type="max"
|
||||
display-format="{0}"
|
||||
column="max_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
@ -357,12 +403,14 @@
|
||||
display-format="{0}"
|
||||
column="total_diatas_sla_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
column="total_dibawah_sla_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
</DxSummary>
|
||||
|
||||
@ -779,7 +827,6 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxPager,
|
||||
DxSummary,
|
||||
@ -829,6 +876,116 @@ const reportMeta = ref({
|
||||
groupBy: false
|
||||
})
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setAgreementDialog = (status: boolean, progress: number) => {
|
||||
agreeToShowDialog.value = status
|
||||
progressSelected.value = progress
|
||||
|
@ -128,6 +128,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Jumlah Response"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -188,6 +201,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Jumlah Recovery"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -238,7 +264,7 @@
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxGroupItem
|
||||
display-format="Total"
|
||||
show-in-column="Jenis Keluhan"
|
||||
@ -246,56 +272,64 @@
|
||||
:show-in-group-footer="true"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_selesai"
|
||||
column="total_selesai"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}%"
|
||||
summary-type="custom"
|
||||
name="persen_selesai"
|
||||
column="persen_selesai"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_inproses"
|
||||
column="total_inproses"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}%"
|
||||
summary-type="custom"
|
||||
name="persen_inproses"
|
||||
column="persen_inproses"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_response"
|
||||
column="total_durasi_response"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_response"
|
||||
column="count_durasi_response"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_response"
|
||||
column="avg_durasi_response"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
@ -334,16 +368,24 @@
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_recovery"
|
||||
column="total_durasi_recovery"
|
||||
css-class="text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_recovery"
|
||||
column="count_durasi_recovery"
|
||||
css-class="text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_recovery"
|
||||
column="avg_durasi_recovery"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
@ -388,50 +430,57 @@
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_selesai"
|
||||
column="total_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}%"
|
||||
summary-type="custom"
|
||||
name="persen_selesai"
|
||||
column="persen_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_inproses"
|
||||
column="total_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}%"
|
||||
summary-type="custom"
|
||||
name="persen_inproses"
|
||||
column="persen_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_response"
|
||||
column="total_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_response"
|
||||
column="count_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_response"
|
||||
column="avg_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -465,15 +514,22 @@
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_recovery"
|
||||
column="total_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_recovery"
|
||||
column="count_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_recovery"
|
||||
column="avg_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -922,7 +978,6 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxPager,
|
||||
DxSummary,
|
||||
@ -971,6 +1026,116 @@ const reportMeta = ref({
|
||||
periode: ''
|
||||
})
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setAgreementDialog = (status: boolean, progress: number) => {
|
||||
agreeToShowDialog.value = status
|
||||
progressSelected.value = progress
|
||||
|
@ -139,6 +139,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -199,6 +212,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -249,58 +275,64 @@
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="Total"
|
||||
show-in-column="kelompok"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_selesai"
|
||||
column="total_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_selesai"
|
||||
column="persen_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_inproses"
|
||||
column="total_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_inproses"
|
||||
column="persen_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_response"
|
||||
column="total_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_response"
|
||||
column="count_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_response"
|
||||
column="avg_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -334,15 +366,22 @@
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_recovery"
|
||||
column="total_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_recovery"
|
||||
column="count_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_recovery"
|
||||
column="avg_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -785,7 +824,6 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxPager,
|
||||
DxSummary,
|
||||
@ -835,6 +873,116 @@ const reportMeta = ref({
|
||||
groupBy: false
|
||||
})
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setAgreementDialog = (status: boolean, progress: number) => {
|
||||
agreeToShowDialog.value = status
|
||||
progressSelected.value = progress
|
||||
|
@ -137,6 +137,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -197,6 +210,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Jumlah Durasi Recovery"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -247,58 +273,64 @@
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="Total"
|
||||
show-in-column="tanggal_lapor"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_selesai"
|
||||
column="total_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_selesai"
|
||||
column="persen_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_inproses"
|
||||
column="total_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_inproses"
|
||||
column="persen_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_response"
|
||||
column="total_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_response"
|
||||
column="count_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_response"
|
||||
column="avg_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -332,15 +364,22 @@
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_recovery"
|
||||
column="total_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_recovery"
|
||||
column="count_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_recovery"
|
||||
column="avg_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -787,7 +826,6 @@ import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxPager,
|
||||
DxSummary,
|
||||
@ -838,6 +876,116 @@ const reportMeta = ref({
|
||||
groupBy: false
|
||||
})
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setAgreementDialog = (status: boolean, progress: number) => {
|
||||
agreeToShowDialog.value = status
|
||||
progressSelected.value = progress
|
||||
|
@ -128,6 +128,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_response"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_response * rowData.avg_durasi_response
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -188,6 +201,19 @@
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
/>
|
||||
<DxColumn
|
||||
:visible="false"
|
||||
:width="150"
|
||||
alignment="center"
|
||||
data-field="count_durasi_recovery"
|
||||
data-type="number"
|
||||
caption="Total"
|
||||
css-class="custom-table-column"
|
||||
cell-template="formatNumber"
|
||||
:calculate-cell-value="
|
||||
(rowData: any) => rowData.total_durasi_recovery * rowData.avg_durasi_recovery
|
||||
"
|
||||
/>
|
||||
<DxColumn
|
||||
:width="150"
|
||||
alignment="center"
|
||||
@ -238,65 +264,72 @@
|
||||
</DxColumn>
|
||||
</DxColumn>
|
||||
|
||||
<DxSummary>
|
||||
<DxSummary :calculate-custom-summary="calculateCustomSummary">
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="Total"
|
||||
show-in-column="nama_ulp"
|
||||
css-class="!text-left"
|
||||
:show-in-group-footer="true"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_selesai"
|
||||
column="total_selesai"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_selesai"
|
||||
column="persen_selesai"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_inproses"
|
||||
column="total_inproses"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_inproses"
|
||||
column="persen_inproses"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_response"
|
||||
column="total_durasi_response"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_response"
|
||||
column="count_durasi_response"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_response"
|
||||
column="avg_durasi_response"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
@ -335,16 +368,24 @@
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_recovery"
|
||||
column="total_durasi_recovery"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_recovery"
|
||||
column="count_durasi_recovery"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxGroupItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_recovery"
|
||||
column="avg_durasi_recovery"
|
||||
css-class="!text-right"
|
||||
:show-in-group-footer="true"
|
||||
@ -384,56 +425,62 @@
|
||||
/>
|
||||
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="Total"
|
||||
show-in-column="nama_ulp"
|
||||
css-class="text-white !text-left"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total"
|
||||
column="total"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_selesai"
|
||||
column="total_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_selesai"
|
||||
column="persen_selesai"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_inproses"
|
||||
column="total_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="persen_inproses"
|
||||
column="persen_inproses"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatPercentage(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_response"
|
||||
column="total_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_response"
|
||||
column="count_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_response"
|
||||
column="avg_durasi_response"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -467,15 +514,22 @@
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="sum"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="total_durasi_recovery"
|
||||
column="total_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="avg"
|
||||
display-format="{0}"
|
||||
summary-type="custom"
|
||||
name="count_durasi_recovery"
|
||||
column="count_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
/>
|
||||
<DxTotalItem
|
||||
summary-type="custom"
|
||||
name="avg_durasi_recovery"
|
||||
column="avg_durasi_recovery"
|
||||
css-class="text-white !text-right"
|
||||
:customize-text="(e: any) => formatNumber(e.value)"
|
||||
@ -911,13 +965,12 @@ import DetailDialog from '@/components/Dialogs/DetailDialog.vue'
|
||||
import InputText from '@/components/InputText.vue'
|
||||
import Filters from '@/components/Form/Filters.vue'
|
||||
import Type8 from '@/components/Form/FiltersType/Type8.vue'
|
||||
import { ref, onMounted, watch } from 'vue'
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { DxDataGrid } from 'devextreme-vue'
|
||||
import {
|
||||
DxColumn,
|
||||
DxColumnFixing,
|
||||
DxExport,
|
||||
DxLoadPanel,
|
||||
DxPaging,
|
||||
DxPager,
|
||||
DxSummary,
|
||||
@ -965,6 +1018,116 @@ const reportMeta = ref({
|
||||
periode: ''
|
||||
})
|
||||
|
||||
let total = 0
|
||||
let total_selesai = 0
|
||||
let total_inproses = 0
|
||||
let count_durasi_response = 0
|
||||
let total_durasi_response = 0
|
||||
let total_durasi_recovery = 0
|
||||
let count_durasi_recovery = 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
|
||||
}
|
||||
}
|
||||
|
||||
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 === 'total_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_response') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_response += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_response') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
total_durasi_response = 0
|
||||
count_durasi_response = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_response / total_durasi_response
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'count_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
count_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'total_durasi_recovery') {
|
||||
if (options.summaryProcess === 'calculate') {
|
||||
total_durasi_recovery += options.value
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = total_durasi_recovery
|
||||
}
|
||||
}
|
||||
|
||||
if (options.name === 'avg_durasi_recovery') {
|
||||
if (options.summaryProcess === 'start') {
|
||||
count_durasi_recovery = 0
|
||||
total_durasi_recovery = 0
|
||||
} else if (options.summaryProcess === 'finalize') {
|
||||
options.totalValue = count_durasi_recovery / total_durasi_recovery
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setAgreementDialog = (status: boolean, progress: number) => {
|
||||
agreeToShowDialog.value = status
|
||||
progressSelected.value = progress
|
||||
|
@ -584,11 +584,13 @@ export const queries = {
|
||||
persen_selesai
|
||||
total_inproses
|
||||
persen_inproses
|
||||
total_durasi_response
|
||||
avg_durasi_response
|
||||
min_durasi_response
|
||||
max_durasi_response
|
||||
total_dibawah_sla_response
|
||||
total_diatas_sla_response
|
||||
total_durasi_recovery
|
||||
avg_durasi_recovery
|
||||
min_durasi_recovery
|
||||
max_durasi_recovery
|
||||
|
Loading…
x
Reference in New Issue
Block a user