Add new fields and columns to Gangguan tables

This commit is contained in:
kur0nek-o
2024-02-28 21:11:13 +07:00
parent 68fd3e6bee
commit dc7a2ed25e
5 changed files with 238 additions and 57 deletions

View File

@ -4,66 +4,213 @@
</Filters> </Filters>
<div id="dataTable"> <div id="dataTable">
<DxDataGrid class="max-h-[calc(100vh-140px)]" :remote-operations="true" :data-source="data" key-expr="no_laporan" <DxDataGrid
:show-column-lines="true" :show-row-lines="false" :show-borders="true" :row-alternation-enabled="true" class="max-h-[calc(100vh-140px)]"
:hover-state-enabled="true" @selection-changed="onSelectionChanged" :column-width="100" @exporting="onExporting" :remote-operations="true"
:allow-column-resizing="true" column-resizing-mode="widget"> :data-source="data"
key-expr="no_laporan"
:show-column-lines="true"
:show-row-lines="false"
:show-borders="true"
:row-alternation-enabled="true"
:hover-state-enabled="true"
@selection-changed="onSelectionChanged"
:column-width="100"
@exporting="onExporting"
:allow-column-resizing="true"
column-resizing-mode="widget"
>
<DxPaging :page-size="5" :enabled="true" /> <DxPaging :page-size="5" :enabled="true" />
<DxPager :visible="true" :allowed-page-sizes="[5, 10, 20]" display-mode="full" :show-page-size-selector="true" <DxPager
:show-info="true" :show-navigation-buttons="true" /> :visible="true"
:allowed-page-sizes="[5, 10, 20]"
display-mode="full"
:show-page-size-selector="true"
:show-info="true"
:show-navigation-buttons="true"
/>
<DxSelection mode="single" /> <DxSelection mode="single" />
<!-- <DxScrolling column-rendering-mode="virtual" mode="virtual" row-rendering-mode="virtual" /> --> <!-- <DxScrolling column-rendering-mode="virtual" mode="virtual" row-rendering-mode="virtual" /> -->
<DxLoadPanel :position="position" :show-indicator="showIndicator" :show-pane="showPane" :shading="shading" <DxLoadPanel
v-if="loading" v-model:visible="loading" :enabled="true" /> :position="position"
:show-indicator="showIndicator"
:show-pane="showPane"
:shading="shading"
v-if="loading"
v-model:visible="loading"
:enabled="true"
/>
<DxSearchPanel :visible="true" :highlight-case-sensitive="true" /> <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
<DxExport :enabled="true" :formats="['pdf', 'xlsx', 'document']" :allow-export-selected-data="false" /> <DxExport
<DxColumn css-class="custom-table-column" :width="50" alignment="center" :enabled="true"
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1" data-type="number" caption="No" /> :formats="['pdf', 'xlsx', 'document']"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="no_laporan" :allow-export-selected-data="false"
caption="No Laporan" cell-template="data" /> />
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="pembuat_laporan" <DxColumn
caption="Pembuat Laporan" cell-template="data" /> css-class="custom-table-column"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="waktu_lapor" :width="50"
caption="Tgl Lapor" cell-template="data" /> alignment="center"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="waktu_dialihkan" :calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
caption="Tgl Dialihkan" cell-template="data" /> data-type="number"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="waktu_response" caption="No"
caption="Tgl Response" cell-template="data" /> />
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="waktu_recovery" <DxColumn
caption="Tgl Recovery" cell-template="data" /> css-class="custom-table-column"
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="durasi_response_time" :width="150"
caption="Durasi Response Time" cell-template="data" /> alignment="center"
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="durasi_recovery_time" data-field="no_laporan"
caption="Durasi Recovery Time" cell-template="data" /> caption="No Laporan"
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="nama_posko_lama" cell-template="data"
caption="Posko Awal" cell-template="data" /> />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="nama_posko_baru" <DxColumn
caption="Posko Tujuan" cell-template="data" /> css-class="custom-table-column"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="status_akhir" caption="Status" :width="150"
cell-template="data" /> alignment="center"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="idpel_nometer" data-field="pembuat_laporan"
caption="IDPEL/NO METER" cell-template="data" /> caption="Pembuat Laporan"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="nama_pelapor" cell-template="data"
caption="Nama Pelapor" cell-template="data" /> />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="alamat_pelapor" <DxColumn
caption="Alamat Pelapor" cell-template="data" /> css-class="custom-table-column"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="no_telp_pelapor" :width="150"
caption="No Telp Pelapor" cell-template="data" /> alignment="center"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="keterangan_pelapor" data-field="waktu_lapor"
caption="Keterangan Pelapor" cell-template="data" /> caption="Tgl Lapor"
<DxColumn css-class="custom-table-column" :width="150" alignment="center" data-field="media" caption="Sumber Lapor" cell-template="data"
cell-template="data" /> />
<DxColumn css-class="custom-table-column" :width="170" alignment="center" data-field="posko" caption="Posko" <DxColumn
cell-template="data" /> css-class="custom-table-column"
:width="150"
alignment="center"
data-field="waktu_dialihkan"
caption="Tgl Dialihkan"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="waktu_response"
caption="Tgl Response"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="waktu_recovery"
caption="Tgl Recovery"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="durasi_response_time"
caption="Durasi Response Time"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="durasi_recovery_time"
caption="Durasi Recovery Time"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="nama_posko_lama"
caption="Posko Awal"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="nama_posko_baru"
caption="Posko Tujuan"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="status_akhir"
caption="Status"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="idpel_nometer"
caption="IDPEL/NO METER"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="nama_pelapor"
caption="Nama Pelapor"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="alamat_pelapor"
caption="Alamat Pelapor"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="no_telp_pelapor"
caption="No Telp Pelapor"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="keterangan_pelapor"
caption="Keterangan Pelapor"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="150"
alignment="center"
data-field="media"
caption="Sumber Lapor"
cell-template="data"
/>
<DxColumn
css-class="custom-table-column"
:width="170"
alignment="center"
data-field="nama_posko_lama"
caption="Posko"
cell-template="data"
/>
<template #data="{ data }"> <template #data="{ data }">
<span class="cursor-pointer" @click="showData()"> <p class="cursor-pointer" @click="showData()">
{{ data.text }} {{ data.text }}
</span> </p>
</template> </template>
</DxDataGrid> </DxDataGrid>
</div> </div>
<DetailDialog :open="showDetail" title="Daftar Gangguan Dialihkan ke Posko Lain" @on-close="closeDetail"> <DetailDialog
:open="showDetail"
title="Daftar Gangguan Dialihkan ke Posko Lain"
@on-close="closeDetail"
>
<div class="w-full p-4 space-y-2 bg-white rounded-xl"> <div class="w-full p-4 space-y-2 bg-white rounded-xl">
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[170px] text-gray-800">No Laporan:</h3> <h3 class="text-sm font-medium w-[170px] text-gray-800">No Laporan:</h3>
@ -132,7 +279,12 @@
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">
<h3 class="text-sm font-medium w-[170px] text-gray-800">Alamat Pelapor:</h3> <h3 class="text-sm font-medium w-[170px] text-gray-800">Alamat Pelapor:</h3>
<InputText :readonly="true" type="textarea" :value="dataDetail?.alamat_pelapor" class-name="flex-1 h-[56px]" /> <InputText
:readonly="true"
type="textarea"
:value="dataDetail?.alamat_pelapor"
class-name="flex-1 h-[56px]"
/>
</div> </div>
<div class="flex flex-row items-center justify-between w-full"> <div class="flex flex-row items-center justify-between w-full">

