169 changed files with 8187 additions and 162 deletions
@ -0,0 +1,4 @@
|
||||
/writable/debugbar/debugbar_* |
||||
/writable/logs/*.log |
||||
/writable/session/* |
||||
/node_modules |
@ -0,0 +1,106 @@
|
||||
<?php |
||||
namespace App\Controllers\Kewilayahan; |
||||
|
||||
use CodeIgniter\Controller; |
||||
|
||||
class Kytp extends Controller |
||||
{ |
||||
|
||||
public function index() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
// $data['all_propinsi'] = $db->table('KPDL_V_BATAS_DESA')->select('ADM1_PCODE, ADM1_EN')->distinct()->get()->getResult() ; |
||||
// dd($data['all_propinsi']); |
||||
$data = []; |
||||
if (session('isLogin')) { |
||||
echo view('inc/head'); |
||||
echo view('inc/navbar'); |
||||
echo view('inc/sidebar'); |
||||
echo view('kewilayahan/kytp/kpdl', $data); |
||||
echo view('inc/footer'); |
||||
} else { |
||||
return redirect()->to('auth'); |
||||
} |
||||
} |
||||
|
||||
public function graph_matoa() |
||||
{ |
||||
|
||||
$dataReturn['poi_agg'] = $this->get_poi_agg(); |
||||
$dataReturn['kpdl_agg'] = $this->get_kpdl_agg(); |
||||
return json_encode($dataReturn); |
||||
} |
||||
|
||||
private function get_poi_agg() |
||||
{ |
||||
$opsiWilZona = $this->request->getPost('opsiWilZona'); |
||||
$adm4_pcode = $this->request->getPost('adm4_pcode') ?? []; |
||||
$id_poly_zona = $this->request->getPost('id_poly_zona') ?? []; |
||||
|
||||
$db = \Config\Database::connect(); |
||||
$sqlGenerate = $db->table("KPDL_MV_JML_POI_AGG") |
||||
->select("BULAN, sum(JML) as JML") |
||||
->where('TAHUN =', date('Y')) |
||||
->where('BULAN <=', (int) date('m')) |
||||
->groupBy('BULAN'); |
||||
if ($opsiWilZona == 'wilayah') { |
||||
$sqlGenerate->whereIn('ADM4_PCODE', $adm4_pcode); |
||||
} |
||||
if ($opsiWilZona == 'zona') { |
||||
$sqlGenerate->whereIn('ID_POLY_ZONA', $id_poly_zona); |
||||
} |
||||
|
||||
$sqlGenerate = $sqlGenerate->getCompiledSelect(); |
||||
|
||||
$data = $db->table("BULAN a") |
||||
->select("KODE as BULAN, JML") |
||||
->join("(" . $sqlGenerate . ") b", "KODE = BULAN", 'left', false) |
||||
->orderBy("BULAN", 'asc', false)->get()->getResult(); |
||||
|
||||
$dataPoiAgg = $this->single_array($data, 'JML'); |
||||
return $dataPoiAgg; |
||||
} |
||||
|
||||
private function get_kpdl_agg() |
||||
{ |
||||
$opsiWilZona = $this->request->getPost('opsiWilZona'); |
||||
$adm4_pcode = $this->request->getPost('adm4_pcode') ?? []; |
||||
$id_poly_zona = $this->request->getPost('id_poly_zona') ?? []; |
||||
|
||||
$db = \Config\Database::connect(); |
||||
$sqlGenerate = $db->table("KPDL_MV_JML_KPDL_AGG") |
||||
->select("BULAN, sum(JML) as JML") |
||||
->where('TAHUN =', date('Y')) |
||||
->where('BULAN <=', (int) date('m')) |
||||
->groupBy('BULAN'); |
||||
if ($opsiWilZona == 'wilayah') { |
||||
$sqlGenerate->whereIn('ADM4_PCODE', $adm4_pcode); |
||||
} |
||||
if ($opsiWilZona == 'zona') { |
||||
$sqlGenerate->whereIn('ID_POLY_ZONA', $id_poly_zona); |
||||
} |
||||
|
||||
$sqlGenerate = $sqlGenerate->getCompiledSelect(); |
||||
|
||||
$data = $db->table("BULAN a") |
||||
->select("KODE as BULAN, JML") |
||||
->join("(" . $sqlGenerate . ") b", "KODE = BULAN", 'left', false) |
||||
->orderBy("BULAN", 'asc', false)->get()->getResult(); |
||||
|
||||
$dataPoiAgg = $this->single_array($data, 'JML'); |
||||
return $dataPoiAgg; |
||||
} |
||||
private function single_array($a, $key) |
||||
{ |
||||
$ret = []; |
||||
foreach ($a as $b) { |
||||
array_push($ret, floatval($b->$key)); |
||||
} |
||||
for ($i = 0; $i < 12; $i++) { |
||||
if (!isset($ret[$i])) { |
||||
array_push($ret, 0); |
||||
} |
||||
} |
||||
return $ret; |
||||
} |
||||
} |
@ -0,0 +1,136 @@
|
||||
<?php |
||||
namespace App\Controllers\Kewilayahan; |
||||
|
||||
use CodeIgniter\Controller; |
||||
|
||||
class Ref extends Controller |
||||
{ |
||||
|
||||
public function propinsi() |
||||
{ |
||||
|
||||
$db = \Config\Database::connect(); |
||||
$data = $db->table('KPDL_V_BATAS_DESA')->where('ADM1_PCODE IS NOT NULL')->select('ADM1_PCODE as value, ADM1_EN as label')->distinct()->orderBy('ADM1_EN')->get()->getResult(); |
||||
|
||||
foreach ($data as $key => $val) { |
||||
$val->value = $val->value; |
||||
} |
||||
|
||||
return json_encode($data); |
||||
} |
||||
|
||||
public function kota() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
$data = $db->table('KPDL_V_BATAS_DESA') |
||||
->select('ADM2_PCODE as value, ADM2_EN as label') |
||||
->distinct() |
||||
->where('ADM2_PCODE IS NOT NULL') |
||||
->where('ADM1_PCODE', $this->request->getGet('prop')) |
||||
->orderBy('ADM2_EN')->get()->getResult(); |
||||
return json_encode($data); |
||||
} |
||||
|
||||
public function kecamatan() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
$data = $db->table('KPDL_V_BATAS_DESA') |
||||
->select('ADM3_PCODE as value, ADM3_EN as label') |
||||
->distinct() |
||||
->where('ADM3_PCODE IS NOT NULL') |
||||
->where('ADM2_PCODE', $this->request->getGet('kota')) |
||||
->orderBy('ADM3_EN')->get()->getResult(); |
||||
return json_encode($data); |
||||
} |
||||
|
||||
public function kelurahan() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
$data = $db->table('KPDL_V_BATAS_DESA') |
||||
->select('ADM4_PCODE as value, ADM4_EN as label') |
||||
->distinct() |
||||
->where('ADM4_PCODE IS NOT NULL') |
||||
->whereIn('ADM3_PCODE', $this->request->getGet('kec')) |
||||
->orderBy('ADM4_EN')->get()->getResult(); |
||||
return json_encode($data); |
||||
} |
||||
|
||||
public function zpkanwil() |
||||
{ |
||||
|
||||
$db = \Config\Database::connect(); |
||||
$data = $db->table('KPDL_ZP_NAS_DIFF') |
||||
->select('KD_KANWIL as value, NM_KANWIL as label') |
||||
->distinct() |
||||
->orderBy('NM_KANWIL')->get()->getResult(); |
||||
|
||||
foreach ($data as $key => $val) { |
||||
$val->value = $val->value; |
||||
} |
||||
|
||||
return json_encode($data); |
||||
} |
||||
|
||||
public function zpkpp() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
$data = $db->table('KPDL_ZP_NAS_DIFF') |
||||
->select('KD_KPP as value, NM_KPP as label') |
||||
->distinct() |
||||
->where('KD_KANWIL', $this->request->getGet('kanwil')) |
||||
->orderBy('NM_KPP')->get()->getResult(); |
||||
return json_encode($data); |
||||
} |
||||
|
||||
public function zpseksi() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
$data = $db->table('KPDL_ZP_NAS_DIFF') |
||||
->select('KD_UNIT_OR as value, SEKSI as label') |
||||
->distinct() |
||||
->whereIn('KD_KPP', $this->request->getGet('kpp')) |
||||
->orderBy('SEKSI')->get()->getResult(); |
||||
return json_encode($data); |
||||
} |
||||
|
||||
public function zpar() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
$kpp = $this->request->getGet('kpp'); |
||||
$seksi = $this->request->getGet('seksi'); |
||||
|
||||
$data = $db->table('KPDL_ZP_NAS_DIFF') |
||||
->select('NIP_AR as value, NM_AR as label') |
||||
->distinct() |
||||
->whereIn('KD_KPP', $kpp) |
||||
->whereIn('KD_UNIT_OR', $seksi) |
||||
->orderBy('NM_AR')->get()->getResult(); |
||||
return json_encode($data); |
||||
} |
||||
public function zpzp() |
||||
{ |
||||
$db = \Config\Database::connect(); |
||||
$kpp = $this->request->getGet('kpp'); |
||||
$seksi = $this->request->getGet('seksi'); |
||||
$ar = $this->request->getGet('ar'); |
||||
$data = $db->table('KPDL_ZP_NAS_DIFF') |
||||
->select("OGC_FID as value, NO_URUT || '-' || ATTRIBUTE1 as label") |
||||
->distinct() |
||||
->whereIn('KD_KPP', $kpp) |
||||
->whereIn('KD_UNIT_OR', $seksi) |
||||
->whereIn('NIP_AR', $ar) |
||||
->orderBy('LABEL')->get()->getResult(); |
||||
foreach ($data as $key => $value) { |
||||
$value->label = $value->LABEL; |
||||
unset($value->LABEL); |
||||
|
||||
} |
||||
return json_encode(($data)); |
||||
} |
||||
|
||||
public function change_case($arr) |
||||
{ |
||||
return array_change_key_case($arr, CASE_LOWER); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace App\Models\Kpdl; |
||||
|
||||
use CodeIgniter\Model; |
||||
|
||||
class MKpdlRef extends Model{ |
||||
protected $table = ''; |
||||
// Uncomment below if you want add primary key |
||||
// protected $primaryKey = 'id'; |
||||
} |
@ -1,14 +1,15 @@
|
||||
<script> |
||||
$('#navbar-print').click(function() { |
||||
window.print(); |
||||
return false; |
||||
}); |
||||
</script> |
||||
<footer class="footer"> |
||||
<div class="w-100 clearfix"> |
||||
<span class="text-center text-sm-left d-md-inline-block">Copyright ©2024 All Rights Reserved.</span> |
||||
<span class="float-none float-sm-right mt-1 mt-sm-0 text-center"> <a href="<?php base_url() ?> " class="text-dark" target="_blank">Direktorat Ekstensifikasi Perpajakan</a></span>
|
||||
</div> |
||||
</footer> |
||||
</div> |
||||
</div> |
||||
<script> |
||||
$('#navbar-print').click(function() { |
||||
window.print(); |
||||
return false; |
||||
}); |
||||
</script> |
||||
<footer class="footer"> |
||||
<div class="w-100 clearfix"> |
||||
<span class="text-center text-sm-left d-md-inline-block">Copyright ©2024 All Rights Reserved.</span> |
||||
<span class="float-none float-sm-right mt-1 mt-sm-0 text-center"> <a href="<?php base_url() ?> "
|
||||
class="text-dark" target="_blank">Direktorat Ekstensifikasi Perpajakan</a></span> |
||||
</div> |
||||
</footer> |
||||
</div> |
||||
</div> |
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1,65 @@
|
||||
/*! |
||||
Copyright (c) 2018 Jed Watson. |
||||
Licensed under the MIT License (MIT), see |
||||
http://jedwatson.github.io/classnames |
||||
*/ |
||||
|
||||
/*! |
||||
* jQuery JavaScript Library v3.7.1 |
||||
* https://jquery.com/ |
||||
* |
||||
* Copyright OpenJS Foundation and other contributors |
||||
* Released under the MIT license |
||||
* https://jquery.org/license |
||||
* |
||||
* Date: 2023-08-28T13:37Z |
||||
*/ |
||||
|
||||
/** |
||||
* @license React |
||||
* react-dom.production.min.js |
||||
* |
||||
* Copyright (c) Facebook, Inc. and its affiliates. |
||||
* |
||||
* This source code is licensed under the MIT license found in the |
||||
* LICENSE file in the root directory of this source tree. |
||||
*/ |
||||
|
||||
/** |
||||
* @license React |
||||
* react-jsx-runtime.production.min.js |
||||
* |
||||
* Copyright (c) Facebook, Inc. and its affiliates. |
||||
* |
||||
* This source code is licensed under the MIT license found in the |
||||
* LICENSE file in the root directory of this source tree. |
||||
*/ |
||||
|
||||
/** |
||||
* @license React |
||||
* react.production.min.js |
||||
* |
||||
* Copyright (c) Facebook, Inc. and its affiliates. |
||||
* |
||||
* This source code is licensed under the MIT license found in the |
||||
* LICENSE file in the root directory of this source tree. |
||||
*/ |
||||
|
||||
/** |
||||
* @license React |
||||
* scheduler.production.min.js |
||||
* |
||||
* Copyright (c) Facebook, Inc. and its affiliates. |
||||
* |
||||
* This source code is licensed under the MIT license found in the |
||||
* LICENSE file in the root directory of this source tree. |
||||
*/ |
||||
|
||||
/** @license React v16.13.1 |
||||
* react-is.production.min.js |
||||
* |
||||
* Copyright (c) Facebook, Inc. and its affiliates. |
||||
* |
||||
* This source code is licensed under the MIT license found in the |
||||
* LICENSE file in the root directory of this source tree. |
||||
*/ |
@ -0,0 +1,40 @@
|
||||
import React, { useState } from 'react'; |
||||
import { TabView, TabPanel } from 'primereact/tabview'; |
||||
export default function TabProgresifitas() { |
||||
|
||||
const scrollableTabs = Array.from({ length: 50 }, (_, i) => ({ title: `Tab ${i + 1}`, content: `Tab ${i + 1} Content` })) |
||||
return ( |
||||
<div className="card"> |
||||
<TabView scrollable onClick={(e) => { |
||||
console.log(e) |
||||
}} > |
||||
|
||||
<TabPanel id="1" header="Identifikasi" > |
||||
|
||||
</TabPanel> |
||||
|
||||
<TabPanel id="2" header="Pembayaran"> |
||||
|
||||
</TabPanel> |
||||
<TabPanel id="3" header="Payment Compliant"> |
||||
|
||||
</TabPanel> |
||||
<TabPanel id="4" header="Strength Of Figure"> |
||||
|
||||
</TabPanel> |
||||
|
||||
<TabPanel id="5" header="Jenis/Status WP"> |
||||
|
||||
</TabPanel> |
||||
|
||||
<TabPanel id="5" header="Pengampu"> |
||||
|
||||
</TabPanel> |
||||
<TabPanel id="6" header="KLU"> |
||||
|
||||
</TabPanel> |
||||
|
||||
</TabView> |
||||
</div> |
||||
) |
||||
} |
@ -0,0 +1,658 @@
|
||||
import React, { useEffect, useRef, useState } from "react" |
||||
import ReactDOM from "react-dom" |
||||
import { Button, Card, CardBody, CardText, CardTitle, Col, Label, Nav, NavItem, NavLink, Row, TabContent, TabPane } from "reactstrap" |
||||
import Select from "react-select" |
||||
import jQuery from "jquery" |
||||
import collect from "collect.js" |
||||
import { format_angka, isObjEmpty } from "./util" |
||||
import { MultiSelect } from "react-multi-select-component" |
||||
import Highcharts from 'highcharts' |
||||
import HighchartsReact from 'highcharts-react-official' |
||||
import { Toast } from 'primereact/toast'; |
||||
import { Button as ButtonP } from 'primereact/button'; |
||||
import "primereact/resources/themes/bootstrap4-light-blue/theme.css"; |
||||
import TabProgresifitas from "./TabProgresifitas" |
||||
// import 'bootstrap/dist/css/bootstrap.m in.css';
|
||||
|
||||
const Root = () => { |
||||
const base_url = "<?=base_url()?>" |
||||
const refChart1 = useRef(null) |
||||
const toast = useRef(null); |
||||
const [active, setActive] = useState('wilayah') |
||||
const toggle = tab => { |
||||
setActive(tab) |
||||
} |
||||
|
||||
const [prop, setProp] = useState({}) |
||||
const [kota, setKota] = useState({}) |
||||
const [kec, setKec] = useState([]) |
||||
const [kel, setKel] = useState([]) |
||||
|
||||
const [propSelected, setPropSelected] = useState({}) |
||||
const [kotaSelected, setKotaSelected] = useState({}) |
||||
const [kecSelected, setKecSelected] = useState([]) |
||||
const [kelSelected, setKelSelected] = useState([]) |
||||
|
||||
const [kanwil, setKanwil] = useState({}) |
||||
const [kpp, setKpp] = useState({}) |
||||
const [seksi, setSeksi] = useState([]) |
||||
const [ar, setAr] = useState([]) |
||||
const [zp, setZp] = useState([]) |
||||
|
||||
const [kanwilSelected, setKanwilSelected] = useState({}) |
||||
const [kppSelected, setKppSelected] = useState({}) |
||||
const [seksiSelected, setSeksiSelected] = useState([]) |
||||
const [arSelected, setArSelected] = useState([]) |
||||
const [zpSelected, setZpSelected] = useState([]) |
||||
|
||||
const [dataGraphMatoa, setDataGraphMatoa] = useState({ poi_agg: [], kpdl_agg: [] }) |
||||
|
||||
useEffect(() => { |
||||
|
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/propinsi', method: "GET", dataType: "json", success: ((data) => { |
||||
setProp(data) |
||||
}) |
||||
}) |
||||
|
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/zpkanwil', method: "GET", dataType: "json", success: ((data) => { |
||||
setKanwil(data) |
||||
}) |
||||
}) |
||||
}, []) |
||||
|
||||
|
||||
useEffect(() => { |
||||
setKota({}) |
||||
setKec([]) |
||||
setKel([]) |
||||
setKotaSelected({}) |
||||
setKecSelected([]) |
||||
setKelSelected([]) |
||||
if (propSelected && !isObjEmpty(propSelected)) { |
||||
const prop = propSelected.value |
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/kota', |
||||
method: "GET", |
||||
dataType: "json", |
||||
data: { prop }, |
||||
success: ((data) => { |
||||
setKota(data) |
||||
}) |
||||
}) |
||||
} |
||||
}, [propSelected]) |
||||
|
||||
useEffect(() => { |
||||
setKec([]) |
||||
setKel([]) |
||||
setKecSelected([]) |
||||
setKelSelected([]) |
||||
if (kotaSelected && !isObjEmpty(kotaSelected)) { |
||||
const kota = kotaSelected.value |
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/kecamatan', |
||||
method: "GET", |
||||
dataType: "json", |
||||
data: { kota }, |
||||
success: ((data) => { |
||||
setKec(data) |
||||
}) |
||||
}) |
||||
|
||||
} |
||||
}, [kotaSelected]) |
||||
|
||||
useEffect(() => { |
||||
setKel([]) |
||||
setKelSelected([]) |
||||
console.log({ kecSelected }) |
||||
if (kecSelected.length && !isObjEmpty(kecSelected)) { |
||||
const kec = collect(kecSelected).pluck('value').all() |
||||
console.log({ kec }) |
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/kelurahan', |
||||
method: "GET", |
||||
dataType: "json", |
||||
data: { kec }, |
||||
success: ((data) => { |
||||
setKel(data) |
||||
}) |
||||
}) |
||||
|
||||
} |
||||
}, [kecSelected]) |
||||
|
||||
useEffect(() => { |
||||
setKpp([]) |
||||
setSeksi([]) |
||||
setAr([]) |
||||
setZp([]) |
||||
setKppSelected([]) |
||||
setSeksiSelected([]) |
||||
setArSelected([]) |
||||
setZpSelected([]) |
||||
if (kanwilSelected && !isObjEmpty(kanwilSelected)) { |
||||
const kanwil = kanwilSelected.value |
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/zpkpp', |
||||
method: "GET", |
||||
dataType: "json", |
||||
data: { kanwil }, |
||||
success: ((data) => { |
||||
setKpp(data) |
||||
}) |
||||
}) |
||||
} |
||||
}, [kanwilSelected]) |
||||
|
||||
useEffect(() => { |
||||
setSeksi([]) |
||||
setAr([]) |
||||
setZp([]) |
||||
setSeksiSelected([]) |
||||
setArSelected([]) |
||||
setZpSelected([]) |
||||
if (kppSelected && !isObjEmpty(kppSelected)) { |
||||
const kpp = collect(kppSelected).pluck('value').all() |
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/zpseksi', |
||||
method: "GET", |
||||
dataType: "json", |
||||
data: { kpp }, |
||||
success: ((data) => { |
||||
setSeksi(data) |
||||
}) |
||||
}) |
||||
} |
||||
}, [kppSelected]) |
||||
|
||||
useEffect(() => { |
||||
setAr([]) |
||||
setZp([]) |
||||
setArSelected([]) |
||||
setZpSelected([]) |
||||
if (seksiSelected && !isObjEmpty(seksiSelected)) { |
||||
const kpp = collect(kppSelected).pluck('value').all() |
||||
const seksi = collect(seksiSelected).pluck('value').all() |
||||
|
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/zpar', |
||||
method: "GET", |
||||
dataType: "json", |
||||
data: { kpp, seksi }, |
||||
success: ((data) => { |
||||
setAr(data) |
||||
}) |
||||
}) |
||||
} |
||||
}, [seksiSelected]) |
||||
|
||||
useEffect(() => { |
||||
setZp([]) |
||||
setZpSelected([]) |
||||
if (arSelected && !isObjEmpty(arSelected)) { |
||||
const kpp = collect(kppSelected).pluck('value').all() |
||||
const seksi = collect(seksiSelected).pluck('value').all() |
||||
const ar = collect(arSelected).pluck('value').all() |
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/ref/zpzp', |
||||
method: "GET", |
||||
dataType: "json", |
||||
data: { kpp, seksi, ar }, |
||||
success: ((data) => { |
||||
setZp(data) |
||||
}) |
||||
}) |
||||
} |
||||
}, [arSelected]) |
||||
|
||||
const buttonProsesOnClick = () => { |
||||
const opsiWilZona = active |
||||
const adm4_pcode = collect(kelSelected).pluck('value').all() |
||||
const id_poly_zona = collect(zpSelected).pluck('value').all() |
||||
|
||||
|
||||
let datasend = { |
||||
opsiWilZona, |
||||
} |
||||
|
||||
switch (opsiWilZona) { |
||||
case 'wilayah': |
||||
if (adm4_pcode.length) { |
||||
datasend.adm4_pcode = adm4_pcode |
||||
} else { |
||||
toast.current.show({ severity: 'info', summary: 'Info', detail: 'Kelurahan harus dipilih' }); |
||||
} |
||||
break; |
||||
case 'zona': |
||||
if (id_poly_zona.length) { |
||||
|
||||
datasend.id_poly_zona = id_poly_zona |
||||
} else { |
||||
toast.current.show({ severity: 'info', summary: 'Info', detail: 'Zona harus dipilih' }); |
||||
|
||||
} |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
|
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/kytp/graph_matoa', |
||||
dataType: "json", |
||||
type: "POST", |
||||
data: datasend, |
||||
success: (data) => { |
||||
setDataGraphMatoa(data) |
||||
} |
||||
}) |
||||
|
||||
} |
||||
|
||||
useEffect(() => { |
||||
Highcharts.setOptions({ |
||||
lang: { |
||||
decimalPoint: ',', |
||||
thousandsSep: '.', |
||||
numericSymbols: ["rb", "jt", "M", "T", "P", "E"] |
||||
}, |
||||
|
||||
tooltip: { |
||||
yDecimals: 2 // If you want to add 2 decimals
|
||||
} |
||||
}) |
||||
jQuery.ajax({ |
||||
url: base_url + 'kewilayahan/kytp/graph_matoa', |
||||
dataType: "json", |
||||
type: "POST", |
||||
success: (data) => { |
||||
setDataGraphMatoa(data) |
||||
} |
||||
}) |
||||
|
||||
|
||||
}, []) |
||||
|
||||
const optionsGraphMatoaAgg = { |
||||
chart: { |
||||
zoomType: 'xy', |
||||
height: '320', |
||||
}, |
||||
title: { |
||||
text: 'Poi Google dan Matoa', |
||||
// align: 'center'
|
||||
}, |
||||
|
||||
xAxis: [{ |
||||
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', |
||||
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], |
||||
crosshair: true |
||||
}], |
||||
yAxis: [ |
||||
{ |
||||
gridLineWidth: 0, |
||||
title: { |
||||
text: '', |
||||
style: { |
||||
color: Highcharts.getOptions().colors[0] |
||||
} |
||||
}, |
||||
labels: { |
||||
//format: '{value}',
|
||||
style: { |
||||
color: Highcharts.getOptions().colors[0] |
||||
} |
||||
}, |
||||
visible: false |
||||
}, |
||||
{ |
||||
labels: { |
||||
//format: '{value}',
|
||||
style: { |
||||
color: Highcharts.getOptions().colors[1] |
||||
} |
||||
}, |
||||
title: { |
||||
text: 'NPWP Work True', |
||||
style: { |
||||
color: Highcharts.getOptions().colors[1] |
||||
} |
||||
}, |
||||
opposite: true, |
||||
visible: false |
||||
|
||||
}, |
||||
{ |
||||
gridLineWidth: 0, |
||||
title: { |
||||
text: 'Rupiah', |
||||
style: { |
||||
color: Highcharts.getOptions().colors[2] |
||||
} |
||||
}, |
||||
labels: { |
||||
//format: '{value}',
|
||||
style: { |
||||
color: Highcharts.getOptions().colors[2] |
||||
} |
||||
}, |
||||
opposite: true, |
||||
visible: false |
||||
}, |
||||
{ |
||||
gridLineWidth: 0, |
||||
title: { |
||||
text: '', |
||||
style: { |
||||
color: "#FF0000" |
||||
} |
||||
}, |
||||
labels: { |
||||
//format: '{value}',
|
||||
style: { |
||||
color: "##FF0000" |
||||
} |
||||
}, |
||||
opposite: true |
||||
} |
||||
], |
||||
tooltip: { |
||||
shared: true |
||||
}, |
||||
legend: { |
||||
layout: 'horizontal', |
||||
align: 'center', |
||||
//x: 80,
|
||||
verticalAlign: 'top', |
||||
//y: 55,
|
||||
//floating: true,
|
||||
backgroundColor: |
||||
Highcharts.defaultOptions.legend.backgroundColor || // theme
|
||||
'rgba(255,255,255,0.25)' |
||||
}, |
||||
series: [{ |
||||
color: '#FF0000', |
||||
name: 'Jml PoI', |
||||
type: 'column', |
||||
yAxis: 3, |
||||
data: dataGraphMatoa.poi_agg, |
||||
marker: { |
||||
enabled: true |
||||
}, |
||||
tooltip: { |
||||
valueSuffix: ' PoI' |
||||
}, |
||||
}, |
||||
{ |
||||
name: 'Matoa', |
||||
type: 'spline', |
||||
yAxis: 3, |
||||
data: dataGraphMatoa.kpdl_agg, |
||||
marker: { |
||||
enabled: true |
||||
}, |
||||
tooltip: { |
||||
pointFormatter: function () { |
||||
const idx = this.index |
||||
let pct_coverage; |
||||
const jml_poi_agg = dataGraphMatoa.poi_agg |
||||
if (jml_poi_agg[idx] && jml_poi_agg[idx] !== 0) { |
||||
pct_coverage = format_angka(parseFloat((parseFloat(this.y) / jml_poi_agg[idx] * 100)).toFixed(2)) + '%'; |
||||
} |
||||
|
||||
let s = '<span style="color:' + this.color + '">\u25CF</span> ' + this.series.name + ': <b>' + format_angka(this.y) + ' lokasi kpdl</b> ' + ((pct_coverage) ? '(' + pct_coverage + ')<br>\n' : '<br>') |
||||
return s; |
||||
}, |
||||
shared: false |
||||
}, |
||||
visible: true, |
||||
color: "#8000ff" |
||||
}], |
||||
} |
||||
|
||||
return <> |
||||
|
||||
<Row className="text-center"> |
||||
<Col > |
||||
<h2>E-Geospatial Thematic Tax</h2> |
||||
</Col> |
||||
</Row> |
||||
<Row> |
||||
<Col sm="12"> |
||||
<Card> |
||||
<CardBody> |
||||
<Nav tabs > |
||||
<NavItem > |
||||
<NavLink style={{ cursor: "pointer" }} |
||||
active={active === 'wilayah'} |
||||
onClick={() => { |
||||
toggle('wilayah') |
||||
}} |
||||
> |
||||
Wilayah Adm. |
||||
</NavLink> |
||||
</NavItem> |
||||
<NavItem > |
||||
<NavLink style={{ cursor: "pointer" }} |
||||
active={active === 'zona'} |
||||
onClick={() => { |
||||
toggle('zona') |
||||
}} |
||||
> |
||||
Zona Pengawasan |
||||
</NavLink> |
||||
</NavItem> |
||||
</Nav> |
||||
<TabContent className="py-3" activeTab={active}> |
||||
<TabPane tabId="wilayah"> |
||||
<Row> |
||||
<Col md="3"> |
||||
<Label className='form-label' for='basicInput'> |
||||
Propinsi |
||||
</Label> |
||||
<Select |
||||
placeholder="Pilih Propinsi" |
||||
className="basic-single w-100" |
||||
onChange={(e) => { |
||||
setPropSelected(e) |
||||
}} |
||||
classNamePrefix="select" |
||||
defaultValue={propSelected} |
||||
value={propSelected} |
||||
isClearable={false} |
||||
options={prop} |
||||
/> |
||||
</Col> |
||||
<Col md="3"> |
||||
<Label className='form-label' for='basicInput'> |
||||
Kota/Kab |
||||
</Label> |
||||
<Select |
||||
placeholder="Pilih Kota/Kab" |
||||
className="basic-single w-100" |
||||
onChange={(e) => { |
||||
setKotaSelected(e) |
||||
}} |
||||
classNamePrefix="select" |
||||
defaultValue={kotaSelected} |
||||
value={kotaSelected} |
||||
isClearable={false} |
||||
options={kota} |
||||
/> |
||||
</Col> |
||||
<Col md="3"> |
||||
<Label className='form-label' for='Pilih Kecamatan'> |
||||
Kecamatan |
||||
</Label> |
||||
<MultiSelect |
||||
className="me-1 w-full" |
||||
hasSelectAll={true} |
||||
debounceDuration={300} |
||||
options={kec} |
||||
value={kecSelected} |
||||
onChange={(e) => { |
||||
setKecSelected(e) |
||||
}} |
||||
labelledBy="Pilih Kecamatan" |
||||
overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih Kecamatan" }} |
||||
/> |
||||
</Col> |
||||
<Col md="3"> |
||||
<Label className='form-label' for='Pilih Kelurahan'> |
||||
Kelurahan |
||||
</Label> |
||||
<MultiSelect |
||||
className="me-1 w-full" |
||||
hasSelectAll={true} |
||||
debounceDuration={300} |
||||
options={kel} |
||||
value={kelSelected} |
||||
onChange={(e) => { |
||||
setKelSelected(e) |
||||
}} |
||||
labelledBy="Pilih Kelurahan" |
||||
overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih Kelurahan" }} |
||||
/> |
||||
</Col> |
||||
<Col md="3"> |
||||
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="success" /> |
||||
</Col> |
||||
</Row> |
||||
|
||||
</TabPane> |
||||
<TabPane tabId="zona"> |
||||
<Row> |
||||
<Col md="2"> |
||||
<Label className='form-label' for='basicInput'> |
||||
Kanwil |
||||
</Label> |
||||
<Select |
||||
placeholder="Pilih Kanwil" |
||||
className="basic-single w-100" |
||||
onChange={(e) => { |
||||
setKanwilSelected(e) |
||||
}} |
||||
classNamePrefix="select" |
||||
defaultValue={kanwilSelected} |
||||
value={kanwilSelected} |
||||
isClearable={false} |
||||
options={kanwil} |
||||
/> |
||||
</Col> |
||||
<Col md="2"> |
||||
<Label className='form-label' for='Pilih KPP'> |
||||
KPP |
||||
</Label> |
||||
<MultiSelect |
||||
className="me-1 w-full" |
||||
hasSelectAll={true} |
||||
debounceDuration={300} |
||||
options={kpp} |
||||
value={kppSelected} |
||||
onChange={(e) => { |
||||
setKppSelected(e) |
||||
}} |
||||
labelledBy="Pilih KPP" |
||||
overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih KPP" }} |
||||
/> |
||||
</Col> |
||||
<Col md="2"> |
||||
<Label className='form-label' for='Pilih Seksi'> |
||||
Seksi |
||||
</Label> |
||||
<MultiSelect |
||||
className="me-1 w-full" |
||||
hasSelectAll={true} |
||||
debounceDuration={300} |
||||
options={seksi} |
||||
value={seksiSelected} |
||||
onChange={(e) => { |
||||
setSeksiSelected(e) |
||||
}} |
||||
labelledBy="Pilih Seksi" |
||||
overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih Seksi" }} |
||||
/> |
||||
</Col> |
||||
<Col md="3"> |
||||
<Label className='form-label' for='Pilih AR'> |
||||
AR |
||||
</Label> |
||||
<MultiSelect |
||||
className="me-1 w-full" |
||||
hasSelectAll={true} |
||||
debounceDuration={300} |
||||
options={ar} |
||||
value={arSelected} |
||||
onChange={(e) => { |
||||
setArSelected(e) |
||||
}} |
||||
labelledBy="Pilih AR" |
||||
overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih AR" }} |
||||
/> |
||||
</Col> |
||||
<Col md="3"> |
||||
<Label className='form-label' for='Pilih Zona'> |
||||
Zona Pengawasan |
||||
</Label> |
||||
<MultiSelect |
||||
className="me-1 w-full" |
||||
hasSelectAll={true} |
||||
debounceDuration={300} |
||||
options={zp} |
||||
value={zpSelected} |
||||
onChange={(e) => { |
||||
setZpSelected(e) |
||||
}} |
||||
labelledBy="Pilih Zona" |
||||
overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih Zona" }} |
||||
/> |
||||
</Col> |
||||
|
||||
<Col md="2"> |
||||
|
||||
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="success" /> |
||||
</Col> |
||||
</Row> |
||||
</TabPane> |
||||
</TabContent> |
||||
|
||||
</CardBody> |
||||
</Card> |
||||
</Col> |
||||
</Row> |
||||
|
||||
<Row> |
||||
<Col sm="12"> |
||||
<Card> |
||||
<CardBody> |
||||
<div id="graph_matoa_agg"> |
||||
<HighchartsReact |
||||
ref={refChart1} |
||||
highcharts={Highcharts} |
||||
options={optionsGraphMatoaAgg} |
||||
/> |
||||
</div> |
||||
</CardBody> |
||||
</Card> |
||||
</Col> |
||||
</Row> |
||||
<Row> |
||||
<Col sm="12"> |
||||
<Card> |
||||
<CardBody> |
||||
<TabProgresifitas /> |
||||
|
||||
</CardBody> |
||||
</Card> |
||||
</Col> |
||||
</Row> |
||||
<Toast ref={toast} /> |
||||
</> |
||||
} |
||||
|
||||
const container = document.getElementById("app") |
||||
const component = <Root /> |
||||
|
||||
ReactDOM.render(component, container) |
@ -0,0 +1,61 @@
|
||||
|
||||
|
||||
<div class="main-content"> |
||||
<div class="container-fluid"> |
||||
<div id="app"></div> |
||||
<!-- <div class=" row"> |
||||
<div class="col-12"> |
||||
<div class="card"> |
||||
<div class="card-body"> |
||||
<div class="row "> |
||||
<div class="col col-sm-3"> |
||||
<div class="form-group"> |
||||
<Label class="form-input">Propinsi</Label> |
||||
<select id="select_prop" name="select_prop" data-placeholder="Select "> |
||||
|
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="col col-sm-3"> |
||||
<div class="form-group"> |
||||
<Label class="form-input">Kota/Kab</Label> |
||||
<select id="select_kota" name="select_kota" data-placeholder="Select "> |
||||
|
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="col col-sm-3"> |
||||
<div class="form-group"> |
||||
<Label class="form-input">Kecamatan</Label> |
||||
<select id="select_kecamatan" name="select_kecamatan" data-placeholder="Select " |
||||
multiple="multiple" data-multi-select> |
||||
|
||||
</select> |
||||
</div> |
||||
</div> |
||||
<div class="col col-sm-3"> |
||||
<div class="form-group"> |
||||
<Label class="form-input">Kelurahan/Desa</Label> |
||||
<select id="select_kelurahan" name="select_kelurahan" data-placeholder="Select " |
||||
multiple="multiple" data-multi-select> |
||||
|
||||
</select> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<a href="#" id="btn_proses" class="btn btn-primary">Go somewhere</a> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> --> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
|
||||
<?php $isDevelopment = ENVIRONMENT === 'development';?> |
||||
<script type="text/javascript"> |
||||
<?php echo view('kewilayahan/dist/kpdl.js') ?> |
||||
</script> |
||||
|
||||
<?php echo view('inc/js.php') ?> |
@ -0,0 +1,15 @@
|
||||
console posisi di root app (EngineN) |
||||
|
||||
requirement : |
||||
- node versi : 20 + |
||||
- yarn latest version |
||||
|
||||
setup awal jalankan perintah : |
||||
- yarn init |
||||
- yarn (akan mendownload node_modules yang diperlukan) |
||||
|
||||
untuk build kode javascript agar bisa di load di browser => |
||||
jalankan perintah : npx webpack |
||||
untuk dev : npx webpack --watch |
||||
|
||||
config ada webapack.config.js |
@ -0,0 +1,6 @@
|
||||
export const isObjEmpty = (obj) => Object.keys(obj).length === 0 |
||||
export function format_angka(num) { |
||||
var num_parts = num.toString().split("."); |
||||
num_parts[0] = num_parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, "."); |
||||
return num_parts.join(","); |
||||
} |
@ -0,0 +1,161 @@
|
||||
{ |
||||
"name": "engineN", |
||||
"lockfileVersion": 2, |
||||
"requires": true, |
||||
"packages": { |
||||
"": { |
||||
"dependencies": { |
||||
"react": "^18.3.1", |
||||
"react-dom": "^18.3.1", |
||||
"react-router-dom": "^6.26.1" |
||||
} |
||||
}, |
||||
"node_modules/@remix-run/router": { |
||||
"version": "1.19.1", |
||||
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", |
||||
"integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", |
||||
"engines": { |
||||
"node": ">=14.0.0" |
||||
} |
||||
}, |
||||
"node_modules/js-tokens": { |
||||
"version": "4.0.0", |
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", |
||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" |
||||
}, |
||||
"node_modules/loose-envify": { |
||||
"version": "1.4.0", |
||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", |
||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", |
||||
"dependencies": { |
||||
"js-tokens": "^3.0.0 || ^4.0.0" |
||||
}, |
||||
"bin": { |
||||
"loose-envify": "cli.js" |
||||
} |
||||
}, |
||||
"node_modules/react": { |
||||
"version": "18.3.1", |
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", |
||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", |
||||
"dependencies": { |
||||
"loose-envify": "^1.1.0" |
||||
}, |
||||
"engines": { |
||||
"node": ">=0.10.0" |
||||
} |
||||
}, |
||||
"node_modules/react-dom": { |
||||
"version": "18.3.1", |
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", |
||||
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", |
||||
"dependencies": { |
||||
"loose-envify": "^1.1.0", |
||||
"scheduler": "^0.23.2" |
||||
}, |
||||
"peerDependencies": { |
||||
"react": "^18.3.1" |
||||
} |
||||
}, |
||||
"node_modules/react-router": { |
||||
"version": "6.26.1", |
||||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", |
||||
"integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", |
||||
"dependencies": { |
||||
"@remix-run/router": "1.19.1" |
||||
}, |
||||
"engines": { |
||||
"node": ">=14.0.0" |
||||
}, |
||||
"peerDependencies": { |
||||
"react": ">=16.8" |
||||
} |
||||
}, |
||||
"node_modules/react-router-dom": { |
||||
"version": "6.26.1", |
||||
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", |
||||
"integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", |
||||
"dependencies": { |
||||
"@remix-run/router": "1.19.1", |
||||
"react-router": "6.26.1" |
||||
}, |
||||
"engines": { |
||||
"node": ">=14.0.0" |
||||
}, |
||||
"peerDependencies": { |
||||
"react": ">=16.8", |
||||
"react-dom": ">=16.8" |
||||
} |
||||
}, |
||||
"node_modules/scheduler": { |
||||
"version": "0.23.2", |
||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", |
||||
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", |
||||
"dependencies": { |
||||
"loose-envify": "^1.1.0" |
||||
} |
||||
} |
||||
}, |
||||
"dependencies": { |
||||
"@remix-run/router": { |
||||
"version": "1.19.1", |
||||
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", |
||||
"integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==" |
||||
}, |
||||
"js-tokens": { |
||||
"version": "4.0.0", |
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", |
||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" |
||||
}, |
||||
"loose-envify": { |
||||
"version": "1.4.0", |
||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", |
||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", |
||||
"requires": { |
||||
"js-tokens": "^3.0.0 || ^4.0.0" |
||||
} |
||||
}, |
||||
"react": { |
||||
"version": "18.3.1", |
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", |
||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", |
||||
"requires": { |
||||
"loose-envify": "^1.1.0" |
||||
} |
||||
}, |
||||
"react-dom": { |
||||
"version": "18.3.1", |
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", |
||||
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", |
||||
"requires": { |
||||
"loose-envify": "^1.1.0", |
||||
"scheduler": "^0.23.2" |
||||
} |
||||
}, |
||||
"react-router": { |
||||
"version": "6.26.1", |
||||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", |
||||
"integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", |
||||
"requires": { |
||||
"@remix-run/router": "1.19.1" |
||||
} |
||||
}, |
||||
"react-router-dom": { |
||||
"version": "6.26.1", |
||||
"resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", |
||||
"integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", |
||||
"requires": { |
||||
"@remix-run/router": "1.19.1", |
||||
"react-router": "6.26.1" |
||||
} |
||||
}, |
||||
"scheduler": { |
||||
"version": "0.23.2", |
||||
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", |
||||
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", |
||||
"requires": { |
||||
"loose-envify": "^1.1.0" |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,36 @@
|
||||
{ |
||||
"dependencies": { |
||||
"axios": "^1.7.6", |
||||
"bootstrap": "4.6.0", |
||||
"collect.js": "^4.36.1", |
||||
"highcharts": "^11.4.8", |
||||
"highcharts-react-official": "^3.2.1", |
||||
"jquery": "^3.7.1", |
||||
"popper": "^1.0.1", |
||||
"primereact": "^10.8.2", |
||||
"react": "^18.3.1", |
||||
"react-dom": "^18.3.1", |
||||
"react-multi-select-component": "^4.3.4", |
||||
"react-router-dom": "^6.26.1", |
||||
"react-select": "^5.8.0", |
||||
"reactstrap": "8.10.0", |
||||
"webpack-cli": "^5.1.4" |
||||
}, |
||||
"name": "engineN", |
||||
"version": "1.0.0", |
||||
"main": "index.js", |
||||
"repository": "https://gitlab.dfoso.id/dfoso/engineN.git", |
||||
"author": "pecintaseni <pecintaseni@local.shot>", |
||||
"license": "MIT", |
||||
"devDependencies": { |
||||
"@babel/core": "^7.25.2", |
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", |
||||
"@babel/plugin-proposal-optional-chaining": "^7.21.0", |
||||
"@babel/preset-react": "^7.24.7", |
||||
"babel-loader": "^9.1.3", |
||||
"css-loader": "^7.1.2", |
||||
"path": "^0.12.7", |
||||
"style-loader": "^4.0.0", |
||||
"webpack": "^5.94.0" |
||||
} |
||||
} |
@ -0,0 +1 @@
|
||||
(()=>{const e=document.getElementById("app");createRoot(e).render((()=>React.createElement(React.Fragment,null,React.createElement("h1",null,"Hallo"))))})(); |
@ -0,0 +1,113 @@
|
||||
.dynamic-select { |
||||
display: flex; |
||||
box-sizing: border-box; |
||||
flex-direction: column; |
||||
position: relative; |
||||
width: 100%; |
||||
user-select: none; |
||||
} |
||||
.dynamic-select .dynamic-select-header { |
||||
border: 1px solid #dee2e6; |
||||
padding: 7px 30px 7px 12px; |
||||
} |
||||
.dynamic-select .dynamic-select-header::after { |
||||
content: ""; |
||||
display: block; |
||||
position: absolute; |
||||
top: 50%; |
||||
right: 15px; |
||||
transform: translateY(-50%); |
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23949ba3' viewBox='0 0 16 16'%3E%3Cpath d='M8 13.1l-8-8 2.1-2.2 5.9 5.9 5.9-5.9 2.1 2.2z'/%3E%3C/svg%3E"); |
||||
height: 12px; |
||||
width: 12px; |
||||
} |
||||
.dynamic-select .dynamic-select-header.dynamic-select-header-active { |
||||
border-color: #c1c9d0; |
||||
} |
||||
.dynamic-select .dynamic-select-header.dynamic-select-header-active::after { |
||||
transform: translateY(-50%) rotate(180deg); |
||||
} |
||||
.dynamic-select .dynamic-select-header.dynamic-select-header-active + .dynamic-select-options { |
||||
display: flex; |
||||
} |
||||
.dynamic-select .dynamic-select-header .dynamic-select-header-placeholder { |
||||
color: #65727e; |
||||
} |
||||
.dynamic-select .dynamic-select-options { |
||||
display: none; |
||||
box-sizing: border-box; |
||||
flex-flow: wrap; |
||||
position: absolute; |
||||
top: 100%; |
||||
left: 0; |
||||
right: 0; |
||||
z-index: 999; |
||||
margin-top: 5px; |
||||
padding: 5px; |
||||
background-color: #fff; |
||||
border-radius: 5px; |
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); |
||||
max-height: 200px; |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
} |
||||
.dynamic-select .dynamic-select-options::-webkit-scrollbar { |
||||
width: 5px; |
||||
} |
||||
.dynamic-select .dynamic-select-options::-webkit-scrollbar-track { |
||||
background: #f0f1f3; |
||||
} |
||||
.dynamic-select .dynamic-select-options::-webkit-scrollbar-thumb { |
||||
background: #cdcfd1; |
||||
} |
||||
.dynamic-select .dynamic-select-options::-webkit-scrollbar-thumb:hover { |
||||
background: #b2b6b9; |
||||
} |
||||
.dynamic-select .dynamic-select-options .dynamic-select-option { |
||||
padding: 7px 12px; |
||||
} |
||||
.dynamic-select .dynamic-select-options .dynamic-select-option:hover, .dynamic-select .dynamic-select-options .dynamic-select-option:active { |
||||
background-color: #f3f4f7; |
||||
} |
||||
.dynamic-select .dynamic-select-header, .dynamic-select .dynamic-select-option { |
||||
display: flex; |
||||
box-sizing: border-box; |
||||
align-items: center; |
||||
border-radius: 5px; |
||||
cursor: pointer; |
||||
display: flex; |
||||
align-items: center; |
||||
width: 100%; |
||||
height: 45px; |
||||
font-size: 16px; |
||||
color: #212529; |
||||
} |
||||
.dynamic-select .dynamic-select-header img, .dynamic-select .dynamic-select-option img { |
||||
object-fit: contain; |
||||
max-height: 100%; |
||||
max-width: 100%; |
||||
} |
||||
.dynamic-select .dynamic-select-header img.dynamic-size, .dynamic-select .dynamic-select-option img.dynamic-size { |
||||
object-fit: fill; |
||||
max-height: none; |
||||
max-width: none; |
||||
} |
||||
.dynamic-select .dynamic-select-header img, .dynamic-select .dynamic-select-header svg, .dynamic-select .dynamic-select-header i, .dynamic-select .dynamic-select-header span, .dynamic-select .dynamic-select-option img, .dynamic-select .dynamic-select-option svg, .dynamic-select .dynamic-select-option i, .dynamic-select .dynamic-select-option span { |
||||
box-sizing: border-box; |
||||
margin-right: 10px; |
||||
} |
||||
.dynamic-select .dynamic-select-header.dynamic-select-no-text, .dynamic-select .dynamic-select-option.dynamic-select-no-text { |
||||
justify-content: center; |
||||
} |
||||
.dynamic-select .dynamic-select-header.dynamic-select-no-text img, .dynamic-select .dynamic-select-header.dynamic-select-no-text svg, .dynamic-select .dynamic-select-header.dynamic-select-no-text i, .dynamic-select .dynamic-select-header.dynamic-select-no-text span, .dynamic-select .dynamic-select-option.dynamic-select-no-text img, .dynamic-select .dynamic-select-option.dynamic-select-no-text svg, .dynamic-select .dynamic-select-option.dynamic-select-no-text i, .dynamic-select .dynamic-select-option.dynamic-select-no-text span { |
||||
margin-right: 0; |
||||
} |
||||
.dynamic-select .dynamic-select-header .dynamic-select-option-text, .dynamic-select .dynamic-select-option .dynamic-select-option-text { |
||||
box-sizing: border-box; |
||||
flex: 1; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
white-space: nowrap; |
||||
color: inherit; |
||||
font-size: inherit; |
||||
} |
@ -0,0 +1,183 @@
|
||||
/* |
||||
* Created by David Adams |
||||
* https://codeshack.io/dynamic-select-images-html-javascript/
|
||||
*
|
||||
* Released under the MIT license |
||||
*/ |
||||
class DynamicSelect { |
||||
|
||||
constructor(element, options = {}) { |
||||
let defaults = { |
||||
placeholder: 'Select an option', |
||||
columns: 1, |
||||
name: '', |
||||
width: '', |
||||
height: '', |
||||
data: [], |
||||
onChange: function() {} |
||||
}; |
||||
this.options = Object.assign(defaults, options); |
||||
this.selectElement = typeof element === 'string' ? document.querySelector(element) : element; |
||||
for(const prop in this.selectElement.dataset) { |
||||
if (this.options[prop] !== undefined) { |
||||
this.options[prop] = this.selectElement.dataset[prop]; |
||||
} |
||||
} |
||||
this.name = this.selectElement.getAttribute('name') ? this.selectElement.getAttribute('name') : 'dynamic-select-' + Math.floor(Math.random() * 1000000); |
||||
if (!this.options.data.length) { |
||||
let options = this.selectElement.querySelectorAll('option'); |
||||
for (let i = 0; i < options.length; i++) { |
||||
this.options.data.push({ |
||||
value: options[i].value, |
||||
text: options[i].innerHTML, |
||||
img: options[i].getAttribute('data-img'), |
||||
selected: options[i].selected, |
||||
html: options[i].getAttribute('data-html'), |
||||
imgWidth: options[i].getAttribute('data-img-width'), |
||||
imgHeight: options[i].getAttribute('data-img-height') |
||||
}); |
||||
} |
||||
} |
||||
this.element = this._template(); |
||||
this.selectElement.replaceWith(this.element); |
||||
this._updateSelected(); |
||||
this._eventHandlers(); |
||||
} |
||||
|
||||
_template() { |
||||
let optionsHTML = ''; |
||||
for (let i = 0; i < this.data.length; i++) { |
||||
let optionWidth = 100 / this.columns; |
||||
let optionContent = ''; |
||||
if (this.data[i].html) { |
||||
optionContent = this.data[i].html; |
||||
} else { |
||||
optionContent = ` |
||||
${this.data[i].img ? `<img src="${this.data[i].img}" alt="${this.data[i].text}" class="${this.data[i].imgWidth && this.data[i].imgHeight ? 'dynamic-size' : ''}" style="${this.data[i].imgWidth ? 'width:' + this.data[i].imgWidth + ';' : ''}${this.data[i].imgHeight ? 'height:' + this.data[i].imgHeight + ';' : ''}">` : ''} |
||||
${this.data[i].text ? '<span class="dynamic-select-option-text">' + this.data[i].text + '</span>' : ''} |
||||
`;
|
||||
} |
||||
optionsHTML += ` |
||||
<div class="dynamic-select-option${this.data[i].value == this.selectedValue ? ' dynamic-select-selected' : ''}${this.data[i].text || this.data[i].html ? '' : ' dynamic-select-no-text'}" data-value="${this.data[i].value}" style="width:${optionWidth}%;${this.height ? 'height:' + this.height + ';' : ''}"> |
||||
${optionContent} |
||||
</div> |
||||
`;
|
||||
} |
||||
let template = ` |
||||
<div class="dynamic-select ${this.name}"${this.selectElement.id ? ' id="' + this.selectElement.id + '"' : ''} style="${this.width ? 'width:' + this.width + ';' : ''}${this.height ? 'height:' + this.height + ';' : ''}"> |
||||
<input type="hidden" name="${this.name}" value="${this.selectedValue}"> |
||||
<div class="dynamic-select-header" style="${this.width ? 'width:' + this.width + ';' : ''}${this.height ? 'height:' + this.height + ';' : ''}"><span class="dynamic-select-header-placeholder">${this.placeholder}</span></div> |
||||
<div class="dynamic-select-options" style="${this.options.dropdownWidth ? 'width:' + this.options.dropdownWidth + ';' : ''}${this.options.dropdownHeight ? 'height:' + this.options.dropdownHeight + ';' : ''}">${optionsHTML}</div> |
||||
</div> |
||||
`;
|
||||
let element = document.createElement('div'); |
||||
element.innerHTML = template; |
||||
return element; |
||||
} |
||||
|
||||
_eventHandlers() { |
||||
this.element.querySelectorAll('.dynamic-select-option').forEach(option => { |
||||
option.onclick = () => { |
||||
this.element.querySelectorAll('.dynamic-select-selected').forEach(selected => selected.classList.remove('dynamic-select-selected')); |
||||
option.classList.add('dynamic-select-selected'); |
||||
this.element.querySelector('.dynamic-select-header').innerHTML = option.innerHTML; |
||||
this.element.querySelector('input').value = option.getAttribute('data-value'); |
||||
this.data.forEach(data => data.selected = false); |
||||
this.data.filter(data => data.value == option.getAttribute('data-value'))[0].selected = true; |
||||
this.element.querySelector('.dynamic-select-header').classList.remove('dynamic-select-header-active'); |
||||
this.options.onChange(option.getAttribute('data-value'), option.querySelector('.dynamic-select-option-text') ? option.querySelector('.dynamic-select-option-text').innerHTML : '', option); |
||||
}; |
||||
}); |
||||
this.element.querySelector('.dynamic-select-header').onclick = () => { |
||||
this.element.querySelector('.dynamic-select-header').classList.toggle('dynamic-select-header-active'); |
||||
};
|
||||
if (this.selectElement.id && document.querySelector('label[for="' + this.selectElement.id + '"]')) { |
||||
document.querySelector('label[for="' + this.selectElement.id + '"]').onclick = () => { |
||||
this.element.querySelector('.dynamic-select-header').classList.toggle('dynamic-select-header-active'); |
||||
}; |
||||
} |
||||
document.addEventListener('click', event => { |
||||
if (!event.target.closest('.' + this.name) && !event.target.closest('label[for="' + this.selectElement.id + '"]')) { |
||||
this.element.querySelector('.dynamic-select-header').classList.remove('dynamic-select-header-active'); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
_updateSelected() { |
||||
if (this.selectedValue) { |
||||
this.element.querySelector('.dynamic-select-header').innerHTML = this.element.querySelector('.dynamic-select-selected').innerHTML; |
||||
} |
||||
} |
||||
|
||||
get selectedValue() { |
||||
let selected = this.data.filter(option => option.selected); |
||||
selected = selected.length ? selected[0].value : ''; |
||||
return selected; |
||||
} |
||||
|
||||
set data(value) { |
||||
this.options.data = value; |
||||
} |
||||
|
||||
get data() { |
||||
return this.options.data; |
||||
} |
||||
|
||||
set selectElement(value) { |
||||
this.options.selectElement = value; |
||||
} |
||||
|
||||
get selectElement() { |
||||
return this.options.selectElement; |
||||
} |
||||
|
||||
set element(value) { |
||||
this.options.element = value; |
||||
} |
||||
|
||||
get element() { |
||||
return this.options.element; |
||||
} |
||||
|
||||
set placeholder(value) { |
||||
this.options.placeholder = value; |
||||
} |
||||
|
||||
get placeholder() { |
||||
return this.options.placeholder; |
||||
} |
||||
|
||||
set columns(value) { |
||||
this.options.columns = value; |
||||
} |
||||
|
||||
get columns() { |
||||
return this.options.columns; |
||||
} |
||||
|
||||
set name(value) { |
||||
this.options.name = value; |
||||
} |
||||
|
||||
get name() { |
||||
return this.options.name; |
||||
} |
||||
|
||||
set width(value) { |
||||
this.options.width = value; |
||||
} |
||||
|
||||
get width() { |
||||
return this.options.width; |
||||
} |
||||
|
||||
set height(value) { |
||||
this.options.height = value; |
||||
} |
||||
|
||||
get height() { |
||||
return this.options.height; |
||||
} |
||||
|
||||
} |
||||
document.querySelectorAll('[data-dynamic-select]').forEach(select => new DynamicSelect(select)); |
@ -0,0 +1,150 @@
|
||||
.multi-select { |
||||
display: flex; |
||||
box-sizing: border-box; |
||||
flex-direction: column; |
||||
position: relative; |
||||
width: 100%; |
||||
user-select: none; |
||||
} |
||||
.multi-select .multi-select-header { |
||||
border: 1px solid #dee2e6; |
||||
padding: 7px 30px 7px 12px; |
||||
overflow: hidden; |
||||
gap: 7px; |
||||
min-height: 45px; |
||||
} |
||||
.multi-select .multi-select-header::after { |
||||
content: ""; |
||||
display: block; |
||||
position: absolute; |
||||
top: 50%; |
||||
right: 15px; |
||||
transform: translateY(-50%); |
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23949ba3' viewBox='0 0 16 16'%3E%3Cpath d='M8 13.1l-8-8 2.1-2.2 5.9 5.9 5.9-5.9 2.1 2.2z'/%3E%3C/svg%3E"); |
||||
height: 12px; |
||||
width: 12px; |
||||
} |
||||
.multi-select .multi-select-header.multi-select-header-active { |
||||
border-color: #c1c9d0; |
||||
} |
||||
.multi-select .multi-select-header.multi-select-header-active::after { |
||||
transform: translateY(-50%) rotate(180deg); |
||||
} |
||||
.multi-select .multi-select-header.multi-select-header-active + .multi-select-options { |
||||
display: flex; |
||||
} |
||||
.multi-select .multi-select-header .multi-select-header-placeholder { |
||||
color: #65727e; |
||||
} |
||||
.multi-select .multi-select-header .multi-select-header-option { |
||||
display: inline-flex; |
||||
align-items: center; |
||||
background-color: #f3f4f7; |
||||
font-size: 14px; |
||||
padding: 3px 8px; |
||||
border-radius: 5px; |
||||
} |
||||
.multi-select .multi-select-header .multi-select-header-max { |
||||
font-size: 14px; |
||||
color: #65727e; |
||||
} |
||||
.multi-select .multi-select-options { |
||||
display: none; |
||||
box-sizing: border-box; |
||||
flex-flow: wrap; |
||||
position: absolute; |
||||
top: 100%; |
||||
left: 0; |
||||
right: 0; |
||||
z-index: 999; |
||||
margin-top: 5px; |
||||
padding: 5px; |
||||
background-color: #fff; |
||||
border-radius: 5px; |
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); |
||||
max-height: 200px; |
||||
overflow-y: auto; |
||||
overflow-x: hidden; |
||||
} |
||||
.multi-select .multi-select-options::-webkit-scrollbar { |
||||
width: 5px; |
||||
} |
||||
.multi-select .multi-select-options::-webkit-scrollbar-track { |
||||
background: #f0f1f3; |
||||
} |
||||
.multi-select .multi-select-options::-webkit-scrollbar-thumb { |
||||
background: #cdcfd1; |
||||
} |
||||
.multi-select .multi-select-options::-webkit-scrollbar-thumb:hover { |
||||
background: #b2b6b9; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-option, .multi-select .multi-select-options .multi-select-all { |
||||
padding: 4px 12px; |
||||
height: 42px; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-option .multi-select-option-radio, .multi-select .multi-select-options .multi-select-all .multi-select-option-radio { |
||||
margin-right: 14px; |
||||
height: 16px; |
||||
width: 16px; |
||||
border: 1px solid #ced4da; |
||||
border-radius: 4px; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-option .multi-select-option-text, .multi-select .multi-select-options .multi-select-all .multi-select-option-text { |
||||
box-sizing: border-box; |
||||
flex: 1; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
white-space: nowrap; |
||||
color: inherit; |
||||
font-size: 16px; |
||||
line-height: 20px; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-option.multi-select-selected .multi-select-option-radio, .multi-select .multi-select-options .multi-select-all.multi-select-selected .multi-select-option-radio { |
||||
border-color: #40c979; |
||||
background-color: #40c979; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-option.multi-select-selected .multi-select-option-radio::after, .multi-select .multi-select-options .multi-select-all.multi-select-selected .multi-select-option-radio::after { |
||||
content: ""; |
||||
display: block; |
||||
width: 3px; |
||||
height: 7px; |
||||
margin: 0.12em 0 0 0.27em; |
||||
border: solid #fff; |
||||
border-width: 0 0.15em 0.15em 0; |
||||
transform: rotate(45deg); |
||||
} |
||||
.multi-select .multi-select-options .multi-select-option.multi-select-selected .multi-select-option-text, .multi-select .multi-select-options .multi-select-all.multi-select-selected .multi-select-option-text { |
||||
color: #40c979; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-option:hover, .multi-select .multi-select-options .multi-select-option:active, .multi-select .multi-select-options .multi-select-all:hover, .multi-select .multi-select-options .multi-select-all:active { |
||||
background-color: #f3f4f7; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-all { |
||||
border-bottom: 1px solid #f1f3f5; |
||||
border-radius: 0; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-search { |
||||
padding: 7px 10px; |
||||
border: 1px solid #dee2e6; |
||||
border-radius: 5px; |
||||
margin: 10px 10px 5px 10px; |
||||
width: 100%; |
||||
outline: none; |
||||
font-size: 16px; |
||||
} |
||||
.multi-select .multi-select-options .multi-select-search::placeholder { |
||||
color: #b2b5b9; |
||||
} |
||||
.multi-select .multi-select-header, .multi-select .multi-select-option, .multi-select .multi-select-all { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
box-sizing: border-box; |
||||
align-items: center; |
||||
border-radius: 5px; |
||||
cursor: pointer; |
||||
display: flex; |
||||
align-items: center; |
||||
width: 100%; |
||||
font-size: 16px; |
||||
color: #212529; |
||||
} |
@ -0,0 +1,260 @@
|
||||
/* |
||||
* Created by David Adams |
||||
* https://codeshack.io/multi-select-dropdown-html-javascript/
|
||||
*
|
||||
* Released under the MIT license |
||||
*/ |
||||
class MultiSelect { |
||||
|
||||
constructor(element, options = {}) { |
||||
let defaults = { |
||||
placeholder: 'Select item(s)', |
||||
max: null, |
||||
search: true, |
||||
selectAll: true, |
||||
listAll: true, |
||||
closeListOnItemSelect: false, |
||||
name: '', |
||||
width: '', |
||||
height: '', |
||||
dropdownWidth: '', |
||||
dropdownHeight: '', |
||||
data: [], |
||||
onChange: function() {}, |
||||
onSelect: function() {}, |
||||
onUnselect: function() {} |
||||
}; |
||||
this.options = Object.assign(defaults, options); |
||||
this.selectElement = typeof element === 'string' ? document.querySelector(element) : element; |
||||
for(const prop in this.selectElement.dataset) { |
||||
if (this.options[prop] !== undefined) { |
||||
this.options[prop] = this.selectElement.dataset[prop]; |
||||
} |
||||
} |
||||
this.name = this.selectElement.getAttribute('name') ? this.selectElement.getAttribute('name') : 'multi-select-' + Math.floor(Math.random() * 1000000); |
||||
if (!this.options.data.length) { |
||||
let options = this.selectElement.querySelectorAll('option'); |
||||
for (let i = 0; i < options.length; i++) { |
||||
this.options.data.push({ |
||||
value: options[i].value, |
||||
text: options[i].innerHTML, |
||||
selected: options[i].selected, |
||||
html: options[i].getAttribute('data-html') |
||||
}); |
||||
} |
||||
} |
||||
this.element = this._template(); |
||||
this.selectElement.replaceWith(this.element); |
||||
this._updateSelected(); |
||||
this._eventHandlers(); |
||||
} |
||||
|
||||
_template() { |
||||
let optionsHTML = ''; |
||||
for (let i = 0; i < this.data.length; i++) { |
||||
optionsHTML += ` |
||||
<div class="multi-select-option${this.selectedValues.includes(this.data[i].value) ? ' multi-select-selected' : ''}" data-value="${this.data[i].value}"> |
||||
<span class="multi-select-option-radio"></span> |
||||
<span class="multi-select-option-text">${this.data[i].html ? this.data[i].html : this.data[i].text}</span> |
||||
</div> |
||||
`;
|
||||
} |
||||
let selectAllHTML = ''; |
||||
if (this.options.selectAll === true || this.options.selectAll === 'true') { |
||||
selectAllHTML = `<div class="multi-select-all">
|
||||
<span class="multi-select-option-radio"></span> |
||||
<span class="multi-select-option-text">Select all</span> |
||||
</div>`; |
||||
} |
||||
let template = ` |
||||
<div class="multi-select ${this.name}"${this.selectElement.id ? ' id="' + this.selectElement.id + '"' : ''} style="${this.width ? 'width:' + this.width + ';' : ''}${this.height ? 'height:' + this.height + ';' : ''}"> |
||||
${this.selectedValues.map(value => `<input type="hidden" name="${this.name}[]" value="${value}">`).join('')} |
||||
<div class="multi-select-header" style="${this.width ? 'width:' + this.width + ';' : ''}${this.height ? 'height:' + this.height + ';' : ''}"> |
||||
<span class="multi-select-header-max">${this.options.max ? this.selectedValues.length + '/' + this.options.max : ''}</span> |
||||
<span class="multi-select-header-placeholder">${this.placeholder}</span> |
||||
</div> |
||||
<div class="multi-select-options" style="${this.options.dropdownWidth ? 'width:' + this.options.dropdownWidth + ';' : ''}${this.options.dropdownHeight ? 'height:' + this.options.dropdownHeight + ';' : ''}"> |
||||
${this.options.search === true || this.options.search === 'true' ? '<input type="text" class="multi-select-search" placeholder="Search...">' : ''} |
||||
${selectAllHTML} |
||||
${optionsHTML} |
||||
</div> |
||||
</div> |
||||
`;
|
||||
let element = document.createElement('div'); |
||||
element.innerHTML = template; |
||||
return element; |
||||
} |
||||
|
||||
_eventHandlers() { |
||||
let headerElement = this.element.querySelector('.multi-select-header'); |
||||
this.element.querySelectorAll('.multi-select-option').forEach(option => { |
||||
option.onclick = () => { |
||||
let selected = true; |
||||
if (!option.classList.contains('multi-select-selected')) { |
||||
if (this.options.max && this.selectedValues.length >= this.options.max) { |
||||
return; |
||||
} |
||||
option.classList.add('multi-select-selected'); |
||||
if (this.options.listAll === true || this.options.listAll === 'true') { |
||||
if (this.element.querySelector('.multi-select-header-option')) { |
||||
let opt = Array.from(this.element.querySelectorAll('.multi-select-header-option')).pop(); |
||||
opt.insertAdjacentHTML('afterend', `<span class="multi-select-header-option" data-value="${option.dataset.value}">${option.querySelector('.multi-select-option-text').innerHTML}</span>`); |
||||
} else { |
||||
headerElement.insertAdjacentHTML('afterbegin', `<span class="multi-select-header-option" data-value="${option.dataset.value}">${option.querySelector('.multi-select-option-text').innerHTML}</span>`); |
||||
} |
||||
} |
||||
this.element.querySelector('.multi-select').insertAdjacentHTML('afterbegin', `<input type="hidden" name="${this.name}[]" value="${option.dataset.value}">`); |
||||
this.data.filter(data => data.value == option.dataset.value)[0].selected = true; |
||||
} else { |
||||
option.classList.remove('multi-select-selected'); |
||||
this.element.querySelectorAll('.multi-select-header-option').forEach(headerOption => headerOption.dataset.value == option.dataset.value ? headerOption.remove() : ''); |
||||
this.element.querySelector(`input[value="${option.dataset.value}"]`).remove(); |
||||
this.data.filter(data => data.value == option.dataset.value)[0].selected = false; |
||||
selected = false; |
||||
} |
||||
if (this.options.listAll === false || this.options.listAll === 'false') { |
||||
if (this.element.querySelector('.multi-select-header-option')) { |
||||
this.element.querySelector('.multi-select-header-option').remove(); |
||||
} |
||||
headerElement.insertAdjacentHTML('afterbegin', `<span class="multi-select-header-option">${this.selectedValues.length} selected</span>`); |
||||
} |
||||
if (!this.element.querySelector('.multi-select-header-option')) { |
||||
headerElement.insertAdjacentHTML('afterbegin', `<span class="multi-select-header-placeholder">${this.placeholder}</span>`); |
||||
} else if (this.element.querySelector('.multi-select-header-placeholder')) { |
||||
this.element.querySelector('.multi-select-header-placeholder').remove(); |
||||
} |
||||
if (this.options.max) { |
||||
this.element.querySelector('.multi-select-header-max').innerHTML = this.selectedValues.length + '/' + this.options.max; |
||||
} |
||||
if (this.options.search === true || this.options.search === 'true') { |
||||
this.element.querySelector('.multi-select-search').value = ''; |
||||
} |
||||
this.element.querySelectorAll('.multi-select-option').forEach(option => option.style.display = 'flex'); |
||||
if (this.options.closeListOnItemSelect === true || this.options.closeListOnItemSelect === 'true') { |
||||
headerElement.classList.remove('multi-select-header-active'); |
||||
} |
||||
this.options.onChange(option.dataset.value, option.querySelector('.multi-select-option-text').innerHTML, option); |
||||
if (selected) { |
||||
this.options.onSelect(option.dataset.value, option.querySelector('.multi-select-option-text').innerHTML, option); |
||||
} else { |
||||
this.options.onUnselect(option.dataset.value, option.querySelector('.multi-select-option-text').innerHTML, option); |
||||
} |
||||
}; |
||||
}); |
||||
headerElement.onclick = () => headerElement.classList.toggle('multi-select-header-active');
|
||||
if (this.options.search === true || this.options.search === 'true') { |
||||
let search = this.element.querySelector('.multi-select-search'); |
||||
search.oninput = () => { |
||||
this.element.querySelectorAll('.multi-select-option').forEach(option => { |
||||
option.style.display = option.querySelector('.multi-select-option-text').innerHTML.toLowerCase().indexOf(search.value.toLowerCase()) > -1 ? 'flex' : 'none'; |
||||
}); |
||||
}; |
||||
} |
||||
if (this.options.selectAll === true || this.options.selectAll === 'true') { |
||||
let selectAllButton = this.element.querySelector('.multi-select-all'); |
||||
selectAllButton.onclick = () => { |
||||
let allSelected = selectAllButton.classList.contains('multi-select-selected'); |
||||
this.element.querySelectorAll('.multi-select-option').forEach(option => { |
||||
let dataItem = this.data.find(data => data.value == option.dataset.value); |
||||
if (dataItem && ((allSelected && dataItem.selected) || (!allSelected && !dataItem.selected))) { |
||||
option.click(); |
||||
} |
||||
}); |
||||
selectAllButton.classList.toggle('multi-select-selected'); |
||||
}; |
||||
} |
||||
if (this.selectElement.id && document.querySelector('label[for="' + this.selectElement.id + '"]')) { |
||||
document.querySelector('label[for="' + this.selectElement.id + '"]').onclick = () => { |
||||
headerElement.classList.toggle('multi-select-header-active'); |
||||
}; |
||||
} |
||||
document.addEventListener('click', event => { |
||||
if (!event.target.closest('.' + this.name) && !event.target.closest('label[for="' + this.selectElement.id + '"]')) { |
||||
headerElement.classList.remove('multi-select-header-active'); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
_updateSelected() { |
||||
if (this.options.listAll === true || this.options.listAll === 'true') { |
||||
this.element.querySelectorAll('.multi-select-option').forEach(option => { |
||||
if (option.classList.contains('multi-select-selected')) { |
||||
this.element.querySelector('.multi-select-header').insertAdjacentHTML('afterbegin', `<span class="multi-select-header-option" data-value="${option.dataset.value}">${option.querySelector('.multi-select-option-text').innerHTML}</span>`); |
||||
} |
||||
}); |
||||
} else { |
||||
if (this.selectedValues.length > 0) { |
||||
this.element.querySelector('.multi-select-header').insertAdjacentHTML('afterbegin', `<span class="multi-select-header-option">${this.selectedValues.length} selected</span>`); |
||||
} |
||||
} |
||||
if (this.element.querySelector('.multi-select-header-option')) { |
||||
this.element.querySelector('.multi-select-header-placeholder').remove(); |
||||
} |
||||
} |
||||
|
||||
get selectedValues() { |
||||
return this.data.filter(data => data.selected).map(data => data.value); |
||||
} |
||||
|
||||
get selectedItems() { |
||||
return this.data.filter(data => data.selected); |
||||
} |
||||
|
||||
set data(value) { |
||||
this.options.data = value; |
||||
} |
||||
|
||||
get data() { |
||||
return this.options.data; |
||||
} |
||||
|
||||
set selectElement(value) { |
||||
this.options.selectElement = value; |
||||
} |
||||
|
||||
get selectElement() { |
||||
return this.options.selectElement; |
||||
} |
||||
|
||||
set element(value) { |
||||
this.options.element = value; |
||||
} |
||||
|
||||
get element() { |
||||
return this.options.element; |
||||
} |
||||
|
||||
set placeholder(value) { |
||||
this.options.placeholder = value; |
||||
} |
||||
|
||||
get placeholder() { |
||||
return this.options.placeholder; |
||||
} |
||||
|
||||
set name(value) { |
||||
this.options.name = value; |
||||
} |
||||
|
||||
get name() { |
||||
return this.options.name; |
||||
} |
||||
|
||||
set width(value) { |
||||
this.options.width = value; |
||||
} |
||||
|
||||
get width() { |
||||
return this.options.width; |
||||
} |
||||
|
||||
set height(value) { |
||||
this.options.height = value; |
||||
} |
||||
|
||||
get height() { |
||||
return this.options.height; |
||||
} |
||||
|
||||
} |
||||
document.querySelectorAll('[data-multi-select]').forEach(select => new MultiSelect(select)); |
@ -0,0 +1,44 @@
|
||||
/** |
||||
* Bootstrap Multiselect (http://davidstutz.de/bootstrap-multiselect/) |
||||
* |
||||
* Apache License, Version 2.0: |
||||
* Copyright (c) 2012 - 2022 David Stutz |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not |
||||
* use this file except in compliance with the License. You may obtain a |
||||
* copy of the License at http://www.apache.org/licenses/LICENSE-2.0 |
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
||||
* License for the specific language governing permissions and limitations |
||||
* under the License. |
||||
* |
||||
* BSD 3-Clause License: |
||||
* Copyright (c) 2012 - 2022 David Stutz |
||||
* All rights reserved. |
||||
* |
||||
* Redistribution and use in source and binary forms, with or without |
||||
* modification, are permitted provided that the following conditions are met: |
||||
* - Redistributions of source code must retain the above copyright notice, |
||||
* this list of conditions and the following disclaimer. |
||||
* - Redistributions in binary form must reproduce the above copyright notice, |
||||
* this list of conditions and the following disclaimer in the documentation |
||||
* and/or other materials provided with the distribution. |
||||
* - Neither the name of David Stutz nor the names of its contributors may be |
||||
* used to endorse or promote products derived from this software without |
||||
* specific prior written permission. |
||||
* |
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR |
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
span.multiselect-native-select{position:relative}span.multiselect-native-select select{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px -1px -1px -3px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;left:50%;top:30px}.multiselect.dropdown-toggle:after{display:none}.multiselect{overflow:hidden;text-overflow:ellipsis}.multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .multiselect-reset .input-group{width:93%}.multiselect-container .multiselect-filter>.fa-search{z-index:1;padding-left:.75rem}.multiselect-container .multiselect-filter>input.multiselect-search{border:none;border-bottom:1px solid #d3d3d3;padding-left:2rem;margin-left:-1.625rem;border-bottom-right-radius:0;border-bottom-left-radius:0}.multiselect-container .multiselect-filter>input.multiselect-search:focus{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.multiselect-container .multiselect-filter>.multiselect-moz-clear-filter{margin-left:-1.5rem;display:none}.multiselect-container .multiselect-option.multiselect-group-option-indented-full{padding-left:2.6rem}.multiselect-container .multiselect-option.multiselect-group-option-indented{padding-left:1.8rem}.multiselect-container .multiselect-group{cursor:pointer}.multiselect-container .multiselect-group.closed .dropdown-toggle::after{transform:rotate(-90deg)}.multiselect-container .multiselect-group .caret-container~.form-check{margin-left:.5rem}.multiselect-container .multiselect-all,.multiselect-container .multiselect-group,.multiselect-container .multiselect-option{padding:.25rem .25rem .25rem .75rem}.multiselect-container .multiselect-all.dropdown-item,.multiselect-container .multiselect-all.dropdown-toggle,.multiselect-container .multiselect-group.dropdown-item,.multiselect-container .multiselect-group.dropdown-toggle,.multiselect-container .multiselect-option.dropdown-item,.multiselect-container .multiselect-option.dropdown-toggle{cursor:pointer}.multiselect-container .multiselect-all .form-check-label,.multiselect-container .multiselect-group .form-check-label,.multiselect-container .multiselect-option .form-check-label{cursor:pointer}.multiselect-container .multiselect-all.active:not(.multiselect-active-item-fallback),.multiselect-container .multiselect-all:not(.multiselect-active-item-fallback):active,.multiselect-container .multiselect-group.active:not(.multiselect-active-item-fallback),.multiselect-container .multiselect-group:not(.multiselect-active-item-fallback):active,.multiselect-container .multiselect-option.active:not(.multiselect-active-item-fallback),.multiselect-container .multiselect-option:not(.multiselect-active-item-fallback):active{background-color:#d3d3d3;color:#000}.multiselect-container .multiselect-all:focus,.multiselect-container .multiselect-all:hover,.multiselect-container .multiselect-group:focus,.multiselect-container .multiselect-group:hover,.multiselect-container .multiselect-option:focus,.multiselect-container .multiselect-option:hover{background-color:#a9a9a9!important}.multiselect-container .multiselect-all .form-check,.multiselect-container .multiselect-group .form-check,.multiselect-container .multiselect-option .form-check{padding:0 5px 0 20px}.multiselect-container .multiselect-all:focus,.multiselect-container .multiselect-group:focus,.multiselect-container .multiselect-option:focus{outline:0}.form-inline .multiselect-container span.form-check{padding:3px 20px 3px 40px}.input-group.input-group-sm>.multiselect-native-select .multiselect{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;padding-right:1.75rem;height:calc(1.5em + .5rem + 2px)}.input-group>.multiselect-native-select{flex:1 1 auto;width:1%}.input-group>.multiselect-native-select>div.btn-group{width:100%}.input-group>.multiselect-native-select:not(:first-child) .multiselect{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.multiselect-native-select:not(:last-child) .multiselect{border-top-right-radius:0;border-bottom-right-radius:0} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,33 @@
|
||||
const path = require("path") |
||||
//__dirname,
|
||||
module.exports = { |
||||
// entry: "./App.js",
|
||||
entry: { |
||||
kpdl: "./app/Views/kewilayahan/kytp/kpdl.js" |
||||
}, |
||||
output: { |
||||
path: path.resolve("./app/Views/kewilayahan/dist"), |
||||
filename: "[name].js" |
||||
}, |
||||
|
||||
module: { |
||||
rules: [ |
||||
{ |
||||
exclude: /node_modules/, |
||||
use: { |
||||
loader: "babel-loader", |
||||
options: { |
||||
presets: ["@babel/preset-react"], |
||||
plugins: ["@babel/plugin-proposal-optional-chaining", "@babel/plugin-proposal-nullish-coalescing-operator"] |
||||
} |
||||
} |
||||
}, |
||||
{ |
||||
test: /\.css$/i, |
||||
// type: "asset"
|
||||
use: ["style-loader", "css-loader"] |
||||
} |
||||
] |
||||
}, |
||||
mode: "production" |
||||
} |
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723429948;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:43:"https://dfoso.id:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719755649;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722243622;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:35:"https://dfoso.id:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719328099; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722570459;nip|s:9:"060110956";nipp|s:18:"198406132006021003";nama|s:24:"RIANTIARNO ALDI SASONGKO";kppadm|s:3:"000";jabatan|s:24:"Pranata Komputer Pertama";kantor|s:45:"Direktorat Teknologi Informasi dan Komunikasi";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"997";isLogin|b:1;_ci_previous_url|s:107:"https://localhost/engineN/home/ppm?kwl=160&kpp=414&seksi=04&nip=830060412&kdmap=411211&kjs=SEMUA&tahun=2023"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719299921;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:41:"https://103.148.201.34:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720055338; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720146640;nip|s:9:"060111350";nipp|s:18:"198402272006021001";nama|s:13:"EDI FERIYANTO";kppadm|s:3:"000";jabatan|s:24:"Pranata Komputer Pertama";kantor|s:45:"Direktorat Teknologi Informasi dan Komunikasi";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"997";isLogin|b:1;_ci_previous_url|s:39:"https://localhost/engineN/rapor/wplapor"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719755094;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722243622;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:35:"https://dfoso.id:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1724564527;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:37:"https://dfoso.id:51212/engineN/Kanwil"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722504435;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:76:"https://dfoso.id:51212/engineN/Seksiar/detbyrlpr/170/501/04/955760313/2024/2"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719890417;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:44:"https://dfoso.id:51212/engineN/rapor/wplapor"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719760236;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723436952;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:38:"https://localhost/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720146902;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:49:"https://103.148.201.34:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722413857;nip|s:9:"060111296";nipp|s:18:"198510052006022001";nama|s:13:"ANGGUN ABRINA";kppadm|s:3:"412";jabatan|s:22:"Account Representative";kantor|s:27:"KPP Pratama Depok Cimanggis";seksi|s:11:"KPP Pratama";tpkantor|s:3:"KPP";kwladm|s:3:"330";isLogin|b:1;_ci_previous_url|s:33:"https://localhost/engineN/seksiar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719891819;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:44:"https://dfoso.id:51212/engineN/rapor/wplapor"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720148531;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wplapor"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719322762;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:41:"https://103.148.201.34:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723435114;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:43:"https://dfoso.id:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722312809;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:35:"https://dfoso.id:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722496924;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:38:"https://dfoso.id:51212/engineN/Seksiar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722415517;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:35:"https://dfoso.id:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719759738;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722663146;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:75:"https://10.10.20.216/engineN/seksiar/detpaycomp/170/519/01/830450542/2024/3"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719302039;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:41:"https://103.148.201.34:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719396163;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:41:"https://103.148.201.34:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723440972;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:43:"https://dfoso.id:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720148531;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:51:"https://103.148.201.34:51212/engineN/rapor/wpdaftar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723447107;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:77:"https://dfoso.id:51212/engineN/seksiar/detpaycomp/090/087/06/060108940/2024/6"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719758514;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719504428;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:39:"https://localhost/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723447107;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:43:"https://dfoso.id:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720146902;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:51:"https://103.148.201.34:51212/engineN/rapor/wpdaftar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719676953;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:35:"https://10.10.20.216/engineN/Kanwil"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722576859;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:43:"https://dfoso.id:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719755649;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1721270945; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719302039;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722505843;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:90:"https://dfoso.id:51212/engineN/Seksiar/detbyrlpr/170/501/04/955760313/2024/2?page_byrlpr=7"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719968379;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wplapor"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719759051; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719936308;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:41:"https://103.148.201.34:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719481949;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:45:"https://dfoso.id:51212/engineN/rapor/wpdaftar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719757676;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719820931;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719993604;nip|s:9:"060111350";nipp|s:18:"198402272006021001";nama|s:13:"EDI FERIYANTO";kppadm|s:3:"000";jabatan|s:24:"Pranata Komputer Pertama";kantor|s:45:"Direktorat Teknologi Informasi dan Komunikasi";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"997";isLogin|b:1;_ci_previous_url|s:30:"https://localhost/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723436375;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:43:"https://dfoso.id:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720759022;nip|s:9:"060111350";nipp|s:18:"198402272006021001";nama|s:13:"EDI FERIYANTO";kppadm|s:3:"000";jabatan|s:24:"Pranata Komputer Pertama";kantor|s:45:"Direktorat Teknologi Informasi dan Komunikasi";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"997";isLogin|b:1;_ci_previous_url|s:39:"https://localhost/engineN/rapor/wplapor"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722576859;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:43:"https://dfoso.id:51212/engineN/home/gmapkjs"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722499619;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:38:"https://dfoso.id:51212/engineN/Seksiar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723436952;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:30:"https://localhost/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722662067;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:76:"https://10.10.20.216/engineN/seksiar/detpaycomp/170/SEMUA/SEMUA/SEMUA/2024/1"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719296855;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722499932;nip|s:9:"060106375";nipp|s:18:"198302102003121004";nama|s:12:"WAWAN SUANDI";kppadm|s:3:"170";jabatan|s:9:"Pelaksana";kantor|s:24:"Kanwil DJP Jawa Tengah I";seksi|s:45:"Bidang Data dan Pengawasan Potensi Perpajakan";tpkantor|s:6:"Kanwil";kwladm|s:3:"170";isLogin|b:1;_ci_previous_url|s:37:"https://dfoso.id:51212/engineN/Kanwil"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719820429;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723220641;nip|s:9:"060112817";nipp|s:18:"198602112006021005";nama|s:16:"MUHAMMAD ZAMRONI";kppadm|s:3:"100";jabatan|s:9:"Pelaksana";kantor|s:28:"Kanwil DJP Jakarta Selatan I";seksi|s:56:"Bidang Pemeriksaan, Penagihan, Intelijen, dan Penyidikan";tpkantor|s:6:"Kanwil";kwladm|s:3:"100";isLogin|b:1;_ci_previous_url|s:32:"https://localhost/engineN/Kanwil"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1722327556;nip|s:9:"060086978";nipp|s:18:"196805201995031003";nama|s:7:"SUPARNO";kppadm|s:3:"000";jabatan|s:8:"Direktur";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:35:"https://dfoso.id:51212/engineN/Home"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720169108; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1719452750; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720142759;nip|s:9:"810201978";nipp|s:18:"199401292013101001";nama|s:23:"ALFIN RIZKY RACHMAWANTO";kppadm|s:3:"000";jabatan|s:9:"Pelaksana";kantor|s:39:"Direktorat Ekstensifikasi dan Penilaian";seksi|s:28:"SubDirektorat Ekstensifikasi";tpkantor|s:5:"KPDJP";kwladm|s:3:"991";isLogin|b:1;_ci_previous_url|s:50:"https://103.148.201.34:51212/engineN/rapor/wpbayar"; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1723217842; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720759021; |
@ -1 +0,0 @@
|
||||
__ci_last_regenerate|i:1720766622;nip|s:9:"060111350";nipp|s:18:"198402272006021001";nama|s:13:"EDI FERIYANTO";kppadm|s:3:"000";jabatan|s:24:"Pranata Komputer Pertama";kantor|s:45:"Direktorat Teknologi Informasi dan Komunikasi";seksi|N;tpkantor|s:5:"KPDJP";kwladm|s:3:"997";isLogin|b:1;_ci_previous_url|s:30:"https://localhost/engineN/Home"; |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue