1171 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			1171 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			Vue
		
	
	
		
			Executable File
		
	
	
	
	
| <template>
 | |
|   <Filters
 | |
|     @run-report="() => exportToPDF(reportMeta, data, true)"
 | |
|     @reset-form="data = []"
 | |
|     :report-button="true"
 | |
|     @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"
 | |
|       v-if="loadingData == false"
 | |
|       :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" :auto-expand-all="false" />
 | |
|       <DxSelection mode="single" />
 | |
|       <DxPaging :enabled="false" />
 | |
|       <DxScrolling column-rendering-mode="virtual" mode="virtual" />
 | |
| 
 | |
|       <DxSearchPanel :visible="true" :highlight-case-sensitive="true" />
 | |
|       <DxExport
 | |
|         :enabled="true"
 | |
|         :formats="['pdf', 'xlsx', 'document']"
 | |
|         :allow-export-selected-data="false"
 | |
|       />
 | |
|       <DxColumnFixing :enabled="true" />
 | |
| 
 | |
|       <DxColumn
 | |
|         v-if="grouping.length > 0"
 | |
|         v-for="(group, index) in grouping"
 | |
|         :width="150"
 | |
|         alignment="center"
 | |
|         :data-field="group.data"
 | |
|         :caption="group.caption"
 | |
|         css-class="custom-table-column"
 | |
|         cell-template="formatText"
 | |
|         :group-index="index"
 | |
|       />
 | |
|       <DxColumn
 | |
|         alignment="center"
 | |
|         :min-width="170"
 | |
|         data-type="text"
 | |
|         data-field="nama_ulp"
 | |
|         caption="Nama Unit"
 | |
|         css-class="custom-table-column"
 | |
|         cell-template="formatText"
 | |
|       />
 | |
|       <DxColumn
 | |
|         alignment="center"
 | |
|         caption="Jumlah RPT Kali Gangguan"
 | |
|         css-class="custom-table-column"
 | |
|       >
 | |
|         <DxColumn alignment="center" caption="MoM" css-class="custom-table-column">
 | |
|           <DxColumn
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="mom_bulan_kemarin"
 | |
|             data-type="number"
 | |
|             :caption="`${getMonthName(lastMonth)} ${lastYearMoM}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="count_mom_bulan_kemarin"
 | |
|             data-type="number"
 | |
|             :caption="`Count ${getMonthName(lastMonth)} ${lastYearMoM}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="cal_mom_bulan_kemarin"
 | |
|             :caption="`Cal ${getMonthName(lastMonth)} ${lastYearMoM}`"
 | |
|             data-type="number"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|             :calculate-cell-value="
 | |
|               (rowData: any) => rowData.count_mom_bulan_kemarin * rowData.mom_bulan_kemarin
 | |
|             "
 | |
|           />
 | |
|           <DxColumn
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="mom_bulan_ini"
 | |
|             data-type="number"
 | |
|             :caption="`${getMonthName(currentMonth)} ${currentYear}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="count_mom_bulan_ini"
 | |
|             data-type="number"
 | |
|             :caption="`Count ${getMonthName(currentMonth)} ${currentYear}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="cal_mom_bulan_ini"
 | |
|             data-type="number"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|             :calculate-cell-value="
 | |
|               (rowData: any) => rowData.count_mom_bulan_ini * rowData.mom_bulan_ini
 | |
|             "
 | |
|           />
 | |
|           <DxColumn
 | |
|             :width="70"
 | |
|             alignment="center"
 | |
|             data-field="persen_mom"
 | |
|             data-type="number"
 | |
|             caption="%"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|         </DxColumn>
 | |
|         <DxColumn alignment="center" caption="YoY" css-class="custom-table-column">
 | |
|           <DxColumn
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="yoy_tahun_kemarin"
 | |
|             data-type="number"
 | |
|             :caption="`s.d ${getMonthName(currentMonth)} ${lastYear}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="count_yoy_tahun_kemarin"
 | |
|             data-type="number"
 | |
|             :caption="`Count ${getMonthName(currentMonth)} ${lastYear}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="cal_yoy_tahun_kemarin"
 | |
|             data-type="number"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|             :calculate-cell-value="
 | |
|               (rowData: any) => rowData.count_yoy_tahun_kemarin * rowData.yoy_tahun_kemarin
 | |
|             "
 | |
|           />
 | |
|           <DxColumn
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="yoy_tahun_ini"
 | |
|             data-type="number"
 | |
|             :caption="`s.d ${getMonthName(currentMonth)} ${currentYear}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="count_yoy_tahun_ini"
 | |
|             data-type="number"
 | |
|             :caption="`Count ${getMonthName(currentMonth)} ${currentYear}`"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|           <DxColumn
 | |
|             :visible="false"
 | |
|             :width="150"
 | |
|             alignment="center"
 | |
|             data-field="cal_yoy_tahun_ini"
 | |
|             data-type="number"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|             :calculate-cell-value="
 | |
|               (rowData: any) => rowData.count_yoy_tahun_ini * rowData.yoy_tahun_ini
 | |
|             "
 | |
|           />
 | |
|           <DxColumn
 | |
|             :width="70"
 | |
|             alignment="center"
 | |
|             data-field="persen_yoy"
 | |
|             data-type="number"
 | |
|             caption="%"
 | |
|             css-class="custom-table-column"
 | |
|             cell-template="formatNumber"
 | |
|           />
 | |
|         </DxColumn>
 | |
|       </DxColumn>
 | |
| 
 | |
|       <DxSummary :calculate-custom-summary="calculateCustomSummary">
 | |
|         <DxTotalItem
 | |
|           :display-format="`RATA-RATA`"
 | |
|           show-in-column="nama_ulp"
 | |
|           css-class="text-white !text-left"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="mom_bulan_kemarin"
 | |
|           name="mom_bulan_kemarin"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="count_mom_bulan_kemarin"
 | |
|           name="count_mom_bulan_kemarin"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="cal_mom_bulan_kemarin"
 | |
|           name="cal_mom_bulan_kemarin"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="mom_bulan_ini"
 | |
|           name="mom_bulan_ini"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="cal_mom_bulan_ini"
 | |
|           name="cal_mom_bulan_ini"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="count_mom_bulan_ini"
 | |
|           name="count_mom_bulan_ini"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="persen_mom"
 | |
|           name="persen_mom"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatPercentage(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="yoy_tahun_kemarin"
 | |
|           name="yoy_tahun_kemarin"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="cal_yoy_tahun_kemarin"
 | |
|           name="cal_yoy_tahun_kemarin"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="count_yoy_tahun_kemarin"
 | |
|           name="count_yoy_tahun_kemarin"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="yoy_tahun_ini"
 | |
|           name="yoy_tahun_ini"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="cal_yoy_tahun_ini"
 | |
|           name="cal_yoy_tahun_ini"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="count_yoy_tahun_ini"
 | |
|           name="count_yoy_tahun_ini"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxTotalItem
 | |
|           column="persen_yoy"
 | |
|           name="persen_yoy"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           css-class="text-white !text-right"
 | |
|           :customize-text="(e: any) => formatPercentage(e.value)"
 | |
|         />
 | |
| 
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           show-in-column="mom_bulan_kemarin"
 | |
|           name="mom_bulan_kemarin"
 | |
|           column="mom_bulan_kemarin"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           show-in-column="cal_mom_bulan_kemarin"
 | |
|           name="cal_mom_bulan_kemarin"
 | |
|           column="cal_mom_bulan_kemarin"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           display-format="{0}"
 | |
|           show-in-column="count_mom_bulan_kemarin"
 | |
|           name="count_mom_bulan_kemarin"
 | |
|           column="count_mom_bulan_kemarin"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="mom_bulan_ini"
 | |
|           name="mom_bulan_ini"
 | |
|           column="mom_bulan_ini"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="cal_mom_bulan_ini"
 | |
|           name="cal_mom_bulan_ini"
 | |
|           column="cal_mom_bulan_ini"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="count_mom_bulan_ini"
 | |
|           name="count_mom_bulan_ini"
 | |
|           column="count_mom_bulan_ini"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="persen_mom"
 | |
|           name="persen_mom"
 | |
|           column="persen_mom"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatPercentage(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="yoy_tahun_kemarin"
 | |
|           name="yoy_tahun_kemarin"
 | |
|           column="yoy_tahun_kemarin"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="cal_yoy_tahun_kemarin"
 | |
|           name="cal_yoy_tahun_kemarin"
 | |
|           column="cal_yoy_tahun_kemarin"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="count_yoy_tahun_kemarin"
 | |
|           name="count_yoy_tahun_kemarin"
 | |
|           column="count_yoy_tahun_kemarin"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="yoy_tahun_ini"
 | |
|           name="yoy_tahun_ini"
 | |
|           column="yoy_tahun_ini"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="cal_yoy_tahun_ini"
 | |
|           name="cal_yoy_tahun_ini"
 | |
|           column="cal_yoy_tahun_ini"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="count_yoy_tahun_ini"
 | |
|           name="count_yoy_tahun_ini"
 | |
|           column="count_yoy_tahun_ini"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatNumber(e.value)"
 | |
|         />
 | |
|         <DxGroupItem
 | |
|           :show-in-group-footer="false"
 | |
|           :align-by-column="true"
 | |
|           summary-type="custom"
 | |
|           show-in-column="persen_yoy"
 | |
|           name="persen_yoy"
 | |
|           column="persen_yoy"
 | |
|           css-class="!text-right"
 | |
|           :customize-text="(e: any) => formatPercentage(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
 | |
|           }}
 | |
|         </p>
 | |
|       </template>
 | |
| 
 | |
|       <template #formatText="{ data }">
 | |
|         <p class="!text-left cursor-pointer">
 | |
|           {{ data.text }}
 | |
|         </p>
 | |
|       </template>
 | |
|     </DxDataGrid>
 | |
|   </div>
 | |
| 
 | |
|   <BufferDialog v-if="loadingData || loadingSubData" />
 | |
| </template>
 | |
| 
 | |
| <script setup lang="ts">
 | |
| import Filters from '@/components/Form/Filters.vue'
 | |
| import Type2 from '@/components/Form/FiltersType/Type2.vue'
 | |
| import { onMounted, ref } from 'vue'
 | |
| import { DxDataGrid } from 'devextreme-vue'
 | |
| import {
 | |
|   DxColumn,
 | |
|   DxColumnFixing,
 | |
|   DxExport,
 | |
|   DxGroupItem,
 | |
|   DxGrouping,
 | |
|   DxPaging,
 | |
|   DxScrolling,
 | |
|   DxSearchPanel,
 | |
|   DxSelection,
 | |
|   DxSummary,
 | |
|   DxTotalItem
 | |
| } from 'devextreme-vue/data-grid'
 | |
| import { getMonthName } from '@/utils/texts'
 | |
| import { queries, requestGraphQl } from '@/utils/api/api.graphql'
 | |
| import { formatNumber, formatPercentage, isNumber } from '@/utils/numbers'
 | |
| import { apolloClient } from '@/utils/api/api.graphql'
 | |
| import { provideApolloClient } from '@vue/apollo-composable'
 | |
| import BufferDialog from '@/components/Dialogs/BufferDialog.vue'
 | |
| import {
 | |
|   exportToPDF,
 | |
|   exportToXLSX,
 | |
|   exportToDOCX
 | |
| } from '@/report/Monalisa/Gangguan/Rekap/MonalisaGR_ResponseTimeGangguan'
 | |
| 
 | |
| const client = apolloClient()
 | |
| provideApolloClient(client)
 | |
| const lastMonth = ref(new Date().getMonth() == 1 ? 12 : new Date().getMonth() - 1)
 | |
| const lastYearMoM = ref(
 | |
|   new Date().getMonth() == 1 ? new Date().getFullYear() - 1 : new Date().getFullYear()
 | |
| )
 | |
| const currentYear = ref(new Date().getFullYear())
 | |
| const currentMonth = ref(new Date().getMonth())
 | |
| const lastYear = ref(currentYear.value - 1)
 | |
| const position = { of: '#data' }
 | |
| const showIndicator = ref(true)
 | |
| const shading = ref(true)
 | |
| const showPane = ref(true)
 | |
| const data = ref<any[]>([])
 | |
| const dataSub = ref<any[]>([])
 | |
| const dataSelected = ref<any>()
 | |
| const dataSubSelected = ref<any>()
 | |
| const dialogDetail = ref(false)
 | |
| const closedialogDetail = () => (dialogDetail.value = false)
 | |
| const loadingData = ref(false)
 | |
| const loadingSubData = ref(false)
 | |
| const reportMeta = ref({
 | |
|   regional: { id: 0, name: 'Semua Regional' },
 | |
|   uid: { id: 0, name: 'Semua Unit Induk Distribusi/Wilayah' },
 | |
|   up3: { id: 0, name: 'Semua Unit Pelaksanaan Pelayanan Pelanggan' },
 | |
|   ulp: { id: 0, name: 'Semua Unit Layanan Pelanggan' },
 | |
|   bulan: { id: new Date().getMonth(), name: getMonthName(new Date().getMonth()) },
 | |
|   tahun: { id: new Date().getFullYear(), name: new Date().getFullYear().toString() },
 | |
|   periode: '',
 | |
|   lastMonth: new Date().getMonth() == 1 ? 12 : new Date().getMonth() - 1,
 | |
|   lastYearMoM: new Date().getMonth() == 1 ? new Date().getFullYear() - 1 : new Date().getFullYear(),
 | |
|   currentMonth: new Date().getMonth(),
 | |
|   currentYear: new Date().getFullYear(),
 | |
|   lastYear: new Date().getFullYear() - 1
 | |
| })
 | |
| 
 | |
| const grouping = ref<any[]>([
 | |
|   {
 | |
|     data: 'nama_regional',
 | |
|     caption: 'Regional'
 | |
|   },
 | |
|   {
 | |
|     data: 'nama_uid',
 | |
|     caption: 'UID'
 | |
|   },
 | |
|   {
 | |
|     data: 'nama_up3',
 | |
|     caption: 'UP3'
 | |
|   }
 | |
| ])
 | |
| 
 | |
| let mom_bulan_kemarin = 0
 | |
| let count_mom_bulan_kemarin = 0
 | |
| let cal_mom_bulan_kemarin = 0
 | |
| 
 | |
| let mom_bulan_ini = 0
 | |
| let count_mom_bulan_ini = 0
 | |
| let cal_mom_bulan_ini = 0
 | |
| 
 | |