View File

@ -52,14 +52,14 @@
<DxColumn <DxColumn
:width="120" :width="120"
alignment="center" alignment="center"
data-field="id_regu" data-field="kode_regu"
caption="Kode" caption="Kode"
css-class="custom-table-column" css-class="custom-table-column"
/> />
<DxColumn <DxColumn
:width="120" :width="120"
alignment="center" alignment="center"
data-field="id_regu" data-field="kode_regu"
caption="Kode" caption="Kode"
css-class="custom-table-column" css-class="custom-table-column"
group-index="0" group-index="0"
@ -388,7 +388,7 @@ const GET_REKAPITULASI_GANGGUAN_PER_REGU = gql`
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
id_regu kode_regu
nama_regu nama_regu
avg_durasi_recovery avg_durasi_recovery
avg_durasi_response avg_durasi_response
@ -473,7 +473,7 @@ const filterData = (params: any) => {
queryResult.data.rekapitulasiGangguanPerRegu.forEach((item: any) => { queryResult.data.rekapitulasiGangguanPerRegu.forEach((item: any) => {
const entry = { const entry = {
no: Number(i++), no: Number(i++),
id_regu: item.id_regu, kode_regu: item.kode_regu,
nama_regu: item.nama_regu, nama_regu: item.nama_regu,
laporan: { laporan: {
total: item.total, total: item.total,

View File

@ -48,6 +48,15 @@
data-type="number" data-type="number"
caption="No" caption="No"
/> />
<DxColumn
:width="120"
alignment="center"
data-field="nama_uid"
caption="Nama UID"
css-class="custom-table-column"
group-index="0"
v-if="filters.groupBy"
/>
<DxColumn <DxColumn
:width="170" :width="170"
alignment="center" alignment="center"
@ -290,6 +299,8 @@ const GET_REKAPITULASI_GANGGUAN_PER_TANGGAL = gql`
idUid: $idUid idUid: $idUid
idUp3: $idUp3 idUp3: $idUp3
) { ) {
id_uid
nama_uid
nama_posko nama_posko
avg_durasi_recovery avg_durasi_recovery
avg_durasi_response avg_durasi_response
@ -345,5 +356,7 @@ const filterData = (params: any) => {
}) })
} }
const filters = ref() const filters = ref({
groupBy: false
})
</script> </script>

View File

@ -54,10 +54,12 @@
/> />
<DxColumn <DxColumn
:width="170" :width="170"
alignment="center"
data-field="media" data-field="media"
caption="Nama Media" caption="Nama Media"
alignment="center"
cell-template="data"
css-class="custom-table-column" css-class="custom-table-column"
header-cell-template="title-header"
/> />
<DxColumn alignment="center" caption="Tanggal" css-class="custom-table-column"> <DxColumn alignment="center" caption="Tanggal" css-class="custom-table-column">
<DxColumn <DxColumn
@ -77,6 +79,17 @@
caption="Total" caption="Total"
css-class="custom-table-column" css-class="custom-table-column"
/> />
<template #data="{ data }">
<p class="text-left cursor-pointer">
{{ data.text }}
</p>
</template>
<template #title-header="{ data }">
<p class="text-center w-full">
{{ data.column.caption }}
</p>
</template>
</DxDataGrid> </DxDataGrid>
</div> </div>
</template> </template>

View File

@ -367,6 +367,9 @@ const GET_DAFTAR_GANGGUAN_RESPONSE_TIME = gql`
idpel_nometer idpel_nometer
keterangan_pelapor keterangan_pelapor
media media
penyebab
referensi_marking
tindakan
nama_pelapor nama_pelapor
is_marking is_marking
no_laporan no_laporan