Monalisa Fix Column Name
This commit is contained in:
		| @@ -1,320 +1,114 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     :report-button="true" | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters :report-button="true" @reset-form="data = []" @run-search="() => filterData(filters)" class="mb-4"> | ||||
|     <Type2 @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" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <DxLoadPanel | ||||
|         shading-color="rgba(0,0,0,0.4)" | ||||
|         :position="position" | ||||
|         :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" | ||||
|         :shading="shading" | ||||
|         v-model:visible="loadingData" | ||||
|         :enabled="true" | ||||
|       /> | ||||
|       <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :position="position" :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" :shading="shading" v-model:visible="loadingData" :enabled="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" /> | ||||
|       <DxColumnFixing :enabled="true" /> | ||||
|  | ||||
|       <DxColumn alignment="center" caption="Periode: Februari,2020" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_regional" | ||||
|           caption="Nama Regional" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="0" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_uid" | ||||
|           caption="Nama UID" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="1" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_up3" | ||||
|           caption="Nama UP3" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="2" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_ulp" | ||||
|           caption="Nama Unit" | ||||
|           css-class="custom-table-column" | ||||
|           name="namaULP" | ||||
|           cell-template="formatText" | ||||
|         /> | ||||
|       <DxColumn alignment="center" :caption="`Periode: ${getMonthName(currentMonth)}, ${currentYear}`" | ||||
|         css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_regional" | ||||
|           caption="Nama Regional" css-class="custom-table-column" :group-index="0" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_uid" caption="Nama UID" | ||||
|           css-class="custom-table-column" :group-index="1" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_up3" caption="Nama UP3" | ||||
|           css-class="custom-table-column" :group-index="2" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="na  ma_ulp" caption="Nama Unit" | ||||
|           css-class="custom-table-column" name="namaULP" cell-template="formatText" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Aging Complains" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           caption="Rata-Rata RCT Gangguan" | ||||
|           css-class="custom-table-column" | ||||
|         > | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_recovery_gangguan" | ||||
|             data-type="number" | ||||
|             caption="Feb 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="sla_gangguan" | ||||
|             data-type="number" | ||||
|             caption="SLA (Menit)" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|         <DxColumn alignment="center" caption="Rata-Rata RCT Gangguan" css-class="custom-table-column"> | ||||
|           <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_gangguan" data-type="number" | ||||
|             :caption="`${getMonthNameShort(currentMonth)} ${currentYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="sla_gangguan" data-type="number" caption="SLA (Menit)" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           caption="Rata-Rata RCT Keluhan" | ||||
|           css-class="custom-table-column" | ||||
|         > | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_recovery_keluhan" | ||||
|             data-type="number" | ||||
|             caption="Feb 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="sla_keluhan" | ||||
|             data-type="number" | ||||
|             caption="SLA (Jam)" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|         <DxColumn alignment="center" caption="Rata-Rata RCT Keluhan" css-class="custom-table-column"> | ||||
|           <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_keluhan" data-type="number" | ||||
|             :caption="`${getMonthNameShort(currentMonth)} ${currentYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="sla_keluhan" data-type="number" caption="SLA (Jam)" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="% Aging Complains" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="aging_complaint_gangguan" | ||||
|           data-type="number" | ||||
|           caption="G" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="aging_complaint_keluhan" | ||||
|           data-type="number" | ||||
|           caption="K" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="aging_complaint_gangguan" data-type="number" caption="G" | ||||
|           css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="aging_complaint_keluhan" data-type="number" caption="K" | ||||
|           css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn | ||||
|         :min-width="170" | ||||
|         alignment="center" | ||||
|         data-field="avg_aging_complaint" | ||||
|         data-type="number" | ||||
|         caption="% Rata-Rata Aging Complains" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatPercentage" | ||||
|       /> | ||||
|       <DxColumn :min-width="170" alignment="center" data-field="avg_aging_complaint" data-type="number" | ||||
|         caption="% Rata-Rata Aging Complains" css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           summary-type="sum" | ||||
|           display-format="RATA-RATA NASIONAL" | ||||
|           show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_durasi_recovery_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="sla_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_durasi_recovery_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="sla_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="aging_complaint_gangguan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="aging_complaint_keluhan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_aging_complaint" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem summary-type="sum" display-format="RATA-RATA NASIONAL" show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="avg_durasi_recovery_gangguan" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="sla_gangguan" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="avg_durasi_recovery_keluhan" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="sla_keluhan" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="aging_complaint_gangguan" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxTotalItem column="aging_complaint_keluhan" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxTotalItem column="avg_aging_complaint" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="avg_durasi_recovery_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_durasi_recovery_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="sla_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="sla_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="avg_durasi_recovery_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_durasi_recovery_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="sla_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="sla_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="aging_complaint_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="aging_complaint_gangguan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="aging_complaint_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="aging_complaint_keluhan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="avg_aging_complaint" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_aging_complaint" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="avg_durasi_recovery_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="avg_durasi_recovery_gangguan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="sla_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="sla_gangguan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="avg_durasi_recovery_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="avg_durasi_recovery_keluhan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="sla_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="sla_keluhan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="aging_complaint_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="aging_complaint_gangguan" summary-type="avg" display-format="{0}" | ||||
|           :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="aging_complaint_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="aging_complaint_keluhan" summary-type="avg" display-format="{0}" | ||||
|           :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="avg_aging_complaint" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="avg_aging_complaint" summary-type="avg" display-format="{0}" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             isNumber(data.text) | ||||
|               ? data.column.caption == '%' | ||||
|                 ? formatPercentage(data.text) | ||||
|                 : formatNumber(data.text) | ||||
|               : data.text | ||||
|           }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|         </p> | ||||
|       </template> | ||||
|  | ||||
| @@ -332,212 +126,68 @@ | ||||
|     </DxDataGrid> | ||||
|   </div> | ||||
|  | ||||
|   <DetailDialog | ||||
|     :open="dialogDetail" | ||||
|     title="Detail (Monalisa) Aging Complaint" | ||||
|     @on-close="closedialogDetail" | ||||
|     :full-width="true" | ||||
|   > | ||||
|   <DetailDialog :open="dialogDetail" title="Detail (Monalisa) Aging Complaint" @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="onExporting" | ||||
|           :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="onExporting" :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" | ||||
|           /> | ||||
|           <DxLoadPanel | ||||
|             shading-color="rgba(0,0,0,0.4)" | ||||
|             :position="position" | ||||
|             :show-indicator="showIndicator" | ||||
|             :show-pane="showPane" | ||||
|             :shading="shading" | ||||
|             v-model:visible="loadingSubData" | ||||
|             :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" /> | ||||
|           <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :position="position" :show-indicator="showIndicator" | ||||
|             :show-pane="showPane" :shading="shading" v-model:visible="loadingSubData" :enabled="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" | ||||
|             :calculateCellValue="(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" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="UID/UIW" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="UP3" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="ULP" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="ID Pelanggan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             data-field="" | ||||
|             caption="Nama Pelanggan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             data-field="" | ||||
|             caption="Nama Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             data-field="" | ||||
|             caption="Alamat Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             data-field="" | ||||
|             caption="No Telp Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             data-field="" | ||||
|             caption="Keterangan Pelapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             data-field="" | ||||
|             caption="Penyebab" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Kode Gangguan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Jenis Gangguan" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Durasi Response Time" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Durasi Recovery Time" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="" | ||||
|             caption="Tgl Lapor" | ||||
|             :allow-resizing="false" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatText" | ||||
|           /> | ||||
|           <DxColumn css-class="custom-table-column" :width="50" alignment="center" | ||||
|             :calculateCellValue="(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" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="UID/UIW" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="UP3" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="ULP" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="ID Pelanggan" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" data-field="" caption="Nama Pelanggan" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" data-field="" caption="Nama Pelapor" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" data-field="" caption="Alamat Pelapor" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" data-field="" caption="No Telp Pelapor" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" data-field="" caption="Keterangan Pelapor" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" data-field="" caption="Penyebab" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Kode Gangguan" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Jenis Gangguan" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Durasi Response Time" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Durasi Recovery Time" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="" caption="Tgl Lapor" :allow-resizing="false" | ||||
|             css-class="custom-table-column" cell-template="formatText" /> | ||||
|  | ||||
|           <template #formatNumber="{ data }"> | ||||
|             <p class="text-right cursor-pointer"> | ||||
|               {{ | ||||
|                 isNumber(data.text) | ||||
|                   ? data.column.caption == '%' | ||||
|                     ? formatPercentage(data.text) | ||||
|                     : formatNumber(data.text) | ||||
|                   : data.text | ||||
|               }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|             </p> | ||||
|           </template> | ||||
|  | ||||
| @@ -667,7 +317,7 @@ import { saveAs } from 'file-saver' | ||||
| import { Workbook } from 'exceljs' | ||||
| import { useQuery } from '@vue/apollo-composable' | ||||
| import { queries } from '@/utils/api/api.graphql' | ||||
| import { getMonthName } from '@/utils/texts' | ||||
| import { getMonthName, getMonthNameShort } from '@/utils/texts' | ||||
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' | ||||
| import DetailDialog from '@/components/Dialogs/DetailDialog.vue' | ||||
| import InputText from '@/components/InputText.vue' | ||||
|   | ||||
| @@ -1,243 +1,87 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     :report-button="true" | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters :report-button="true" @reset-form="data = []" @run-search="() => filterData(filters)" class="mb-4"> | ||||
|     <Type2 @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="onSelectionChanged" | ||||
|       @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="onSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <DxLoadPanel | ||||
|         shading-color="rgba(0,0,0,0.4)" | ||||
|         :position="position" | ||||
|         :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" | ||||
|         :shading="shading" | ||||
|         v-if="loading" | ||||
|         v-model:visible="loading" | ||||
|         :enabled="true" | ||||
|       /> | ||||
|       <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :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" /> | ||||
|       <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 alignment="center" caption="Periode: Februari,2020" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_regional" | ||||
|           caption="Nama Regional" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="0" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_uid" | ||||
|           caption="Nama UID" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="1" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_up3" | ||||
|           caption="Nama UP3" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="2" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_ulp" | ||||
|           caption="Nama Unit" | ||||
|           css-class="custom-table-column" | ||||
|           name="namaULP" | ||||
|           cell-template="formatText" | ||||
|         /> | ||||
|       <DxColumn alignment="center" :caption="`Periode: ${getMonthName(currentMonth)}, ${currentYear}`" | ||||
|         css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_regional" | ||||
|           caption="Nama Regional" css-class="custom-table-column" :group-index="0" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_uid" caption="Nama UID" | ||||
|           css-class="custom-table-column" :group-index="1" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_up3" caption="Nama UP3" | ||||
|           css-class="custom-table-column" :group-index="2" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_ulp" caption="Nama Unit" | ||||
|           css-class="custom-table-column" name="namaULP" cell-template="formatText" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="ENS (Distribusi)" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="terencana" | ||||
|           data-type="number" | ||||
|           caption="Terencana" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="tidak_terencana" | ||||
|           data-type="number" | ||||
|           caption="Tidak Terencana" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="bencana_alam" | ||||
|           data-type="number" | ||||
|           caption="Bencana Alam" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="terencana" data-type="number" caption="Terencana" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="tidak_terencana" data-type="number" | ||||
|           caption="Tidak Terencana" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="bencana_alam" data-type="number" caption="Bencana Alam" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn | ||||
|         :width="170" | ||||
|         alignment="center" | ||||
|         data-field="total" | ||||
|         data-type="number" | ||||
|         caption="Total" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :min-width="170" | ||||
|         alignment="center" | ||||
|         data-field="kpi_ens" | ||||
|         data-type="number" | ||||
|         caption="KPI ENS" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn :width="170" alignment="center" data-field="total" data-type="number" caption="Total" | ||||
|         css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       <DxColumn :min-width="170" alignment="center" data-field="kpi_ens" data-type="number" caption="KPI ENS" | ||||
|         css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           summary-type="sum" | ||||
|           display-format="Total" | ||||
|           show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="tidak_terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="bencana_alam" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="kpi_ens" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem summary-type="sum" display-format="Total" show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="terencana" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="tidak_terencana" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="bencana_alam" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="kpi_ens" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="terencana" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="tidak_terencana" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="tidak_terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="bencana_alam" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="bencana_alam" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="kpi_ens" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="kpi_ens" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="terencana" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="terencana" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="tidak_terencana" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="tidak_terencana" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="bencana_alam" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="bencana_alam" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="total" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="kpi_ens" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="kpi_ens" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             isNumber(data.text) | ||||
|               ? data.column.caption == '%' | ||||
|                 ? formatPercentage(data.text) | ||||
|                 : formatNumber(data.text) | ||||
|               : data.text | ||||
|           }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|         </p> | ||||
|       </template> | ||||
|  | ||||
|   | ||||
| @@ -1,253 +1,91 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     :report-button="true" | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters :report-button="true" @reset-form="data = []" @run-search="() => filterData(filters)" class="mb-4"> | ||||
|     <Type2 @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="onSelectionChanged" | ||||
|       @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="onSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <DxLoadPanel | ||||
|         shading-color="rgba(0,0,0,0.4)" | ||||
|         :position="position" | ||||
|         :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" | ||||
|         :shading="shading" | ||||
|         v-if="loading" | ||||
|         v-model:visible="loading" | ||||
|         :enabled="true" | ||||
|       /> | ||||
|       <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :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" /> | ||||
|       <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 | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_regional" | ||||
|         caption="Nama Regional" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="0" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_uid" | ||||
|         caption="Nama UID" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="1" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_up3" | ||||
|         caption="Nama UP3" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="2" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_ulp" | ||||
|         caption="Nama Unit" | ||||
|         css-class="custom-table-column" | ||||
|         name="namaULP" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         caption="Kepatuhan dan Akurasi APKT" | ||||
|         css-class="custom-table-column" | ||||
|       > | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_regional" caption="Nama Regional" | ||||
|         css-class="custom-table-column" :group-index="0" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_uid" caption="Nama UID" | ||||
|         css-class="custom-table-column" :group-index="1" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_up3" caption="Nama UP3" | ||||
|         css-class="custom-table-column" :group-index="2" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_ulp" caption="Nama Unit" | ||||
|         css-class="custom-table-column" name="namaULP" cell-template="formatText" /> | ||||
|       <DxColumn alignment="center" caption="Kepatuhan dan Akurasi APKT" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Gangguan Berulang" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="gangguan_berulang" | ||||
|             data-type="number" | ||||
|             caption="Jan 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="gangguan_total" | ||||
|             data-type="number" | ||||
|             caption="Total Gangguan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="gangguan_berulang" data-type="number" | ||||
|             :caption="`${getMonthNameShort(currentMonth)}, ${currentYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="gangguan_total" data-type="number" | ||||
|             caption="Total Gangguan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Keluhan Berulang" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="keluhan_berulang" | ||||
|             data-type="number" | ||||
|             caption="Jan 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="keluhan_total" | ||||
|             data-type="number" | ||||
|             caption="Total Keluhan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="keluhan_berulang" data-type="number" | ||||
|             :caption="`${getMonthNameShort(currentMonth)}, ${currentYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="keluhan_total" data-type="number" | ||||
|             caption="Total Keluhan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn | ||||
|         :min-width="150" | ||||
|         alignment="center" | ||||
|         data-field="komplain_pelanggan" | ||||
|         data-type="number" | ||||
|         caption="Komplain Pelanggan %" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatPercentage" | ||||
|       /> | ||||
|       <DxColumn :min-width="150" alignment="center" data-field="komplain_pelanggan" data-type="number" | ||||
|         caption="Komplain Pelanggan %" css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           summary-type="sum" | ||||
|           display-format="Total" | ||||
|           show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="gangguan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="gangguan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="keluhan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="keluhan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="komplain_pelanggan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem summary-type="sum" display-format="Total" show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="gangguan_berulang" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="gangguan_total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="keluhan_berulang" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="keluhan_total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="komplain_pelanggan" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="gangguan_berulang" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="gangguan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="gangguan_total" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="gangguan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="keluhan_berulang" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="keluhan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="keluhan_total" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="keluhan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="komplain_pelanggan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="komplain_pelanggan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="gangguan_berulang" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="gangguan_berulang" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="gangguan_total" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="gangguan_total" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="keluhan_berulang" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="keluhan_berulang" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="keluhan_total" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="keluhan_total" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="komplain_pelanggan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="komplain_pelanggan" summary-type="sum" display-format="{0}" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             isNumber(data.text) | ||||
|               ? data.column.caption == '%' | ||||
|                 ? formatPercentage(data.text) | ||||
|                 : formatNumber(data.text) | ||||
|               : data.text | ||||
|           }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|         </p> | ||||
|       </template> | ||||
|  | ||||
| @@ -292,7 +130,7 @@ import { saveAs } from 'file-saver' | ||||
| import { Workbook } from 'exceljs' | ||||
| import { useQuery } from '@vue/apollo-composable' | ||||
| import { queries } from '@/utils/api/api.graphql' | ||||
| import { getMonthName } from '@/utils/texts' | ||||
| import { getMonthNameShort } from '@/utils/texts' | ||||
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' | ||||
|  | ||||
| const position = { of: '#data' } | ||||
| @@ -388,7 +226,7 @@ const filterData = (params: any) => { | ||||
|  | ||||
| onMounted(() => { | ||||
|   if (import.meta.env.DEV) { | ||||
|     getMonthName(filters.value.bulan.id) | ||||
|     getMonthNameShort(filters.value.bulan.id) | ||||
|  | ||||
|     data.value = [ | ||||
|       { | ||||
|   | ||||
| @@ -87,7 +87,7 @@ | ||||
|  | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :caption="`s.d ${getMonthName(currentMonth - 1)} ${lastYear}`" | ||||
|         :caption="`${getMonthNameShort(currentMonth)} ${lastYear}`" | ||||
|         css-class="custom-table-column" | ||||
|       > | ||||
|         <DxColumn | ||||
| @@ -150,7 +150,7 @@ | ||||
|  | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :caption="`s.d ${getMonthName(currentMonth - 1)} ${currentYear}`" | ||||
|         :caption="`${getMonthNameShort(currentMonth)} ${currentYear}`" | ||||
|         css-class="custom-table-column" | ||||
|       > | ||||
|         <DxColumn | ||||
| @@ -988,7 +988,7 @@ import { exportDataGrid as exportToExcel } from 'devextreme/excel_exporter' | ||||
| import { saveAs } from 'file-saver' | ||||
| import { Workbook } from 'exceljs' | ||||
| import { useQuery } from '@vue/apollo-composable' | ||||
| import { getMonthName } from '@/utils/texts' | ||||
| import { getMonthNameShort } from '@/utils/texts' | ||||
| import { queries } from '@/utils/api/api.graphql' | ||||
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' | ||||
| import DetailDialog from '@/components/Dialogs/DetailDialog.vue' | ||||
| @@ -1136,7 +1136,7 @@ const filterData = (params: any) => { | ||||
|  | ||||
| onMounted(() => { | ||||
|   if (import.meta.env.DEV) { | ||||
|     getMonthName(filters.value.bulan.id) | ||||
|     getMonthNameShort(filters.value.bulan.id) | ||||
|  | ||||
|     data.value = [ | ||||
|       { | ||||
|   | ||||
| @@ -1,321 +1,114 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|     <Type2 @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="onSelectionChanged" | ||||
|       @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="onSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <DxLoadPanel | ||||
|         shading-color="rgba(0,0,0,0.4)" | ||||
|         :position="position" | ||||
|         :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" | ||||
|         :shading="shading" | ||||
|         v-if="loading" | ||||
|         v-model:visible="loading" | ||||
|         :enabled="true" | ||||
|       /> | ||||
|       <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :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" /> | ||||
|       <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 alignment="center" caption="Periode: Februari,2020" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_regional" | ||||
|           caption="Nama Regional" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="0" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_uid" | ||||
|           caption="Nama UID" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="1" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_up3" | ||||
|           caption="Nama UP3" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="2" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_ulp" | ||||
|           caption="Nama Unit" | ||||
|           css-class="custom-table-column" | ||||
|           name="namaULP" | ||||
|           cell-template="formatText" | ||||
|         /> | ||||
|       <DxColumn alignment="center" :caption="`Periode: ${getMonthName(currentMonth)}, ${currentYear}`" | ||||
|         css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_regional" | ||||
|           caption="Nama Regional" css-class="custom-table-column" :group-index="0" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_uid" caption="Nama UID" | ||||
|           css-class="custom-table-column" :group-index="1" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_up3" caption="Nama UP3" | ||||
|           css-class="custom-table-column" :group-index="2" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_ulp" caption="Nama Unit" | ||||
|           css-class="custom-table-column" name="namaULP" cell-template="formatText" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="Aging Complains" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           caption="Rata-Rata RCT Gangguan" | ||||
|           css-class="custom-table-column" | ||||
|         > | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_recovery_gangguan" | ||||
|             data-type="number" | ||||
|             caption="Feb 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="sla_gangguan" | ||||
|             data-type="number" | ||||
|             caption="SLA (Menit)" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|         <DxColumn alignment="center" caption="Rata-Rata RCT Gangguan" css-class="custom-table-column"> | ||||
|           <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_gangguan" data-type="number" | ||||
|             :caption="`Periode: ${getMonthNameShort(currentMonth)}, ${currentYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="sla_gangguan" data-type="number" caption="SLA (Menit)" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           caption="Rata-Rata RCT Keluhan" | ||||
|           css-class="custom-table-column" | ||||
|         > | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="avg_durasi_recovery_keluhan" | ||||
|             data-type="number" | ||||
|             caption="Feb 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="sla_keluhan" | ||||
|             data-type="number" | ||||
|             caption="SLA (Jam)" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|         <DxColumn alignment="center" caption="Rata-Rata RCT Keluhan" css-class="custom-table-column"> | ||||
|           <DxColumn :width="150" alignment="center" data-field="avg_durasi_recovery_keluhan" data-type="number" | ||||
|             :caption="`Periode: ${getMonthNameShort(currentMonth)}, ${currentYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="sla_keluhan" data-type="number" caption="SLA (Jam)" | ||||
|             css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="% Aging Complains" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="aging_complaint_gangguan" | ||||
|           data-type="number" | ||||
|           caption="G" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="aging_complaint_keluhan" | ||||
|           data-type="number" | ||||
|           caption="K" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="aging_complaint_gangguan" data-type="number" caption="G" | ||||
|           css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="aging_complaint_keluhan" data-type="number" caption="K" | ||||
|           css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn | ||||
|         :min-width="170" | ||||
|         alignment="center" | ||||
|         data-field="avg_aging_complaint" | ||||
|         data-type="number" | ||||
|         caption="% Rata-Rata Aging Complains" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatPercentage" | ||||
|       /> | ||||
|       <DxColumn :min-width="170" alignment="center" data-field="avg_aging_complaint" data-type="number" | ||||
|         caption="% Rata-Rata Aging Complains" css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           summary-type="sum" | ||||
|           display-format="RATA-RATA NASIONAL" | ||||
|           show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_durasi_recovery_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="sla_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_durasi_recovery_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="sla_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="aging_complaint_gangguan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="aging_complaint_keluhan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="avg_aging_complaint" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem summary-type="sum" display-format="RATA-RATA NASIONAL" show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="avg_durasi_recovery_gangguan" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="sla_gangguan" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="avg_durasi_recovery_keluhan" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="sla_keluhan" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="aging_complaint_gangguan" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxTotalItem column="aging_complaint_keluhan" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxTotalItem column="avg_aging_complaint" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="avg_durasi_recovery_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_durasi_recovery_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="sla_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="sla_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="avg_durasi_recovery_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_durasi_recovery_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="sla_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="sla_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="aging_complaint_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="aging_complaint_gangguan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="aging_complaint_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="aging_complaint_keluhan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="avg_aging_complaint" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="avg_aging_complaint" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="avg_durasi_recovery_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="avg_durasi_recovery_gangguan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="sla_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="sla_gangguan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="avg_durasi_recovery_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="avg_durasi_recovery_keluhan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="sla_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="sla_keluhan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="aging_complaint_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="aging_complaint_gangguan" summary-type="avg" display-format="{0}" | ||||
|           :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="aging_complaint_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="aging_complaint_keluhan" summary-type="avg" display-format="{0}" | ||||
|           :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="avg_aging_complaint" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="avg_aging_complaint" summary-type="avg" display-format="{0}" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             isNumber(data.text) | ||||
|               ? data.column.caption == '%' | ||||
|                 ? formatPercentage(data.text) | ||||
|                 : formatNumber(data.text) | ||||
|               : data.text | ||||
|           }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|         </p> | ||||
|       </template> | ||||
|  | ||||
| @@ -360,7 +153,7 @@ import { saveAs } from 'file-saver' | ||||
| import { Workbook } from 'exceljs' | ||||
| import { useQuery } from '@vue/apollo-composable' | ||||
| import { queries } from '@/utils/api/api.graphql' | ||||
| import { getMonthName } from '@/utils/texts' | ||||
| import { getMonthName, getMonthNameShort } from '@/utils/texts' | ||||
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' | ||||
|  | ||||
| const position = { of: '#data' } | ||||
|   | ||||
| @@ -1,243 +1,87 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|     <Type2 @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="onSelectionChanged" | ||||
|       @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="onSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <DxLoadPanel | ||||
|         shading-color="rgba(0,0,0,0.4)" | ||||
|         :position="position" | ||||
|         :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" | ||||
|         :shading="shading" | ||||
|         v-if="loading" | ||||
|         v-model:visible="loading" | ||||
|         :enabled="true" | ||||
|       /> | ||||
|       <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :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" /> | ||||
|       <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 alignment="center" caption="Periode: Februari,2020" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_regional" | ||||
|           caption="Nama Regional" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="0" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_uid" | ||||
|           caption="Nama UID" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="1" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_up3" | ||||
|           caption="Nama UP3" | ||||
|           css-class="custom-table-column" | ||||
|           :group-index="2" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           :min-width="170" | ||||
|           data-type="text" | ||||
|           data-field="nama_ulp" | ||||
|           caption="Nama Unit" | ||||
|           css-class="custom-table-column" | ||||
|           name="namaULP" | ||||
|           cell-template="formatText" | ||||
|         /> | ||||
|       <DxColumn alignment="center" :caption="`Periode: ${getMonthName(currentMonth)}, ${currentYear}`" | ||||
|         css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_regional" | ||||
|           caption="Nama Regional" css-class="custom-table-column" :group-index="0" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_uid" caption="Nama UID" | ||||
|           css-class="custom-table-column" :group-index="1" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_up3" caption="Nama UP3" | ||||
|           css-class="custom-table-column" :group-index="2" /> | ||||
|         <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_ulp" caption="Nama Unit" | ||||
|           css-class="custom-table-column" name="namaULP" cell-template="formatText" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn alignment="center" caption="ENS (Distribusi)" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="terencana" | ||||
|           data-type="number" | ||||
|           caption="Terencana" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="tidak_terencana" | ||||
|           data-type="number" | ||||
|           caption="Tidak Terencana" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="bencana_alam" | ||||
|           data-type="number" | ||||
|           caption="Bencana Alam" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="terencana" data-type="number" caption="Terencana" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="tidak_terencana" data-type="number" | ||||
|           caption="Tidak Terencana" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="bencana_alam" data-type="number" caption="Bencana Alam" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|       <DxColumn | ||||
|         :width="170" | ||||
|         alignment="center" | ||||
|         data-field="total" | ||||
|         data-type="number" | ||||
|         caption="Total" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         :min-width="170" | ||||
|         alignment="center" | ||||
|         data-field="kpi_ens" | ||||
|         data-type="number" | ||||
|         caption="KPI ENS" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatNumber" | ||||
|       /> | ||||
|       <DxColumn :width="170" alignment="center" data-field="total" data-type="number" caption="Total" | ||||
|         css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       <DxColumn :min-width="170" alignment="center" data-field="kpi_ens" data-type="number" caption="KPI ENS" | ||||
|         css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           summary-type="sum" | ||||
|           display-format="Total" | ||||
|           show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="tidak_terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="bencana_alam" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="kpi_ens" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem summary-type="sum" display-format="Total" show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="terencana" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="tidak_terencana" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="bencana_alam" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="kpi_ens" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="terencana" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="tidak_terencana" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="tidak_terencana" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="bencana_alam" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="bencana_alam" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="kpi_ens" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="kpi_ens" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="terencana" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="terencana" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="tidak_terencana" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="tidak_terencana" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="bencana_alam" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="bencana_alam" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="total" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="kpi_ens" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="kpi_ens" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             isNumber(data.text) | ||||
|               ? data.column.caption == '%' | ||||
|                 ? formatPercentage(data.text) | ||||
|                 : formatNumber(data.text) | ||||
|               : data.text | ||||
|           }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|         </p> | ||||
|       </template> | ||||
|  | ||||
|   | ||||
| @@ -1,253 +1,91 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|     <Type2 @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="onSelectionChanged" | ||||
|       @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="onSelectionChanged" | ||||
|       @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <DxLoadPanel | ||||
|         shading-color="rgba(0,0,0,0.4)" | ||||
|         :position="position" | ||||
|         :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" | ||||
|         :shading="shading" | ||||
|         v-if="loading" | ||||
|         v-model:visible="loading" | ||||
|         :enabled="true" | ||||
|       /> | ||||
|       <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :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" /> | ||||
|       <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 | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_regional" | ||||
|         caption="Nama Regional" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="0" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_uid" | ||||
|         caption="Nama UID" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="1" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_up3" | ||||
|         caption="Nama UP3" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="2" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_ulp" | ||||
|         caption="Nama Unit" | ||||
|         css-class="custom-table-column" | ||||
|         name="namaULP" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         caption="Kepatuhan dan Akurasi APKT" | ||||
|         css-class="custom-table-column" | ||||
|       > | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_regional" caption="Nama Regional" | ||||
|         css-class="custom-table-column" :group-index="0" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_uid" caption="Nama UID" | ||||
|         css-class="custom-table-column" :group-index="1" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_up3" caption="Nama UP3" | ||||
|         css-class="custom-table-column" :group-index="2" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_ulp" caption="Nama Unit" | ||||
|         css-class="custom-table-column" name="namaULP" cell-template="formatText" /> | ||||
|       <DxColumn alignment="center" caption="Kepatuhan dan Akurasi APKT" css-class="custom-table-column"> | ||||
|         <DxColumn alignment="center" caption="Gangguan Berulang" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="gangguan_berulang" | ||||
|             data-type="number" | ||||
|             caption="Jan 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="gangguan_total" | ||||
|             data-type="number" | ||||
|             caption="Total Gangguan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="gangguan_berulang" data-type="number" | ||||
|             :caption="`s.d ${getMonthNameShort(currentMonth)} ${lastYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="gangguan_total" data-type="number" | ||||
|             caption="Total Gangguan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn alignment="center" caption="Keluhan Berulang" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="keluhan_berulang" | ||||
|             data-type="number" | ||||
|             caption="Jan 2020" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="150" | ||||
|             alignment="center" | ||||
|             data-field="keluhan_total" | ||||
|             data-type="number" | ||||
|             caption="Total Keluhan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="keluhan_berulang" data-type="number" | ||||
|             :caption="` s.d ${getMonthNameShort(currentMonth)} ${currentYear}`" css-class="custom-table-column" | ||||
|             cell-template="formatNumber" /> | ||||
|           <DxColumn :width="150" alignment="center" data-field="keluhan_total" data-type="number" | ||||
|             caption="Total Keluhan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|       </DxColumn> | ||||
|       <DxColumn | ||||
|         :min-width="150" | ||||
|         alignment="center" | ||||
|         data-field="komplain_pelanggan" | ||||
|         data-type="number" | ||||
|         caption="Komplain Pelanggan %" | ||||
|         css-class="custom-table-column" | ||||
|         cell-template="formatPercentage" | ||||
|       /> | ||||
|       <DxColumn :min-width="150" alignment="center" data-field="komplain_pelanggan" data-type="number" | ||||
|         caption="Komplain Pelanggan %" css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           summary-type="sum" | ||||
|           display-format="Total" | ||||
|           show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="gangguan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="gangguan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="keluhan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="keluhan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="komplain_pelanggan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem summary-type="sum" display-format="Total" show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="gangguan_berulang" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="gangguan_total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="keluhan_berulang" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="keluhan_total" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="komplain_pelanggan" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="gangguan_berulang" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="gangguan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="gangguan_total" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="gangguan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="keluhan_berulang" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="keluhan_berulang" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="keluhan_total" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="keluhan_total" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="komplain_pelanggan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="komplain_pelanggan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="gangguan_berulang" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="gangguan_berulang" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="gangguan_total" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="gangguan_total" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="keluhan_berulang" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="keluhan_berulang" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="keluhan_total" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="keluhan_total" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="komplain_pelanggan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="komplain_pelanggan" summary-type="sum" display-format="{0}" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             isNumber(data.text) | ||||
|               ? data.column.caption == '%' | ||||
|                 ? formatPercentage(data.text) | ||||
|                 : formatNumber(data.text) | ||||
|               : data.text | ||||
|           }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|         </p> | ||||
|       </template> | ||||
|  | ||||
| @@ -292,7 +130,7 @@ import { saveAs } from 'file-saver' | ||||
| import { Workbook } from 'exceljs' | ||||
| import { useQuery } from '@vue/apollo-composable' | ||||
| import { queries } from '@/utils/api/api.graphql' | ||||
| import { getMonthName } from '@/utils/texts' | ||||
| import { getMonthNameShort } from '@/utils/texts' | ||||
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers' | ||||
|  | ||||
| const position = { of: '#data' } | ||||
| @@ -385,7 +223,7 @@ const filterData = (params: any) => { | ||||
|  | ||||
| onMounted(() => { | ||||
|   if (import.meta.env.DEV) { | ||||
|     getMonthName(filters.value.bulan.id) | ||||
|     getMonthNameShort(filters.value.bulan.id) | ||||
|  | ||||
|     data.value = [ | ||||
|       { | ||||
|   | ||||
| @@ -1,700 +1,223 @@ | ||||
| <template> | ||||
|   <Filters | ||||
|     @reset-form="data = []" | ||||
|     @run-search="() => filterData(filters)" | ||||
|     :report-button="true" | ||||
|     class="mb-4" | ||||
|   > | ||||
|   <Filters @reset-form="data = []" @run-search="() => filterData(filters)" :report-button="true" class="mb-4"> | ||||
|     <Type2 @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="onSelectionChanged" | ||||
|       :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="onSelectionChanged" | ||||
|       :column-width="100" @exporting="onExporting" :allow-column-resizing="true" column-resizing-mode="widget" | ||||
|       :word-wrap-enabled="true"> | ||||
|       <DxGrouping expand-mode="rowClick" /> | ||||
|       <DxSelection mode="single" /> | ||||
|       <DxPaging :enabled="false" /> | ||||
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" /> | ||||
|       <DxLoadPanel | ||||
|         shading-color="rgba(0,0,0,0.4)" | ||||
|         :position="position" | ||||
|         :show-indicator="showIndicator" | ||||
|         :show-pane="showPane" | ||||
|         :shading="shading" | ||||
|         v-if="loading" | ||||
|         v-model:visible="loading" | ||||
|         :enabled="true" | ||||
|       /> | ||||
|       <DxLoadPanel shading-color="rgba(0,0,0,0.4)" :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" /> | ||||
|       <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 | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_regional" | ||||
|         caption="Nama Regional" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="0" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_uid" | ||||
|         caption="Nama UID" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="1" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_up3" | ||||
|         caption="Nama UP3" | ||||
|         css-class="custom-table-column" | ||||
|         :group-index="2" | ||||
|       /> | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :min-width="170" | ||||
|         data-type="text" | ||||
|         data-field="nama_ulp" | ||||
|         caption="Nama Unit" | ||||
|         css-class="custom-table-column" | ||||
|         name="namaULP" | ||||
|         cell-template="formatText" | ||||
|       /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_regional" caption="Nama Regional" | ||||
|         css-class="custom-table-column" :group-index="0" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_uid" caption="Nama UID" | ||||
|         css-class="custom-table-column" :group-index="1" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_up3" caption="Nama UP3" | ||||
|         css-class="custom-table-column" :group-index="2" /> | ||||
|       <DxColumn alignment="center" :min-width="170" data-type="text" data-field="nama_ulp" caption="Nama Unit" | ||||
|         css-class="custom-table-column" name="namaULP" cell-template="formatText" /> | ||||
|  | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :caption="`s.d ${getMonthName(currentMonth - 1)} ${lastYear}`" | ||||
|         css-class="custom-table-column" | ||||
|       > | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total_keluhan_tahun_sebelumnya" | ||||
|           data-type="number" | ||||
|           caption="Keluhan" | ||||
|           css-class="custom-table-column" | ||||
|           name="keluhanBulanLalu" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total_gangguan_tahun_sebelumnya" | ||||
|           data-type="number" | ||||
|           caption="Gangguan" | ||||
|           css-class="custom-table-column" | ||||
|         /> | ||||
|       <DxColumn alignment="center" :caption="`s.d ${getMonthName(currentMonth)} ${lastYear}`" | ||||
|         css-class="custom-table-column"> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total_keluhan_tahun_sebelumnya" data-type="number" | ||||
|           caption="Keluhan" css-class="custom-table-column" name="keluhanBulanLalu" /> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total_gangguan_tahun_sebelumnya" data-type="number" | ||||
|           caption="Gangguan" css-class="custom-table-column" /> | ||||
|         <DxColumn alignment="center" caption="Informasi" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_keluhan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" | ||||
|             caption="Keluhan" | ||||
|             css-class="custom-table-column" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_gangguan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" | ||||
|             caption="Gangguan" | ||||
|             css-class="custom-table-column" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_informasi_tahun_sebelumnya" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_keluhan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" caption="Keluhan" css-class="custom-table-column" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_gangguan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" caption="Gangguan" css-class="custom-table-column" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_informasi_tahun_sebelumnya" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           caption="Total Komplain" | ||||
|           css-class="custom-table-column" | ||||
|           data-field="total_tahun_sebelumnya" | ||||
|           data-type="number" | ||||
|         /> | ||||
|         <DxColumn alignment="center" caption="Total Komplain" css-class="custom-table-column" | ||||
|           data-field="total_tahun_sebelumnya" data-type="number" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :caption="`s.d ${getMonthName(currentMonth - 1)} ${lastYear}`" | ||||
|         css-class="custom-table-column" | ||||
|       > | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total_keluhan_tahun_sebelumnya" | ||||
|           data-type="number" | ||||
|           caption="Keluhan" | ||||
|           css-class="custom-table-column" | ||||
|           name="keluhanBulanLalu" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total_gangguan_tahun_sebelumnya" | ||||
|           data-type="number" | ||||
|           caption="Gangguan" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|       <DxColumn alignment="center" :caption="`s.d ${getMonthName(currentMonth)} ${lastYear}`" | ||||
|         css-class="custom-table-column"> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total_keluhan_tahun_sebelumnya" data-type="number" | ||||
|           caption="Keluhan" css-class="custom-table-column" name="keluhanBulanLalu" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total_gangguan_tahun_sebelumnya" data-type="number" | ||||
|           caption="Gangguan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" caption="Informasi" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_keluhan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" | ||||
|             caption="Keluhan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_gangguan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" | ||||
|             caption="Gangguan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_informasi_tahun_sebelumnya" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_keluhan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" caption="Keluhan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_gangguan_informasi_tahun_sebelumnya" | ||||
|             data-type="number" caption="Gangguan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_informasi_tahun_sebelumnya" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           caption="Total Komplain" | ||||
|           css-class="custom-table-column" | ||||
|           data-field="total_tahun_sebelumnya" | ||||
|           data-type="number" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn alignment="center" caption="Total Komplain" css-class="custom-table-column" | ||||
|           data-field="total_tahun_sebelumnya" data-type="number" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxColumn | ||||
|         alignment="center" | ||||
|         :caption="`s.d ${getMonthName(currentMonth - 1)} ${currentYear}`" | ||||
|         css-class="custom-table-column" | ||||
|       > | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total_keluhan_tahun_ini" | ||||
|           data-type="number" | ||||
|           caption="Keluhan" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="120" | ||||
|           alignment="center" | ||||
|           data-field="total_gangguan_tahun_ini" | ||||
|           data-type="number" | ||||
|           caption="Gangguan" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|       <DxColumn alignment="center" :caption="`s.d ${getMonthName(currentMonth - 1)} ${currentYear}`" | ||||
|         css-class="custom-table-column"> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total_keluhan_tahun_ini" data-type="number" | ||||
|           caption="Keluhan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="120" alignment="center" data-field="total_gangguan_tahun_ini" data-type="number" | ||||
|           caption="Gangguan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn alignment="center" caption="Informasi" css-class="custom-table-column"> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_keluhan_informasi_tahun_ini" | ||||
|             data-type="number" | ||||
|             caption="Keluhan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_gangguan_informasi_tahun_ini" | ||||
|             data-type="number" | ||||
|             caption="Gangguan" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn | ||||
|             :width="120" | ||||
|             alignment="center" | ||||
|             data-field="total_informasi_tahun_ini" | ||||
|             data-type="number" | ||||
|             caption="Total" | ||||
|             css-class="custom-table-column" | ||||
|             cell-template="formatNumber" | ||||
|           /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_keluhan_informasi_tahun_ini" data-type="number" | ||||
|             caption="Keluhan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_gangguan_informasi_tahun_ini" data-type="number" | ||||
|             caption="Gangguan" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|           <DxColumn :width="120" alignment="center" data-field="total_informasi_tahun_ini" data-type="number" | ||||
|             caption="Total" css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         </DxColumn> | ||||
|         <DxColumn | ||||
|           alignment="center" | ||||
|           caption="Total Komplain" | ||||
|           css-class="custom-table-column" | ||||
|           data-field="total_tahun_ini" | ||||
|           data-type="number" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn alignment="center" caption="Total Komplain" css-class="custom-table-column" | ||||
|           data-field="total_tahun_ini" data-type="number" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxColumn alignment="center" caption="Delta Penurunan" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="delta_keluhan" | ||||
|           data-type="number" | ||||
|           caption="Keluhan" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="delta_gangguan" | ||||
|           data-type="number" | ||||
|           caption="Gangguan" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="delta_informasi" | ||||
|           data-type="number" | ||||
|           caption="Informasi" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatNumber" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="delta_keluhan" data-type="number" caption="Keluhan" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="delta_gangguan" data-type="number" caption="Gangguan" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="delta_informasi" data-type="number" caption="Informasi" | ||||
|           css-class="custom-table-column" cell-template="formatNumber" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxColumn alignment="center" caption="% Penurunan YoY" css-class="custom-table-column"> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="persen_delta_keluhan" | ||||
|           data-type="number" | ||||
|           caption="Keluhan" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="persen_delta_gangguan" | ||||
|           data-type="number" | ||||
|           caption="Gangguan" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="persen_delta_informasi" | ||||
|           data-type="number" | ||||
|           caption="Informasi" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn | ||||
|           :width="150" | ||||
|           alignment="center" | ||||
|           data-field="persen_delta_total" | ||||
|           data-type="number" | ||||
|           caption="% Total" | ||||
|           css-class="custom-table-column" | ||||
|           cell-template="formatPercentage" | ||||
|         /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="persen_delta_keluhan" data-type="number" caption="Keluhan" | ||||
|           css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="persen_delta_gangguan" data-type="number" | ||||
|           caption="Gangguan" css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="persen_delta_informasi" data-type="number" | ||||
|           caption="Informasi" css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|         <DxColumn :width="150" alignment="center" data-field="persen_delta_total" data-type="number" caption="% Total" | ||||
|           css-class="custom-table-column" cell-template="formatPercentage" /> | ||||
|       </DxColumn> | ||||
|  | ||||
|       <DxSummary> | ||||
|         <DxTotalItem | ||||
|           summary-type="sum" | ||||
|           display-format="Total" | ||||
|           show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_keluhan_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_gangguan_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_keluhan_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_gangguan_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_keluhan_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_gangguan_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_keluhan_informasi_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_gangguan_informasi_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_informasi_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="total_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="delta_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="delta_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="delta_informasi" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="persen_delta_keluhan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="persen_delta_gangguan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="persen_delta_informasi" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem | ||||
|           column="persen_delta_total" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           css-class="text-white !text-right" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxTotalItem summary-type="sum" display-format="Total" show-in-column="nama_ulp" | ||||
|           css-class="text-white !text-left" /> | ||||
|         <DxTotalItem column="total_keluhan_tahun_sebelumnya" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_gangguan_tahun_sebelumnya" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_keluhan_informasi_tahun_sebelumnya" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_gangguan_informasi_tahun_sebelumnya" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_informasi_tahun_sebelumnya" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_tahun_sebelumnya" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_keluhan_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_gangguan_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_keluhan_informasi_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_gangguan_informasi_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_informasi_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="total_tahun_ini" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="delta_keluhan" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="delta_gangguan" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="delta_informasi" summary-type="sum" display-format="{0}" css-class="text-white !text-right" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxTotalItem column="persen_delta_keluhan" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxTotalItem column="persen_delta_gangguan" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxTotalItem column="persen_delta_informasi" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxTotalItem column="persen_delta_total" summary-type="avg" display-format="{0}" | ||||
|           css-class="text-white !text-right" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|  | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_keluhan_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_keluhan_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_gangguan_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_gangguan_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_keluhan_informasi_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_keluhan_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_gangguan_informasi_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_gangguan_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_informasi_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_tahun_sebelumnya" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_keluhan_tahun_ini" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_keluhan_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_gangguan_tahun_ini" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_gangguan_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_keluhan_informasi_tahun_ini" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_keluhan_informasi_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_gangguan_informasi_tahun_ini" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_gangguan_informasi_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_informasi_tahun_ini" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_informasi_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="total_tahun_ini" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="total_tahun_ini" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="delta_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="delta_keluhan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="delta_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="delta_gangguan" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="delta_informasi" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="delta_informasi" | ||||
|           summary-type="sum" | ||||
|           display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="persen_delta_keluhan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="persen_delta_keluhan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="persen_delta_gangguan" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="persen_delta_gangguan" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="persen_delta_informasi" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="persen_delta_informasi" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem | ||||
|           css-class="!text-right" | ||||
|           show-in-column="persen_delta_total" | ||||
|           :show-in-group-footer="false" | ||||
|           :align-by-column="true" | ||||
|           column="persen_delta_total" | ||||
|           summary-type="avg" | ||||
|           display-format="{0}" | ||||
|           :customize-text=" | ||||
|             (e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|           " | ||||
|         /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_keluhan_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" :align-by-column="true" column="total_keluhan_tahun_sebelumnya" | ||||
|           summary-type="sum" display-format="{0}" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_gangguan_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" :align-by-column="true" column="total_gangguan_tahun_sebelumnya" | ||||
|           summary-type="sum" display-format="{0}" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_keluhan_informasi_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" :align-by-column="true" column="total_keluhan_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" display-format="{0}" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_gangguan_informasi_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" :align-by-column="true" column="total_gangguan_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" display-format="{0}" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_informasi_tahun_sebelumnya" | ||||
|           :show-in-group-footer="false" :align-by-column="true" column="total_informasi_tahun_sebelumnya" | ||||
|           summary-type="sum" display-format="{0}" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_tahun_sebelumnya" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="total_tahun_sebelumnya" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_keluhan_tahun_ini" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="total_keluhan_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_gangguan_tahun_ini" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="total_gangguan_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_keluhan_informasi_tahun_ini" | ||||
|           :show-in-group-footer="false" :align-by-column="true" column="total_keluhan_informasi_tahun_ini" | ||||
|           summary-type="sum" display-format="{0}" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_gangguan_informasi_tahun_ini" | ||||
|           :show-in-group-footer="false" :align-by-column="true" column="total_gangguan_informasi_tahun_ini" | ||||
|           summary-type="sum" display-format="{0}" :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_informasi_tahun_ini" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="total_informasi_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="total_tahun_ini" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="total_tahun_ini" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="delta_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="delta_keluhan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="delta_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="delta_gangguan" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="delta_informasi" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="delta_informasi" summary-type="sum" display-format="{0}" | ||||
|           :customize-text="(e: any) => formatNumber(e.value)" /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="persen_delta_keluhan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="persen_delta_keluhan" summary-type="avg" display-format="{0}" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="persen_delta_gangguan" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="persen_delta_gangguan" summary-type="avg" display-format="{0}" | ||||
|           :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="persen_delta_informasi" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="persen_delta_informasi" summary-type="avg" display-format="{0}" | ||||
|           :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|         <DxGroupItem css-class="!text-right" show-in-column="persen_delta_total" :show-in-group-footer="false" | ||||
|           :align-by-column="true" column="persen_delta_total" summary-type="avg" display-format="{0}" :customize-text="(e: any) => (parseFloat(e.value.toString()) ? formatPercentage(e.value) : '0%') | ||||
|     " /> | ||||
|       </DxSummary> | ||||
|  | ||||
|       <template #formatNumber="{ data }"> | ||||
|         <p class="text-right cursor-pointer"> | ||||
|           {{ | ||||
|             isNumber(data.text) | ||||
|               ? data.column.caption == '%' | ||||
|                 ? formatPercentage(data.text) | ||||
|                 : formatNumber(data.text) | ||||
|               : data.text | ||||
|           }} | ||||
|     isNumber(data.text) | ||||
|       ? data.column.caption == '%' | ||||
|         ? formatPercentage(data.text) | ||||
|         : formatNumber(data.text) | ||||
|       : data.text | ||||
|   }} | ||||
|         </p> | ||||
|       </template> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user