From 117c192c330174065a320c65dd940c69c77839f7 Mon Sep 17 00:00:00 2001
From: Dede Fuji Abdul
Date: Thu, 18 Apr 2024 09:08:45 +0700
Subject: [PATCH 01/11] Refactor code to improve readability and fix bugs in
Gangguan and Monalisa components
---
.../Gangguan/Rekap/RGangguan_PerTanggal.vue | 60 +++++++++++++++++--
.../Bulanan/MonalisaLB_AgingComplaint.vue | 4 +-
src/utils/api/api.graphql.ts | 38 ++++++++++++
3 files changed, 94 insertions(+), 8 deletions(-)
diff --git a/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue b/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue
index cbc1d45..33e8a52 100755
--- a/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue
+++ b/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue
@@ -871,21 +871,69 @@ const setAgreementDialog = (status: boolean, progress: number) => {
const getDetail = async () => {
const dateValue = filters.value?.periode.split(' s/d ')
const ref = dataSelected.value
+ const { posko, uid, up3 } = filters.value
- const query = {
+ var query = {
dateFrom: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : '',
dateTo: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : '',
- posko: progressSelected.value == 0 ? 0 : ref?.id_posko ? ref?.id_posko : 0,
- idUid: progressSelected.value == 0 ? 0 : ref?.id_uid ? ref?.id_uid : 0,
- idUp3: progressSelected.value == 0 ? 0 : ref?.id_up3 ? ref?.id_up3 : 0,
- idRegu: ref?.id_regu ? ref?.id_regu : 0,
- idUlp: progressSelected.value == 0 ? 0 : ref?.id_ulp ? ref?.id_ulp : 0,
+ posko: 0,
+ idUid: 0,
+ idUp3: 0,
+ idUlp: 0,
+ idRegu: 0,
+ idUlp: 0,
namaRegional: ref?.nama_regional ? ref?.nama_regional : '',
media: ref?.media ? ref?.media : '',
isSelesai: progressSelected.value,
tanggal: ref?.tanggal ? reformatDate(ref?.tanggal, 'yyyy/MM/dd', 'yyyy-MM-dd') : ''
}
+ if (isGroupBy.value) {
+ query = {
+ ...query,
+ idUid: ref?.id_uid
+ }
+ if (uid.id != 0) {
+ query = {
+ ...query,
+ idUp3: ref?.id_up3
+ }
+
+ if (up3.id != 0) {
+ query = {
+ ...query,
+ posko: ref?.id_posko
+ }
+
+ if (posko.id != 0) {
+ query = {
+ ...query,
+ idUlp: ref?.id_ulp
+ }
+ }
+ }
+ }
+ } else {
+ if (uid.id != 0) {
+ query = {
+ ...query,
+ idUid: uid.id
+ }
+ if (up3.id != 0) {
+ query = {
+ ...query,
+ idUp3: up3.id
+ }
+ if (posko.id != 0) {
+ query = {
+ ...query,
+ posko: posko.id
+ }
+ }
+ }
+ }
+ }
+
loadingSubData.value = true
await requestGraphQl(queries.gangguan.rekap.gangguanAllDetail, query)
.then((result) => {
diff --git a/src/components/Pages/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.vue b/src/components/Pages/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.vue
index 5758cfa..c9b82a3 100755
--- a/src/components/Pages/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.vue
+++ b/src/components/Pages/Monalisa/Laporan/Bulanan/MonalisaLB_AgingComplaint.vue
@@ -876,8 +876,8 @@ const getDetail = async () => {
loadingSubData.value = true
await requestGraphQl(
parameterRequest.value.type == 'gangguan'
- ? queries.keluhan.rekap.rekapKeluhanAllDetail
- : queries.keluhan.rekap.rekapKeluhanAllDetail,
+ ? queries.monalisa.laporan.bulanan.agingComplaintBulananDetail
+ : queries.monalisa.laporan.bulanan.agingComplaintBulananDetail,
query
)
.then((result) => {
diff --git a/src/utils/api/api.graphql.ts b/src/utils/api/api.graphql.ts
index 2970094..c34e990 100755
--- a/src/utils/api/api.graphql.ts
+++ b/src/utils/api/api.graphql.ts
@@ -3396,6 +3396,44 @@ export const queries = {
}
}
`,
+ agingComplaintBulananDetail: gql`
+ query detailAgingComplaintBulanan(
+ $bulan: Int!
+ $tahun: Int!
+ $namaRegional: String!
+ $idUlp: Int!
+ $idUid: Int!
+ $idUp3: Int!
+ ) {
+ detailAgingComplaintBulanan(
+ bulan: $bulan
+ tahun: $tahun
+ namaRegional: $namaRegional
+ idUlp: $idUlp
+ idUid: $idUid
+ idUp3: $idUp3
+ ) {
+ id
+ nama_regional
+ id_uid
+ nama_uid
+ id_up3
+ nama_up3
+ id_ulp
+ nama_ulp
+ no_laporan
+ alamat_pelapor
+ no_telp_pelapor
+ keterangan_pelapor
+ penyebab
+ kode_gangguan
+ jenis_gangguan
+ durasi_response_time
+ durasi_recovery_time
+ waktu_lapor
+ }
+ }
+ `,
agingComplaintBulanan: gql`
query agingComplaintBulanan(
$namaRegional: String
From 46f1b8353c19742ddf30fa716e4a2146686f0200 Mon Sep 17 00:00:00 2001
From: kur0nek-o
Date: Thu, 18 Apr 2024 09:42:15 +0700
Subject: [PATCH 02/11] fix: anomali gangguan
---
.../Anomali/Gangguan/Anomali_LAPPGP_LPT.vue | 12 +-
.../Pages/Anomali/Gangguan/Anomali_LAPPGU.vue | 56 +++
.../Anomali/Gangguan/Anomali_LAPPGU_LPT.vue | 380 +++++++++++++++---
3 files changed, 385 insertions(+), 63 deletions(-)
diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue
index eab9e8b..ff003d1 100755
--- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue
+++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGP_LPT.vue
@@ -349,7 +349,7 @@
column="anomali_pln_mobile_marking"
name="anomali_pln_mobile_marking"
summary-type="custom"
- css-class="!text-right"
+ css-class="!text-right cursor-pointer"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -60,11 +61,66 @@ const resetData = () => {
dataSecond.value = []
}
+const grouping = ref([
+ {
+ data: '',
+ caption: 'Semua Unit'
+ },
+ {
+ data: 'nama_uid',
+ caption: 'UID'
+ },
+ {
+ data: 'nama_up3',
+ caption: 'UP3'
+ }
+])
+
const filterData = async (params: any) => {
resetData()
const { ulp, uid, up3, jenisLaporan } = params
console.table('LAPPGU', jenisLaporan)
+ var groupList: any[] = [
+ {
+ data: '',
+ caption: 'Semua Unit'
+ },
+ {
+ data: 'nama_uid',
+ caption: 'UID'
+ },
+ {
+ data: 'nama_up3',
+ caption: 'UP3'
+ }
+ ]
+
+ if (uid?.id != 0) {
+ groupList.forEach((item, index) => {
+ if (item.caption == 'Semua Unit') {
+ 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 dateValue = params.periode.split(' s/d ')
const query = {
dateFrom: dateValue[0]
diff --git a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue
index 76d5f2c..4d62093 100755
--- a/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue
+++ b/src/components/Pages/Anomali/Gangguan/Anomali_LAPPGU_LPT.vue
@@ -4,6 +4,7 @@
-
+
@@ -44,35 +45,15 @@
/>
-
-
@@ -400,12 +381,13 @@
-
+
@@ -413,7 +395,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_pln_mobile"
- summary-type="sum"
+ name="wo_pln_mobile"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -421,7 +404,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_loket"
- summary-type="sum"
+ name="wo_loket"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -429,7 +413,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_lainnya"
- summary-type="sum"
+ summary-type="custom"
+ name="wo_lainnya"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -437,7 +422,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_total"
- summary-type="sum"
+ name="wo_total"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -445,55 +431,62 @@
:show-in-group-footer="false"
:align-by-column="true"
column="anomali_pln_mobile_marking"
- summary-type="sum"
- css-class="!text-right"
+ name="anomali_pln_mobile_marking"
+ summary-type="custom"
+ css-class="!text-right cursor-pointer"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -501,7 +494,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="persen_anomali_pln_mobile_non_marking"
- summary-type="avg"
+ name="persen_anomali_pln_mobile_non_marking"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatPercentage(e.value)"
/>
@@ -509,7 +503,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="persen_anomali_cc123_marking"
- summary-type="avg"
+ name="persen_anomali_cc123_marking"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatPercentage(e.value)"
/>
@@ -517,7 +512,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="persen_anomali_cc123_non_marking"
- summary-type="avg"
+ name="persen_anomali_cc123_non_marking"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatPercentage(e.value)"
/>
@@ -525,7 +521,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="persen_anomali_marking"
- summary-type="avg"
+ name="persen_anomali_marking"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatPercentage(e.value)"
/>
@@ -533,7 +530,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="persen_anomali_non_marking"
- summary-type="avg"
+ name="persen_anomali_non_marking"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatPercentage(e.value)"
/>
@@ -1077,6 +1075,7 @@ import {
exportDetailToDOCX
} from '@/report/Anomali/Gangguan/Anomali_LAPPGU_LPT'
import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
+import { getDataRowGroup } from '@/utils/helper'
const position = { of: '#data' }
const showIndicator = ref(true)
@@ -1085,7 +1084,11 @@ const showPane = ref(true)
const props = defineProps({
data: Array as () => any[],
filters: Object as () => any,
- loadingData: Boolean
+ loadingData: Boolean,
+ grouping: {
+ type: Array as () => any[],
+ default: []
+ }
})
const emit = defineEmits(['update:loadingSubData'])
const filters = ref(computed(() => props.filters))
@@ -1102,6 +1105,9 @@ const parameterRequest = ref({
media: null,
marking: null
})
+const groupDialog = ref(false)
+const groupData = ref(null)
+const groupIndex = ref(0)
const setParameterRequest = (data: any) => {
parameterRequest.value = data
@@ -1113,6 +1119,234 @@ const setParameterRequest = (data: any) => {
}
}
+const onCellClicked = (e: any) => {
+ if (e.rowType == 'group') {
+ groupDialog.value = true
+ groupIndex.value = e.row.groupIndex
+
+ if (e.column.dataField == 'anomali_pln_mobile_marking') {
+ setParameterRequest({ media: 'PLN Mobile', marking: 1 })
+ } else if (e.column.dataField == 'anomali_pln_mobile_non_marking') {
+ setParameterRequest({ media: 'PLN Mobile', marking: 2 })
+ } else if (e.column.dataField == 'anomali_cc123_marking') {
+ setParameterRequest({ media: 'Call PLN 123', marking: 1 })
+ } else if (e.column.dataField == 'anomali_cc123_non_marking') {
+ setParameterRequest({ media: 'Call PLN 123', marking: 2 })
+ } else if (e.column.dataField == 'total_anomali_marking') {
+ setParameterRequest({ media: '', marking: 1 })
+ } else if (e.column.dataField == 'total_anomali_non_marking') {
+ setParameterRequest({ media: '', marking: 2 })
+ } else {
+ setParameterRequest({ media: null, marking: null })
+ }
+ groupData.value = getDataRowGroup(e.data)
+ showDetail()
+ } else {
+ groupDialog.value = false
+ }
+}
+
+let wo_cc123 = 0
+let wo_pln_mobile = 0
+let wo_loket = 0
+let wo_lainnya = 0
+let wo_total = 0
+let anomali_pln_mobile_marking = 0
+let anomali_pln_mobile_non_marking = 0
+let anomali_cc123_marking = 0
+let anomali_cc123_non_marking = 0
+let total_anomali_marking = 0
+let total_anomali_non_marking = 0
+let persen_anomali_pln_mobile_marking = 0
+let persen_anomali_pln_mobile_non_marking = 0
+let persen_anomali_cc123_marking = 0
+let persen_anomali_cc123_non_marking = 0
+let persen_anomali_marking = 0
+let persen_anomali_non_marking = 0
+
+const calculateCustomSummary = (options: any) => {
+ if (options.name === 'wo_cc123') {
+ if (options.summaryProcess === 'calculate') {
+ wo_cc123 += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = wo_cc123
+ }
+ }
+
+ if (options.name === 'wo_pln_mobile') {
+ if (options.summaryProcess === 'calculate') {
+ wo_pln_mobile += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = wo_pln_mobile
+ }
+ }
+
+ if (options.name === 'wo_loket') {
+ if (options.summaryProcess === 'calculate') {
+ wo_loket += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = wo_loket
+ }
+ }
+
+ if (options.name === 'wo_lainnya') {
+ if (options.summaryProcess === 'calculate') {
+ wo_lainnya += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = wo_lainnya
+ }
+ }
+
+ if (options.name === 'wo_total') {
+ if (options.summaryProcess === 'start') {
+ wo_cc123 = 0
+ wo_pln_mobile = 0
+ wo_loket = 0
+ wo_lainnya = 0
+ } else if (options.summaryProcess === 'calculate') {
+ wo_total = wo_cc123 + wo_pln_mobile + wo_loket + wo_lainnya
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = wo_cc123 + wo_pln_mobile + wo_loket + wo_lainnya
+ }
+ }
+
+ if (options.name === 'anomali_pln_mobile_marking') {
+ if (options.summaryProcess === 'calculate') {
+ anomali_pln_mobile_marking += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = anomali_pln_mobile_marking
+ }
+ }
+
+ if (options.name === 'anomali_pln_mobile_non_marking') {
+ if (options.summaryProcess === 'calculate') {
+ anomali_pln_mobile_non_marking += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = anomali_pln_mobile_non_marking
+ }
+ }
+
+ if (options.name === 'anomali_cc123_marking') {
+ if (options.summaryProcess === 'calculate') {
+ anomali_cc123_marking += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = anomali_cc123_marking
+ }
+ }
+
+ if (options.name === 'anomali_cc123_non_marking') {
+ if (options.summaryProcess === 'calculate') {
+ anomali_cc123_non_marking += options.value
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = anomali_cc123_non_marking
+ }
+ }
+
+ if (options.name === 'total_anomali_marking') {
+ if (options.summaryProcess === 'start') {
+ anomali_pln_mobile_marking = 0
+ anomali_cc123_marking = 0
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = anomali_pln_mobile_marking + anomali_cc123_marking
+ }
+ }
+
+ if (options.name === 'total_anomali_non_marking') {
+ if (options.summaryProcess === 'start') {
+ anomali_pln_mobile_non_marking = 0
+ anomali_cc123_non_marking = 0
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = anomali_pln_mobile_non_marking + anomali_cc123_non_marking
+ }
+ }
+
+ if (options.name === 'persen_anomali_pln_mobile_marking') {
+ if (options.summaryProcess === 'start') {
+ anomali_pln_mobile_marking = 0
+ wo_total = 0
+ } else if (options.summaryProcess === 'calculate') {
+ persen_anomali_pln_mobile_marking =
+ !isFinite(anomali_pln_mobile_marking / wo_total) || anomali_pln_mobile_marking == 0
+ ? 0
+ : (anomali_pln_mobile_marking / wo_total) * 100
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue =
+ !isFinite(anomali_pln_mobile_marking / wo_total) || anomali_pln_mobile_marking == 0
+ ? 0
+ : (anomali_pln_mobile_marking / wo_total) * 100
+ }
+ }
+
+ if (options.name === 'persen_anomali_pln_mobile_non_marking') {
+ if (options.summaryProcess === 'start') {
+ anomali_pln_mobile_non_marking = 0
+ wo_total = 0
+ } else if (options.summaryProcess === 'calculate') {
+ persen_anomali_pln_mobile_non_marking =
+ !isFinite(anomali_pln_mobile_non_marking / wo_total) || anomali_pln_mobile_non_marking == 0
+ ? 0
+ : (anomali_pln_mobile_non_marking / wo_total) * 100
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue =
+ !isFinite(anomali_pln_mobile_non_marking / wo_total) || anomali_pln_mobile_non_marking == 0
+ ? 0
+ : (anomali_pln_mobile_non_marking / wo_total) * 100
+ }
+ }
+
+ if (options.name === 'persen_anomali_cc123_marking') {
+ if (options.summaryProcess === 'start') {
+ anomali_cc123_marking = 0
+ wo_total = 0
+ } else if (options.summaryProcess === 'calculate') {
+ persen_anomali_cc123_marking =
+ !isFinite(anomali_cc123_marking / wo_total) || anomali_cc123_marking == 0
+ ? 0
+ : (anomali_cc123_marking / wo_total) * 100
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue =
+ !isFinite(anomali_cc123_marking / wo_total) || anomali_cc123_marking == 0
+ ? 0
+ : (anomali_cc123_marking / wo_total) * 100
+ }
+ }
+
+ if (options.name === 'persen_anomali_cc123_non_marking') {
+ if (options.summaryProcess === 'start') {
+ anomali_cc123_non_marking = 0
+ wo_total = 0
+ } else if (options.summaryProcess === 'calculate') {
+ persen_anomali_cc123_non_marking =
+ !isFinite(anomali_cc123_non_marking / wo_total) || anomali_cc123_non_marking == 0
+ ? 0
+ : (anomali_cc123_non_marking / wo_total) * 100
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue =
+ !isFinite(anomali_cc123_non_marking / wo_total) || anomali_cc123_non_marking == 0
+ ? 0
+ : (anomali_cc123_non_marking / wo_total) * 100
+ }
+ }
+
+ if (options.name === 'persen_anomali_marking') {
+ if (options.summaryProcess === 'start') {
+ persen_anomali_pln_mobile_marking = 0
+ persen_anomali_cc123_marking = 0
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = persen_anomali_pln_mobile_marking + persen_anomali_cc123_marking
+ }
+ }
+
+ if (options.name === 'persen_anomali_non_marking') {
+ if (options.summaryProcess === 'start') {
+ persen_anomali_cc123_non_marking = 0
+ persen_anomali_pln_mobile_non_marking = 0
+ } else if (options.summaryProcess === 'finalize') {
+ options.totalValue = persen_anomali_pln_mobile_non_marking + persen_anomali_cc123_non_marking
+ }
+ }
+}
+
const resetData = () => {
dataSub.value = []
dataSubSelected.value = null
@@ -1124,21 +1358,53 @@ const getDetail = async () => {
const dateValue = periode.split(' s/d ')
const selected = dataSelected.value
- const query = {
+ let query = {
dateFrom: dateValue[0]
? dateValue[0].split('-').reverse().join('-')
: new Date().toISOString().slice(0, 10),
dateTo: dateValue[1]
? dateValue[1].split('-').reverse().join('-')
: new Date().toISOString().slice(0, 10),
- idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
- idUid: selected?.id_uid ? selected?.id_uid : 0,
- idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
+ idUlp: 0,
+ idUid: 0,
+ idUp3: 0,
namaRegional: '',
media: parameterRequest.value?.media,
isMarking: parameterRequest.value?.marking
}
+ if (groupDialog.value) {
+ if (props.grouping[groupIndex.value].data == 'nama_uid') {
+ query = {
+ ...query,
+ idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
+ namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
+ }
+ } else if (props.grouping[groupIndex.value].data == 'nama_up3') {
+ query = {
+ ...query,
+ idUid: groupData.value?.id_uid ? groupData.value?.id_uid : 0,
+ idUp3: groupData.value?.id_up3 ? groupData.value?.id_up3 : 0,
+ namaRegional: groupData.value?.nama_regional ? groupData.value?.nama_regional : ''
+ }
+ }
+ } else {
+ query = {
+ dateFrom: dateValue[0]
+ ? dateValue[0].split('-').reverse().join('-')
+ : new Date().toISOString().slice(0, 10),
+ dateTo: dateValue[1]
+ ? dateValue[1].split('-').reverse().join('-')
+ : new Date().toISOString().slice(0, 10),
+ idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
+ idUid: selected?.id_uid ? selected?.id_uid : 0,
+ idUp3: selected?.id_up3 ? selected?.id_up3 : 0,
+ namaRegional: selected?.nama_regional ? selected?.nama_regional : '',
+ media: parameterRequest.value?.media,
+ isMarking: parameterRequest.value?.marking
+ }
+ }
+
loadingSubData.value = true
emit('update:loadingSubData', true)
await requestGraphQl(
From df130784bd075f30573d986192064cba9c2f9021 Mon Sep 17 00:00:00 2001
From: Dede Fuji Abdul
Date: Thu, 18 Apr 2024 09:42:58 +0700
Subject: [PATCH 03/11] Update version number in package.json and Welcome.vue
---
package.json | 2 +-
src/components/Pages/Welcome.vue | 2 ++
src/views/HomeView.vue | 30 ++++++++++++++++++++++++++++++
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 1b745fb..9cb47be 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "eis",
- "version": "0.0.1",
+ "version": "0.0.111",
"private": true,
"scripts": {
"dev": "vite",
diff --git a/src/components/Pages/Welcome.vue b/src/components/Pages/Welcome.vue
index 84c5317..b0a549a 100755
--- a/src/components/Pages/Welcome.vue
+++ b/src/components/Pages/Welcome.vue
@@ -129,6 +129,7 @@
Copyright © 2023 PT PLN (Persero). All Rights Reserved
+ Version {{ version }}
@@ -142,6 +143,7 @@ import { type RouteRecordRaw } from 'vue-router'
import { routes, extractLeafRoutes } from '@/router'
import { navigationIcon } from '@/utils/route'
import { detectOS } from '@/utils/helper'
+import { version } from '../../../package.json'
const os = ref(detectOS())
const command = useCommandPalattesStore()
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index d3dc71f..4c56dfd 100755
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -3,7 +3,37 @@ import MenuProvider from '@/components/Pages/MenuProvider.vue'
import Navigation from '@/components/Navigation/Navigation.vue'
import { useMenuStore } from '@/stores/menu'
import { RouterView } from 'vue-router'
+import { useDialogStore } from '@/stores/dialog'
+import { onMounted } from 'vue'
+import { version } from '../../package.json'
const menu = useMenuStore()
+const dialog = useDialogStore()
+
+const showDialogUpdate = () => {
+ dialog.type = 'success'
+ dialog.title = 'Update Aplikasi'
+ dialog.content =
+ 'Aplikasi telah diperbarui. Silahkan muat ulang aplikasi untuk melihat perubahan.'
+ dialog.confirmText = 'Muat Ulang'
+ dialog.showCancelButton = false
+ dialog.onConfirm = () => {
+ window.location.reload()
+ }
+ dialog.dismissOnAction = false
+ dialog.open = true
+}
+
+onMounted(() => {
+ const localVersion = localStorage.getItem('version')
+ if (localVersion) {
+ if (localVersion !== version) {
+ localStorage.setItem('version', version)
+ showDialogUpdate()
+ }
+ } else {
+ localStorage.setItem('version', version)
+ }
+})
From 13dce362c5321d7b76184b9e9d91a8c9b13c9047 Mon Sep 17 00:00:00 2001
From: kur0nek-o
Date: Thu, 18 Apr 2024 10:22:43 +0700
Subject: [PATCH 04/11] fix: anomali keluhan
---
.../Pages/Anomali/Keluhan/Anomali_LAPPKU.vue | 57 +++-
.../Anomali/Keluhan/Anomali_LAPPKU_LPT.vue | 277 +++++++++++++++---
2 files changed, 285 insertions(+), 49 deletions(-)
diff --git a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU.vue b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU.vue
index 20bbb4c..9957d49 100755
--- a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU.vue
+++ b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU.vue
@@ -18,7 +18,7 @@
/>
-
+
@@ -43,6 +43,21 @@ const filters = ref({
up3: 0
})
+const grouping = ref([
+ {
+ data: '',
+ caption: 'Semua Unit'
+ },
+ {
+ data: 'nama_uid',
+ caption: 'UID'
+ },
+ {
+ data: 'nama_up3',
+ caption: 'UP3'
+ }
+])
+
const resetData = () => {
data.value = []
dataSecond.value = []
@@ -53,6 +68,46 @@ const filterData = async (params: any) => {
const { ulp, uid, up3, jenisLaporan } = params
console.table('LAPPGU', jenisLaporan)
+ var groupList: any[] = [
+ {
+ data: '',
+ caption: 'Semua Unit'
+ },
+ {
+ data: 'nama_uid',
+ caption: 'UID'
+ },
+ {
+ data: 'nama_up3',
+ caption: 'UP3'
+ }
+ ]
+
+ if (uid?.id != 0) {
+ groupList.forEach((item, index) => {
+ if (item.caption == 'Semua Unit') {
+ 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 dateValue = params.periode.split(' s/d ')
const query = {
dateFrom: dateValue[0]
diff --git a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue
index 689b122..2f99d18 100755
--- a/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue
+++ b/src/components/Pages/Anomali/Keluhan/Anomali_LAPPKU_LPT.vue
@@ -3,6 +3,7 @@
Laporan Pengaduan Total
-
+
@@ -42,35 +43,15 @@
cell-template="formatText"
/>
-
-
@@ -275,12 +256,13 @@
-
+
@@ -288,7 +270,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_pln_mobile"
- summary-type="sum"
+ name="wo_pln_mobile"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -296,7 +279,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_loket"
- summary-type="sum"
+ name="wo_loket"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -304,7 +288,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_lainnya"
- summary-type="sum"
+ name="wo_lainnya"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -312,7 +297,8 @@
:show-in-group-footer="false"
:align-by-column="true"
column="wo_total"
- summary-type="sum"
+ name="wo_total"
+ summary-type="custom"
css-class="!text-right"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -320,24 +306,27 @@
:show-in-group-footer="false"
:align-by-column="true"
column="anomali_pln_mobile"
- summary-type="sum"
- css-class="!text-right"
+ summary-type="custom"
+ name="anomali_pln_mobile"
+ css-class="!text-right cursor-pointer"
:customize-text="(e: any) => formatNumber(e.value)"
/>
@@ -345,24 +334,27 @@
:show-in-group-footer="false"
:align-by-column="true"
column="persen_anomali_pln_mobile"
- summary-type="avg"
+ summary-type="custom"
css-class="!text-right"
+ name="persen_anomali_pln_mobile"
:customize-text="(e: any) => formatPercentage(e.value)"
/>
@@ -730,7 +722,7 @@
-
+
From 63580612565a8550b7b0f9d42a0d10b7523c31f0 Mon Sep 17 00:00:00 2001
From: Dede Fuji Abdul
Date: Thu, 18 Apr 2024 15:04:21 +0700
Subject: [PATCH 10/11] Refactor deploy.js to fix console error messages and
update package.json
---
deploy.js | 12 +--
package.json | 84 +------------------
.../Gangguan/Rekap/RGangguan_PerTanggal.vue | 1 -
3 files changed, 8 insertions(+), 89 deletions(-)
diff --git a/deploy.js b/deploy.js
index 08f0e47..5d3fe4a 100644
--- a/deploy.js
+++ b/deploy.js
@@ -11,10 +11,10 @@ function buildAndPush(version) {
const packageJsonPath = './package.json'
fs.writeFile(packageJsonPath, JSON.stringify(packageFile), (err) => {
if (err) {
- console.error('Error writing package-new.json', err)
+ console.error('Error writing package.json', err)
return
}
- console.log('package-new.json updated successfully')
+ console.log('package.json updated successfully')
const versionData = {
version: version
@@ -39,8 +39,8 @@ function buildAndPush(version) {
const docker_build = `docker build . -t ${docker_image_tag}`
const docker_push = `docker push ${docker_image_tag}`
- // const command = `${build_app} && ${docker_logout} && ${docker_login} && ${docker_build} && ${docker_push}`
- const command = `${docker_logout} && ${docker_login}`
+ const command = `${build_app} && ${docker_logout} && ${docker_login} && ${docker_build} && ${docker_push}`
+ // const command = `${docker_logout} && ${docker_login}`
exec(command, (error, stdout, stderr) => {
if (error) {
@@ -52,6 +52,8 @@ function buildAndPush(version) {
return
}
console.log(`stdout: ${stdout}`)
+ console.log(`Run Kubernetes Script:`)
+ console.log(`kubectl set image deployment/apkt-eis apkt-eis=defuj/apkt-eis:v${version}`)
})
})
})
@@ -61,7 +63,7 @@ function buildAndPush(version) {
const version = process.argv[2]
if (!version) {
- console.error('Usage: node build-push.js ')
+ console.error('Usage: node deploy.js ')
process.exit(1)
}
diff --git a/package.json b/package.json
index a7a9fda..dedf543 100755
--- a/package.json
+++ b/package.json
@@ -1,83 +1 @@
-{
- "name": "eis",
- "version": "0.0.120-vm",
- "private": true,
- "scripts": {
- "dev": "vite",
- "host": "vite --host",
- "tailwind": "tailwindcss -i ./src/assets/css/tailwind.css -o ./src/assets/css/style.css --watch",
- "build": "run-p type-check build-only",
- "preview": "vite preview --host",
- "test:unit": "vitest",
- "build-only": "vite build",
- "type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
- "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
- "format": "prettier --write src/",
- "deploy": "node deploy.js"
- },
- "dependencies": {
- "@apollo/client": "^3.8.10",
- "@apollo/link-context": "^2.0.0-beta.3",
- "@flavorly/vanilla-components": "^0.7.65",
- "@headlessui/tailwindcss": "^0.2.0",
- "@headlessui/vue": "^1.7.19",
- "@heroicons/vue": "^2.0.18",
- "@lottiefiles/lottie-player": "^2.0.4",
- "@phosphor-icons/vue": "^2.1.6",
- "@types/qs": "^6.9.12",
- "@types/uuid": "^9.0.8",
- "@types/vue-select": "^3.16.8",
- "@vue/apollo-components": "^4.0.0",
- "@vue/apollo-composable": "^4.0.1",
- "@vue/apollo-option": "^4.0.0",
- "axios": "^1.6.7",
- "devextreme": "23.2.4",
- "devextreme-vue": "23.2.4",
- "docx": "^8.5.0",
- "dotenv": "^16.3.1",
- "encrypt-storage": "^2.12.22",
- "exceljs": "^4.4.0",
- "file-saver": "^2.0.5",
- "graphql": "^16.8.1",
- "graphql-tag": "^2.12.6",
- "jspdf": "^2.5.1",
- "jspdf-autotable": "^3.8.2",
- "pinia": "^2.1.3",
- "qs": "^6.11.2",
- "uuid": "^9.0.1",
- "vue": "^3.3.4",
- "vue-html-to-paper": "^2.0.3",
- "vue-router": "^4.2.2",
- "vue-tailwind-datepicker": "^1.6.1",
- "vue3-star-ratings": "^3.0.5"
- },
- "devDependencies": {
- "@rushstack/eslint-patch": "^1.5.1",
- "@tailwindcss/aspect-ratio": "^0.4.2",
- "@tailwindcss/container-queries": "^0.1.1",
- "@tailwindcss/forms": "^0.5.7",
- "@tailwindcss/typography": "^0.5.10",
- "@tsconfig/node18": "^2.0.1",
- "@types/file-saver": "^2.0.6",
- "@types/jsdom": "^21.1.1",
- "@types/node": "^18.16.17",
- "@vitejs/plugin-vue": "^4.2.3",
- "@vitejs/plugin-vue-jsx": "^3.0.1",
- "@vue/eslint-config-prettier": "^8.0.0",
- "@vue/eslint-config-typescript": "^12.0.0",
- "@vue/test-utils": "^2.3.2",
- "@vue/tsconfig": "^0.4.0",
- "autoprefixer": "^10.4.14",
- "eslint": "^8.39.0",
- "eslint-plugin-vue": "^9.11.0",
- "jsdom": "^22.1.0",
- "npm-run-all": "^4.1.5",
- "postcss": "^8.4.24",
- "prettier": "^3.0.3",
- "tailwindcss": "^3.3.2",
- "typescript": "~5.2.2",
- "vite": "^4.3.9",
- "vitest": "^1.3.1",
- "vue-tsc": "^2.0.5"
- }
-}
+{"name":"eis","version":"0.0.120-vm","private":true,"scripts":{"dev":"vite","host":"vite --host","tailwind":"tailwindcss -i ./src/assets/css/tailwind.css -o ./src/assets/css/style.css --watch","build":"run-p type-check build-only","preview":"vite preview --host","test:unit":"vitest","build-only":"vite build","type-check":"vue-tsc --noEmit -p tsconfig.vitest.json --composite false","lint":"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore","format":"prettier --write src/","deploy":"node deploy.js"},"dependencies":{"@apollo/client":"^3.8.10","@apollo/link-context":"^2.0.0-beta.3","@flavorly/vanilla-components":"^0.7.65","@headlessui/tailwindcss":"^0.2.0","@headlessui/vue":"^1.7.19","@heroicons/vue":"^2.0.18","@lottiefiles/lottie-player":"^2.0.4","@phosphor-icons/vue":"^2.1.6","@types/qs":"^6.9.12","@types/uuid":"^9.0.8","@types/vue-select":"^3.16.8","@vue/apollo-components":"^4.0.0","@vue/apollo-composable":"^4.0.1","@vue/apollo-option":"^4.0.0","axios":"^1.6.7","devextreme":"23.2.4","devextreme-vue":"23.2.4","docx":"^8.5.0","dotenv":"^16.3.1","encrypt-storage":"^2.12.22","exceljs":"^4.4.0","file-saver":"^2.0.5","graphql":"^16.8.1","graphql-tag":"^2.12.6","jspdf":"^2.5.1","jspdf-autotable":"^3.8.2","pinia":"^2.1.3","qs":"^6.11.2","uuid":"^9.0.1","vue":"^3.3.4","vue-html-to-paper":"^2.0.3","vue-router":"^4.2.2","vue-tailwind-datepicker":"^1.6.1","vue3-star-ratings":"^3.0.5"},"devDependencies":{"@rushstack/eslint-patch":"^1.5.1","@tailwindcss/aspect-ratio":"^0.4.2","@tailwindcss/container-queries":"^0.1.1","@tailwindcss/forms":"^0.5.7","@tailwindcss/typography":"^0.5.10","@tsconfig/node18":"^2.0.1","@types/file-saver":"^2.0.6","@types/jsdom":"^21.1.1","@types/node":"^18.16.17","@vitejs/plugin-vue":"^4.2.3","@vitejs/plugin-vue-jsx":"^3.0.1","@vue/eslint-config-prettier":"^8.0.0","@vue/eslint-config-typescript":"^12.0.0","@vue/test-utils":"^2.3.2","@vue/tsconfig":"^0.4.0","autoprefixer":"^10.4.14","eslint":"^8.39.0","eslint-plugin-vue":"^9.11.0","jsdom":"^22.1.0","npm-run-all":"^4.1.5","postcss":"^8.4.24","prettier":"^3.0.3","tailwindcss":"^3.3.2","typescript":"~5.2.2","vite":"^4.3.9","vitest":"^1.3.1","vue-tsc":"^2.0.5"}}
\ No newline at end of file
diff --git a/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue b/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue
index 33e8a52..f1e92b7 100755
--- a/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue
+++ b/src/components/Pages/Gangguan/Rekap/RGangguan_PerTanggal.vue
@@ -881,7 +881,6 @@ const getDetail = async () => {
idUp3: 0,
idUlp: 0,
idRegu: 0,
- idUlp: 0,
namaRegional: ref?.nama_regional ? ref?.nama_regional : '',
media: ref?.media ? ref?.media : '',
isSelesai: progressSelected.value,
From 3a891bf15922a88f22d999f40d5e7584b281130f Mon Sep 17 00:00:00 2001
From: Dede Fuji Abdul
Date: Thu, 18 Apr 2024 15:39:28 +0700
Subject: [PATCH 11/11] Update package.json version to 0.0.121-vm
---
package.json | 2 +-
public/version.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index dedf543..cb1cc8c 100755
--- a/package.json
+++ b/package.json
@@ -1 +1 @@
-{"name":"eis","version":"0.0.120-vm","private":true,"scripts":{"dev":"vite","host":"vite --host","tailwind":"tailwindcss -i ./src/assets/css/tailwind.css -o ./src/assets/css/style.css --watch","build":"run-p type-check build-only","preview":"vite preview --host","test:unit":"vitest","build-only":"vite build","type-check":"vue-tsc --noEmit -p tsconfig.vitest.json --composite false","lint":"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore","format":"prettier --write src/","deploy":"node deploy.js"},"dependencies":{"@apollo/client":"^3.8.10","@apollo/link-context":"^2.0.0-beta.3","@flavorly/vanilla-components":"^0.7.65","@headlessui/tailwindcss":"^0.2.0","@headlessui/vue":"^1.7.19","@heroicons/vue":"^2.0.18","@lottiefiles/lottie-player":"^2.0.4","@phosphor-icons/vue":"^2.1.6","@types/qs":"^6.9.12","@types/uuid":"^9.0.8","@types/vue-select":"^3.16.8","@vue/apollo-components":"^4.0.0","@vue/apollo-composable":"^4.0.1","@vue/apollo-option":"^4.0.0","axios":"^1.6.7","devextreme":"23.2.4","devextreme-vue":"23.2.4","docx":"^8.5.0","dotenv":"^16.3.1","encrypt-storage":"^2.12.22","exceljs":"^4.4.0","file-saver":"^2.0.5","graphql":"^16.8.1","graphql-tag":"^2.12.6","jspdf":"^2.5.1","jspdf-autotable":"^3.8.2","pinia":"^2.1.3","qs":"^6.11.2","uuid":"^9.0.1","vue":"^3.3.4","vue-html-to-paper":"^2.0.3","vue-router":"^4.2.2","vue-tailwind-datepicker":"^1.6.1","vue3-star-ratings":"^3.0.5"},"devDependencies":{"@rushstack/eslint-patch":"^1.5.1","@tailwindcss/aspect-ratio":"^0.4.2","@tailwindcss/container-queries":"^0.1.1","@tailwindcss/forms":"^0.5.7","@tailwindcss/typography":"^0.5.10","@tsconfig/node18":"^2.0.1","@types/file-saver":"^2.0.6","@types/jsdom":"^21.1.1","@types/node":"^18.16.17","@vitejs/plugin-vue":"^4.2.3","@vitejs/plugin-vue-jsx":"^3.0.1","@vue/eslint-config-prettier":"^8.0.0","@vue/eslint-config-typescript":"^12.0.0","@vue/test-utils":"^2.3.2","@vue/tsconfig":"^0.4.0","autoprefixer":"^10.4.14","eslint":"^8.39.0","eslint-plugin-vue":"^9.11.0","jsdom":"^22.1.0","npm-run-all":"^4.1.5","postcss":"^8.4.24","prettier":"^3.0.3","tailwindcss":"^3.3.2","typescript":"~5.2.2","vite":"^4.3.9","vitest":"^1.3.1","vue-tsc":"^2.0.5"}}
\ No newline at end of file
+{"name":"eis","version":"0.0.121-vm","private":true,"scripts":{"dev":"vite","host":"vite --host","tailwind":"tailwindcss -i ./src/assets/css/tailwind.css -o ./src/assets/css/style.css --watch","build":"run-p type-check build-only","preview":"vite preview --host","test:unit":"vitest","build-only":"vite build","type-check":"vue-tsc --noEmit -p tsconfig.vitest.json --composite false","lint":"eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore","format":"prettier --write src/","deploy":"node deploy.js"},"dependencies":{"@apollo/client":"^3.8.10","@apollo/link-context":"^2.0.0-beta.3","@flavorly/vanilla-components":"^0.7.65","@headlessui/tailwindcss":"^0.2.0","@headlessui/vue":"^1.7.19","@heroicons/vue":"^2.0.18","@lottiefiles/lottie-player":"^2.0.4","@phosphor-icons/vue":"^2.1.6","@types/qs":"^6.9.12","@types/uuid":"^9.0.8","@types/vue-select":"^3.16.8","@vue/apollo-components":"^4.0.0","@vue/apollo-composable":"^4.0.1","@vue/apollo-option":"^4.0.0","axios":"^1.6.7","devextreme":"23.2.4","devextreme-vue":"23.2.4","docx":"^8.5.0","dotenv":"^16.3.1","encrypt-storage":"^2.12.22","exceljs":"^4.4.0","file-saver":"^2.0.5","graphql":"^16.8.1","graphql-tag":"^2.12.6","jspdf":"^2.5.1","jspdf-autotable":"^3.8.2","pinia":"^2.1.3","qs":"^6.11.2","uuid":"^9.0.1","vue":"^3.3.4","vue-html-to-paper":"^2.0.3","vue-router":"^4.2.2","vue-tailwind-datepicker":"^1.6.1","vue3-star-ratings":"^3.0.5"},"devDependencies":{"@rushstack/eslint-patch":"^1.5.1","@tailwindcss/aspect-ratio":"^0.4.2","@tailwindcss/container-queries":"^0.1.1","@tailwindcss/forms":"^0.5.7","@tailwindcss/typography":"^0.5.10","@tsconfig/node18":"^2.0.1","@types/file-saver":"^2.0.6","@types/jsdom":"^21.1.1","@types/node":"^18.16.17","@vitejs/plugin-vue":"^4.2.3","@vitejs/plugin-vue-jsx":"^3.0.1","@vue/eslint-config-prettier":"^8.0.0","@vue/eslint-config-typescript":"^12.0.0","@vue/test-utils":"^2.3.2","@vue/tsconfig":"^0.4.0","autoprefixer":"^10.4.14","eslint":"^8.39.0","eslint-plugin-vue":"^9.11.0","jsdom":"^22.1.0","npm-run-all":"^4.1.5","postcss":"^8.4.24","prettier":"^3.0.3","tailwindcss":"^3.3.2","typescript":"~5.2.2","vite":"^4.3.9","vitest":"^1.3.1","vue-tsc":"^2.0.5"}}
\ No newline at end of file
diff --git a/public/version.json b/public/version.json
index ca14c72..42106db 100644
--- a/public/version.json
+++ b/public/version.json
@@ -1 +1 @@
-{"version":"0.0.120-vm"}
\ No newline at end of file
+{"version":"0.0.121-vm"}
\ No newline at end of file