Refactor code: Remove unnecessary code and update placeholders

This commit is contained in:
kur0nek-o 2024-03-01 11:05:34 +07:00
parent 7997adacb9
commit 61105e8e02
8 changed files with 647 additions and 35 deletions

View File

@ -12,6 +12,7 @@ import {
itemsUlp
} from './reference'
import { onMounted, ref } from 'vue'
const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah'
const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'
const ulpPlaceholder = 'Semua Unit Layanan Pelanggan'
@ -24,8 +25,9 @@ const data = ref({
up3: up3.value,
ulp: ulp.value,
periode: '',
group: 1
groupBy: false
})
const setUid = (value: any) => {
uid.value = value
selectedUid(value)
@ -47,6 +49,7 @@ const setUlp = (value: any) => {
console.log('data.value', data.value)
}
onMounted(() => {
emit('update:filters', data.value)
fetchUid()
@ -96,12 +99,7 @@ onMounted(() => {
>
<InlineRadioGroup
@update:group-value="
(value) => {
data.group = value
console.log('data.group', value)
}
"
@update:group-value="(value) => (data.groupBy = value.id === 2)"
:radio-items="[
{ id: 1, title: 'Tidak' },
{ id: 2, title: 'Ya, Grupkan' }

View File

@ -16,7 +16,7 @@ import { onMounted, ref } from 'vue'
const emit = defineEmits(['update:filters'])
const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah'
const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'
const poskoPlaceholder = 'Semua Unit Layanan Pelanggan'
const poskoPlaceholder = 'Semua Posko'
const up3 = ref({ id: 0, name: up3Placeholder })
const uid = ref({ id: 0, name: uidPlaceholder })
const posko = ref({ id: 0, name: poskoPlaceholder })

View File

@ -16,16 +16,16 @@ import { onMounted, ref, watch } from 'vue'
const emit = defineEmits(['update:filters'])
const uidPlaceholder = 'Semua Unit Induk Distribusi/Wilayah'
const up3Placeholder = 'Semua Unit Pelaksanaan Pelayanan Pelanggan'
const poskoPlaceholder = 'Semua Unit Layanan Pelanggan'
const poskoPlaceholder = 'Semua Posko'
const up3 = ref({ id: 0, name: up3Placeholder })
const uid = ref({ id: 0, name: uidPlaceholder })
const posko = ref({ id: 0, name: poskoPlaceholder })
const totalMin = ref("1 Menit")
const totalMax = ref("5 Menit")
const totalMin = ref('1 Menit')
const totalMax = ref('5 Menit')
const setDataMin = (value: any) => totalMin.value = value
const setDataMin = (value: any) => (totalMin.value = value)
const getDataMin = () => totalMin.value
const setDataMax = (value: any) => totalMax.value = value
const setDataMax = (value: any) => (totalMax.value = value)
const getDataMax = () => totalMax.value
const data = ref({
@ -37,8 +37,6 @@ const data = ref({
maxTime: getDataMax().split(' ')[0]
})
const setUid = (value: any) => {
uid.value = value
selectedUid(value)
@ -109,21 +107,35 @@ onMounted(() => {
<template>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0">Unit Induk Distribusi/Wilayah:</label>
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0"
>Unit Induk Distribusi/Wilayah:</label
>
<Select @update:selected="setUid($event)" :data="itemsUid" :placeholder="uidPlaceholder" />
</div>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0">Unit Pelaksanaan Pelayanan Pelanggan:</label>
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0"
>Unit Pelaksanaan Pelayanan Pelanggan:</label
>
<Select @update:selected="setUp3($event)" :data="itemsUp3" :selected="up3" :placeholder="up3Placeholder" />
<Select
@update:selected="setUp3($event)"
:data="itemsUp3"
:selected="up3"
:placeholder="up3Placeholder"
/>
</div>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">
<label class="block mb-2 font-semibold text-gray-800 sm:mb-0">Posko:</label>
<Select @update:selected="setPosko($event)" :data="itemsPosko" :selected="posko" :placeholder="poskoPlaceholder" />
<Select
@update:selected="setPosko($event)"
:data="itemsPosko"
:selected="posko"
:placeholder="poskoPlaceholder"
/>
</div>
<div class="sm:grid sm:grid-cols-2 lg:grid-cols-3 sm:items-center">

View File

@ -369,7 +369,5 @@ const filterData = (params: any) => {
})
}
const filters = ref({
groupBy: false
})
const filters = ref({ groupBy: false })
</script>

View File

@ -210,11 +210,6 @@
{{ data.text }}
</p>
</template>
<template #title-header="{ data }">
<p class="w-full text-center">
{{ data.column.caption }}
</p>
</template>
</DxDataGrid>
</div>

View File

@ -7,6 +7,7 @@
>
<Type13 @update:filters="(value) => (filters = value)" />
</Filters>
<div id="data">
<DxDataGrid
class="max-h-[calc(100vh-140px)] mb-10"
@ -45,18 +46,30 @@
<DxColumn
css-class="custom-table-column"
:width="50"
:width="100"
alignment="center"
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
data-type="number"
data-field="no"
caption="No"
/>
<!-- <DxColumn
:width="120"
alignment="center"
data-field="nama_uid"
caption="Nama UID"
css-class="custom-table-column"
:group-index="0"
name="NamaUID"
v-if="filters.groupBy"
/> -->
<DxColumn
:width="170"
alignment="center"
data-field="fungsi_bidang"
caption="Fungsi Bidang"
css-class="custom-table-column"
cell-template="cell-left"
/>
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn
@ -83,6 +96,7 @@
data-type="number"
caption="%"
css-class="custom-table-column"
cell-template="percent"
/>
</DxColumn>
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
@ -101,6 +115,7 @@
data-type="number"
caption="%"
css-class="custom-table-column"
cell-template="percent"
/>
</DxColumn>
</DxColumn>
@ -217,11 +232,130 @@
</DxColumn>
</DxColumn>
<DxSummary>
<DxTotalItem
summary-type="sum"
display-format="Total"
show-in-column="no"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_selesai"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}%"
column="persen_selesai"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_inproses"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}%"
column="persen_inproses"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="min_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="max_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="min_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="max_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_recovery"
css-class="text-white"
/>
</DxSummary>
<template #data-waktu="{ data }">
<p>
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
</p>
</template>
<template #percent="{ data }">
<p>{{ data.text }}%</p>
</template>
<template #cell-left="{ data }">
<p class="text-left">
{{ data.text }}
</p>
</template>
</DxDataGrid>
</div>
</template>
@ -240,7 +374,9 @@ import {
DxPaging,
DxScrolling,
DxSearchPanel,
DxSelection
DxSelection,
DxSummary,
DxTotalItem
} from 'devextreme-vue/data-grid'
import { jsPDF } from 'jspdf'
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
@ -325,6 +461,44 @@ const GET_DATA = gql`
}
}
`
// const GET_DATA = gql`
// query rekapitulasiKeluhanPenyelesaianPerFungsiBidang(
// $dateFrom: Date!
// $dateTo: Date!
// $idUlp: Int!
// $idUid: Int!
// $idUp3: Int!
// ) {
// rekapitulasiKeluhanPenyelesaianPerFungsiBidang(
// dateFrom: $dateFrom
// dateTo: $dateTo
// idUlp: $idUlp
// idUid: $idUid
// idUp3: $idUp3
// ) {
// id_uid
// nama_uid
// fungsi_bidang
// total
// total_durasi_response
// total_durasi_recovery
// total_selesai
// persen_selesai
// total_inproses
// persen_inproses
// avg_durasi_response
// min_durasi_response
// max_durasi_response
// total_dibawah_sla_response
// total_diatas_sla_response
// avg_durasi_recovery
// min_durasi_recovery
// max_durasi_recovery
// total_dibawah_sla_recovery
// total_diatas_sla_recovery
// }
// }
// `
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
@ -332,7 +506,7 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
idUid: 0,
idUp3: 0
})
const filters = ref()
const filters = ref({ groupBy: false })
const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ')

View File

@ -41,10 +41,11 @@
<DxColumn
css-class="custom-table-column"
:width="50"
:width="100"
alignment="center"
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
data-type="number"
data-field="no"
caption="No"
/>
<DxColumn
@ -53,7 +54,17 @@
data-field="tipe_keluhan"
caption="Jenis Keluhan"
css-class="custom-table-column"
cell-template="cell-left"
/>
<!-- <DxColumn
:width="170"
alignment="center"
data-field="tipe_keluhan"
caption="Jenis Keluhan"
name="tipeKeluhan"
css-class="custom-table-column"
:group-index="0"
/> -->
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn
:width="150"
@ -97,6 +108,7 @@
data-type="number"
caption="%"
css-class="custom-table-column"
cell-template="percent"
/>
</DxColumn>
</DxColumn>
@ -213,11 +225,257 @@
</DxColumn>
</DxColumn>
<DxSummary>
<DxGroupItem
summary-type="sum"
display-format="Total"
show-in-column="no"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_selesai"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}%"
column="persen_selesai"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_inproses"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}%"
column="persen_inproses"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_durasi_response"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_response"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="min_durasi_response"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="max_durasi_response"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_response"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_response"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_durasi_recovery"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_recovery"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="min_durasi_recovery"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="max_durasi_recovery"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_recovery"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxGroupItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_recovery"
css-class="text-white"
:show-in-group-footer="true"
/>
<DxTotalItem
summary-type="sum"
display-format="Total"
show-in-column="no"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_selesai"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}%"
column="persen_selesai"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_inproses"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}%"
column="persen_inproses"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="min_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="max_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="min_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="max_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_recovery"
css-class="text-white"
/>
</DxSummary>
<template #data-waktu="{ data }">
<p>
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
</p>
</template>
<template #percent="{ data }">
<p>{{ data.text }}%</p>
</template>
<template #cell-left="{ data }">
<p class="text-left">
{{ data.text }}
</p>
</template>
</DxDataGrid>
</div>
</template>
@ -236,7 +494,10 @@ import {
DxPaging,
DxScrolling,
DxSearchPanel,
DxSelection
DxSelection,
DxSummary,
DxTotalItem,
DxGroupItem
} from 'devextreme-vue/data-grid'
import { jsPDF } from 'jspdf'
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
@ -320,6 +581,7 @@ const GET_DATA = gql`
}
}
`
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10),

View File

@ -46,18 +46,30 @@
<DxColumn
css-class="custom-table-column"
:width="50"
:width="100"
alignment="center"
:calculateCellValue="(item: any) => data.findIndex((i) => i == item) + 1"
data-type="number"
data-field="no"
caption="No"
/>
<!-- <DxColumn
:width="120"
alignment="center"
data-field="nama_uid"
caption="Nama UID"
css-class="custom-table-column"
:group-index="0"
name="NamaUID"
v-if="filters.groupBy"
/> -->
<DxColumn
:width="170"
alignment="center"
data-field="kelompok"
caption="Kelompok Keluhan"
css-class="custom-table-column"
cell-template="cell-left"
/>
<DxColumn alignment="center" caption="Laporan" css-class="custom-table-column">
<DxColumn
@ -84,6 +96,7 @@
data-type="number"
caption="%"
css-class="custom-table-column"
cell-template="percent"
/>
</DxColumn>
<DxColumn alignment="center" caption="Belum Selesai" css-class="custom-table-column">
@ -102,6 +115,7 @@
data-type="number"
caption="%"
css-class="custom-table-column"
cell-template="percent"
/>
</DxColumn>
</DxColumn>
@ -218,11 +232,130 @@
</DxColumn>
</DxColumn>
<DxSummary>
<DxTotalItem
summary-type="sum"
display-format="Total"
show-in-column="no"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_selesai"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}%"
column="persen_selesai"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_inproses"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}%"
column="persen_inproses"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="min_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="max_durasi_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_response"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="avg_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="min_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="max_durasi_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_diatas_sla_recovery"
css-class="text-white"
/>
<DxTotalItem
summary-type="sum"
display-format="{0}"
column="total_dibawah_sla_recovery"
css-class="text-white"
/>
</DxSummary>
<template #data-waktu="{ data }">
<p>
{{ parseInt(data.text) ? formatWaktu(data.text) : '-' }}
</p>
</template>
<template #percent="{ data }">
<p>{{ data.text }}%</p>
</template>
<template #cell-left="{ data }">
<p class="text-left">
{{ data.text }}
</p>
</template>
</DxDataGrid>
</div>
</template>
@ -241,7 +374,9 @@ import {
DxPaging,
DxScrolling,
DxSearchPanel,
DxSelection
DxSelection,
DxSummary,
DxTotalItem
} from 'devextreme-vue/data-grid'
import { jsPDF } from 'jspdf'
import { exportDataGrid as exportToPdf } from 'devextreme/pdf_exporter'
@ -325,6 +460,44 @@ const GET_DATA = gql`
}
}
`
// const GET_DATA = gql`
// query rekapitulasiKeluhanPerKelompokKeluhan(
// $dateFrom: Date!
// $dateTo: Date!
// $idUlp: Int!
// $idUid: Int!
// $idUp3: Int!
// ) {
// rekapitulasiKeluhanPerKelompokKeluhan(
// dateFrom: $dateFrom
// dateTo: $dateTo
// idUlp: $idUlp
// idUid: $idUid
// idUp3: $idUp3
// ) {
// kelompok
// id_uid
// nama_uid
// total
// total_selesai
// persen_selesai
// total_inproses
// persen_inproses
// avg_durasi_response
// min_durasi_response
// max_durasi_response
// total_durasi_recovery
// total_durasi_response
// total_dibawah_sla_response
// total_diatas_sla_response
// avg_durasi_recovery
// min_durasi_recovery
// max_durasi_recovery
// total_dibawah_sla_recovery
// total_diatas_sla_recovery
// }
// }
// `
const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
dateFrom: new Date('2023-10-01').toISOString().slice(0, 10),
dateTo: new Date('2023-10-01').toISOString().slice(0, 10),
@ -332,7 +505,7 @@ const { onResult, onError, loading, refetch } = useQuery(GET_DATA, {
idUid: 0,
idUp3: 0
})
const filters = ref()
const filters = ref({ groupBy: false })
const filterData = (params: any) => {
const dateValue = params.periode.split(' s/d ')