| let yoy_tahun_kemarin = 0
 | |
| let count_yoy_tahun_kemarin = 0
 | |
| let cal_yoy_tahun_kemarin = 0
 | |
| 
 | |
| let yoy_tahun_ini = 0
 | |
| let count_yoy_tahun_ini = 0
 | |
| let cal_yoy_tahun_ini = 0
 | |
| const calculateCustomSummary = (options: any) => {
 | |
|   if (options.name === 'count_mom_bulan_kemarin') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       count_mom_bulan_kemarin += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = count_mom_bulan_kemarin
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'cal_mom_bulan_kemarin') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       cal_mom_bulan_kemarin += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_mom_bulan_kemarin
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'mom_bulan_kemarin') {
 | |
|     if (options.summaryProcess === 'start') {
 | |
|       cal_mom_bulan_kemarin = 0
 | |
|       count_mom_bulan_kemarin = 0
 | |
|     } else if (options.summaryProcess === 'calculate') {
 | |
|       mom_bulan_kemarin += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_mom_bulan_kemarin / count_mom_bulan_kemarin
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'count_mom_bulan_ini') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       count_mom_bulan_ini += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = count_mom_bulan_ini
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'cal_mom_bulan_ini') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       cal_mom_bulan_ini += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_mom_bulan_ini
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'mom_bulan_ini') {
 | |
|     if (options.summaryProcess === 'start') {
 | |
|       cal_mom_bulan_ini = 0
 | |
|       count_mom_bulan_ini = 0
 | |
|     } else if (options.summaryProcess === 'calculate') {
 | |
|       mom_bulan_ini += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_mom_bulan_ini / count_mom_bulan_ini
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'persen_mom') {
 | |
|     if (options.summaryProcess === 'start') {
 | |
|       mom_bulan_kemarin = 0
 | |
|       mom_bulan_ini = 0
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue =
 | |
|         mom_bulan_kemarin == 0 ? 0 : ((mom_bulan_kemarin - mom_bulan_ini) / mom_bulan_kemarin) * 100
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'count_yoy_tahun_kemarin') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       count_yoy_tahun_kemarin += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = count_yoy_tahun_kemarin
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'cal_yoy_tahun_kemarin') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       cal_yoy_tahun_kemarin += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_yoy_tahun_kemarin
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'yoy_tahun_kemarin') {
 | |
|     if (options.summaryProcess === 'start') {
 | |
|       cal_yoy_tahun_kemarin = 0
 | |
|       count_yoy_tahun_kemarin = 0
 | |
|     } else if (options.summaryProcess === 'calculate') {
 | |
|       yoy_tahun_kemarin += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_yoy_tahun_kemarin / count_yoy_tahun_kemarin
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'count_yoy_tahun_ini') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       count_yoy_tahun_ini += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = count_yoy_tahun_ini
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'cal_yoy_tahun_ini') {
 | |
|     if (options.summaryProcess === 'calculate') {
 | |
|       cal_yoy_tahun_ini += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_yoy_tahun_ini
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'yoy_tahun_ini') {
 | |
|     if (options.summaryProcess === 'start') {
 | |
|       cal_yoy_tahun_ini = 0
 | |
|       count_yoy_tahun_ini = 0
 | |
|     } else if (options.summaryProcess === 'calculate') {
 | |
|       yoy_tahun_ini += options.value
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue = cal_yoy_tahun_ini / count_yoy_tahun_ini
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (options.name === 'persen_yoy') {
 | |
|     if (options.summaryProcess === 'start') {
 | |
|       yoy_tahun_kemarin = 0
 | |
|       yoy_tahun_ini = 0
 | |
|     } else if (options.summaryProcess === 'finalize') {
 | |
|       options.totalValue =
 | |
|         yoy_tahun_kemarin == 0 ? 0 : ((yoy_tahun_kemarin - yoy_tahun_ini) / yoy_tahun_kemarin) * 100
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| const resetData = () => {
 | |
|   data.value = []
 | |
|   dataSub.value = []
 | |
| }
 | |
| 
 | |
| const filterData = async (params: any) => {
 | |
|   resetData()
 | |
|   const { regional, ulp, uid, up3, bulan, tahun } = params
 | |
|   lastMonth.value = bulan.id == 1 ? 12 : bulan.id - 1
 | |
|   lastYearMoM.value = bulan.id == 1 ? tahun.id - 1 : tahun.id
 | |
|   currentMonth.value = bulan.id
 | |
|   currentYear.value = tahun.id
 | |
|   lastYear.value = tahun.id - 1
 | |
| 
 | |
|   var groupList: any[] = [
 | |
|     {
 | |
|       data: 'nama_regional',
 | |
|       caption: 'Regional'
 | |
|     },
 | |
|     {
 | |
|       data: 'nama_uid',
 | |
|       caption: 'UID'
 | |
|     },
 | |
|     {
 | |
|       data: 'nama_up3',
 | |
|       caption: 'UP3'
 | |
|     }
 | |
|   ]
 | |
| 
 | |
|   if (uid?.id != 0) {
 | |
|     groupList.forEach((item, index) => {
 | |
|       if (item.caption == 'Regional') {
 | |
|         groupList.splice(index, 1)
 | |
|       }
 | |
|     })
 | |
| 
 | |
|     if (up3?.id != 0) {
 | |
|       groupList.forEach((item, index) => {
 | |
|         if (item.caption == 'UID') {
 | |
|           groupList.splice(index, 1)
 | |
|         }
 | |
|       })
 | |
| 
 | |
|       if (ulp?.id != 0) {
 | |
|         groupList.forEach((item, index) => {
 | |
|           if (item.caption == 'UP3') {
 | |
|             groupList.splice(index, 1)
 | |
|           }
 | |
|         })
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   grouping.value = groupList
 | |
| 
 | |
|   const query = {
 | |
|     namaRegional: regional.name == 'Semua Regional' ? '' : regional.name,
 | |
|     idUid: uid ? uid.id : 0,
 | |
|     idUp3: up3 ? up3.id : 0,
 | |
|     idUlp: ulp ? ulp.id : 0,
 | |
|     bulan: bulan ? bulan.id : currentMonth.value,
 | |
|     tahun: bulan ? tahun.id : currentYear.value
 | |
|   }
 | |
| 
 | |
|   loadingData.value = true
 | |
|   await requestGraphQl(queries.monalisa.gangguan.rekap.responseTimeGangguan, query)
 | |
|     .then((result) => {
 | |
|       if (result.data.data != undefined) {
 | |
|         data.value = result.data.data.monalisaResponseTimeGangguan
 | |
|       } else {
 | |
|         data.value = []
 | |
|       }
 | |
| 
 | |
|       reportMeta.value = {
 | |
|         regional: regional,
 | |
|         uid: uid,
 | |
|         up3: up3,
 | |
|         ulp: ulp,
 | |
|         bulan: bulan,
 | |
|         tahun: tahun,
 | |
|         periode: `${bulan.name} ${tahun.name}`,
 | |
|         lastMonth: lastMonth.value,
 | |
|         lastYearMoM: lastYearMoM.value,
 | |
|         currentMonth: currentMonth.value,
 | |
|         currentYear: currentYear.value,
 | |
|         lastYear: lastYear.value
 | |
|       }
 | |
|     })
 | |
|     .catch((err) => {
 | |
|       console.error(err)
 | |
|     })
 | |
|     .finally(() => {
 | |
|       loadingData.value = false
 | |
|     })
 | |
| }
 | |
| 
 | |
| const onExporting = (e: any) => {
 | |
|   if (e.format === 'pdf') {
 | |
|     exportToPDF(reportMeta.value, data.value)
 | |
|   } else if (e.format === 'xlsx') {
 | |
|     exportToXLSX(reportMeta.value, e)
 | |
|   } else {
 | |
|     exportToDOCX(reportMeta.value, data.value)
 | |
|   }
 | |
| }
 | |
| const getDetail = async () => {
 | |
|   const dateValue = filters.value.periode.split(' s/d ')
 | |
|   const selected = dataSelected.value
 | |
| 
 | |
|   const query = {
 | |
|     dateFrom: dateValue[0]
 | |
|       ? dateValue[0].split('-').reverse().join('-')
 | |
|       : new Date().toISOString().slice(0, 10),
 | |
|     dateTo: dateValue[1]
 | |
|       ? dateValue[1].split('-').reverse().join('-')
 | |
|       : new Date().toISOString().slice(0, 10),
 | |
|     idUlp: selected?.id_ulp ? selected?.id_ulp : 0,
 | |
|     idUid: selected?.id_uid ? selected?.id_uid : 0,
 | |
|     idUp3: selected?.id_up3 ? selected?.id_up3 : 0
 | |
|   }
 | |
| 
 | |
|   loadingSubData.value = true
 | |
|   await requestGraphQl(queries.keluhan.rekap.rekapKeluhanAllDetail, query)
 | |
|     .then((result) => {
 | |
|       if (result.data.data != undefined) {
 | |
|         dataSub.value = result.data.data.detailKeluhanAll
 | |
|       } else {
 | |
|         dataSub.value = []
 | |
|       }
 | |
|     })
 | |
|     .catch((err) => {
 | |
|       console.error(err)
 | |
|     })
 | |
|     .finally(() => {
 | |
|       loadingSubData.value = false
 | |
|       dialogDetail.value = true
 | |
|     })
 | |
| }
 | |
| 
 | |
| const dataGridRef = ref<DxDataGrid | null>(null)
 | |
| const clearSelection = () => {
 | |
|   const dataGrid = dataGridRef.value!.instance!
 | |
|   dataGrid.clearSelection()
 | |
| }
 | |
| const showDetail = () => {
 | |
|   clearSelection()
 | |
|   dataSubSelected.value = null
 | |
|   getDetail()
 | |
| }
 | |
| 
 | |
| const onDataSelectionChanged = ({ selectedRowsData }: any) => {
 | |
|   if (selectedRowsData[0] != undefined) {
 | |
|     dataSelected.value = selectedRowsData[0]
 | |
|     showDetail()
 | |
|   }
 | |
| }
 | |
| 
 | |
| const onDataSubSelectionChanged = ({ selectedRowsData }: any) => {
 | |
|   const data = selectedRowsData[0]
 | |
|   dataSubSelected.value = data
 | |
| }
 | |
| 
 | |
| const filters = ref()
 | |
| onMounted(() => {
 | |
|   if (import.meta.env.DEV) {
 | |
|     data.value = [
 | |
|       {
 | |
|         id: 0,
 | |
|         nama_regional: null,
 | |
|         id_uid: 0,
 | |
|         nama_uid: '',
 | |
|         id_up3: 0,
 | |
|         nama_up3: '',
 | |
|         id_ulp: 0,
 | |
|         nama_ulp: '',
 | |
|         mom_bulan_ini: 12443791,
 | |
|         mom_bulan_kemarin: 9182428,
 | |
|         persen_mom: -35.517436129093525,
 | |
|         yoy_tahun_ini: 139773892,
 | |
|         yoy_tahun_kemarin: 168209007,
 | |
|         persen_yoy: 16.904632817908496
 | |
|       },
 | |
|       {
 | |
|         id: 1,
 | |
|         nama_regional: 'REGIONAL SUMKAL',
 | |
|         id_uid: 120,
 | |
|         nama_uid: 'WILAYAH SUMATERA UTARA',
 | |
|         id_up3: 12100,
 | |
|         nama_up3: 'UP3 PEMATANG SIANTAR',
 | |
|         id_ulp: 12102,
 | |
|         nama_ulp: 'ULP LIMA PULUH',
 | |
|         mom_bulan_ini: 16186,
 | |
|         mom_bulan_kemarin: 112331,
 | |
|         persen_mom: 85.59079862192984,
 | |
|         yoy_tahun_ini: 354676,
 | |
|         yoy_tahun_kemarin: 624303,
 | |
|         persen_yoy: 43.18848379713056
 | |
|       },
 | |
|       {
 | |
|         id: 2,
 | |
|         nama_regional: 'REGIONAL SULMAPANA',
 | |
|         id_uid: 41,
 | |
|         nama_uid: 'WILAYAH MALUKU DAN MALUKU UTARA',
 | |
|         id_up3: 412,
 | |
|         nama_up3: 'UP3 TERNATE',
 | |
|         id_ulp: 41230,
 | |
|         nama_ulp: 'ULP BACAN',
 | |
|         mom_bulan_ini: 384375,
 | |
|         mom_bulan_kemarin: 22976,
 | |
|         persen_mom: -1572.9413300835654,
 | |
|         yoy_tahun_ini: 1643180,
 | |
|         yoy_tahun_kemarin: 492691,
 | |
|         persen_yoy: -233.51126771140534
 | |
|       },
 | |
|       {
 | |
|         id: 3,
 | |
|         nama_regional: 'REGIONAL JMB',
 | |
|         id_uid: 101,
 | |
|         nama_uid: 'DISTRIBUSI JAWA TENGAH & DIY',
 | |
|         id_up3: 52150,
 | |
|         nama_up3: 'UP3 MAGELANG',
 | |
|         id_ulp: 52156,
 | |
|         nama_ulp: 'ULP PARAKAN',
 | |
|         mom_bulan_ini: 914842,
 | |
|         mom_bulan_kemarin: 585884,
 | |
|         persen_mom: -56.14729195540414,
 | |
|         yoy_tahun_ini: 8072389,
 | |
|         yoy_tahun_kemarin: 11055796,
 | |
|         persen_yoy: 26.985004064836215
 | |
|       },
 | |
|       {
 | |
|         id: 4,
 | |
|         nama_regional: 'REGIONAL SULMAPANA',
 | |
|         id_uid: 31,
 | |
|         nama_uid: 'WILAYAH SULAWESI UTARA,TENGAH DAN GORONTALO',
 | |
|         id_up3: 31500,
 | |
|         nama_up3: 'UP3 TOLITOLI',
 | |
|         id_ulp: 31530,
 | |
|         nama_ulp: 'ULP BANGKIR',
 | |
|         mom_bulan_ini: 43840,
 | |
|         mom_bulan_kemarin: 59012,
 | |
|         persen_mom: 25.710025079644815,
 | |
|         yoy_tahun_ini: 1098120,
 | |
|         yoy_tahun_kemarin: 2481724,
 | |
|         persen_yoy: 55.751727428191046
 | |
|       },
 | |
|       {
 | |
|         id: 5,
 | |
|         nama_regional: 'REGIONAL JMB',
 | |
|         id_uid: 103,
 | |
|         nama_uid: 'DISTRIBUSI JAWA TIMUR',
 | |
|         id_up3: 154,
 | |
|         nama_up3: 'UP3 SITUBONDO',
 | |
|         id_ulp: 51654,
 | |
|         nama_ulp: 'ULP WONOSARI',
 | |
|         mom_bulan_ini: 796862,
 | |
|         mom_bulan_kemarin: 673478,
 | |
|         persen_mom: -18.32042026614084,
 | |
|         yoy_tahun_ini: 6845897,
 | |
|         yoy_tahun_kemarin: 7566389,
 | |
|         persen_yoy: 9.522270134406254
 | |
|       },
 | |
|       {
 | |
|         id: 6,
 | |
|         nama_regional: 'REGIONAL SUMKAL',
 | |
|         id_uid: 110,
 | |
|         nama_uid: 'WILAYAH ACEH',
 | |
|         id_up3: 116,
 | |
|         nama_up3: 'UP3 SIGLI',
 | |
|         id_ulp: 11662,
 | |
|         nama_ulp: 'ULP MEUREUDU',
 | |
|         mom_bulan_ini: 787315,
 | |
|         mom_bulan_kemarin: 264692,
 | |
|         persen_mom: -197.44571048614995,
 | |
|         yoy_tahun_ini: 7747710,
 | |
|         yoy_tahun_kemarin: 7916066,
 | |
|         persen_yoy: 2.12676347064312
 | |
|       },
 | |
|       {
 | |
|         id: 7,
 | |
|         nama_regional: 'REGIONAL JMB',
 | |
|         id_uid: 287,
 | |
|         nama_uid: 'DISTRIBUSI BALI',
 | |
|         id_up3: 329,
 | |
|         nama_up3: 'UP3 BALI UTARA',
 | |
|         id_ulp: 55340,
 | |
|         nama_ulp: 'ULP GILIMANUK',
 | |
|         mom_bulan_ini: 505036,
 | |
|         mom_bulan_kemarin: 413603,
 | |
|         persen_mom: -22.10646441152506,
 | |
|         yoy_tahun_ini: 7155021,
 | |
|         yoy_tahun_kemarin: 5869321,
 | |
|         persen_yoy: -21.905429946666743
 | |
|       },
 | |
|       {
 | |
|         id: 8,
 | |
|         nama_regional: 'REGIONAL SUMKAL',
 | |
|         id_uid: 131,
 | |
|         nama_uid: 'WILAYAH SUMATERA BARAT',
 | |
|         id_up3: 13300,
 | |
|         nama_up3: 'UP3 SOLOK',
 | |
|         id_ulp: 13334,
 | |
|         nama_ulp: 'ULP SILUNGKANG',
 | |
|         mom_bulan_ini: 160505,
 | |
|         mom_bulan_kemarin: 379378,
 | |
|         persen_mom: 57.69259155776033,
 | |
|         yoy_tahun_ini: 1509396,
 | |
|         yoy_tahun_kemarin: 3844624,
 | |
|         persen_yoy: 60.740087977393884
 | |
|       },
 | |
|       {
 | |
|         id: 9,
 | |
|         nama_regional: 'REGIONAL SUMKAL',
 | |
|         id_uid: 221,
 | |
|         nama_uid: 'WILAYAH KALIMANTAN SELATAN DAN TENGAH',
 | |
|         id_up3: 2220,
 | |
|         nama_up3: 'UP3 BARABAI',
 | |
|         id_ulp: 22230,
 | |
|         nama_ulp: 'ULP AMUNTAI',
 | |
|         mom_bulan_ini: 181058,
 | |
|         mom_bulan_kemarin: 395103,
 | |
|         persen_mom: 54.17448108467918,
 | |
|         yoy_tahun_ini: 2039104,
 | |
|         yoy_tahun_kemarin: 5170462,
 | |
|         persen_yoy: 60.56244103524985
 | |
|       },
 | |
|       {
 | |
|         id: 10,
 | |
|         nama_regional: 'REGIONAL SULMAPANA',
 | |
|         id_uid: 31,
 | |
|         nama_uid: 'WILAYAH SULAWESI UTARA,TENGAH DAN GORONTALO',
 | |
|         id_up3: 31700,
 | |
|         nama_up3: 'UP3 KOTAMOBAGU',
 | |
|         id_ulp: 31730,
 | |
|         nama_ulp: 'ULP MODAYAG',
 | |
|         mom_bulan_ini: 83184,
 | |
|         mom_bulan_kemarin: 144261,
 | |
|         persen_mom: 42.337845987481025,
 | |
|         yoy_tahun_ini: 1111887,
 | |
|         yoy_tahun_kemarin: 2440181,
 | |
|         persen_yoy: 54.4342407386993
 | |
|       },
 | |
|       {
 | |
|         id: 11,
 | |
|         nama_regional: 'REGIONAL JMB',
 | |
|         id_uid: 427,
 | |
|         nama_uid: 'DISTRIBUSI JAWA BARAT',
 | |
|         id_up3: 546,
 | |
|         nama_up3: 'UP3 TASIKMALAYA',
 | |
|         id_ulp: 53231,
 | |
|         nama_ulp: 'ULP CIAMIS',
 | |
|         mom_bulan_ini: 843557,
 | |
|         mom_bulan_kemarin: 1369703,
 | |
|         persen_mom: 38.41314503947206,
 | |
|         yoy_tahun_ini: 8579030,
 | |
|         yoy_tahun_kemarin: 16227325,
 | |
|         persen_yoy: 47.13219831364689
 | |
|       },
 | |
|       {
 | |
|         id: 12,
 | |
|         nama_regional: 'REGIONAL JMB',
 | |
|         id_uid: 103,
 | |
|         nama_uid: 'DISTRIBUSI JAWA TIMUR',
 | |
|         id_up3: 157,
 | |
|         nama_up3: 'UP3 SURABAYA UTARA',
 | |
|         id_ulp: 51101,
 | |
|         nama_ulp: 'ULP INDRAPURA',
 | |
|         mom_bulan_ini: 433495,
 | |
|         mom_bulan_kemarin: 404500,
 | |
|         persen_mom: -7.168108776266996,
 | |
|         yoy_tahun_ini: 4905051,
 | |
|         yoy_tahun_kemarin: 4976204,
 | |
|         persen_yoy: 1.4298650135725948
 | |
|       },
 | |
|       {
 | |
|         id: 13,
 | |
|         nama_regional: 'REGIONAL SULMAPANA',
 | |
|         id_uid: 41,
 | |
|         nama_uid: 'WILAYAH MALUKU DAN MALUKU UTARA',
 | |
|         id_up3: 414,
 | |
|         nama_up3: 'UP3 MASOHI',
 | |
|         id_ulp: 41430,
 | |
|         nama_ulp: 'ULP MASOHI',
 | |
|         mom_bulan_ini: 97727,
 | |
|         mom_bulan_kemarin: 75563,
 | |
|         persen_mom: -29.331815835792654,
 | |
|         yoy_tahun_ini: 1842074,
 | |
|         yoy_tahun_kemarin: 686794,
 | |
|         persen_yoy: -168.21346721142
 | |
|       },
 | |
|       {
 | |
|         id: 14,
 | |
|         nama_regional: 'REGIONAL SUMKAL',
 | |
|         id_uid: 131,
 | |
|         nama_uid: 'WILAYAH SUMATERA BARAT',
 | |
|         id_up3: 13100,
 | |
|         nama_up3: 'UP3 PADANG',
 | |
|         id_ulp: 13105,
 | |
|         nama_ulp: 'ULP LUBUK ALUNG',
 | |
|         mom_bulan_ini: 483861,
 | |
|         mom_bulan_kemarin: 1000406,
 | |
|         persen_mom: 51.63353678406567,
 | |
|         yoy_tahun_ini: 5168384,
 | |
|         yoy_tahun_kemarin: 8611936,
 | |
|         persen_yoy: 39.98580574681465
 | |
|       },
 | |
|       {
 | |
|         id: 15,
 | |
|         nama_regional: 'REGIONAL JMB',
 | |
|         id_uid: 103,
 | |
|         nama_uid: 'DISTRIBUSI JAWA TIMUR',
 | |
|         id_up3: 153,
 | |
|         nama_up3: 'UP3 SIDOARJO',
 | |
|         id_ulp: 51182,
 | |
|         nama_ulp: 'ULP PORONG',
 | |
|         mom_bulan_ini: 1657675,
 | |
|         mom_bulan_kemarin: 973693,
 | |
|         persen_mom: -70.246165885962,
 | |
|         yoy_tahun_ini: 16774614,
 | |
|         yoy_tahun_kemarin: 12737494,
 | |
|         persen_yoy: -31.694774498029204
 | |
|       },
 | |
|       {
 | |
|         id: 16,
 | |
|         nama_regional: 'REGIONAL SULMAPANA',
 | |
|         id_uid: 31,
 | |
|         nama_uid: 'WILAYAH SULAWESI UTARA,TENGAH DAN GORONTALO',
 | |
|         id_up3: 31900,
 | |
|         nama_up3: 'UP3 LUWUK',
 | |
|         id_ulp: 31910,
 | |
|         nama_ulp: 'ULP TOILI',
 | |
|         mom_bulan_ini: 163754,
 | |
|         mom_bulan_kemarin: 84028,
 | |
|         persen_mom: -94.88027800257058,
 | |
|         yoy_tahun_ini: 2165678,
 | |
|         yoy_tahun_kemarin: 1939057,
 | |
|         persen_yoy: -11.687175776679076
 | |
|       }
 | |
|     ]
 | |
|   }
 | |
| })
 | |
| </script>
 |