= 7 months ago
parent
commit
20af8935ed
  1. 2
      .gitignore
  2. 130
      KPDL_MV_PETUGAS_REKAM.sql
  3. 233
      app/Controllers/Kewilayahan/IdentAktifitasHasil/IdentifikasiLapangan.php
  4. 2
      app/Controllers/Kewilayahan/Kytp.php
  5. 2
      app/Controllers/Kewilayahan/Monitoring.php
  6. 132
      app/Controllers/Kewilayahan/Peta.php
  7. 92
      app/Controllers/Kewilayahan/PoiGoogleMatoa/PoiGoogleMatoa.php
  8. 24
      app/Controllers/Kewilayahan/Ref.php
  9. 164
      app/Controllers/Kewilayahan/Sebaran/Identifikasi.php
  10. 152
      app/Controllers/Kewilayahan/Sebaran/JenisStatus.php
  11. 153
      app/Controllers/Kewilayahan/Sebaran/KLU.php
  12. 153
      app/Controllers/Kewilayahan/Sebaran/PayComp.php
  13. 166
      app/Controllers/Kewilayahan/Sebaran/Pembayaran.php
  14. 150
      app/Controllers/Kewilayahan/Sebaran/Pengampu.php
  15. 152
      app/Controllers/Kewilayahan/Sebaran/SPTTAhunan.php
  16. 153
      app/Controllers/Kewilayahan/Sebaran/ZonaPengawasan.php
  17. 2
      app/Views/kewilayahan/dist/kpdl.js
  18. 2
      app/Views/kewilayahan/dist/monitoring.js
  19. 4
      app/Views/kewilayahan/dist/peta.css
  20. 106
      app/Views/kewilayahan/dist/peta.js
  21. 84
      app/Views/kewilayahan/dist/peta.js.LICENSE.txt
  22. 4
      app/Views/kewilayahan/kytp/componentDepan/NipPengampu.js
  23. 4
      app/Views/kewilayahan/kytp/componentDepan/NipPerekam.js
  24. 4
      app/Views/kewilayahan/kytp/componentPenugasanAktifitas/PenugasanKpdl.js
  25. 22
      app/Views/kewilayahan/kytp/componentProgresifitas/Identifikasi.js
  26. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/JenisStatusWp.js
  27. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/KLU.js
  28. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/PayComp.js
  29. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/Pembayaran.js
  30. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/Pengampu.js
  31. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/SPTTahunan.js
  32. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/Sof.js
  33. 4
      app/Views/kewilayahan/kytp/componentProgresifitas/ZonaPengawasan.js
  34. 3
      app/Views/kewilayahan/kytp/kpdl.js
  35. 66
      app/Views/kewilayahan/kytp/store/PetaStore.js
  36. 8
      app/Views/kewilayahan/kytp/store/store.js
  37. 16
      app/Views/kewilayahan/monitoring/componentMonitoring/Kanwil.js
  38. 18
      app/Views/kewilayahan/monitoring/componentMonitoring/Kpp.js
  39. 2
      app/Views/kewilayahan/monitoring/componentMonitoring/Pegawai.js
  40. 18
      app/Views/kewilayahan/monitoring/componentMonitoring/Seksi.js
  41. 14
      app/Views/kewilayahan/monitoring/index.js
  42. 195
      app/Views/kewilayahan/peta/MenuBawah.js
  43. 678
      app/Views/kewilayahan/peta/PoUpWilayah.js
  44. 244
      app/Views/kewilayahan/peta/PopUPTematikPembayaran.js
  45. 170
      app/Views/kewilayahan/peta/PopUpRatingGoogle.js
  46. 28
      app/Views/kewilayahan/peta/app-maps.scss
  47. 206
      app/Views/kewilayahan/peta/components/NipPengampu.js
  48. 220
      app/Views/kewilayahan/peta/components/NipPerekam.js
  49. 164
      app/Views/kewilayahan/peta/generalWms/ComponentPopUpNpwp.js
  50. 112
      app/Views/kewilayahan/peta/generalWms/ComponentPopUpPoiGoogle.js
  51. 4
      app/Views/kewilayahan/peta/generalWms/L.TileLayer.GeneralWMS.js
  52. 173
      app/Views/kewilayahan/peta/generalWms/L.TileLayer.MatoaNpwp.js
  53. 150
      app/Views/kewilayahan/peta/generalWms/L.TileLayer.PoiGoogle.js
  54. 64
      app/Views/kewilayahan/peta/generalWms/L.VectorGrid.VectorPoi.js
  55. 25
      app/Views/kewilayahan/peta/generalWms/UseRenderPopup.js
  56. 158
      app/Views/kewilayahan/peta/generalWms/VectorGridd.js
  57. 21
      app/Views/kewilayahan/peta/generalWms/VectorPoi.js
  58. BIN
      app/Views/kewilayahan/peta/generalWms/noImage.png
  59. 32
      app/Views/kewilayahan/peta/layers/PoiKpdl.js
  60. 38
      app/Views/kewilayahan/peta/layers/baseLayers.js
  61. 150
      app/Views/kewilayahan/peta/layers/overlayLayers.js
  62. 164
      app/Views/kewilayahan/peta/peta.js
  63. 9
      package.json
  64. 2
      public/kpdl/dist/kpdl.js
  65. 2
      public/kpdl/dist/monitoring.js
  66. 57211
      public/kpdl/dist/peta.css
  67. 8010
      public/kpdl/dist/peta.js
  68. 84
      public/kpdl/dist/peta.js.LICENSE.txt
  69. 27
      webpack-dev.config.js
  70. 10
      webpack-dev.config2.js
  71. 15
      webpack.config.js
  72. 197
      yarn.lock

2
.gitignore vendored

@ -3,3 +3,5 @@
/writable/session/*
/node_modules
/release-update
/app/Views/kewilayahan/dist
/public/kpdl/dist

130
KPDL_MV_PETUGAS_REKAM.sql

@ -1,130 +0,0 @@
DROP MATERIALIZED VIEW GENAPP.KPDL_MV_PETUGAS_REKAM;
CREATE MATERIALIZED VIEW GENAPP.KPDL_MV_PETUGAS_REKAM
(KODE_SEKSI_PEREKAM,KODE_PEG_PEREKAM,ID_KPDL_SUBJEK,KPPADM_PEREKAM,NIP_PEREKAM,
CREATION_DATE,ORG_APPROVAL_KASI,NIP_APPROVAL_KASI,TGL_APPROVAL_KASI,STS_APPROVAL_KASI,
TGL_APPROVAL_PKD,STS_APPROVAL_PKD)
TABLESPACE TS_KPDL
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOCACHE
NOLOGGING
NOCOMPRESS
PARALLEL ( DEGREE DEFAULT INSTANCES DEFAULT )
BUILD IMMEDIATE
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS
SELECT
COALESCE(a.KPP_ADM_PEREKAM, '') || '-' || COALESCE (ORG_APPROVAL_KASI,'') KODE_SEKSI_PEREKAM,
COALESCE(a.KPP_ADM_PEREKAM, '') || '-' || COALESCE (ORG_APPROVAL_KASI,
'') || '-' || COALESCE (a.CREATED_BY,
'') KODE_PEG_PEREKAM,
a.ID_KPDL_SUBJEK,
a.KPP_ADM_PEREKAM KPPADM_PEREKAM,
a.CREATED_BY NIP_PEREKAM,
a.CREATION_DATE,
b.ORG_APPROVAL_KASI,
b.NIP_APPROVAL_KASI,
b.TGL_APPROVAL_KASI,
b.STS_APPROVAL_KASI,
b.TGL_APPROVAL_PKD,
b.STS_APPROVAL_PKD
FROM
KPDL_SUBJEK a
LEFT JOIN KPDL_TRX b ON
(a.ID_KPDL_SUBJEK = b.ID_KPDL_SUBJEK)
WHERE
a.FG_SUMBER = 'MATOA';
COMMENT ON MATERIALIZED VIEW GENAPP.KPDL_MV_PETUGAS_REKAM IS 'snapshot table for snapshot GENAPP.KPDL_MV_PETUGAS_REKAM';
CREATE INDEX GENAPP.KPDL_MV_PETUGAS_REKAM_CREATION_DATE_IDX ON GENAPP.KPDL_MV_PETUGAS_REKAM
(CREATION_DATE)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
);
CREATE INDEX GENAPP.KPDL_MV_PETUGAS_REKAM_ID_KPDL_SUBJEK_IDX ON GENAPP.KPDL_MV_PETUGAS_REKAM
(ID_KPDL_SUBJEK)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
);
CREATE INDEX GENAPP.KPDL_MV_PETUGAS_REKAM_KODE_PEG_PEREKAM_IDX ON GENAPP.KPDL_MV_PETUGAS_REKAM
(KODE_PEG_PEREKAM)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
);
CREATE INDEX GENAPP.KPDL_MV_PETUGAS_REKAM_KODE_SEKSI_PEREKAM_IDX ON GENAPP.KPDL_MV_PETUGAS_REKAM
(KODE_SEKSI_PEREKAM)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
);
CREATE INDEX GENAPP.KPDL_MV_PETUGAS_REKAM_NIP_PEREKAM_IDX ON GENAPP.KPDL_MV_PETUGAS_REKAM
(NIP_PEREKAM)
LOGGING
TABLESPACE USERS
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
);

233
app/Controllers/Kewilayahan/IdentAktifitasHasil/IdentifikasiLapangan.php

@ -58,7 +58,84 @@ class IdentifikasiLapangan extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$npwp = $npwp->getCompiledSelect();
$data = $db->table('BULAN A')
@ -75,7 +152,7 @@ class IdentifikasiLapangan extends \App\Controllers\Kewilayahan\Kytp
dual
CONNECT BY LEVEL <= (trunc(LAST_DAY(to_date('" . $tgl_format . "','YYYY-MM-DD'))) - to_date('" . $tgl_format . "','YYYY-MM-DD') + 1)";
$data = $db->table('KPDL_MV_LOKASI_SUBJEK B')
$data = $db->table('KPDL_MV_LOKASI_SUBJEK A')
->select("TO_CHAR(CREATION_DATE,'DD') as TGL, COUNT(1) JML")
->where("to_char(CREATION_DATE,'YYYY') = ", date('Y'))
->where("to_char(CREATION_DATE,'MM') = " . $bulan)
@ -96,9 +173,87 @@ class IdentifikasiLapangan extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$data = $data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$data = $data->getCompiledSelect();
$data->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
$data = $data->getCompiledSelect();
// print_r($data);
// exit;
$dataRet = $db->newQuery()
->select("A.TGL, B.JML")
->from("(" . $generateTgl . ") A")
@ -189,6 +344,80 @@ class IdentifikasiLapangan extends \App\Controllers\Kewilayahan\Kytp
$data->whereIn('ID_POLY_ZONA', $id_poly_zona);
}
$data->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
if ($opsiWilZona == 'perekam') {
$data->whereIn('CREATED_BY', $nip_ar_perekam);
}

2
app/Controllers/Kewilayahan/Kytp.php

@ -25,7 +25,7 @@ class Kytp extends Controller
$kppadm = session('kppadm');
if (!in_array($kppadm, ['000'])) {
exit;
// exit;
}
}

2
app/Controllers/Kewilayahan/Monitoring.php

@ -16,7 +16,7 @@ class Monitoring extends Controller
$kppadm = session('kppadm');
if (!in_array($kppadm, ['000'])) {
exit;
// exit;
}
}

132
app/Controllers/Kewilayahan/Peta.php

@ -1,6 +1,7 @@
<?php
namespace App\Controllers\Kewilayahan;
use App\Libraries\AldLibrary;
use CodeIgniter\API\ResponseTrait;
use CodeIgniter\Controller;
@ -26,4 +27,135 @@ class Peta extends Controller
return view('kewilayahan/peta/peta');
}
public function defaultCentroid()
{
$db = \Config\Database::connect();
$data = $db->table("KPDL_ZP_NAS_DIFF A")
->select(" SDO_UTIL.TO_GEOJSON(SDO_GEOM.SDO_CENTROID(SDO_AGGR_UNION(SDOAGGRTYPE(A.WKB_GEOMETRY, 0.05)),0.05)) GEOJSON")
->where('KD_KANWIL', session('kwladm'));
$sql = $data->getCompiledSelect();
$db2 = new \Config\Database();
$db_def = $db2->default;
$conn = oci_connect($db_def['username'], $db_def['password'], $db_def['hostname']);
$stmt = oci_parse($conn, $sql);
oci_execute($stmt)
or die("Unable to execute query\n");
while ($row = oci_fetch_assoc($stmt)) {
print $row['GEOJSON']->load() . "\n";
}
}
public function matoaLokasi()
{
if (!$this->validate([
'uuid' => 'required',
])) {
return $this->respond($this->validator->getErrors(), 422);
}
$uuid = $this->request->getPost('uuid');
$db = \Config\Database::connect();
$data = $db->table('KPDL_MV_LOKASI_SUBJEK A')
->select("A.NPWP, ALAMAT, NM_KPP_ZONA, NM_KANTOR_PENGAMPU, NM_PEREKAM, NM_KPP_PEREKAM,NAMA_AR_MFWP,
JNS_WP_MFWP,STATUS_WP_MFWP, WARNA_PEMBAYARAN_THN_TERAKHIR,STATUS_SPT_TAHUNAN_TERAKHIR,
MERK_USAHA, NO_TELP, TO_CHAR(CREATION_DATE,'YYYY-MM-DD HH24:MI:SS') CREATION_DATE, B.NAMA NAMA_AR_ZONA")
->join('PEGAWAI B', 'A.NIP_AR_ZONA=B.NIP9', 'left')
->where('UUID', $uuid)->get()->getRowArray();
return $this->respond(array_change_key_case($data), 200);
}
public function poiGoogle()
{
if (!$this->validate([
'id_data' => 'required',
])) {
return $this->respond($this->validator->getErrors(), 422);
}
$id_data = $this->request->getPost('id_data');
$db = \Config\Database::connect();
$data = $db->table('KPDL_MV_POI_GOOGLE A')
->select("ID_DATA, NAMA, ALAMAT, CATEGORY, NM_AR_ZONA, B.NM_KANTOR,
TOP_IMAGE_URL, ADM1_EN, ADM2_EN, ADM3_EN, ADM4_EN,
to_number(regexp_replace(RATING , ',', '.')) RATING,
to_number(regexp_replace(REVIEWS , '[^[:digit:]]', '')) REVIEW")
->join('REF_KPP B', 'A.KD_KPP_ZONA =B.KD_KPP', 'left')
->where('ID_DATA', $id_data)->get()->getRowArray();
return $this->respond(array_change_key_case($data), 200);
}
public function zonapoly()
{
if (!$this->validate([
'id_poly_zona' => ['required'],
])) {
return $this->respond($this->validator->getErrors(), 422);
}
$Ald = new AldLibrary;
$username = session('nip');
$id_poly_zona = [];
foreach ($this->request->getPost('id_poly_zona') ?? [1, 2, 3] as $key => $value) {
$id_poly_zona[] = $Ald->decryptMe($value, $username);
}
$db = \Config\Database::connect();
$data = $db->table("KPDL_ZP_NAS_DIFF A")
->select("SDO_UTIL.to_geojson(SDO_AGGR_UNION(SDOAGGRTYPE(A.WKB_GEOMETRY,0.05))) GEOJSON")
->whereIn('OGC_FID', $id_poly_zona);
$sql = $data->getCompiledSelect();
$db2 = new \Config\Database();
$db_def = $db2->default;
$conn = oci_connect($db_def['username'], $db_def['password'], $db_def['hostname']);
$stmt = oci_parse($conn, $sql);
oci_execute($stmt)
or die("Unable to execute query\n");
while ($row = oci_fetch_assoc($stmt)) {
print $row['GEOJSON']->load() . "\n";
}
}
public function kelurahanpoly()
{
if (!$this->validate([
'adm4_pcode' => ['required'],
])) {
return $this->respond($this->validator->getErrors(), 422);
}
$Ald = new AldLibrary;
$username = session('nip');
$opsiWilZona = $Ald->decryptMe($this->request->getPost('opsiWilZona'), $username);
$adm4_pcode = [];
foreach ($this->request->getPost('adm4_pcode') ?? [1, 2, 3] as $key => $value) {
$adm4_pcode[] = $Ald->decryptKpdl($value, $username);
}
$db = \Config\Database::connect();
$data = $db->table("KPDL_V_BATAS_DESA A")
->select("SDO_UTIL.to_geojson(SDO_AGGR_UNION(SDOAGGRTYPE(A.WKB_GEOMETRY,0.05))) GEOJSON")
->whereIn('ADM4_PCODE', $adm4_pcode);
$sql = $data->getCompiledSelect();
$db2 = new \Config\Database();
$db_def = $db2->default;
$conn = oci_connect($db_def['username'], $db_def['password'], $db_def['hostname']);
$stmt = oci_parse($conn, $sql);
oci_execute($stmt)
or die("Unable to execute query\n");
while ($row = oci_fetch_assoc($stmt)) {
// Call the load() method to get the contents of the LOB
print $row['GEOJSON']->load() . "\n";
}
}
}

92
app/Controllers/Kewilayahan/PoiGoogleMatoa/PoiGoogleMatoa.php

@ -28,7 +28,7 @@ class PoiGoogleMatoa extends \App\Controllers\Kewilayahan\Kytp
}
$db = \Config\Database::connect();
$sqlGenerate = $db->table("KPDL_MV_JML_POI_AGG")
$sqlGenerate = $db->table("KPDL_MV_JML_POI_AGG A")
->select("BULAN, sum(JML) as JML")
->where('TAHUN =', date('Y'))
->where('BULAN <=', (int) date('m'))
@ -40,6 +40,51 @@ class PoiGoogleMatoa extends \App\Controllers\Kewilayahan\Kytp
$sqlGenerate->whereIn('ID_POLY_ZONA', $id_poly_zona);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$sqlGenerate->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') {
$sqlGenerate->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$sqlGenerate->where('B.KD_KANWIL', session('kwladm'));
}
if (session('tpkantor') == 'KPP') { //KPP
$sqlGenerate->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$sqlGenerate->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('B.KD_KPP', session('kppadm'))
->where('B.NIP_AR', session('nip'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$sqlGenerate->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('B.KD_KPP', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$sqlGenerate->orGroupStart()
->where('B.KD_KPP', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$sqlGenerate->groupEnd();
// print_r($sqlGenerate->getCompiledSelect());
// exit;
$sqlGenerate = $sqlGenerate->getCompiledSelect();
$data = $db->table("BULAN a")
@ -49,6 +94,7 @@ class PoiGoogleMatoa extends \App\Controllers\Kewilayahan\Kytp
$dataPoiAgg = $KpdlLib->single_array($data, 'JML');
return $dataPoiAgg;
}
protected function get_kpdl_agg($request)
@ -83,6 +129,50 @@ class PoiGoogleMatoa extends \App\Controllers\Kewilayahan\Kytp
$sqlGenerate->whereIn('ID_POLY_ZONA', $id_poly_zona);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$sqlGenerate->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') {
$sqlGenerate->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$sqlGenerate->where('B.KD_KANWIL', session('kwladm'));
}
if (session('tpkantor') == 'KPP') { //KPP
$sqlGenerate->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$sqlGenerate->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('B.KD_KPP', session('kppadm'))
->where('B.NIP_AR', session('nip'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$sqlGenerate->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('B.KD_KPP', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$sqlGenerate->orGroupStart()
->where('B.KD_KPP', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$sqlGenerate->groupEnd();
$sqlGenerate = $sqlGenerate->getCompiledSelect();
$data = $db->table("BULAN a")

24
app/Controllers/Kewilayahan/Ref.php

@ -119,6 +119,7 @@ class Ref extends Controller
->orderBy('ADM4_EN')->get()->getResult();
foreach ($data as $key => $val) {
$val->value2 = $val->value;
$val->value = $Ald->encryptKpdl($val->value, $username);
}
@ -304,6 +305,7 @@ class Ref extends Controller
->orderBy('LABEL')->get()->getResult();
foreach ($data as $key => $value) {
$value->value2 = $value->value;
$value->value = $Ald->encryptMe($value->value, $username);
$value->label = $value->LABEL;
unset($value->LABEL);
@ -455,6 +457,7 @@ class Ref extends Controller
->orderBy('NAMA')->get()->getResult();
foreach ($data as $key => $val) {
$val->value2 = $val->value;
$val->value = $Ald->encryptMe($val->value, $username);
}
@ -475,6 +478,22 @@ class Ref extends Controller
return $this->respond($data, 200);
}
public function warnaBayar()
{
$db = \Config\Database::connect();
$data = $db->table('KPDL_REF_WARNA_PEMBAYARAN')->select('ID_WARNA, NAMA_WARNA')->get()->getResultArray();
$ret = array_group_by($data, ['NAMA_WARNA']);
return $this->respond($ret, 200);
}
public function statusSPT()
{
$db = \Config\Database::connect();
$data = $db->table('KPDL_REF_STATUS_SPT')->select('ID_STATUS_SPT, KETERANGAN')->get()->getResultArray();
$ret = array_group_by($data, ['ID_STATUS_SPT']);
return $this->respond(array_change_key_case($ret), 200);
}
public function user()
{
$Ald = new AldLibrary();
@ -486,6 +505,11 @@ class Ref extends Controller
return $this->respond($data, 200);
}
public function getbaseUrl()
{
return $this->respond(base_url(), 200);
}
protected function change_case($arr)
{
return array_change_key_case($arr, CASE_LOWER);

164
app/Controllers/Kewilayahan/Sebaran/Identifikasi.php

@ -34,8 +34,8 @@ class Identifikasi extends \App\Controllers\Kewilayahan\Kytp
$db = \Config\Database::connect();
$npwp = $db->table('KPDL_MV_LOKASI_SUBJEK')->select("CASE WHEN (NPWP IS NULL) THEN 'NON NPWP' ELSE 'BER NPWP' END AS IDENTIFIKASI, count(1) JML", false)
->groupBy("CASE WHEN (NPWP IS NULL) THEN 'NON NPWP' ELSE 'BER NPWP' END");
$npwp = $db->table('KPDL_MV_LOKASI_SUBJEK A')->select("CASE WHEN (A.NPWP IS NULL) THEN 'NON NPWP' ELSE 'BER NPWP' END AS IDENTIFIKASI, count(1) JML", false)
->groupBy("CASE WHEN (A.NPWP IS NULL) THEN 'NON NPWP' ELSE 'BER NPWP' END");
if ($opsiWilZona == 'wilayah') {
$npwp->whereIn('ADM4_PCODE', $adm4_pcode);
@ -53,6 +53,86 @@ class Identifikasi extends \App\Controllers\Kewilayahan\Kytp
$npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
// print_r($npwp->getCompiledSelect());
// exit;
$data = $npwp->get()->getResult();
$ret = [];
@ -141,6 +221,85 @@ class Identifikasi extends \App\Controllers\Kewilayahan\Kytp
$data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$data->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
if ($query == 'NON NPWP') {
$data->where('A.NPWP IS NULL');
}
@ -148,6 +307,7 @@ class Identifikasi extends \App\Controllers\Kewilayahan\Kytp
if ($query == 'BER NPWP') {
$data->where('A.NPWP IS NOT NULL');
}
if ($globalFilter) {
$columnFilter = ["NAMA", "ALAMAT", "MERK_USAHA"];
$data->GroupStart();

152
app/Controllers/Kewilayahan/Sebaran/JenisStatus.php

@ -66,6 +66,85 @@ class JenisStatus extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
//opsiWilZona = '' (Default)
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$data = $npwp->get()->getResult();
@ -152,6 +231,79 @@ class JenisStatus extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
$data->groupStart();
if (session('kppadm') != '000') {
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
$npwp = $data;
$data = $db->newQuery()->fromSubquery($npwp, "A")

153
app/Controllers/Kewilayahan/Sebaran/KLU.php

@ -60,6 +60,86 @@ class KLU extends \App\Controllers\Kewilayahan\Kytp
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
//opsiWilZona = '' (Default)
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$agg = "count(DISTINCT NPWP) as JML";
if ($jenischart == 'dataRupiahBayar') {
$agg = "SUM(JUMLAH_PEMBAYARAN_THN_TERAKHIR) as JML";
@ -168,6 +248,79 @@ class KLU extends \App\Controllers\Kewilayahan\Kytp
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
$npwp->groupStart();
if (session('kppadm') != '000') {
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$data = $db->newQuery()->fromSubquery($npwp, "A")
// ->join('MFWP B', "A.NPWP = B.NPWP", "left")
->join('REF_KPP D', "A.KPPADM_MFWP = D.KD_KPP", "left")

153
app/Controllers/Kewilayahan/Sebaran/PayComp.php

@ -35,7 +35,7 @@ class PayComp extends \App\Controllers\Kewilayahan\Kytp
$db = \Config\Database::connect();
//npwp
$npwp = $db->table('KPDL_MV_LOKASI_SUBJEK')->select('NPWP')->distinct()->where('NPWP IS NOT NULL');
$npwp = $db->table('KPDL_MV_LOKASI_SUBJEK A')->select('A.NPWP')->distinct()->where('A.NPWP IS NOT NULL');
if ($opsiWilZona == 'wilayah') {
$npwp->whereIn('ADM4_PCODE', $adm4_pcode);
@ -53,6 +53,81 @@ class PayComp extends \App\Controllers\Kewilayahan\Kytp
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//opsiWilZona = '' (Default)
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$data = $db->newQuery()
->select("'" . $tahun . '-' . $bulan . "' AS THN_BLN, B.JML|| ' bulan' as KETERANGAN, COUNT(1) AS Y", false)
->fromSubquery($npwp, 'A')
@ -146,6 +221,82 @@ class PayComp extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//opsiWilZona = '' (Default)
$data->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
$npwp = $data;
$tahunBulan = $request->tahunBulan ?? "2024-09";

166
app/Controllers/Kewilayahan/Sebaran/Pembayaran.php

@ -35,7 +35,7 @@ class Pembayaran extends \App\Controllers\Kewilayahan\Kytp
$db = \Config\Database::connect();
//npwp
$npwp = $db->table('KPDL_MV_LOKASI_SUBJEK')->select('NPWP')->distinct()->where('NPWP IS NOT NULL');
$npwp = $db->table('KPDL_MV_LOKASI_SUBJEK A')->select('A.NPWP')->distinct()->where('NPWP IS NOT NULL');
if ($opsiWilZona == 'wilayah') {
$npwp->whereIn('ADM4_PCODE', $adm4_pcode);
@ -53,6 +53,86 @@ class Pembayaran extends \App\Controllers\Kewilayahan\Kytp
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
//opsiWilZona = '' (Default)
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$data = $db->newQuery()
->select("'" . $tahun . '-' . $bulan . "' AS THN_BLN, NVL(WARNA_BYR, 'black') WARNA_BYR, COUNT(1) AS Y")
->fromSubquery($npwp, 'A')
@ -101,6 +181,11 @@ class Pembayaran extends \App\Controllers\Kewilayahan\Kytp
private function dataRaw($type)
{
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$Ald = new AldLibrary;
$username = session('nip');
$start = $this->request->getGet('start');
@ -108,7 +193,7 @@ class Pembayaran extends \App\Controllers\Kewilayahan\Kytp
$size = ($size > 101) ? 101 : $size;
$request = json_decode(file_get_contents('php://input'));
$query = $Ald->decryptKpdl($request->query ?? '', $username) ?? 'NON NPWP'; //NON NPWP || BER NPWP
$query = $Ald->decryptKpdl($request->query ?? '', $username) ?? ''; //Warna
$opsiWilZona = $Ald->decryptMe($request->opsiWilZona ?? '', $username);
$adm4_pcode = [];
@ -156,6 +241,83 @@ class Pembayaran extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//opsiWilZona = '' (Default)
$data->groupStart();
if (session('kppadm') != '000') {
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
// print_r($data->getCompiledSelect());
// exit;
$npwp = $data;
$tahunBulan = $request->tahunBulan ?? "2024-09";

150
app/Controllers/Kewilayahan/Sebaran/Pengampu.php

@ -66,7 +66,85 @@ class Pengampu extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
//opsiWilZona = '' (Default)
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$data = $npwp->get()->getResult();
$ret = [];
@ -153,6 +231,78 @@ class Pengampu extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
$data->groupStart();
if (session('kppadm') != '000') {
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
$npwp = $data;
$data = $db->newQuery()->fromSubquery($npwp, "A")

152
app/Controllers/Kewilayahan/Sebaran/SPTTAhunan.php

@ -52,6 +52,86 @@ class SPTTAhunan extends \App\Controllers\Kewilayahan\Kytp
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
//opsiWilZona = '' (Default)
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$data = $db->newQuery()
->fromSubquery($npwp, "A")
->select("STATUS_SPT_TAHUNAN_TERAKHIR, KETERANGAN, count(1) as JML")
@ -141,6 +221,78 @@ class SPTTAhunan extends \App\Controllers\Kewilayahan\Kytp
if ($opsiWilZona == 'pengampu') {
$data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
$data->groupStart();
if (session('kppadm') != '000') {
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
$npwp = $data;
$data = $db->newQuery()->fromSubquery($npwp, "A")

153
app/Controllers/Kewilayahan/Sebaran/ZonaPengawasan.php

@ -68,6 +68,85 @@ class ZonaPengawasan extends \App\Controllers\Kewilayahan\Kytp
$npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
//pembatasan
if (!in_array(session('tpkantor'), ['KPDJP', 'Kanwil', 'KPP'])) {
return [];
}
$npwp->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$npwp->orGroupStart();
$npwp->where('B.KD_KANWIL', session('kwladm'));
$npwp->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$npwp->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$npwp->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$npwp->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$npwp->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$npwp->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$npwp->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$npwp->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$npwp->groupEnd();
$data = $npwp->get()->getResult();
$ret = [];
@ -155,6 +234,80 @@ class ZonaPengawasan extends \App\Controllers\Kewilayahan\Kytp
$data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
}
$data->groupStart();
if (session('kppadm') != '000') {
if (session('tpkantor') == 'Kanwil') { // kanwil
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$data->orGroupStart();
$data->where('B.KD_KANWIL', session('kwladm'));
$data->groupEnd();
}
if (session('tpkantor') == 'KPP') { //KPP
$data->join('KPDL_ZP_NAS_DIFF B', 'ID_POLY_ZONA = B.OGC_FID');
$currentPegawai = currentPegawai();
if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['602'])) { //AR
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->where('A.NIP_AR_ZONA', session('nip'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_PEG_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI . '-' . session('nip')) //direkam saat di seksi aktif saat ini
->groupEnd();
//pengampu
$data->orGroupStart()
->where('A.NIP_AR_PENGAMPU', session('nip'))
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['401'])) { //kasi
//zona
$data->orGroupStart()
->where('B.KD_UNIT_OR', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KODE_SEKSI_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('C.KD_UNIT_ORGANISASI', $currentPegawai->KD_UNIT_ORGANISASI)
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else if (in_array($currentPegawai->KD_JAB_STRUKTURAL, ['304'])) { //Kepala Kantor
//zona
$data->orGroupStart()
->where('A.KPPADM_ZONA', session('kppadm'))
->groupEnd();
//perekam
$data->orGroupStart()
->where('A.KPP_ADM_PEREKAM', session('kppadm') . '-' . $currentPegawai->KD_UNIT_ORGANISASI)
->groupEnd();
//pengampu
$data->join('PEGAWAI C', 'A.NIP_AR_PENGAMPU=C.NIP9', 'left');
$data->orGroupStart()
->where('A.KPPADM_PENGAMPU', session('kppadm'))
->groupEnd();
} else {
return [];
}
}
}
$data->groupEnd();
$data->where("KPPADM_ZONA", $query);
if ($globalFilter) {

2
app/Views/kewilayahan/dist/kpdl.js vendored

File diff suppressed because one or more lines are too long

2
app/Views/kewilayahan/dist/monitoring.js vendored

File diff suppressed because one or more lines are too long

4
app/Views/kewilayahan/dist/peta.css vendored

File diff suppressed because one or more lines are too long

106
app/Views/kewilayahan/dist/peta.js vendored

File diff suppressed because one or more lines are too long

84
app/Views/kewilayahan/dist/peta.js.LICENSE.txt vendored

@ -3,6 +3,23 @@
* (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
*/
/*!
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
*/
/*!
Copyright (c) 2016 Dominik Moritz
@ -12,6 +29,26 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
/**
* @license React
* react-dom-server-legacy.browser.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-dom-server.browser.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-dom.production.min.js
@ -22,6 +59,26 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* 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.
*/
/**
* @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
@ -41,3 +98,30 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* use-sync-external-store-with-selector.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.
*/
/**
* @mui/styled-engine v6.1.2
*
* @license MIT
* 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.
*/

4
app/Views/kewilayahan/kytp/componentDepan/NipPengampu.js

@ -21,7 +21,7 @@ const NipPengampu = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMa
const [kppSelected, setKppSelected] = useState({})
const [seksiSelected, setSeksiSelected] = useState([])
const [arSelected, setArSelected] = useState([])
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
useEffect(() => {
jquery.ajax({
url: base_url + 'kewilayahan/ref/kanwil',
@ -96,7 +96,7 @@ const NipPengampu = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMa
if (nip_ar_pengampu.length) {
dispatch(setSelectedOpsi(dataOpsi.pengampu))
setDataSend({ opsiWilZona: dataOpsi.pengampu.key, nip_ar_pengampu })
setHiddenGraphMatoa(true)
setHiddenGraphMatoa ? setHiddenGraphMatoa(true) : null
} else {
toast.current.show({ severity: 'info', summary: 'Info', detail: 'AR Pengampu harus dipilih' })
}

4
app/Views/kewilayahan/kytp/componentDepan/NipPerekam.js

@ -13,7 +13,7 @@ const NipPerekam = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMat
const dispatch = useDispatch()
const storeKpdl = useSelector((state) => state.kpdl)
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const [kanwil, setKanwil] = useState({})
const [kpp, setKpp] = useState(null)
@ -101,7 +101,7 @@ const NipPerekam = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMat
if (nip_ar_perekam.length) {
dispatch(setSelectedOpsi(dataOpsi.perekam))
setDataSend({ opsiWilZona: dataOpsi.perekam.key, nip_ar_perekam })
setHiddenGraphMatoa(true)
setHiddenGraphMatoa ? setHiddenGraphMatoa(true) : null
} else {
toast.current.show({ severity: 'info', summary: 'Info', detail: 'AR Perekam harus dipilih' })
}

4
app/Views/kewilayahan/kytp/componentPenugasanAktifitas/PenugasanKpdl.js

@ -20,7 +20,7 @@ var relativeTime = require('dayjs/plugin/relativeTime')
const fetchSize = 101
const PenugasanKpdl = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const [data, setData] = useState({
@ -193,7 +193,7 @@ const PenugasanKpdl = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

22
app/Views/kewilayahan/kytp/componentProgresifitas/Identifikasi.js

@ -1,7 +1,7 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import Highcharts from 'highcharts'
import HighchartsReact from 'highcharts-react-official'
import { Col, Row } from 'reactstrap'
import { Col, Label, Row } from 'reactstrap'
import { format_angka } from '../util'
import collect from 'collect.js'
import jquery from 'jquery'
@ -16,7 +16,7 @@ var relativeTime = require('dayjs/plugin/relativeTime')
const fetchSize = 101
const Identifikasi = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const [dataGraph, setDataGraph] = useState(null)
const [dataDetail, setDataDetail] = useState({ meta: { data: [], total: 0 } })
@ -72,7 +72,7 @@ const Identifikasi = ({ dataSend }) => {
return `${this.key} : ${Number(this.y).toLocaleString('id-ID', {
minimumFractionDigits: 0,
maximumFractionDigits: 0
})} <br> ${Number(this.percentage).toLocaleString('id-ID')}%`
})} Lokasi <br> ${Number(this.percentage).toLocaleString('id-ID')}%`
}
}
},
@ -103,12 +103,13 @@ const Identifikasi = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
// const base_url = '/engineN/'
// console.log({ dataSend, query })
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],
queryFn: async ({ pageParam = 0 }) => {
const url = new URL(base_url + 'kewilayahan/sebaran/identifikasi/detail')
const url = new URL(location.protocol + '//' + location.hostname + base_url + 'kewilayahan/sebaran/identifikasi/detail')
url.searchParams.set('start', `${pageParam * fetchSize}`)
url.searchParams.set('size', `${fetchSize}`)
url.searchParams.set('filters', JSON.stringify(columnFilters ?? []))
@ -134,7 +135,7 @@ const Identifikasi = ({ dataSend }) => {
keepPreviousData: true,
refetchOnWindowFocus: false
})
console.log(location.hostname)
const flatData = useMemo(() => data?.pages.flatMap((page) => page.data) ?? [], [data])
const totalDBRowCount = data?.pages?.[0]?.meta?.totalRowCount ?? 0
const totalFetched = flatData.length
@ -318,8 +319,17 @@ const Identifikasi = ({ dataSend }) => {
<HighchartsReact ref={refChart} highcharts={Highcharts} options={optionsChart(dataGraph, 'Identifikasi Lokasi Matoa')} />
</Col>
</Row>
<Row>
<Col>
<div className="text-xs">
<div>Berdasarkan : </div>
<ul>
<li>Zona Pengawasan : Zona Pengawasan yang diampu unit</li>
<li>Perekam : yang dilakukan oleh pegawai unit</li>
<li>Pengampu : wp yang diampu oleh unit </li>
</ul>
</div>
<Sidebar
header={
<>

4
app/Views/kewilayahan/kytp/componentProgresifitas/JenisStatusWp.js

@ -18,7 +18,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const JenisStatusWp = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const refChart2 = useRef(null)
@ -105,7 +105,7 @@ const JenisStatusWp = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

4
app/Views/kewilayahan/kytp/componentProgresifitas/KLU.js

@ -18,7 +18,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const KLU = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const refChart1 = useRef(null)
@ -188,7 +188,7 @@ const KLU = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

4
app/Views/kewilayahan/kytp/componentProgresifitas/PayComp.js

@ -20,7 +20,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const PayComp = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const refChart1 = useRef(null)
@ -120,7 +120,7 @@ const PayComp = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

4
app/Views/kewilayahan/kytp/componentProgresifitas/Pembayaran.js

@ -20,7 +20,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const Pembayaran = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const refChart1 = useRef(null)
@ -120,7 +120,7 @@ const Pembayaran = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

4
app/Views/kewilayahan/kytp/componentProgresifitas/Pengampu.js

@ -18,7 +18,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const Pengampu = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const refChart2 = useRef(null)
@ -105,7 +105,7 @@ const Pengampu = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

4
app/Views/kewilayahan/kytp/componentProgresifitas/SPTTahunan.js

@ -18,7 +18,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const SPTTahunan = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const [data, setData] = useState(null)
@ -100,7 +100,7 @@ const SPTTahunan = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

4
app/Views/kewilayahan/kytp/componentProgresifitas/Sof.js

@ -17,7 +17,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const Sof = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const [data, setData] = useState([])
const [total, setTotal] = useState({ totalC: 0, totalP1: 0, totalP2: 0 })
@ -65,7 +65,7 @@ const Sof = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

4
app/Views/kewilayahan/kytp/componentProgresifitas/ZonaPengawasan.js

@ -18,7 +18,7 @@ var customParseFormat = require('dayjs/plugin/customParseFormat')
const fetchSize = 101
const ZonaPengawasan = ({ dataSend }) => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart = useRef(null)
const refChart2 = useRef(null)
@ -101,7 +101,7 @@ const ZonaPengawasan = ({ dataSend }) => {
const [columnFilters, setColumnFilters] = useState([])
const [globalFilter, setGlobalFilter] = useState()
const [sorting, setSorting] = useState([])
const base_url = '<?=base_url()?>'
const base_url = location.protocol + '//' + location.hostname + '/engineN/'
const { data, fetchNextPage, isError, isFetching, isLoading } = useInfiniteQuery({
queryKey: ['table-data', columnFilters, globalFilter, sorting],

3
app/Views/kewilayahan/kytp/kpdl.js

@ -23,7 +23,7 @@ import { setSelectedOpsi } from './store/KpdlStore'
// let datasend = {}
const Root = () => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const refChart1 = useRef(null)
const toast = useRef(null)
const dispatch = useDispatch()
@ -716,6 +716,7 @@ const Root = () => {
<div id="graph_matoa_agg">
<HighchartsReact ref={refChart1} highcharts={Highcharts} options={optionsGraphMatoaAgg} />
</div>
<div className="pl-3 pb-1">Berdasarkan : Zona Pengawasan yang diampu unit</div>
</CardBody>
</Card>
</Col>

66
app/Views/kewilayahan/kytp/store/PetaStore.js

@ -0,0 +1,66 @@
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'
import jquery from 'jquery'
export const getStatusSPT = createAsyncThunk('peta/getStatusSPT', async () => {
const response = await jquery.get(`/engineN/kewilayahan/ref/statusspt`)
return response
})
export const petaSlice = createSlice({
name: 'peta',
initialState: {
selectedOpsi: null,
user: {},
warnaBayar: {
black: {
wb: 'black',
info: 'di bawah Rp0',
warna: '#202020'
},
BLACK: {
wb: 'BLACK',
info: 'Rp0',
warna: '#685f62'
},
red: {
wb: 'red',
info: 'di bawah 5juta',
warna: '#ff0000'
},
yellow: {
wb: 'yellow',
info: '5 jt s.d. 48 jt',
warna: '#aba210'
},
green: {
wb: 'green',
info: '48 jt s.d. 100 jt',
warna: '#00a800'
},
blue: {
wb: 'blue',
info: 'di atas 100 jt',
warna: '#0000e1'
}
},
statusSPT: {},
cqlFilterWilayah: '(1=1)'
},
reducers: {
setSelectedOpsi: (state, action) => {
state.selectedOpsi = action.payload
},
setCqlFilterWilayah: (state, action) => {
state.cqlFilterWilayah = action.payload
}
},
extraReducers: (builder) => {
builder.addCase(getStatusSPT.fulfilled, (state, action) => {
state.statusSPT = action.payload
})
}
})
export const { setSelectedOpsi, setDataMonitoring, setDataUrut, setCqlFilterWilayah } = petaSlice.actions
export default petaSlice.reducer

8
app/Views/kewilayahan/kytp/store/store.js

@ -1,7 +1,9 @@
import { configureStore } from "@reduxjs/toolkit"
import kpdl from "./KpdlStore"
import { configureStore } from '@reduxjs/toolkit'
import kpdl from './KpdlStore'
import peta from './PetaStore'
const rootReducer = {
kpdl
kpdl,
peta
}
const store = configureStore({
reducer: rootReducer,

16
app/Views/kewilayahan/monitoring/componentMonitoring/Kanwil.js

@ -13,7 +13,7 @@ import { useSelector } from 'react-redux'
const date = new Date()
const Kanwil = () => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const toast = useRef(null)
const refChart1 = useRef()
@ -215,7 +215,19 @@ const Kanwil = () => {
mantineTableBodyProps={{ className: 'mb-3' }}
mantineTableHeadCellProps={{ align: 'center', className: 'text-xs p-1' }}
enableTableFooter
renderBottomToolbar={false}
renderBottomToolbar={
<div>
<Row className="pl-5 text-xs">
<Col>
<Label>Legenda Tabel :</Label>
<ul>
<li style={{ color: 'blue' }}>Kepala Seksi</li>
<li style={{ color: 'red' }}>Eks Kepala/Anggota Seksi terkait</li>
</ul>
</Col>
</Row>
</div>
}
mantineTableProps={{
highlightOnHover: false,
withColumnBorders: true

18
app/Views/kewilayahan/monitoring/componentMonitoring/Kpp.js

@ -13,7 +13,7 @@ import { useSelector } from 'react-redux'
const date = new Date()
const Kpp = () => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const toast = useRef(null)
const [isLoading, setIsLoading] = useState()
const rowVirtualizerInstanceRef = useRef(null)
@ -96,7 +96,7 @@ const Kpp = () => {
const table = useMantineReactTable({
columns,
data, //10,000 rows
enableBottomToolbar: false,
enableBottomToolbar: true,
enableGlobalFilterModes: true,
enablePagination: false,
enableRowVirtualization: true,
@ -117,7 +117,19 @@ const Kpp = () => {
}),
mantineTableBodyProps: { className: 'mb-3' },
mantineTableHeadCellProps: { align: 'center', className: 'text-xs p-1' },
renderBottomToolbar: false,
renderBottomToolbar: ({ table }) => (
<div>
<Row className="pl-5 text-xs">
<Col>
<Label>Legenda Tabel :</Label>
<ul>
<li style={{ color: 'blue' }}>Kepala Seksi</li>
<li style={{ color: 'red' }}>Eks Kepala/Anggota Seksi terkait</li>
</ul>
</Col>
</Row>
</div>
),
mantineTableProps: {
highlightOnHover: false,
withColumnBorders: true

2
app/Views/kewilayahan/monitoring/componentMonitoring/Pegawai.js

@ -13,7 +13,7 @@ import { useSelector } from 'react-redux'
const date = new Date()
const Pegawai = () => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const toast = useRef(null)
const refChart1 = useRef()

18
app/Views/kewilayahan/monitoring/componentMonitoring/Seksi.js

@ -13,7 +13,7 @@ import { useSelector } from 'react-redux'
const date = new Date()
const Seksi = () => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const toast = useRef(null)
const refChart1 = useRef()
@ -106,7 +106,7 @@ const Seksi = () => {
const table = useMantineReactTable({
columns,
data, //10,000 rows
enableBottomToolbar: false,
enableBottomToolbar: true,
enableGlobalFilterModes: true,
enableRowVirtualization: true,
mantineTableContainerProps: { sx: { maxHeight: '600px' } },
@ -126,7 +126,19 @@ const Seksi = () => {
}),
mantineTableBodyProps: { className: 'mb-3' },
mantineTableHeadCellProps: { align: 'center', className: 'text-xs p-1' },
renderBottomToolbar: false,
renderBottomToolbar: ({ table }) => (
<div>
<Row className="pl-5 text-xs">
<Col>
<Label>Legenda Tabel :</Label>
<ul>
<li style={{ color: 'blue' }}>Kepala Seksi</li>
<li style={{ color: 'red' }}>Eks Kepala/Anggota Seksi terkait</li>
</ul>
</Col>
</Row>
</div>
),
mantineTableProps: {
highlightOnHover: false,
withColumnBorders: true

14
app/Views/kewilayahan/monitoring/index.js

@ -21,7 +21,7 @@ import { Skeleton } from 'primereact/skeleton'
const date = new Date()
const App = () => {
const base_url = '<?=base_url()?>'
const base_url = '/engineN/'
const toast = useRef(null)
const [active, setActive] = useState(0)
const refTab = useRef()
@ -184,6 +184,7 @@ const App = () => {
{loading ? (
<Skeleton className="" shape="rectangle" height="17rem" width="100%"></Skeleton>
) : (
<>
<TabView activeIndex={active} scrollable onTabChange={(e) => setActive(e.index)} className="p-0" pt={{ panelContainer: { className: 'p-0' } }}>
<TabPanel id="tab_1" header="Kanwil" className="p-0">
<Kanwil />
@ -198,17 +199,10 @@ const App = () => {
<Pegawai />
</TabPanel>
</TabView>
</>
)}
</CardBody>
<CardFooter>
<div>
<Label>Legenda Tabel :</Label>
<ul>
<li style={{ color: 'blue' }}>Kepala Seksi</li>
<li style={{ color: 'red' }}>Eks Kepala/Anggota Seksi terkait</li>
</ul>
</div>
</CardFooter>
<CardFooter></CardFooter>
</Card>
<Row>

195
app/Views/kewilayahan/peta/MenuBawah.js

@ -0,0 +1,195 @@
/* eslint-disable no-unused-vars */
import React, { useRef } from 'react'
import { register } from 'swiper/element/bundle'
register()
import Swiper from 'swiper'
import { Navigation, Pagination } from 'swiper/modules'
// import Swiper and modules styles
import 'swiper/css'
import 'swiper/css/navigation'
import 'swiper/css/pagination'
import { Button, Card, CardBody } from 'reactstrap'
import { useEffect, useState } from 'react'
import { Category, Filter, Filter2, FilterAlt, Layers, Money, PointOfSale, RateReview, UploadFile } from '@mui/icons-material'
// import 'primereact/resources/themes/lara-light-cyan/theme.css'
// import PoiInRadiusCenter from "./PoiInRadiusCenter"
// import PopUpWilayah from "./PopUpFilter/PoUpWilayah"
// import { GeoJSON } from 'react-leaflet'
import { useDispatch, useSelector } from 'react-redux'
import PopUpWilayah from './PoUpWilayah'
import jquery from 'jquery'
import { matoaLayers } from './layers/overlayLayers'
import PopUPTematikPembayaran from './PopUPTematikPembayaran'
import PopUpRatingGoogle from './PopUpRatingGoogle'
// import PoiInRadiusCenter from "./PoiInRadiusCenter"
const MenuBawah = (props) => {
const { wmsRef, refFeatureBawah, zonaRef, dataSend, setDataSend } = props
const [isOpenPopUpWilayah, setIsOpenPopUpWilayah] = useState(false)
const [isOpenPopUpPembayaran, setIsOpenPopUpPembayaran] = useState(false)
const [isOpenPopUpRating, setIsOpenPopUpRating] = useState(false)
// const storeMap = useSelector((state) => state.crmmap)
const [dataOpsi, setDataOpsi] = useState({})
const [filterWilayah, setFilterWilayah] = useState('(1=1)')
useEffect(() => {
new Swiper('.swiper', {
slidesPerView: 4,
grid: {
rows: 0
},
mousewheel: {
forceToAxis: false
},
focusableElements: true,
allowTouchMove: true
})
}, [])
const onClickWilayah = (e) => {
// console.log(e.target)
setIsOpenPopUpWilayah(true)
}
const onClickRatingUlasan = (e) => {
// console.log(e)
setIsOpenPopUpRating(true)
}
const dispatch = useDispatch()
useEffect(() => {
jquery.getJSON('/engineN/kewilayahan/ref/opsi').then((response) => {
setDataOpsi(response)
dispatch(setSelectedOpsi(response.default))
})
}, [])
const onClick = () => {}
return (
<>
<Card className="p-0 m-0" color="primary" style={{ borderRadius: 0, minWidth: '400px', zIndex: 300 }}>
<CardBody className="p-0" style={{ width: '100vw' }}>
<div className="swiper" style={{ minWidth: '400px' }}>
<div className="swiper-wrapper" onClick={(e) => onClick(e)}>
<swiper-slide class="d-flex justify-content-center">
<Button
onClick={(e) => onClickWilayah(e)}
style={{ borderRadius: 0 }}
tag={'button'}
className="py-50 d-flex flex-column justify-content-center align-content-center"
color="primary"
size="lg"
>
<FilterAlt fontSize="medium" className="align-self-center" />
<span className="text-xs align-self-center">Filter</span>
</Button>
</swiper-slide>
{/* <swiper-slide class="d-flex justify-content-center">
<Button
style={{ borderRadius: 0 }}
tag={'button'}
className="py-50 d-flex flex-column justify-content-center align-content-center"
color="primary"
size="lg"
>
<Category fontSize="medium" className="align-self-center" />
<span className="text-xs align-self-center">Kategori</span>
</Button>
</swiper-slide> */}
<swiper-slide class="d-flex justify-content-center">
<Button
onClick={(e) => {
// console.log(matoaLayers.poiMatoaNpwpLayer.wmsParams.cql_filter)
setIsOpenPopUpPembayaran(true)
}}
style={{ borderRadius: 0 }}
tag={'button'}
className="py-50 d-flex flex-column justify-content-center align-content-center"
color="primary"
size="lg"
>
<div className="flex justify-content-around">
<Money fontSize="medium" className="align-self-center" /> <UploadFile fontSize="medium" className="align-self-center" />
</div>
<span className="text-xs align-self-center">Pembayaran & SPT</span>
</Button>
</swiper-slide>
<swiper-slide class="d-flex justify-content-center">
<Button
onClick={(e) => onClickRatingUlasan(e)}
style={{ borderRadius: 0 }}
tag={'button'}
className="py-50 d-flex flex-column justify-content-center align-content-center"
color="primary"
size="lg"
>
<RateReview fontSize="medium" className="align-self-center" />
<span className="text-xs align-self-center text-nowrap">Rating & Ulasan Google</span>
</Button>
</swiper-slide>
{/* <swiper-slide class="d-flex justify-content-center">
<Button
onClick={(e) => onClick(e)}
style={{ borderRadius: 0 }}
tag={'button'}
className="py-50 d-flex flex-column justify-content-center align-content-center"
color="primary"
size="lg"
>
<UploadFile fontSize="medium" className="align-self-center" />
<span className="text-xs align-self-center">SPT</span>
</Button>
</swiper-slide> */}
{/* <swiper-slide class="d-flex justify-content-center">
<Button
onClick={(e) => onClick(e)}
style={{ borderRadius: 0 }}
tag={'button'}
className="py-50 d-flex flex-column justify-content-center align-content-center"
color="primary"
size="lg"
>
<PointOfSale fontSize="medium" className="align-self-center" />
<span className="text-xs align-self-center">Potensi</span>
</Button>
</swiper-slide> */}
</div>
</div>
<div className="swiper-scrollbar"></div>
</CardBody>
</Card>
<div id="aaa" style={{ zIndex: 200 }}></div>
<PopUpWilayah
dataSend={dataSend}
setDataSend={setDataSend}
dataOpsi={dataOpsi}
setDataOpsi={setDataOpsi}
isOpenPopUpWilayah={isOpenPopUpWilayah}
setIsOpenPopUpWilayah={setIsOpenPopUpWilayah}
wmsRef={wmsRef}
zonaRef={zonaRef}
refFeatureBawah={refFeatureBawah}
/>
<PopUPTematikPembayaran
dataSend={dataSend}
setDataSend={setDataSend}
dataOpsi={dataOpsi}
setDataOpsi={setDataOpsi}
isOpenPopUpPembayaran={isOpenPopUpPembayaran}
setIsOpenPopUpPembayaran={setIsOpenPopUpPembayaran}
wmsRef={wmsRef}
zonaRef={zonaRef}
refFeatureBawah={refFeatureBawah}
/>
<PopUpRatingGoogle
dataSend={dataSend}
setDataSend={setDataSend}
dataOpsi={dataOpsi}
setDataOpsi={setDataOpsi}
isOpenPopUpRating={isOpenPopUpRating}
setIsOpenPopUpRating={setIsOpenPopUpRating}
wmsRef={wmsRef}
zonaRef={zonaRef}
refFeatureBawah={refFeatureBawah}
/>
</>
)
}
export default MenuBawah

678
app/Views/kewilayahan/peta/PoUpWilayah.js

@ -0,0 +1,678 @@
import React from 'react'
import { BottomNavigation, BottomNavigationAction, Box, Paper, Skeleton, SwipeableDrawer, styled } from '@mui/material'
import { useEffect, useRef, useState } from 'react'
import { Col, Label, Nav, NavItem, NavLink, Row, TabContent, TabPane } from 'reactstrap'
import { AutorenewOutlined, CloseOutlined } from '@mui/icons-material'
import { red } from '@mui/material/colors'
import { useDispatch } from 'react-redux'
import collect from 'collect.js'
import { useMap } from 'react-leaflet'
import L from 'leaflet'
import { Button as ButtonP } from 'primereact/button'
const anchor = 'bottom'
const StyledBox = styled('div')(({ theme }) => ({
backgroundColor: theme.palette.mode === 'light' ? '#fff' : grey[800]
}))
const Item = styled(Paper)(({ theme }) => ({
backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
...theme.typography.body2,
padding: theme.spacing(1),
textAlign: 'center',
color: theme.palette.text.secondary
}))
import { MultiSelect } from 'react-multi-select-component'
import Select from 'react-select'
import jquery from 'jquery'
import { isObjEmpty } from '../kytp/util'
import { setCqlFilterWilayah, setSelectedOpsi } from '../kytp/store/PetaStore'
import { Toast } from 'primereact/toast'
import NipPerekam from './components/NipPerekam'
import NipPengampu from './components/NipPengampu'
import { matoaLayers } from './layers/overlayLayers'
const PopUpWilayah = (props) => {
const { isOpenPopUpWilayah, setIsOpenPopUpWilayah, wmsRef, refFeatureBawah, zonaRef, dataSend, setDataSend, dataOpsi, setDataOpsi } = props
const toast = useRef()
const map = useMap()
const dispatch = useDispatch()
const [tabActive, setTabActive] = useState('zona')
const [isTerapkan, setIsTerapkan] = useState(false)
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 toggle = (tab) => {
setTabActive(tab)
}
useEffect(() => {
jquery.ajax({
url: '/engineN/kewilayahan/ref/propinsi',
method: 'GET',
dataType: 'json',
success: (data) => {
setProp(data)
}
})
jquery.ajax({
url: '/engineN/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: '/engineN/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: '/engineN/kewilayahan/ref/kecamatan',
method: 'GET',
dataType: 'json',
data: { kota },
success: (data) => {
setKec(data)
}
})
}
}, [kotaSelected])
useEffect(() => {
setKel([])
setKelSelected([])
if (kecSelected.length && !isObjEmpty(kecSelected)) {
const kec = collect(kecSelected).pluck('value').all()
jquery.ajax({
url: '/engineN/kewilayahan/ref/kelurahan',
method: 'POST',
dataType: 'json',
data: { kec },
success: (data) => {
setKel(data)
}
})
}
}, [kecSelected])
useEffect(() => {
setKpp([])
setSeksi([])
setAr([])
setZp([])
setKppSelected(null)
setSeksiSelected([])
setArSelected([])
setZpSelected([])
if (kanwilSelected && !isObjEmpty(kanwilSelected)) {
const kanwil = kanwilSelected.value
jquery.ajax({
url: '/engineN/kewilayahan/ref/zpkpp',
method: 'POST',
dataType: 'json',
data: { kanwil },
success: (data) => {
setKpp(data)
}
})
}
}, [kanwilSelected])
useEffect(() => {
setSeksi([])
setAr([])
setZp([])
setSeksiSelected([])
setArSelected([])
setZpSelected([])
if (kppSelected && !isObjEmpty(kppSelected)) {
const kpp = kppSelected.value
jquery.ajax({
url: '/engineN/kewilayahan/ref/zpseksi',
method: 'POST',
dataType: 'json',
data: { kpp },
success: (data) => {
setSeksi(data)
}
})
}
}, [kppSelected])
useEffect(() => {
setAr([])
setZp([])
setArSelected([])
setZpSelected([])
if (seksiSelected && !isObjEmpty(seksiSelected)) {
const kpp = kppSelected.value
const seksi = collect(seksiSelected).pluck('value').all()
jquery.ajax({
url: '/engineN/kewilayahan/ref/zpar',
method: 'POST',
dataType: 'json',
data: { kpp, seksi },
success: (data) => {
setAr(data)
}
})
}
}, [seksiSelected])
useEffect(() => {
setZp([])
setZpSelected([])
if (arSelected && !isObjEmpty(arSelected)) {
const kpp = kppSelected.value
const seksi = collect(seksiSelected).pluck('value').all()
const ar = collect(arSelected).pluck('value').all()
jquery.ajax({
url: '/engineN/kewilayahan/ref/zpzp',
method: 'POST',
dataType: 'json',
data: { kpp, seksi, ar },
success: (data) => {
setZp(data)
}
})
}
}, [arSelected])
const toggleDrawer = (anchor, open) => (event) => {
if (event && event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {
return
}
setIsOpenPopUpWilayah(open)
}
const toggleTab = (newVal) => {
setTabActive(newVal)
}
const onClickReset = () => {
refFeatureBawah.current.clearLayers()
matoaLayers.poiMatoaNpwpLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: '(1=1)'
})
matoaLayers.poiMatoaNpwpNullLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: '(1=1)'
})
matoaLayers.poiGoogleLayer.setParams({
styles: 'poi_google',
cql_filter: '(1=1)'
})
setIsOpenPopUpWilayah(false)
}
const buttonProsesOnClick = () => {
refFeatureBawah.current.clearLayers()
const opsiWilZona = tabActive
const adm4_pcode = collect(kelSelected).pluck('value').all()
const adm4_pcode2 = collect(kelSelected).pluck('value2').all()
const id_poly_zona = collect(zpSelected).pluck('value').all()
const id_poly_zona2 = collect(zpSelected).pluck('value2').all()
switch (opsiWilZona) {
case 'wilayah':
if (adm4_pcode.length) {
dispatch(setSelectedOpsi(dataOpsi.wilayah))
setDataSend({ opsiWilZona: dataOpsi.wilayah.key, adm4_pcode, id_poly_zona: [] })
//ID_POLY_ZONA
const par_kelurahan = adm4_pcode2.join("','")
const cq_filter_poi = "ADM4_PCODE in ('" + par_kelurahan + "')"
dispatch(setCqlFilterWilayah(cq_filter_poi))
matoaLayers.poiMatoaNpwpLayer.setParams({
style: 'poi_matoa_npwp',
cql_filter: cq_filter_poi
})
matoaLayers.poiMatoaNpwpNullLayer.setParams({
style: 'poi_matoa_npwp',
cql_filter: cq_filter_poi
})
matoaLayers.poiGoogleLayer.setParams({
style: 'poi_google',
cql_filter: cq_filter_poi
})
jquery.ajax({
url: '/engineN/kewilayahan/peta/kelurahanpoly',
type: 'post',
dataType: 'json',
data: {
adm4_pcode
},
success: (response) => {
if (response) {
const lyr_kota = L.geoJSON(response, {
style: function (feature) {
return {
color: 'blue',
fillOpacity: 0,
weight: 2,
dashArray: '30 10',
interactive: false
}
}
}).addTo(refFeatureBawah.current)
map.fitBounds(lyr_kota.getBounds()).setZoom(map.getZoom() - 1)
setIsOpenPopUpWilayah(false)
}
}
})
} else {
toast.current.show({ severity: 'info', summary: 'Info', detail: 'Kelurahan harus dipilih' })
}
break
case 'zona':
if (id_poly_zona.length) {
dispatch(setSelectedOpsi(dataOpsi.zona))
setDataSend({ opsiWilZona: dataOpsi.zona.key, adm4_pcode: [], id_poly_zona })
//ID_POLY_ZONA
const par_zona = id_poly_zona2.join("','")
const cq_filter_poi = "ID_POLY_ZONA in ('" + par_zona + "')"
dispatch(setCqlFilterWilayah(cq_filter_poi))
matoaLayers.poiMatoaNpwpLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: cq_filter_poi
})
matoaLayers.poiMatoaNpwpNullLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: cq_filter_poi
})
matoaLayers.poiGoogleLayer.setParams({
styles: 'poi_google',
cql_filter: cq_filter_poi
})
jquery.ajax({
url: '/engineN/kewilayahan/peta/zonapoly',
type: 'post',
dataType: 'json',
data: {
id_poly_zona
},
success: (response) => {
if (response) {
const lyr_kota = L.geoJSON(response, {
style: function (feature) {
return {
color: 'blue',
fillOpacity: 0,
weight: 2,
dashArray: '30 10',
interactive: false
}
}
}).addTo(refFeatureBawah.current)
map.fitBounds(lyr_kota.getBounds()).setZoom(map.getZoom() - 1)
setIsOpenPopUpWilayah(false)
}
}
})
} else {
toast.current.show({ severity: 'info', summary: 'Info', detail: 'Zona harus dipilih' })
}
break
default:
break
}
}
return (
<>
<SwipeableDrawer anchor={anchor} open={isOpenPopUpWilayah} onClose={toggleDrawer(anchor, false)} onOpen={toggleDrawer(anchor, true)}>
<Box
sx={{
flexGrow: 1,
height: 'calc(100vh - 100px)',
width: '100%',
px: 2,
py: 2
// height: "100%",
// overflow: "auto"
}}
>
<Nav tabs>
<NavItem>
<NavLink
active={tabActive === 'zona'}
onClick={() => {
toggleTab('zona')
}}
>
Zona Pengawasan
</NavLink>
</NavItem>
<NavItem>
<NavLink
active={tabActive === 'wilayah'}
onClick={() => {
toggleTab('wilayah')
}}
>
Wil. Administratif
</NavLink>
</NavItem>
<NavItem>
<NavLink
active={tabActive === 'pengampu'}
onClick={() => {
toggleTab('pengampu')
}}
>
Pengampu
</NavLink>
</NavItem>
<NavItem>
<NavLink
active={tabActive === 'perekam'}
onClick={() => {
toggleTab('perekam')
}}
>
Perekam
</NavLink>
</NavItem>
</Nav>
<hr />
<TabContent className="py-50" activeTab={tabActive}>
{isTerapkan ? (
<Row>
<Col xs="12">
<Skeleton width={'100%'} height={'50px'} variant="rectangular" />
</Col>
</Row>
) : (
<>
<TabPane tabId="zona">
<Row>
<Col md="3">
<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="3">
<Label className="form-label" for="Pilih KPP">
KPP
</Label>
<Select
placeholder="Pilih KPP"
className="basic-single w-100"
onChange={(e) => {
setKppSelected(e)
}}
classNamePrefix="select"
// defaultValue={kanwilSelected}
value={kppSelected}
isClearable={false}
options={kpp}
/>
</Col>
<Col md="3">
<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>
</Row>
<Row className="mt-2">
<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="3" className="pt-2">
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="" rounded className="w-10rem text-white text-base" />
</Col>
</Row>
</TabPane>
<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>
</Row>
<Row className="mt-2">
<Col sm="12">
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="" rounded className="w-10rem text-white text-base" />
</Col>
</Row>
</TabPane>
<TabPane tabId="perekam">
<NipPerekam
dataSend={dataSend}
setDataSend={setDataSend}
activeTab={tabActive}
toast={toast}
setHiddenGraphMatoa={false}
dataOpsi={dataOpsi}
setIsOpenPopUpWilayah={setIsOpenPopUpWilayah}
refFeatureBawah={refFeatureBawah}
/>
</TabPane>
<TabPane tabId="pengampu">
<NipPengampu
dataSend={dataSend}
setDataSend={setDataSend}
activeTab={tabActive}
toast={toast}
setHiddenGraphMatoa={false}
dataOpsi={dataOpsi}
setIsOpenPopUpWilayah={setIsOpenPopUpWilayah}
refFeatureBawah={refFeatureBawah}
/>
</TabPane>
</>
)}
</TabContent>
{/* <div style={{ marginBottom: "80px" }}>
{isTerapkan ? <Skeleton height={"200px"} width={"100%"} variant="rectangular" /> : <TabelHasil setOpen={setIsOpenPopUpWilayah} />}
</div> */}
<Paper sx={{ position: 'fixed', bottom: 0, left: 0, right: 0, zIndex: 2002 }} elevation={1}>
<BottomNavigation className="justify-content-between" sx={{ width: '100%', height: '65px' }} showLabels>
{/* <BottomNavigationAction
onClick={() => btnBawahProsesOnClick()}
className="text-primary text-xl"
sx={{ width: '50%', maxWidth: '50% !important' }}
label="Terapkan"
value="proses"
icon={<CheckCircle />}
/> */}
<BottomNavigationAction
onClick={() => onClickReset()}
className=" text-xl"
sx={{ width: '50%', maxWidth: '50% !important' }}
label="Reset Filter"
value="clear"
icon={<AutorenewOutlined color="info" />}
/>
<BottomNavigationAction
onClick={() => setIsOpenPopUpWilayah(false)}
color={red[700]}
sx={{ width: '50%', maxWidth: '50% !important' }}
label="Tutup"
value="close"
icon={<CloseOutlined color="warning" />}
/>
</BottomNavigation>
</Paper>
<Toast ref={toast} position="center" />
</Box>
</SwipeableDrawer>
</>
)
}
export default PopUpWilayah

244
app/Views/kewilayahan/peta/PopUPTematikPembayaran.js

@ -0,0 +1,244 @@
import React from 'react'
import { BottomNavigation, BottomNavigationAction, Box, Paper, Skeleton, SwipeableDrawer, styled } from '@mui/material'
import { lazy, useEffect, useMemo, useRef, useState } from 'react'
import { Card, CardHeader, CardTitle, CardBody, CardText, Input, Label, Row, Col } from 'reactstrap'
import { AutorenewOutlined, CheckCircle, Close, CloseFullscreenRounded, CloseOutlined, CloseRounded, RefreshOutlined } from '@mui/icons-material'
import { red } from '@mui/material/colors'
import { useDispatch, useSelector } from 'react-redux'
import collect from 'collect.js'
import { useMap } from 'react-leaflet'
import L from 'leaflet'
import { Button as ButtonP } from 'primereact/button'
import { MultiSelect } from 'react-multi-select-component'
import Select from 'react-select'
import jquery from 'jquery'
import { isObjEmpty } from '../kytp/util'
import { setSelectedOpsi } from '../kytp/store/PetaStore'
import { Toast } from 'primereact/toast'
import NipPerekam from './components/NipPerekam'
import NipPengampu from './components/NipPengampu'
import { matoaLayers } from './layers/overlayLayers'
const anchor = 'bottom'
const StyledBox = styled('div')(({ theme }) => ({
backgroundColor: theme.palette.mode === 'light' ? '#fff' : grey[800]
}))
const Item = styled(Paper)(({ theme }) => ({
backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
...theme.typography.body2,
padding: theme.spacing(1),
textAlign: 'center',
color: theme.palette.text.secondary
}))
const PopUPTematikPembayaran = (props) => {
const { isOpenPopUpPembayaran, setIsOpenPopUpPembayaran, wmsRef, refFeatureBawah, zonaRef, dataSend, setDataSend, dataOpsi, setDataOpsi } = props
const toast = useRef()
const map = useMap()
const dispatch = useDispatch()
const storePeta = useSelector((state) => state.peta)
const toggleDrawer = (anchor, open) => (event) => {
if (event && event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {
return
}
setIsOpenPopUpPembayaran(open)
}
const onClickReset = () => {
refFeatureBawah.current.clearLayers()
matoaLayers.poiMatoaNpwpLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: '(1=1)'
})
matoaLayers.poiMatoaNpwpNullLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: '(1=1)'
})
matoaLayers.poiGoogleLayer.setParams({
styles: 'poi_google',
cql_filter: '(1=1)'
})
setIsOpenPopUpPembayaran(false)
}
const buttonProsesOnClick = () => {
const warna_byr = []
const warna_spt = []
const bayarchecked = document.querySelectorAll('.tematik_pembayaran_checkbox:checked')
const sptchecked = document.querySelectorAll('.tematik_spt_checkbox:checked')
bayarchecked.forEach((val, idx) => {
warna_byr.push(val.value)
})
sptchecked.forEach((val, idx) => {
warna_spt.push(val.value)
})
// STATUS_SPT_TAHUNAN_TERAKHIR
if (bayarchecked.length) {
const par_bayar = warna_byr.join("','")
const par_spt = warna_spt.join("','")
const cq_filter_poi_bayar = "WARNA_PEMBAYARAN_THN_TERAKHIR in ('" + par_bayar + "')"
const cq_filter_poi_spt = "STATUS_SPT_TAHUNAN_TERAKHIR in ('" + par_spt + "')"
const paramExisting = storePeta.cqlFilterWilayah
matoaLayers.poiMatoaNpwpLayer.setParams({
styles: 'poi_matoa_npwp_bayar',
cql_filter: paramExisting + ' AND ' + cq_filter_poi_bayar + ' AND ' + cq_filter_poi_spt
// minZoom: 4
})
// matoaLayers.poiMatoaNpwpNullLayer.setParams({
// style: 'poi_matoa_npwp_bayar',
// cql_filter: paramExisting + ' AND ' + cq_filter_poi,
// minZoom: 4
// })
// map.setZoom(8)
setIsOpenPopUpPembayaran(false)
} else {
toast.current.show({ severity: 'info', summary: 'Info', detail: 'Rentang Pembayaran harus dipilih ' })
}
}
return (
<>
<SwipeableDrawer anchor={anchor} open={isOpenPopUpPembayaran} onClose={toggleDrawer(anchor, false)} onOpen={toggleDrawer(anchor, true)}>
<Box
sx={{
flexGrow: 1,
height: '400px',
width: '100%',
overflow: 'auto',
marginBottom: '80px',
px: 2,
py: 2
}}
>
<CardHeader className="mb-0 pb-0">
<CardTitle className="mb-0 pb-0" tag="h4">
Tematik Pembayaran
</CardTitle>
</CardHeader>
<CardBody>
<CardText className="mb-0 pb-0">Pilih rentang pembayaran :</CardText>
<Row className="">
<Col sm="12">
<div className="demo-inline-spacing border pt-25 pb-2 pl-3 ">
{Object.values(storePeta.warnaBayar).map((val, idx) => {
return (
<div className="form-check form-check-primary " key={idx} style={{ cursor: 'pointer' }}>
<Input
style={{ cursor: 'pointer' }}
type="checkbox"
id={`primary-checkbox-${idx}`}
className="tematik_pembayaran_checkbox"
value={val.wb}
defaultChecked
/>
<Label className="form-check-label" for={`primary-checkbox-${idx}`} style={{ color: val.warna, cursor: 'pointer' }}>
{val.info}
</Label>
</div>
)
})}
</div>
</Col>
</Row>
<hr />
<Row className="">
<Col sm="12">
<CardText className="mb-0 pb-0">Pilih Status SPT :</CardText>
<div className="demo-inline-spacing border pt-25 pb-2 pl-3 ">
{Object.values(storePeta.statusSPT).map((val, idx) => {
return (
<div className="form-check form-check-primary " key={idx} style={{ cursor: 'pointer' }}>
<Input
style={{ cursor: 'pointer' }}
type="checkbox"
id={`spt-${idx}`}
className="tematik_spt_checkbox"
value={val[0].ID_STATUS_SPT}
defaultChecked
/>
<Label className="form-check-label" for={`spt-${idx}`} style={{ cursor: 'pointer' }}>
{val[0].KETERANGAN}
</Label>
</div>
)
})}
</div>
</Col>
</Row>
<Row className="mt-2">
<Col sm="12">
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="" rounded className="w-10rem text-white text-base" />
</Col>
</Row>
{/* <div className="form-check form-check-secondary">
<Input type="checkbox" id="tematik_pembayaran_checkbox" defaultChecked />
<Label className="form-check-label" for="secondary-checkbox">
Secondary
</Label>
</div>
<div className="form-check form-check-success">
<Input type="checkbox" id="tematik_pembayaran_checkbox" defaultChecked />
<Label className="form-check-label" for="success-checkbox">
Success
</Label>
</div>
<div className="form-check form-check-danger">
<Input type="checkbox" id="tematik_pembayaran_checkbox" defaultChecked />
<Label className="form-check-label" for="danger-checkbox">
Danger
</Label>
</div>
<div className="form-check form-check-warning">
<Input type="checkbox" id="warning-checkbox" defaultChecked />
<Label className="form-check-label" for="warning-checkbox">
Warning
</Label>
</div>
<div className="form-check form-check-info">
<Input type="checkbox" id="info-checkbox" defaultChecked />
<Label className="form-check-label" for="info-checkbox">
Info
</Label>
</div> */}
</CardBody>
<Paper sx={{ position: 'fixed', bottom: 0, left: 0, right: 0, zIndex: 2002 }} elevation={1}>
<BottomNavigation className="justify-content-between" sx={{ width: '100%', height: '65px' }} showLabels>
<BottomNavigationAction
onClick={() => onClickReset()}
className=" text-xl"
sx={{ width: '50%', maxWidth: '50% !important' }}
label="Reset Filter"
value="clear"
icon={<AutorenewOutlined color="info" />}
/>
<BottomNavigationAction
onClick={() => setIsOpenPopUpPembayaran(false)}
color={red[700]}
sx={{ width: '50%', maxWidth: '50% !important' }}
label="Tutup"
value="close"
icon={<CloseOutlined color="warning" />}
/>
</BottomNavigation>
</Paper>
<Toast ref={toast} position="center" />
</Box>
</SwipeableDrawer>
</>
)
}
export default PopUPTematikPembayaran

170
app/Views/kewilayahan/peta/PopUpRatingGoogle.js

@ -0,0 +1,170 @@
import React from 'react'
import { BottomNavigation, BottomNavigationAction, Box, Paper, Skeleton, Slider, SwipeableDrawer, styled } from '@mui/material'
import { lazy, useEffect, useMemo, useRef, useState } from 'react'
import { Card, CardHeader, CardTitle, CardBody, CardText, Input, Label, Row, Col } from 'reactstrap'
import { AutorenewOutlined, CheckCircle, Close, CloseFullscreenRounded, CloseOutlined, CloseRounded, RefreshOutlined } from '@mui/icons-material'
import { red } from '@mui/material/colors'
import { useDispatch, useSelector } from 'react-redux'
import collect from 'collect.js'
import { useMap } from 'react-leaflet'
import L from 'leaflet'
import { Button as ButtonP } from 'primereact/button'
import { MultiSelect } from 'react-multi-select-component'
import Select from 'react-select'
import jquery from 'jquery'
import { isObjEmpty } from '../kytp/util'
import { setSelectedOpsi } from '../kytp/store/PetaStore'
import { Toast } from 'primereact/toast'
import NipPerekam from './components/NipPerekam'
import NipPengampu from './components/NipPengampu'
import { matoaLayers } from './layers/overlayLayers'
const anchor = 'bottom'
const StyledBox = styled('div')(({ theme }) => ({
backgroundColor: theme.palette.mode === 'light' ? '#fff' : grey[800]
}))
const Item = styled(Paper)(({ theme }) => ({
backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',
...theme.typography.body2,
padding: theme.spacing(1),
textAlign: 'center',
color: theme.palette.text.secondary
}))
function valuetext(value) {
return `${value}`
}
const PopUpRatingGoogle = (props) => {
const { isOpenPopUpRating, setIsOpenPopUpRating, wmsRef, refFeatureBawah, zonaRef, dataSend, setDataSend, dataOpsi, setDataOpsi } = props
const toast = useRef()
const map = useMap()
const dispatch = useDispatch()
const storePeta = useSelector((state) => state.peta)
const [value, setValue] = React.useState(50)
const handleChange = (event, newValue) => {
setValue(newValue)
}
const toggleDrawer = (anchor, open) => (event) => {
if (event && event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {
return
}
setIsOpenPopUpRating(open)
}
const onClickReset = () => {
refFeatureBawah.current.clearLayers()
matoaLayers.poiMatoaNpwpLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: '(1=1)'
})
matoaLayers.poiMatoaNpwpNullLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: '(1=1)'
})
matoaLayers.poiGoogleLayer.setParams({
styles: 'poi_google',
cql_filter: '(1=1)'
})
setIsOpenPopUpPembayaran(false)
}
const buttonProsesOnClick = () => {
const cq_filter_poi = "REVIEW >= '" + value + "'"
const paramExisting = storePeta.cqlFilterWilayah
matoaLayers.poiGoogleLayer.setParams({
styles: 'poi_google',
cql_filter: paramExisting + ' AND ' + cq_filter_poi
// minZoom: 4
})
// matoaLayers.poiMatoaNpwpNullLayer.setParams({
// style: 'poi_matoa_npwp_bayar',
// cql_filter: paramExisting + ' AND ' + cq_filter_poi,
// minZoom: 4
// })
// map.setZoom(8)
setIsOpenPopUpRating(false)
}
return (
<>
<SwipeableDrawer anchor={anchor} open={isOpenPopUpRating} onClose={toggleDrawer(anchor, false)} onOpen={toggleDrawer(anchor, true)}>
<Box
sx={{
flexGrow: 1,
height: '400px',
width: '100%',
overflow: 'auto',
marginBottom: '80px',
px: 2,
py: 2
}}
>
<CardHeader className="mb-0 pb-0">
<CardTitle className="mb-0 pb-0" tag="h4">
Filter Jumlah Ulasan Poi Google
</CardTitle>
</CardHeader>
<hr />
<CardBody>
<CardText className="mb-0 pb-0">Seret ke kanan/kiri minimal jumlah ulasan :</CardText>
<Row className="">
<Col sm="12" className="mt-3">
<Slider
aria-label="Small steps"
defaultValue={100}
getAriaValueText={valuetext}
step={100}
marks
min={0}
max={10000}
valueLabelDisplay="auto"
onChange={handleChange}
/>
</Col>
</Row>
<Row className="mt-2">
<Col sm="12">
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="" rounded className="w-10rem text-white text-base" />
</Col>
</Row>
</CardBody>
<Paper sx={{ position: 'fixed', bottom: 0, left: 0, right: 0, zIndex: 2002 }} elevation={1}>
<BottomNavigation className="justify-content-between" sx={{ width: '100%', height: '65px' }} showLabels>
<BottomNavigationAction
onClick={() => onClickReset()}
className=" text-xl"
sx={{ width: '50%', maxWidth: '50% !important' }}
label="Reset Filter"
value="clear"
icon={<AutorenewOutlined color="info" />}
/>
<BottomNavigationAction
onClick={() => setIsOpenPopUpRating(false)}
color={red[700]}
sx={{ width: '50%', maxWidth: '50% !important' }}
label="Tutup"
value="close"
icon={<CloseOutlined color="warning" />}
/>
</BottomNavigation>
</Paper>
<Toast ref={toast} position="center" />
</Box>
</SwipeableDrawer>
</>
)
}
export default PopUpRatingGoogle

28
app/Views/kewilayahan/peta/app-maps.scss

@ -19,3 +19,31 @@
/* color: $primary; */
font-weight: bold;
}
input.leaflet-control-layers-selector{
margin-right: 5px !important;
}
// .leaflet-layerstree-node{
// padding-left: 1.5rem;
// }
// div.leaflet-layerstree-children div.leaflet-layerstree-node{
// padding-left: 1.5rem;
// }
div.leaflet-control-layers-overlays div.leaflet-layerstree-children.leaflet-layerstree-children-nopad div.leaflet-layerstree-node div.leaflet-layerstree-children {
padding-left: 2rem !important;
}
.leaflet-left .leaflet-control {
margin-left: 0;
}
.leaflet-control-attribution {
margin-bottom: 50px !important;
}
div.leaflet-bottom.leaflet-left div.leaflet-control {
margin-bottom: 0 !important;
}
.leaflet-control-locate {
margin-bottom: 10px !important;
}

206
app/Views/kewilayahan/peta/components/NipPengampu.js

@ -0,0 +1,206 @@
import React, { useEffect, useRef, useState } from 'react'
import { MultiSelect } from 'react-multi-select-component'
import { Col, Label, Row } from 'reactstrap'
import Select from 'react-select'
import { Button as ButtonP } from 'primereact/button'
import { isObjEmpty } from '../../kytp/util'
import jquery from 'jquery'
import collect from 'collect.js'
import { useDispatch, useSelector } from 'react-redux'
import { setSelectedOpsi } from '../../kytp/store/PetaStore'
import { matoaLayers } from '../layers/overlayLayers'
import { useMap } from 'react-leaflet'
const NipPengampu = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMatoa, dataOpsi, setIsOpenPopUpWilayah, refFeatureBawah }) => {
const map = useMap()
const dispatch = useDispatch()
const storeKpdl = useSelector((state) => state.kpdl)
const [kanwil, setKanwil] = useState([])
const [kpp, setKpp] = useState({})
const [seksi, setSeksi] = useState([])
const [ar, setAr] = useState([])
const [kanwilSelected, setKanwilSelected] = useState(null)
const [kppSelected, setKppSelected] = useState({})
const [seksiSelected, setSeksiSelected] = useState([])
const [arSelected, setArSelected] = useState([])
const base_url = '/engineN/'
useEffect(() => {
jquery.ajax({
url: base_url + 'kewilayahan/ref/kanwil',
method: 'GET',
dataType: 'json',
success: (data) => {
setKanwil(data)
}
})
}, [])
useEffect(() => {
setKpp([])
setSeksi([])
setAr([])
setKppSelected(null)
setSeksiSelected([])
setArSelected([])
if (kanwilSelected && !isObjEmpty(kanwilSelected)) {
const kanwil = kanwilSelected.value
jquery.ajax({
url: base_url + 'kewilayahan/ref/kpp',
method: 'GET',
dataType: 'json',
data: { kanwil },
success: (data) => {
setKpp(data)
}
})
}
}, [kanwilSelected])
useEffect(() => {
setSeksi([])
setAr([])
setSeksiSelected([])
setArSelected([])
if (kppSelected && !isObjEmpty(kppSelected)) {
const kpp = kppSelected.value
jquery.ajax({
url: base_url + 'kewilayahan/ref/seksi',
method: 'GET',
dataType: 'json',
data: { kpp },
success: (data) => {
setSeksi(data)
}
})
}
}, [kppSelected])
useEffect(() => {
setAr([])
setArSelected([])
const seksi = collect(seksiSelected).pluck('value').all()
if (seksi.length && !isObjEmpty(seksiSelected)) {
const kpp = kppSelected.value
jquery.ajax({
url: base_url + 'kewilayahan/ref/ar',
method: 'POST',
dataType: 'json',
data: { kpp, seksi },
success: (data) => {
setAr(data)
}
})
}
}, [seksiSelected])
const buttonProsesOnClick = () => {
refFeatureBawah.current.clearLayers()
const nip_ar_pengampu = collect(arSelected).pluck('value').all()
const nip_ar_pengampu2 = collect(arSelected).pluck('value2').all()
if (nip_ar_pengampu.length) {
dispatch(setSelectedOpsi(dataOpsi.pengampu))
setDataSend({ opsiWilZona: dataOpsi.pengampu.key, nip_ar_pengampu })
const par_pengampu = nip_ar_pengampu2.join("','")
const cq_filter_poi = "NIP_AR_PENGAMPU in ('" + par_pengampu + "')"
matoaLayers.poiMatoaNpwpLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: cq_filter_poi,
minZoom: 4
})
matoaLayers.poiMatoaNpwpNullLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: cq_filter_poi,
minZoom: 4
})
map.setZoom(8)
setIsOpenPopUpWilayah(false)
} else {
toast.current.show({ severity: 'info', summary: 'Info', detail: 'AR Pengampu harus dipilih' })
}
}
return (
<>
<Row>
<Col md="3">
<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="3">
<Label className="form-label" for="Pilih KPP">
KPP
</Label>
<Select
placeholder="Pilih KPP"
className="basic-single w-100"
onChange={(e) => {
setKppSelected(e)
}}
classNamePrefix="select"
// defaultValue={kanwilSelected}
value={kppSelected}
isClearable={false}
options={kpp}
/>
</Col>
<Col md="3">
<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>
</Row>
<Row className="mt-2">
<Col sm="12">
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="" rounded className="w-10rem text-white text-base" />
</Col>
</Row>
</>
)
}
export default NipPengampu

220
app/Views/kewilayahan/peta/components/NipPerekam.js

@ -0,0 +1,220 @@
import React, { useEffect, useRef, useState } from 'react'
import { MultiSelect } from 'react-multi-select-component'
import { Col, Label, Row } from 'reactstrap'
import Select from 'react-select'
import { Button as ButtonP } from 'primereact/button'
import { isObjEmpty } from '../../kytp/util'
import jquery from 'jquery'
import collect from 'collect.js'
import { useDispatch, useSelector } from 'react-redux'
import { setSelectedOpsi } from '../../kytp/store/PetaStore'
import { matoaLayers } from '../layers/overlayLayers'
import { useMap } from 'react-leaflet'
const NipPerekam = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMatoa, dataOpsi, setIsOpenPopUpWilayah, refFeatureBawah }) => {
const map = useMap()
const dispatch = useDispatch()
const storeKpdl = useSelector((state) => state.kpdl)
const base_url = '/engineN/'
const [kanwil, setKanwil] = useState([])
const [kpp, setKpp] = useState([])
const [seksi, setSeksi] = useState([])
const [ar, setAr] = useState([])
const [kanwilSelected, setKanwilSelected] = useState(null)
const [kppSelected, setKppSelected] = useState()
const [seksiSelected, setSeksiSelected] = useState([])
const [arSelected, setArSelected] = useState([])
useEffect(() => {
jquery.ajax({
url: base_url + 'kewilayahan/ref/kanwilPratama',
method: 'GET',
dataType: 'json',
success: (data) => {
setKanwil(data)
}
})
}, [])
useEffect(() => {
setKpp([])
setSeksi([])
setAr([])
setKppSelected(null)
setSeksiSelected([])
setArSelected([])
if (kanwilSelected && !isObjEmpty(kanwilSelected)) {
const kanwil = kanwilSelected.value
jquery.ajax({
url: base_url + 'kewilayahan/ref/kppPratama',
method: 'GET',
dataType: 'json',
data: { kanwil },
success: (data) => {
setKpp(data)
}
})
}
}, [kanwilSelected])
useEffect(() => {
setSeksi([])
setAr([])
setSeksiSelected([])
setArSelected([])
if (kppSelected && !isObjEmpty(kppSelected)) {
const kpp = kppSelected.value
jquery.ajax({
url: base_url + 'kewilayahan/ref/seksi',
method: 'GET',
dataType: 'json',
data: { kpp },
success: (data) => {
setSeksi(data)
}
})
}
}, [kppSelected])
useEffect(() => {
setAr([])
setArSelected([])
const seksi = collect(seksiSelected).pluck('value').all()
if (seksi.length && !isObjEmpty(seksiSelected)) {
const kpp = kppSelected.value
// const seksi = collect(seksiSelected).pluck("value").all()
jquery.ajax({
url: base_url + 'kewilayahan/ref/ar',
method: 'POST',
dataType: 'json',
data: { kpp, seksi },
success: (data) => {
setAr(data)
}
})
}
}, [seksiSelected])
const buttonProsesOnClick = () => {
refFeatureBawah.current.clearLayers()
const nip_ar_perekam = collect(arSelected).pluck('value').all()
const nip_ar_perekam2 = collect(arSelected).pluck('value2').all()
if (nip_ar_perekam.length) {
dispatch(setSelectedOpsi(dataOpsi.perekam))
setDataSend({ opsiWilZona: dataOpsi.perekam.key, nip_ar_perekam })
const par_perekam = nip_ar_perekam2.join("','")
const cq_filter_poi = "CREATED_BY in ('" + par_perekam + "')"
matoaLayers.poiMatoaNpwpLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: cq_filter_poi,
minZoom: 4
})
matoaLayers.poiMatoaNpwpNullLayer.setParams({
styles: 'poi_matoa_npwp',
cql_filter: cq_filter_poi,
minZoom: 4
})
map.setZoom(8)
setIsOpenPopUpWilayah(false)
} else {
toast.current.show({ severity: 'info', summary: 'Info', detail: 'AR Perekam harus dipilih' })
}
}
return (
<>
<Row>
<Col md="3">
<Label className="form-label" for="basicInput">
Kanwil
</Label>
<Select
placeholder="Pilih Kanwil"
className="basic-single w-100"
onChange={(e) => {
setKanwilSelected(e)
}}
classNamePrefix="select"
value={kanwilSelected}
isClearable={false}
options={kanwil}
/>
</Col>
<Col md="3">
<Label className="form-label" for="Pilih KPP">
KPP
</Label>
<Select
placeholder="Pilih KPP"
className="basic-single w-100"
onChange={(e) => {
setKppSelected(e)
}}
onMenuOpen={() => {
if (!kpp.length) {
return
}
}}
openMenuOnClick={() => {
if (!kpp.length) {
return
}
}}
classNamePrefix="select"
// defaultValue={kanwilSelected}
value={kppSelected}
isClearable={false}
options={kpp}
/>
</Col>
<Col md="3">
<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 Perekam
</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>
</Row>
<Row className="mt-2">
<Col sm="12">
<ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="" rounded className="w-10rem text-white text-base" />
</Col>
</Row>
</>
)
}
export default NipPerekam

164
app/Views/kewilayahan/peta/generalWms/ComponentPopUpNpwp.js

@ -0,0 +1,164 @@
import React from 'react'
import ReactDOMServer from 'react-dom/server'
import { Card, CardBody, CardText, Button, Label, UncontrolledTooltip, Tooltip, CardFooter } from 'reactstrap'
// import { Button as Button2 } from 'primereact/button'
// import { Skeleton } from 'primereact/skeleton'
import { Bookmark, Circle, CornerUpRight, Star } from 'react-feather'
import { Divider } from 'primereact/divider'
// import Rating from 'react-rating'
// import { numberFormat } from '@utils'
// import { Shortcut } from '@mui/icons-material'
import 'primereact/resources/themes/lara-light-indigo/theme.css' // theme
import 'primereact/resources/primereact.css' // core css
// import "primeicons/primeicons.css" // icons
import 'primeflex/primeflex.css'
import noImage from './noImage.png'
import dayjs from 'dayjs'
import { store } from '../../kytp/store/store'
export default function ComponentPopUpNpwp(props) {
// const content = props
// const content = data.features[0].properties
// {
// "alamat": "Jl. Peta Selatan Blok Pasar Kalideres No. 65",
// "nm_kpp_zona": "KPP Pratama Jakarta Kalideres",
// "nm_kantor_pengampu": "KPP Pratama Jakarta Kalideres",
// "nm_perekam": "MUHAMMAD HILAL BASHORI",
// "nm_kpp_perekam": "KPP Pratama Jakarta Jatinegara",
// "nama_ar_mfwp": "NOVI PRIYANTI",
// "jns_wp_mfwp": "OP NON KARYAWAN",
// "status_wp_mfwp": "NORMAL",
// "warna_pembayaran_thn_terakhir": "BLACK",
// "status_spt_tahunan_terakhir": "0",
// "merk_usaha": null,
// "no_telp": "085640474272",
// "creation_date": "26-JUL-24 09.18.25.000000 AM",
// "nama_ar_zona": "ADHITYA PRIMADHA ANDI"
// }
const ElementReact = () => {
const petaStore = store.getState().peta
console.log(petaStore)
return (
<>
<input type="hidden" id="uuid" value={props.UUID} />
<div width={'200px'}>
<div style={{ width: '262px', height: '104px', overflow: 'hidden' }} className="mb-1 flex center-block border">
<img alt="" src={noImage} style={{ maxWidth: 'inherit', maxHeight: 'inherit', height: '100px', width: 'inherit', objectFit: 'contain' }} />
</div>
<CardBody className="m-0 p-0 d-flex justify-content-around align-items-center">
<div style={{ width: '190px' }}>
<h5 className="poi-name text-primary fw-bolder cursor-pointer"> {props.NAMA}</h5>
<h6 className="poi-name text-primary fw-bolder cursor-pointer"> {props.npwp}</h6>
</div>
<div style={{ width: '64px' }} className="d-flex justify-content-end text-end">
<div className="arah">
<Button className="btn-icon rounded-circle btn-sm" id="arah" color="primary">
<CornerUpRight size={14} />
</Button>
</div>
{/* <Button className="btn-icon rounded-circle btn-sm" outline color="primary">
<Bookmark size={14} />
</Button> */}
</div>
</CardBody>
<div className="container-next-data my-50" id="container-next-data">
<ul className="list-unstyled" style={{ width: '262px' }}>
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Merk:</span>
<span className="text-right">{props.merk_usaha ?? '-'}</span>
</li>
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Alamat:</span>
<span className="text-right">{props.alamat}</span>
</li>
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Kontak:</span>
<span className="text-right">{props.no_telp}</span>
</li>
<hr className="m-25" />
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Zona:</span>
<span className="text-right">
{props.nm_kpp_zona} - {props.nama_ar_zona}
</span>
</li>
{props.npwp === null ? null : (
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Pengampu:</span>
<span className="text-right">
{props.nm_kantor_pengampu} - {props.nama_ar_mfwp}
</span>
</li>
)}
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Perekam:</span>
<span className="text-right">
{props.nm_kpp_perekam} - {props.nm_perekam} ({dayjs(props.creation_date).format('YYYY-MM-DD')})
</span>
</li>
<hr className="m-25" />
{props.npwp === null ? null : (
<>
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Jenis / Status WP:</span>
<span className="text-right">
{props.jns_wp_mfwp} / {props.status_wp_mfwp}{' '}
</span>
</li>
<li className="mb-25 mt-25 d-flex justify-content-between align-middle">
<span className="fw-bolder mr-1">Tematik Pembayaran:</span>
<span className="text-right">
<>
<span className="mr-50">{petaStore.warnaBayar[props.warna_pembayaran_thn_terakhir].info}</span>
<Circle
fontSize={'1.5rem'}
fill={petaStore.warnaBayar[props.warna_pembayaran_thn_terakhir].warna}
color={petaStore.warnaBayar[props.warna_pembayaran_thn_terakhir].warna}
/>
</>
</span>
</li>
<li className="mb-25 mt-25 d-flex justify-content-between align-middle">
<span className="fw-bolder mr-1">Tematik Pelaporan SPT:</span>
<span className="text-right">
<>
<span className="mr-50">{petaStore.statusSPT[props.status_spt_tahunan_terakhir][0].KETERANGAN}</span>
{/* <Circle
fontSize={'1.5rem'}
fill={petaStore.warnaBayar[props.warna_pembayaran_thn_terakhir.toLowerCase()].warna}
color={petaStore.warnaBayar[props.warna_pembayaran_thn_terakhir.toLowerCase()].warna}
/> */}
</>
</span>
</li>
</>
)}
</ul>
</div>
<div style={{ width: '100%' }}>{/* <div className="">Kategori : {content.NAMA}</div> */}</div>
<div className="arah2" id="arah2"></div>
<CardFooter className="p-0 pt-1 text-right flex justify-content-between align-items-center">
<Button className="detail-box" outline color="primary" size="sm" title="Tutup tampilan" disabled>
{/* <Shortcut style={{ transform: 'scaleX(-1)' }} /> */}
<span className="align-middle ms-25 ">Detail </span>
</Button>
<Button className="tutup-box" outline color="primary" size="sm" title="Tutup tampilan">
{/* <Shortcut style={{ transform: 'scaleX(-1)' }} /> */}
<span className="align-middle ms-25">Tutup</span>
</Button>
</CardFooter>
</div>
</>
)
}
return ReactDOMServer.renderToString(
<div>
<ElementReact />
</div>
)
}
// export default ComponentPopUpNpwp

112
app/Views/kewilayahan/peta/generalWms/ComponentPopUpPoiGoogle.js

@ -0,0 +1,112 @@
import React from 'react'
import ReactDOMServer from 'react-dom/server'
import { Card, CardBody, CardText, Button, Label, UncontrolledTooltip, Tooltip, CardFooter } from 'reactstrap'
// import { Button as Button2 } from 'primereact/button'
// import { Skeleton } from 'primereact/skeleton'
import { Bookmark, Circle, CornerUpRight, Star } from 'react-feather'
import { Divider } from 'primereact/divider'
import Rating from 'react-rating'
// import { numberFormat } from '@utils'
// import { Shortcut } from '@mui/icons-material'
import 'primereact/resources/themes/lara-light-indigo/theme.css' // theme
import 'primereact/resources/primereact.css' // core css
// import "primeicons/primeicons.css" // icons
import 'primeflex/primeflex.css'
import noImage from './noImage.png'
import dayjs from 'dayjs'
import { store } from '../../kytp/store/store'
import { Shortcut } from '@mui/icons-material'
export default function ComponentPopUpPoiGoogle(props) {
const content = props
// const content = data.features[0].properties
// {
// "id_data": "g_5029108_090",
// "nama": "Jasa isi Games Pc/Laptop",
// "alamat": "Jl. Pengadegan Selatan No.10, RT.4/RW.5",
// "category": "Video game store",
// "nm_ar_zona": "ANNISA BALATIF",
// "nm_kantor": "KPP Pratama Jakarta Pancoran",
// "top_image_url": "https://lh5.googleusercontent.com/p/AF1QipPs4cUvbFaUeAnRx4zV-T543H4Ly3SoD3qh8NA=w426-h240-k-no",
// "adm1_en": "DKI Jakarta",
// "adm2_en": "Kota Administrasi Jakarta Selatan",
// "adm3_en": "Pancoran",
// "adm4_en": "Pengadegan",
// "rating": "4",
// "review": "4"
// }
const ElementReact = () => {
const petaStore = store.getState().peta
return (
<>
<div width={'200px'}>
<div style={{ width: '262px', height: '104px', overflow: 'hidden' }} className="d-flex center-block ">
<img
alt=""
src={content.top_image_url ?? noImage}
style={{ maxWidth: 'inherit', maxHeight: 'inherit', height: '100px', width: 'inherit', objectFit: 'cover' }}
/>
</div>
<CardBody className="m-0 p-0 d-flex justify-content-around align-items-center">
<div style={{ width: '190px' }}>
<h5 className="poi-name text-primary fw-bolder cursor-pointer"> {content.nama}</h5>
</div>
<div style={{ width: '64px' }} className="d-flex justify-content-around text-end">
<div className="arah">
<Button className="btn-icon rounded-circle btn-sm" id="arah" color="primary">
<CornerUpRight size={14} />
</Button>
</div>
{/* <Button className="btn-icon rounded-circle btn-sm" outline color="primary">
<Bookmark size={14} />
</Button> */}
</div>
</CardBody>
<div className="flex mt-1">
<Label className="">{Number(content.rating).toLocaleString('id-ID')}</Label>
<Rating
className="px-25"
readonly
initialRating={content.rating}
direction={'ltr'}
emptySymbol={<Star size={12} fill="#babfc7" stroke="#babfc7" />}
fullSymbol={<Star size={12} fill="#ff9700" stroke="#ff9700" />}
/>
<Label className="">({Number(content.review ?? 0)} ulasan)</Label>
</div>
<div style={{ width: '100%' }}>
<div className="">Kategori : {content.category}</div>
</div>
<div className="arah2" id="arah2"></div>
<div className="container-next-data my-50" id="container-next-data">
<ul className="list-unstyled" style={{ width: '262px' }}>
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Alamat:</span>
<span className="text-right">{props.alamat}</span>
</li>
<li className="mb-25 d-flex justify-content-between">
<span className="fw-bolder mr-1">Zona:</span>
<span className="text-right">
{props.nm_kantor} - {props.nm_ar_zona}
</span>
</li>
</ul>
</div>
<CardFooter className="pt-1 text-right">
<Button className="tutup-box" outline color="primary" size="sm" title="Tutup tampilan">
{/* <Shortcut style={{ transform: 'scaleX(-1)' }} /> */}
<span className="align-middle ms-25">Tutup</span>
</Button>
</CardFooter>
</div>
</>
)
}
return ReactDOMServer.renderToString(
<div>
<ElementReact />
</div>
)
}

4
app/Views/kewilayahan/peta/generalWms/L.TileLayer.GeneralWMS.js

@ -7,8 +7,8 @@ L.TileLayer.GeneralWMS = L.TileLayer.WMS.extend({
// Register a click listener, then do all the upstream WMS things
L.TileLayer.WMS.prototype.onAdd.call(this, map)
map.on('click', this.getFeatureInfo, this)
map.on('move', () => console.log(this))
console.log(this)
// map.on('move', () => console.log(this))
// console.log(this)
},
onRemove(map) {
// Triggered when the layer is removed from a map.

173
app/Views/kewilayahan/peta/generalWms/L.TileLayer.MatoaNpwp.js

@ -0,0 +1,173 @@
import React from 'react'
import L from 'leaflet'
import { ReactDOMServer, renderToStaticMarkup } from 'react-dom/server'
import ComponentPopUpNpwp from './ComponentPopUpNpwp'
import jquery from 'jquery'
import { Label } from 'reactstrap'
import { Divider } from 'primereact/divider'
let latitude
let longitude
function success(position) {
latitude = position.coords.latitude
longitude = position.coords.longitude
}
function error() {
console.log('Unable to retrieve your location')
}
function getLocation() {
navigator.geolocation.getCurrentPosition(success, error)
}
const onClickDirection = (koordinatAwal, KoordinatAkhir) => {
const lat1 = koordinatAwal.lat
const lng1 = koordinatAwal.lng
const lat2 = KoordinatAkhir.lat
const lng2 = KoordinatAkhir.lng
const targetLink = `https://www.google.com/maps/dir/${lat1 ? `${lat1},${lng1}` : ''}/'${lat2},${lng2}'/`
window.open(targetLink, '_blank')
}
L.TileLayer.MatoaNpwp = L.TileLayer.WMS.extend({
onAdd(map) {
// Triggered when the layer is added to a map.
// Register a click listener, then do all the upstream WMS things
L.TileLayer.WMS.prototype.onAdd.call(this, map)
map.on('click', this.getFeatureInfo, this)
getLocation()
// map.on('move', () => console.log(this))
// console.log(this)
},
onRemove(map) {
// Triggered when the layer is removed from a map.
// Unregister a click listener, then do all the upstream WMS things
L.TileLayer.WMS.prototype.onRemove.call(this, map)
map.off('click', this.getFeatureInfo, this)
},
async getFeatureInfo(evt) {
// Make an AJAX request to the server and hope for the best
const url = this.getFeatureInfoUrl(evt.latlng),
showResults = L.Util.bind(this.showGetFeatureInfo, this)
await fetch(url)
.then((response) => response.json())
.then((data) => {
// console.log(data)
const err = typeof data === 'object' ? null : data
const numberReturned = data?.numberReturned
if (numberReturned === 1) {
// showResults(err, evt.latlng, JSON.stringify(data))
showResults(err, evt.latlng, data.features[0].properties)
// const id_md = data.features[0].properties.i
}
if (numberReturned > 1) {
showList(err, evt.latlng, data)
}
})
.catch((err) => {
// showResults(JSON.stringify(err))
})
},
getFeatureInfoUrl(latlng) {
// return
// const map = useMap()
// Construct a GetFeatureInfo request URL given a point
const point = this._map.latLngToContainerPoint(latlng)
const size = this._map.getSize()
// https://docs.geoserver.org/latest/en/user/services/wms/reference.html#wms-getfeatureinfo
const params = {
request: 'GetFeatureInfo',
service: 'WMS',
crs: 'EPSG:4326',
styles: this.wmsParams.styles,
transparent: this.wmsParams.transparent,
version: this.wmsParams.version,
format: this.wmsParams.format,
bbox: this._map.getBounds().toBBoxString(),
height: size.y,
// height: this.wmsParams.height,
width: size.x,
// width: this.wmsParams.width,
layers: this.wmsParams.layers,
viewparams: this.wmsParams.viewparams,
cql_filter: this.wmsParams.cql_filter,
query_layers: this.wmsParams.layers,
info_format: 'application/json',
feature_count: 1
}
params[params.version === '1.3.0' ? 'i' : 'x'] = Math.round(point.x)
params[params.version === '1.3.0' ? 'j' : 'y'] = Math.round(point.y)
return this._url + L.Util.getParamString(params, this._url, true)
},
async showGetFeatureInfo(err, latlng, content) {
if (err) {
console.log(err)
}
let data = null
await jquery.ajax({
url: '/engineN/kewilayahan/peta/matoalokasi',
type: 'post',
dataType: 'json',
data: { uuid: content.UUID },
success: (response) => {
data = response
// console.log(response)
}
})
const popup = L.popup({ maxWidth: 800, minWidth: 200, namaLayer: this.wmsParams.layers })
.setLatLng(latlng)
.setContent(ComponentPopUpNpwp({ ...content, ...data }))
.openOn(this._map)
// popup.on('popupclose', (e) => {
// store.dispatch(setIsOpenPopUp(false))
// console.log(e)
// })
const popupTampil = popup._contentNode
const arah = popupTampil.querySelectorAll('.arah')
const poiName = popupTampil.querySelectorAll('.poi-name')
const tutupBox = popupTampil.querySelector('.tutup-box')
// const alamat = popupTampil.querySelector('#popup-alamat')
// const nm_kpp_zona = popupTampil.querySelector('#popup-nm_kpp_zona')
// const nama_ar_zona = popupTampil.querySelector('#popup-nama_ar_zona')
// const Alamat = () => {
// return (
// <>
// <Divider type="solid" />
// <Label>{data.alamat}</Label>
// <Label>{data.nm_kpp_zona}</Label>
// <Label>{data.nama_ar_zona}</Label>
// <Divider />
// </>
// )
// }
// alamat.innerHTML = renderToStaticMarkup(<Alamat />)
tutupBox.addEventListener('click', () => {
popup.close()
})
arah[0].addEventListener('click', () => {
onClickDirection({ lat: latitude ?? '', lng: longitude ?? '' }, { lat: content.GEO_LOK_LAT, lng: content.GEO_LOK_LING })
})
poiName[0].addEventListener('click', () => {
// onClickPoiName(id_md)
})
}
})
L.tileLayer.matoaNpwp = function (url, options) {
return new L.TileLayer.MatoaNpwp(url, options)
}

150
app/Views/kewilayahan/peta/generalWms/L.TileLayer.PoiGoogle.js

@ -0,0 +1,150 @@
import React from 'react'
import L from 'leaflet'
import jquery from 'jquery'
import ComponentPopUpPoiGoogle from './ComponentPopUpPoiGoogle'
let latitude
let longitude
function success(position) {
latitude = position.coords.latitude
longitude = position.coords.longitude
}
function error() {
console.log('Unable to retrieve your location')
}
function getLocation() {
navigator.geolocation.getCurrentPosition(success, error)
}
const onClickDirection = (koordinatAwal, KoordinatAkhir) => {
const lat1 = koordinatAwal.lat
const lng1 = koordinatAwal.lng
const lat2 = KoordinatAkhir.lat
const lng2 = KoordinatAkhir.lng
const targetLink = `https://www.google.com/maps/dir/${lat1 ? `${lat1},${lng1}` : ''}/'${lat2},${lng2}'/`
window.open(targetLink, '_blank')
}
L.TileLayer.PoiGoogle = L.TileLayer.WMS.extend({
onAdd(map) {
// Triggered when the layer is added to a map.
// Register a click listener, then do all the upstream WMS things
L.TileLayer.WMS.prototype.onAdd.call(this, map)
map.on('click', this.getFeatureInfo, this)
getLocation()
// map.on('move', () => console.log(this))
// console.log(this)
},
onRemove(map) {
// Triggered when the layer is removed from a map.
// Unregister a click listener, then do all the upstream WMS things
L.TileLayer.WMS.prototype.onRemove.call(this, map)
map.off('click', this.getFeatureInfo, this)
},
async getFeatureInfo(evt) {
// Make an AJAX request to the server and hope for the best
const url = this.getFeatureInfoUrl(evt.latlng),
showResults = L.Util.bind(this.showGetFeatureInfo, this)
await fetch(url)
.then((response) => response.json())
.then((data) => {
// console.log(data)
const err = typeof data === 'object' ? null : data
const numberReturned = data?.numberReturned
if (numberReturned === 1) {
// showResults(err, evt.latlng, JSON.stringify(data))
showResults(err, evt.latlng, data.features[0].properties)
// const id_md = data.features[0].properties.i
}
if (numberReturned > 1) {
showList(err, evt.latlng, data)
}
})
.catch((err) => {
// showResults(JSON.stringify(err))
})
},
getFeatureInfoUrl(latlng) {
// return
// const map = useMap()
// Construct a GetFeatureInfo request URL given a point
const point = this._map.latLngToContainerPoint(latlng)
const size = this._map.getSize()
// https://docs.geoserver.org/latest/en/user/services/wms/reference.html#wms-getfeatureinfo
const params = {
request: 'GetFeatureInfo',
service: 'WMS',
crs: 'EPSG:4326',
styles: this.wmsParams.styles,
transparent: this.wmsParams.transparent,
version: this.wmsParams.version,
format: this.wmsParams.format,
bbox: this._map.getBounds().toBBoxString(),
height: size.y,
// height: this.wmsParams.height,
width: size.x,
// width: this.wmsParams.width,
layers: this.wmsParams.layers,
viewparams: this.wmsParams.viewparams,
cql_filter: this.wmsParams.cql_filter,
query_layers: this.wmsParams.layers,
info_format: 'application/json',
feature_count: 1
}
params[params.version === '1.3.0' ? 'i' : 'x'] = Math.round(point.x)
params[params.version === '1.3.0' ? 'j' : 'y'] = Math.round(point.y)
return this._url + L.Util.getParamString(params, this._url, true)
},
async showGetFeatureInfo(err, latlng, content) {
if (err) {
console.log(err)
}
let data = null
await jquery.ajax({
url: '/engineN/kewilayahan/peta/poigoogle',
type: 'post',
dataType: 'json',
data: { id_data: content.ID_DATA },
success: (response) => {
data = response
// console.log(response)
}
})
const popup = L.popup({ maxWidth: 800, minWidth: 200, namaLayer: this.wmsParams.layers })
.setLatLng(latlng)
.setContent(ComponentPopUpPoiGoogle({ ...content, ...data }))
.openOn(this._map)
const popupTampil = popup._contentNode
const arah = popupTampil.querySelectorAll('.arah')
const poiName = popupTampil.querySelectorAll('.poi-name')
const tutupBox = popupTampil.querySelector('.tutup-box')
tutupBox.addEventListener('click', () => {
popup.close()
})
arah[0].addEventListener('click', () => {
onClickDirection({ lat: latitude ?? '', lng: longitude ?? '' }, { lat: content.GEO_LOK_LAT, lng: content.GEO_LOK_LING })
})
poiName[0].addEventListener('click', () => {
// onClickPoiName(id_md)
})
}
})
L.tileLayer.poiGoogle = function (url, options) {
return new L.TileLayer.PoiGoogle(url, options)
}

64
app/Views/kewilayahan/peta/generalWms/L.VectorGrid.VectorPoi.js

@ -7,8 +7,55 @@ import { toBounds } from 'leaflet/src/geometry/Bounds'
// import { TileLayer } from 'leaflet/src/layer/tile/TileLayer'
import Pbf from 'pbf'
import { VectorTile } from 'vector-tile'
import { PointSymbolizer } from 'leaflet.vectorgrid/src/Symbolizer.Point.js'
import { LineSymbolizer } from 'leaflet.vectorgrid/src/Symbolizer.Line.js'
import { FillSymbolizer } from 'leaflet.vectorgrid/src/Symbolizer.Fill.js'
L.VectorGrid.VectorPoi = L.VectorGrid.Protobuf.extend({
onAdd(map) {
// Triggered when the layer is added to a map.
// Register a click listener, then do all the upstream WMS things
L.VectorGrid.Protobuf.prototype.onAdd.call(this, map)
// map.on('click', this.getFeatureInfo, this)
// map.on('click', this.getFeatureInfo, this)
// map.on('popupopen', () => {
// console.log('poupopen')
// const btn = document.getElementById('tombol')
// if (btn) {
// btn.addEventListener('click', () => {
// console.log('klik')
// })
// }
// })
},
onRemove(map) {
// Triggered when the layer is removed from a map.
// Unregister a click listener, then do all the upstream WMS things
L.VectorGrid.Protobuf.prototype.onRemove.call(this, map)
// map.off('click', this.getFeatureInfo, this)
},
_createLayer: function (feat, pxPerExtent, layerStyle) {
var layer
switch (feat.type) {
case 1:
layer = new PointSymbolizer(feat, pxPerExtent)
layer.getLatLng = null
break
case 2:
layer = new LineSymbolizer(feat, pxPerExtent)
break
case 3:
layer = new FillSymbolizer(feat, pxPerExtent)
break
}
if (this.options.interactive) {
layer.addEventParent(this)
}
return layer
},
_getVectorTilePromise: function (coords) {
var data = {
s: this._getSubdomain(coords),
@ -34,9 +81,15 @@ L.VectorGrid.VectorPoi = L.VectorGrid.Protobuf.extend({
max = bounds.max,
bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ? [min.y, min.x, max.y, max.x] : [min.x, min.y, max.x, max.y]).join(',')
// url = TileLayer.prototype.getTileUrl.call(this, coords)
var tileUrl = this._url + '&bbox=' + bbox
const wmsParams = this.options.wmsParams
// var point = this._map.latLngToContainerPoint(latlng, this._map.getZoom()),
// const size = this._map.getSize()
// wmsParams.height = size.y
// wmsParams.width = size.x
const urlTemp = this._url + L.Util.getParamString(wmsParams, this._url, true)
// var tileUrl = urlTemp + '&bbox=' + bbox
// var tileUrl = L.Util.template(this._url, L.extend(data, this.options))
var tileUrl = L.Util.template(urlTemp + '&bbox=' + bbox, L.extend(data, this.options))
return fetch(tileUrl, this.options.fetchOptions)
.then(function (response) {
if (!response.ok) {
@ -53,7 +106,7 @@ L.VectorGrid.VectorPoi = L.VectorGrid.Protobuf.extend({
// blob.type === 'application/x-protobuf'
var pbf = new Pbf(reader.result)
console.log(pbf)
// console.log(pbf)
return resolve(new VectorTile(pbf))
})
reader.readAsArrayBuffer(blob)
@ -61,6 +114,7 @@ L.VectorGrid.VectorPoi = L.VectorGrid.Protobuf.extend({
})
})
.then(function (json) {
// console.log(json)
// console.log('Vector tile:', json.layers)
// console.log('Vector tile water:', json.layers.water); // Instance of VectorTileLayer
@ -72,7 +126,7 @@ L.VectorGrid.VectorPoi = L.VectorGrid.Protobuf.extend({
var feat = json.layers[layerName].feature(i)
feat.geometry = feat.loadGeometry()
feat.latlng = feat.loadGeometry()
console.log(feat)
// console.log(feat)
feats.push(feat)
}

25
app/Views/kewilayahan/peta/generalWms/UseRenderPopup.js

@ -0,0 +1,25 @@
import React, { useEffect } from 'react'
import L from 'leaflet'
import { render } from 'react-dom'
export const useRenderPopup = (props) => {
const container = L.DomUtil.create('div')
// const dispatch = useAppDispatch()
useEffect(() => {
render(
<div>
<p>mbuh</p>
<a
onClick={() => {
console.log('abc')
}}
>
sdjsljf
</a>
{/* <a onClick={() => dispatch(setDevice(props.geoJsonPoint.properties))}></a> */}
</div>,
container
)
}, [])
return container
}

158
app/Views/kewilayahan/peta/generalWms/VectorGridd.js

@ -1,4 +1,5 @@
import { useEffect, useRef } from 'react'
import React, { useEffect, useRef } from 'react'
import ReactDOMServer from 'react-dom/server'
import { createTileLayerComponent, updateGridLayer } from '@react-leaflet/core'
import L from 'leaflet'
import isObject from 'lodash/isObject'
@ -13,15 +14,36 @@ import has from 'lodash/has'
import find from 'lodash/find'
import 'leaflet.vectorgrid'
import './L.VectorGrid.VectorPoi'
import { Popup, useMap } from 'react-leaflet'
import { Button, Col, Row } from 'reactstrap'
const PopElement = () => {
return (
<>
<Row>
<Col>
<h3>Hallo</h3>
</Col>
</Row>
<Row>
<Col>
<Button id="tombol">TEST</Button>
</Col>
</Row>
</>
)
}
export const VectorGridd = createTileLayerComponent(
function createTileLayer(props, context) {
const highlight = useRef(null)
const active = useRef(null)
const map = useMap()
const {
data,
style,
hoverStyle,
activeStyle,
onPopupOpen,
onClick,
onMouseover,
onMouseout,
@ -41,6 +63,7 @@ export const VectorGridd = createTileLayerComponent(
delete rest.leaflet
useEffect(() => {
console.log({ vectorGrid })
const { tooltipClassName = '', tooltip = null, popup = null } = props
if (tooltip) {
vectorGrid.bindTooltip(
@ -60,9 +83,32 @@ export const VectorGridd = createTileLayerComponent(
className: tooltipClassName
}
)
// vectorGrid.bindTooltip(
// (layer) => {
// const id = _getFeatureId(layer)
// return id
// },
// {
// sticky: true,
// direction: 'auto',
// className: tooltipClassName
// }
// )
}
if (popup) {
vectorGrid.bindPopup(popup)
// console.log({ vectorGrid })
// vectorGrid.bindPopup(popup)
// vectorGrid.bindPopup((layer) => {
// // console.log({ a, b })
// if (isFunction(popup)) {
// return popup(layer)
// } else if (isString(toopopupltip) && has(layer.properties, popup)) {
// return String(layer.properties[popup])
// } else if (isString(popup)) {
// return popup
// }
// return ''
// })
}
}, [props.tooltip, props.popup])
@ -88,6 +134,7 @@ export const VectorGridd = createTileLayerComponent(
if (isFunction(idField)) {
return idField(feature)
} else if (isString(idField)) {
// console.log(feature.properties[idField])
return feature.properties[idField]
}
}
@ -173,58 +220,73 @@ export const VectorGridd = createTileLayerComponent(
...rest
})
}
vectorGrid
// .on('mouseover', (e) => {
// console.log(e)
// const { properties } = e.layer
// _propagateEvent(onMouseover, e)
// let st
// const featureId = _getFeatureId(e.layer)
// if (isFunction(hoverStyle)) {
// st = hoverStyle(properties)
// } else if (isObject(hoverStyle)) {
// st = cloneDeep(hoverStyle)
// }
// if (!isEmpty(st) && featureId) {
// clearHighlight(properties)
// highlight.current = featureId
// const base = cloneDeep(baseStyle(properties))
// const hoverStyle = extend(base, st)
// setFeatureStyle(featureId, hoverStyle)
// }
// })
// .on('mouseout', (e) => {
// const { properties } = e.layer
// _propagateEvent(onMouseout, e)
// clearHighlight(properties)
// })
// .on('click', (e) => {
// const { properties } = e.layer
// const featureId = _getFeatureId(e.layer)
// _propagateEvent(onClick, e)
// let st
// if (isFunction(activeStyle)) {
// st = activeStyle(properties)
// } else if (isObject(activeStyle)) {
// st = cloneDeep(activeStyle)
// }
// if (!isEmpty(st) && featureId) {
// clearActive()
// active.current = featureId
// const base = cloneDeep(baseStyle(properties))
// const activeStyle = extend(base, st)
// setFeatureStyle(featureId, activeStyle)
// }
// })
// .on('dblclick', (e) => {
// _propagateEvent(onDblclick, e)
// clearActive()
// })
.on('mouseover', (e) => {
const { properties } = e.layer
_propagateEvent(onMouseover, e)
let st
const featureId = _getFeatureId(e.layer)
if (isFunction(hoverStyle)) {
st = hoverStyle(properties)
} else if (isObject(hoverStyle)) {
st = cloneDeep(hoverStyle)
}
if (!isEmpty(st) && featureId) {
clearHighlight(properties)
highlight.current = featureId
const base = cloneDeep(baseStyle(properties))
const hoverStyle = extend(base, st)
setFeatureStyle(featureId, hoverStyle)
}
})
.on('mouseout', (e) => {
const { properties } = e.layer
_propagateEvent(onMouseout, e)
clearHighlight(properties)
})
.on('click', (e) => {
const { properties } = e.layer
const lat_lng = new L.LatLng(properties.GEO_LOK_LAT, properties.GEO_LOK_LING)
// (Number(properties.GEO_LOK_LING), Number(properties.GEO_LOK_LAT))
const featureId = _getFeatureId(e.layer)
// console.log({ properties, featureId })
// console.log(e.layer)
// console.log(properties)
_propagateEvent(onClick, e)
let st
if (isFunction(activeStyle)) {
st = activeStyle(properties)
} else if (isObject(activeStyle)) {
st = cloneDeep(activeStyle)
}
if (!isEmpty(st) && featureId) {
clearActive()
active.current = featureId
const base = cloneDeep(baseStyle(properties))
const activeStyle = extend(base, st)
setFeatureStyle(featureId, activeStyle)
}
//json get Detail
L.popup()
.setLatLng(lat_lng)
.setContent(ReactDOMServer.renderToString(<PopElement />))
// .setContent(useRenderPopup({}))
.openOn(map)
})
.on('dblclick', (e) => {
_propagateEvent(onDblclick, e)
clearActive()
})
.on('contextmenu', (e) => {
_propagateEvent(onContextmenu, e)
clearActive()
})
map.on('popupopen', () => {
console.log('mapopenpopup')
})
return {
instance: vectorGrid,
context

21
app/Views/kewilayahan/peta/generalWms/VectorPoi.js

@ -6,14 +6,28 @@ import L from 'leaflet'
import './L.VectorGrid.VectorPoi'
import { createTileLayerComponent, createElementObject, updateGridLayer } from '@react-leaflet/core'
// function patchVectorGridLayer(obj) {
// // Fix error for point data.
// // eg. mouseover does not work without this.
// obj._createLayer_orig = obj._createLayer
// obj._createLayer = function (feat, pxPerExtent, layerStyle) {
// let layer = this._createLayer_orig(feat, pxPerExtent, layerStyle)
// if (feat.type === 1) {
// layer.getLatLng = null
// }
// return layer
// }
// // do this for chaining
// return obj
// }
const VectorPoi = createTileLayerComponent(
function createBetterWMSLayer({ url, options }, context) {
const layer = new L.vectorGrid.vectorpoi(url, options, context)
layer.on('click', (e) => {
const { properties } = e.layer
console.log(e)
console.log(properties)
})
return createElementObject(layer, context)
},
(layer, props, prevProps) => {
@ -24,5 +38,8 @@ const VectorPoi = createTileLayerComponent(
}
}
)
// VectorPoi.on('click', (e) => {
// console.log(e)
// })
export default VectorPoi

BIN
app/Views/kewilayahan/peta/generalWms/noImage.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

32
app/Views/kewilayahan/peta/layers/PoiKpdl.js

@ -4,6 +4,7 @@ import { useLeafletContext } from '@react-leaflet/core'
import L from 'leaflet'
import 'leaflet.vectorgrid'
import '../generalWms/L.VectorGrid.VectorPoi'
import { useMap } from 'react-leaflet'
function getVectorStyles(layerName, fieldName) {
const style = {}
@ -210,7 +211,8 @@ export const Styles = {
export const PoiKpdl = () => {
const context = useLeafletContext()
const { map } = context
// const { map } = context
const map = useMap()
const providerUrl = `http://localhost:8080/geoserver/wms?REQUEST=GetMap
&SERVICE=WMS&VERSION=1.1.0&FORMAT=application/vnd.mapbox-vector-tile&STYLES=&TRANSPARENT=true
@ -222,21 +224,33 @@ export const PoiKpdl = () => {
interactive: true,
type: 'protobuf',
vectorTileLayerStyles: {
kpdl_npwp_tidak_valid: { weight: 1, fillColor: '#f20e93', color: '#f20e93', fillOpacity: 0.2, opacity: 0.4 }
kpdl_npwp_tidak_valid: {
// weight: 2,
fillColor: '#3388ff',
color: '#f20e93',
fillOpacity: 1,
opacity: 1,
radius: 7,
fill: true,
zIndex: 2,
getFeatureId: function (f) {
return f.properties.UUID
}
}
}
}
return L.vectorGrid.vectorpoi(providerUrl, options)
}, [providerUrl, Styles])
vectorGrid.on('click', function (e) {
console.log(this)
console.log('clicked', e)
})
// vectorGrid.on('click', function (e) {
// console.log(this)
// console.log('clicked', e)
// })
vectorGrid.on('mouseover', function (e) {
console.log('mouseover', e)
})
// vectorGrid.on('mouseover', function (e) {
// console.log('mouseover', e)
// })
useEffect(() => {
map.addLayer(vectorGrid)

38
app/Views/kewilayahan/peta/layers/baseLayers.js

@ -115,3 +115,41 @@ export const layersmaps = [
checked: false
}
]
export const baseLayer = {
osm: L.tileLayer('//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
maxZoom: 23,
minZoom: 1
}),
Road: L.tileLayer('https://mt{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', {
attribution: `Map data ©${thn} <a href="https://www.google.com/intl/id_id/help/terms_maps/">Google</a>`,
maxZoom: 23,
minZoom: 1,
tileSize: 256,
zoomOffset: 0,
noWrap: false,
subdomains: '3',
accessToken: ''
}),
Satellite: L.tileLayer('https://mt{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', {
attribution: `Map data ©${thn} <a href="https://www.google.com/intl/id_id/help/terms_maps/">Google</a>`,
maxZoom: 23,
minZoom: 1,
tileSize: 256,
zoomOffset: 0,
noWrap: false,
subdomains: '0123',
accessToken: ''
}),
Hybrid: L.tileLayer('https://mt{s}.google.com/vt/lyrs=y&x={x}&y={y}&z={z}', {
attribution: `Map data ©${thn} <a href="https://www.google.com/intl/id_id/help/terms_maps/">Google</a>`,
maxZoom: 23,
minZoom: 1,
tileSize: 256,
zoomOffset: 0,
noWrap: false,
subdomains: '0123',
accessToken: ''
})
}

150
app/Views/kewilayahan/peta/layers/overlayLayers.js

@ -0,0 +1,150 @@
import React, { useEffect, useRef } from 'react'
import ReactDOMServer from 'react-dom/server'
import { createTileLayerComponent, updateGridLayer } from '@react-leaflet/core'
import L, { tileLayer } from 'leaflet'
import isObject from 'lodash/isObject'
import isFunction from 'lodash/isFunction'
import isString from 'lodash/isString'
import isEmpty from 'lodash/isEmpty'
import clone from 'lodash/clone'
import cloneDeep from 'lodash/cloneDeep'
import extend from 'lodash/extend'
import merge from 'lodash/merge'
import has from 'lodash/has'
import find from 'lodash/find'
import 'leaflet.vectorgrid'
import '../generalWms/L.VectorGrid.VectorPoi'
import '../generalWms/L.TileLayer.GeneralWMS'
import '../generalWms/L.TileLayer.MatoaNpwp'
import '../generalWms/L.TileLayer.PoiGoogle'
// import { Popup, useMap } from 'react-leaflet'
// import { Button, Col, Row } from 'reactstrap'
const style = {
kpdl_npwp_tidak_valid: {
fillColor: '#3388ff',
color: '#f20e93',
fillOpacity: 1,
opacity: 1,
radius: 7,
fill: true,
zIndex: 100,
getFeatureId: function (f) {
return f.properties.UUID
}
},
kpdl_poi_google: {
fillColor: '#b30e3d',
color: '#da165a',
fillOpacity: 1,
opacity: 1,
radius: 7,
fill: true,
zIndex: 100,
getFeatureId: function (f) {
return f.properties.UUID
}
}
}
const parameterPeta = (id, layername) => {
return {
id: id,
url: '/engineN/geoserver/wms',
wmsParams: {
request: 'GetMap',
service: 'WMS',
crs: 'EPSG:3857',
styles: '',
transparent: 'TRUE',
version: '1.3.0',
format: 'application/vnd.mapbox-vector-tile',
layers: layername,
width: 256,
height: 256,
cql_filter: "'1=1'",
// query_layers: 'matoa:kpdl_npwp_tidak_valid',
tiled: 'FALSE'
},
interactive: true,
type: 'protobuf',
rendererFactory: L.svg.tile,
vectorTileLayerStyles: style
}
}
const parameterPetaWms = (id, layername, style, minzoom) => {
return {
id: id,
url: '/engineN/geoserver/wms',
wmsParams: {
request: 'GetMap',
service: 'WMS',
styles: style,
transparent: 'TRUE',
version: '1.1.0',
format: 'image/png',
layers: layername,
maxZoom: 23,
minZoom: minzoom ?? 5,
cql_filter: '(1=1)'
}
}
}
//layer poi google
const poiGoogleParam = parameterPetaWms(1, 'matoa:kpdl_poi_google', 'poi_google', 10)
const poiGoogleLayer = L.tileLayer.poiGoogle(poiGoogleParam.url, poiGoogleParam.wmsParams)
//layer npwp tidak valid
const npwpInvalidParam = parameterPeta(2, 'matoa:kpdl_npwp_tidak_valid', 'poi_matoa_npwp')
const npwpInvalidlayer = L.vectorGrid.vectorpoi(npwpInvalidParam.url, npwpInvalidParam)
//layer poi Matoa BerNPWP (Hijau)
const poiMatoaNpwpParam = parameterPetaWms(3, 'matoa:kpdl_npwp_valid', 'poi_matoa_npwp', 6)
const poiMatoaNpwpLayer = new L.tileLayer.matoaNpwp(poiMatoaNpwpParam.url, poiMatoaNpwpParam.wmsParams)
//layer poi Matoa NonNPWP (Orange /Kuning)
const poiMatoaNpwpNullParam = parameterPetaWms(4, 'matoa:kpdl_npwp_null', 'poi_matoa_npwp_null', 4)
const poiMatoaNpwpNullLayer = L.tileLayer.matoaNpwp(poiMatoaNpwpNullParam.url, poiMatoaNpwpNullParam.wmsParams)
//action
npwpInvalidlayer.on('click', (e) => {
console.log(e)
})
export const matoaLayers = {
npwpInvalidlayer,
poiGoogleLayer,
poiMatoaNpwpLayer,
poiMatoaNpwpNullLayer
}
export const overlaysTree = [
{
label: '<span style="padding-left:20px" class="text-center center text-sm">Poi Google</span>'
},
{
label: 'Poi Google',
layer: matoaLayers.poiGoogleLayer
},
{
label: 'POI MATOA',
selectAllCheckbox: true,
children: [
{
label: 'berNPWP',
layer: matoaLayers.poiMatoaNpwpLayer
},
{
label: 'Non NPWP',
layer: matoaLayers.poiMatoaNpwpNullLayer
}
// {
// label: 'Matoa NPWP invalid',
// layer: matoaLayers.npwpInvalidlayer
// }
]
}
]

164
app/Views/kewilayahan/peta/peta.js

@ -1,18 +1,27 @@
import React, { useEffect, useMemo, useRef, useState } from 'react'
import ReactDOM from 'react-dom'
import { LayersControl, MapContainer, TileLayer, useMap } from 'react-leaflet'
import ReactDOM, { render } from 'react-dom'
import ReactDOMServer from 'react-dom/server'
import { LayerGroup, LayersControl, MapContainer, TileLayer, useMap } from 'react-leaflet'
import L, { CRS, Control, Evented, Events, LatLngExpression, Layer, Map } from 'leaflet'
import { layersmaps } from './layers/baseLayers'
import { baseLayer, layersmaps } from './layers/baseLayers'
import { Skeleton } from 'primereact/skeleton'
import 'leaflet/dist/Leaflet.css'
import 'leaflet.locatecontrol'
import 'leaflet.locatecontrol/dist/L.Control.Locate.css'
import '../scss/core.scss'
import './app-maps.scss'
// import PoiKpdl from './layers/PoiKpdl'
// import VectorPoi from './generalWms/VectorPoi'
// import VectorGridd from './generalWms/VectorGridd'
import { PoiKpdl } from './layers/PoiKpdl'
import 'leaflet.control.layers.tree'
import 'leaflet.control.layers.tree/L.Control.Layers.Tree.css'
import 'primereact/resources/themes/bootstrap4-light-blue/theme.css'
import 'primeflex/primeflex.css'
import '../scss/core.scss'
import jquery from 'jquery'
import { Provider, useDispatch, useSelector } from 'react-redux'
import { store } from '../kytp/store/store'
import { matoaLayers, overlaysTree } from './layers/overlayLayers'
import { getStatusSPT, setSelectedOpsi } from '../kytp/store/PetaStore'
import ControlCustom from 'react-leaflet-custom-control'
import MenuBawah from './MenuBawah'
const Root = () => {
// document.body.style.margin = '0'
document.body.className = 'm-0 p-0'
@ -22,10 +31,13 @@ const Root = () => {
const [zoom, setZoom] = useState(14)
const [layCon, setLayCon] = useState()
const wmsRef = useRef()
const refFeatureBawah = useRef()
const poiKpdlRef = useRef()
const [dataSend, setDataSend] = useState({ opsiWilZona: null, adm4_pcode: [], id_poly_zona: [], nip_ar_perekam: [], nip_ar_pengampu: [] })
const [centroid, setCentroid] = useState(null)
const layers = []
const latestBase = localStorage.getItem('latestBase') ?? 'Open Street Map'
layersmaps.map((val) => {
if (val.name === latestBase) {
val.checked = true
@ -41,10 +53,70 @@ const Root = () => {
// setSelectedBase(e.name)
localStorage.setItem('latestBase', e.name)
}
// const optVectorKpdl = {
// // popup: (layer) => `<div>${layer.propertiesss.UUID}</div>`,
// id: '777',
// url: '/engineN/geoserver/wms?REQUEST=GetMap&SERVICE=WMS&FORMAT=application/vnd.mapbox-vector-tile&CRS=EPSG:3857&STYLES=&TILED=false&TRANSPARENT=true&VERSION=1.3.0&HEIGHT=256&WIDTH=256&LAYERS=matoa:kpdl_npwp_tidak_valid',
// mapParam: {
// url: '/engineN/geoserver/wms',
// LAYERS: 'matoa:kpdl_npwp_tidak_valid',
// VERSION: '1.1.0',
// FORMAT: 'application/vnd.mapbox-vector-tile',
// TRANSPARENT: true,
// TILED: false,
// // zIndex: 150,
// WIDTH: 256,
// HEIGHT: 256
// // uppercase: true,
// // cql_filter: '1=1'
// },
// interactive: true,
// type: 'protobuf',
// vectorTileLayerStyles: {
// kpdl_npwp_tidak_valid: {
// fillColor: '#3388ff',
// color: '#f20e93',
// fillOpacity: 1,
// opacity: 1,
// radius: 7,
// fill: true,
// zIndex: 2,
// getFeatureId: function (f) {
// return f.properties.UUID
// }
// }
// }
// }
const setDefaultCentroid = (map) => {
jquery.get({
url: '/engineN/kewilayahan/peta/defaultcentroid',
type: 'get',
dataType: 'json',
success: (res) => {
setCentroid(res)
// const cent = L.geoJSON(centroid)
// setCenter(new L.point(res.coordinates))
map.panTo([res.coordinates[1], res.coordinates[0]]).setZoom(14)
// map.fitBounds(cent.getBounds()).setZoom(8)
}
})
}
const whenReady = (e) => {
const map = e.target
setDefaultCentroid(map)
const baseTree = {
label: 'Base Layer',
children: [
{ label: 'Open Street Map', layer: baseLayer.osm },
{ label: 'Google Road', layer: baseLayer.Road },
{ label: 'Google Satellite', layer: baseLayer.Satellite },
{ label: 'Google Hybrid', layer: baseLayer.Hybrid }
]
}
const ctl = L.control.layers.tree(baseTree)
if (map) {
map.addControl(
L.control.locate({
@ -56,28 +128,18 @@ const Root = () => {
})
)
map.addControl(L.control.zoom({ position: 'bottomright' }))
map.on('baselayerchange', baselayerchange)
// map.on('baselayerchange', baselayerchange)
ctl.addTo(map)
ctl.setOverlayTree(overlaysTree)
map.addLayer(baseLayer.osm)
// map.addLayer(matoaLayers.poiGoogleLayer)
map.addLayer(matoaLayers.poiMatoaNpwpLayer)
map.addLayer(matoaLayers.poiMatoaNpwpNullLayer)
}
}
const optVectorKpdl = {
id: '777',
url: '/engineN/geoserver/wms?REQUEST=GetMap&SERVICE=WMS&FORMAT=application/vnd.mapbox-vector-tile&CRS=EPSG:3857&STYLES=&TILED=false&TRANSPARENT=true&VERSION=1.3.0&HEIGHT=256&WIDTH=256&LAYERS=matoa:kpdl_npwp_tidak_valid',
mapParam: {
url: '/engineN/geoserver/wms',
LAYERS: 'matoa:kpdl_npwp_tidak_valid',
VERSION: '1.1.0',
FORMAT: 'application/vnd.mapbox-vector-tile',
TRANSPARENT: true,
TILED: false,
// zIndex: 150,
WIDTH: 256,
HEIGHT: 256
// uppercase: true,
// cql_filter: '1=1'
},
interactive: true,
type: 'protobuf'
}
useEffect(() => {}, [centroid, map])
const displayMap = useMemo(
() => (
<MapContainer
@ -93,32 +155,21 @@ const Root = () => {
whenReady(e)
}}
>
<LayersControl ref={setLayCon} position="topright">
{layers.map((val, idx) => (
<LayersControl.BaseLayer name={val.name} key={idx} checked={val.checked}>
<TileLayer attribution={val.attribution} url={val.url} subdomains={val.subdomains} maxZoom={23} />
</LayersControl.BaseLayer>
))}
<LayersControl.Overlay name={'Poi Google Map'} checked={true}>
<PoiKpdl ref={poiKpdlRef} />
{/* <VectorGridd
url={optVectorKpdl.url}
options={optVectorKpdl}
vectorTileLayerStyles={{
kpdl_npwp_tidak_valid: {
weight: 0,
fillColor: '#9bc2c4',
fillOpacity: 1,
fill: true
}
}}
/> */}
</LayersControl.Overlay>
</LayersControl>
<LayerGroup ref={refFeatureBawah}></LayerGroup>
<ControlCustom position="bottomleft">
<MenuBawah wmsRef={wmsRef} refFeatureBawah={refFeatureBawah} dataSend={dataSend} setDataSend={setDataSend} />
</ControlCustom>
</MapContainer>
),
[]
)
const dispatch = useDispatch()
useEffect(() => {
dispatch(getStatusSPT())
}, [])
useEffect(() => {
console.log({ dataSend })
}, [dataSend])
return (
<>
<div style={{ height: '100vh', width: '100%', padding: '0' }}>
@ -130,6 +181,9 @@ const Root = () => {
)
}
const container = document.getElementById('app')
const component = <Root />
const component = (
<Provider store={store}>
<Root />
</Provider>
)
ReactDOM.render(component, container)

9
package.json

@ -1,9 +1,12 @@
{
"dependencies": {
"@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0",
"@mantine/core": "6.0.21",
"@mantine/dates": "6.0.21",
"@mantine/hooks": "6.0.21",
"@mui/icons-material": "^6.1.2",
"@mui/material": "^6.1.2",
"@reduxjs/toolkit": "^2.2.7",
"@tabler/icons-react": "^3.16.0",
"@tanstack/react-query": "^5.56.2",
@ -16,6 +19,7 @@
"jquery": "^3.7.1",
"leaflet": "^1.9.4",
"leaflet-bing-layer": "^3.3.1",
"leaflet.control.layers.tree": "^1.1.0",
"leaflet.locatecontrol": "^0.81.1",
"leaflet.vectorgrid": "^1.3.0",
"mantine-react-table": "^1.3.4",
@ -24,16 +28,19 @@
"primereact": "^10.8.2",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-feather": "^2.0.10",
"react-flatpickr": "^3.10.13",
"react-leaflet": "^4.2.1",
"react-leaflet-custom-control": "^1.4.0",
"react-leaflet-locate-control": "^0.1.6",
"react-leaflet-vectorgrid": "^2.2.1",
"react-multi-select-component": "^4.3.4",
"react-rating": "^2.0.5",
"react-redux": "^9.1.2",
"react-router-dom": "^6.26.1",
"react-select": "^5.8.0",
"reactstrap": "8.10.0",
"swiper": "^11.1.14",
"webpack-cli": "^5.1.4"
},
"name": "engineN",
@ -63,6 +70,8 @@
},
"scripts": {
"start": "npx webpack --config webpack-dev.config.js --watch",
"serve": "npx webpack serve --config webpack-dev.config.js",
"start2": "npx webpack --config webpack-dev.config2.js --watch",
"build": "npx webpack --config webpack.config.js"
}
}

2
public/kpdl/dist/kpdl.js vendored

File diff suppressed because one or more lines are too long

2
public/kpdl/dist/monitoring.js vendored

File diff suppressed because one or more lines are too long

57211
public/kpdl/dist/peta.css vendored

File diff suppressed because it is too large Load Diff

8010
public/kpdl/dist/peta.js vendored

File diff suppressed because one or more lines are too long

84
public/kpdl/dist/peta.js.LICENSE.txt vendored

@ -3,6 +3,23 @@
* (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
*/
/*!
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
*/
/*!
Copyright (c) 2016 Dominik Moritz
@ -12,6 +29,26 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
/**
* @license React
* react-dom-server-legacy.browser.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-dom-server.browser.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-dom.production.min.js
@ -22,6 +59,26 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* 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.
*/
/**
* @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
@ -41,3 +98,30 @@ You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* use-sync-external-store-with-selector.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.
*/
/**
* @mui/styled-engine v6.1.2
*
* @license MIT
* 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.
*/

27
webpack-dev.config.js

@ -20,8 +20,8 @@ module.exports = {
})
],
entry: {
kpdl: './app/Views/kewilayahan/kytp/kpdl.js',
monitoring: './app/Views/kewilayahan/monitoring/index.js',
// kpdl: './app/Views/kewilayahan/kytp/kpdl.js',
// monitoring: './app/Views/kewilayahan/monitoring/index.js',
peta: './app/Views/kewilayahan/peta/peta.js'
},
output: {
@ -71,7 +71,8 @@ module.exports = {
options: {
url: {
filter: (url) => {
if (/^data:(image|font)/i.test(url)) {
if (/^data:(application\/font-woff|image|font)/i.test(url)) {
// data:application/font-woff
return false
}
return true
@ -80,6 +81,14 @@ module.exports = {
}
}
]
},
{
test: /Image\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader'
}
]
}
]
},
@ -99,6 +108,18 @@ module.exports = {
target: 'http://localhost',
changeOrigin: false
// pathRewrite: { '^/engineN': '' }
},
{
context: ['/engineN/kewilayahan'],
target: 'http://localhost',
changeOrigin: false
// pathRewrite: { '^/engineN': '' }
},
{
context: ['/engineN'],
target: 'http://localhost',
changeOrigin: false
// pathRewrite: { '^/engineN': '' }
}
]
}

10
webpack-dev.config2.js

@ -80,7 +80,7 @@ module.exports = {
options: {
url: {
filter: (url) => {
if (/^data:(image|font)/i.test(url)) {
if (/^data:(application\/font-woff|image|font)/i.test(url)) {
return false
}
return true
@ -89,6 +89,14 @@ module.exports = {
}
}
]
},
{
test: /Image\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader'
}
]
}
]
},

15
webpack.config.js

@ -77,7 +77,7 @@ module.exports = {
options: {
url: {
filter: (url) => {
if (/^data:(image|font)/i.test(url)) {
if (/^data:(application\/font-woff|image|font)/i.test(url)) {
return false
}
return true
@ -86,6 +86,14 @@ module.exports = {
}
}
]
},
{
test: /Image\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader'
}
]
}
]
},
@ -102,11 +110,6 @@ module.exports = {
to: path.resolve('.') + path.join('/release-update/', tanggal, '[name][ext]'),
force: true
},
{
from: './*.js',
to: path.resolve('.') + path.join('/release-update/', tanggal, '[name][ext]'),
force: true
},
{
from: './app/Views/kewilayahan/dist/*.*',
to: path.resolve('./public/kpdl/dist/[name][ext]'),

197
yarn.lock

@ -241,6 +241,13 @@
dependencies:
regenerator-runtime "^0.14.0"
"@babel/runtime@^7.25.6":
version "7.25.7"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6"
integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==
dependencies:
regenerator-runtime "^0.14.0"
"@babel/template@^7.25.0":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a"
@ -314,7 +321,7 @@
source-map "^0.5.7"
stylis "4.2.0"
"@emotion/cache@^11.13.0", "@emotion/cache@^11.4.0":
"@emotion/cache@^11.13.0", "@emotion/cache@^11.13.1", "@emotion/cache@^11.4.0":
version "11.13.1"
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7"
integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==
@ -330,6 +337,13 @@
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b"
integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==
"@emotion/is-prop-valid@^1.3.0":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240"
integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==
dependencies:
"@emotion/memoize" "^0.9.0"
"@emotion/memoize@^0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102"
@ -360,11 +374,34 @@
"@emotion/utils" "^1.4.0"
csstype "^3.0.2"
"@emotion/serialize@^1.3.0":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a"
integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==
dependencies:
"@emotion/hash" "^0.9.2"
"@emotion/memoize" "^0.9.0"
"@emotion/unitless" "^0.10.0"
"@emotion/utils" "^1.4.1"
csstype "^3.0.2"
"@emotion/sheet@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c"
integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
"@emotion/styled@^11.13.0":
version "11.13.0"
resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.13.0.tgz#633fd700db701472c7a5dbef54d6f9834e9fb190"
integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==
dependencies:
"@babel/runtime" "^7.18.3"
"@emotion/babel-plugin" "^11.12.0"
"@emotion/is-prop-valid" "^1.3.0"
"@emotion/serialize" "^1.3.0"
"@emotion/use-insertion-effect-with-fallbacks" "^1.1.0"
"@emotion/utils" "^1.4.0"
"@emotion/unitless@^0.10.0":
version "0.10.0"
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745"
@ -380,6 +417,11 @@
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.0.tgz#262f1d02aaedb2ec91c83a0955dd47822ad5fbdd"
integrity sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==
"@emotion/utils@^1.4.1":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad"
integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==
"@emotion/weak-memoize@^0.4.0":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6"
@ -550,6 +592,87 @@
resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-6.0.21.tgz#6185506e91cba3e308aaa8ea9ababc8e767995d6"
integrity sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ==
"@mui/core-downloads-tracker@^6.1.2":
version "6.1.2"
resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.2.tgz#a15eb14d433100f734e56929f842c2ccc7cab691"
integrity sha512-1oE4U38/TtzLWRYWEm/m70dUbpcvBx0QvDVg6NtpOmSNQC1Mbx0X/rNvYDdZnn8DIsAiVQ+SZ3am6doSswUQ4g==
"@mui/icons-material@^6.1.2":
version "6.1.2"
resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-6.1.2.tgz#3e4537c312687afbdd2fd289d5412731d5da3d11"
integrity sha512-7NNcjW5JoT9jHagrVbARA1o41vQY2xezDamtke+mEKKZmsJyejfRBOacSrPDfjZQ//lyhIjNKyzAwisxYJR47w==
dependencies:
"@babel/runtime" "^7.25.6"
"@mui/material@^6.1.2":
version "6.1.2"
resolved "https://registry.yarnpkg.com/@mui/material/-/material-6.1.2.tgz#9f47bfa6adcf3b8245799cbf4c027e3cb949bcc6"
integrity sha512-5TtHeAVX9D5d2LYfB1GAUn29BcVETVsrQ76Dwb2SpAfQGW3JVy4deJCAd0RrIkI3eEUrsl0E4xuBdreszxdTTg==
dependencies:
"@babel/runtime" "^7.25.6"
"@mui/core-downloads-tracker" "^6.1.2"
"@mui/system" "^6.1.2"
"@mui/types" "^7.2.17"
"@mui/utils" "^6.1.2"
"@popperjs/core" "^2.11.8"
"@types/react-transition-group" "^4.4.11"
clsx "^2.1.1"
csstype "^3.1.3"
prop-types "^15.8.1"
react-is "^18.3.1"
react-transition-group "^4.4.5"
"@mui/private-theming@^6.1.2":
version "6.1.2"
resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-6.1.2.tgz#1e093c7194dd9f8a511179e0e5c5b10798a4bfae"
integrity sha512-S8WcjZdNdi++8UhrrY8Lton5h/suRiQexvdTfdcPAlbajlvgM+kx+uJstuVIEyTb3gMkxzIZep87knZ0tqcR0g==
dependencies:
"@babel/runtime" "^7.25.6"
"@mui/utils" "^6.1.2"
prop-types "^15.8.1"
"@mui/styled-engine@^6.1.2":
version "6.1.2"
resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-6.1.2.tgz#bef156ac2e47a67d49982ddb5fa4211974740a26"
integrity sha512-uKOfWkR23X39xj7th2nyTcCHqInTAXtUnqD3T5qRVdJcOPvu1rlgTleTwJC/FJvWZJBU6ieuTWDhbcx5SNViHQ==
dependencies:
"@babel/runtime" "^7.25.6"
"@emotion/cache" "^11.13.1"
"@emotion/sheet" "^1.4.0"
csstype "^3.1.3"
prop-types "^15.8.1"
"@mui/system@^6.1.2":
version "6.1.2"
resolved "https://registry.yarnpkg.com/@mui/system/-/system-6.1.2.tgz#28840b04c6fc70780620759d67de2c20bdc7d1c7"
integrity sha512-mzW7F1ZMIYS1aLON48Nrk9c65OrVEVQ+R4lUcTWs1lCSul0VGK23eo4dmY0NX5PS7Oe4xz3P5B9tQZZ7SYgxcg==
dependencies:
"@babel/runtime" "^7.25.6"
"@mui/private-theming" "^6.1.2"
"@mui/styled-engine" "^6.1.2"
"@mui/types" "^7.2.17"
"@mui/utils" "^6.1.2"
clsx "^2.1.1"
csstype "^3.1.3"
prop-types "^15.8.1"
"@mui/types@^7.2.17":
version "7.2.17"
resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.17.tgz#329826062d4079de5ea2b97007575cebbba1fdbc"
integrity sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==
"@mui/utils@^6.1.2":
version "6.1.2"
resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-6.1.2.tgz#3717cd9373324a92e48c34f74385350104be652c"
integrity sha512-6+B1YZ8cCBWD1fc3RjqpclF9UA0MLUiuXhyCO+XowD/Z2ku5IlxeEhHHlgglyBWFGMu4kib4YU3CDsG5/zVjJQ==
dependencies:
"@babel/runtime" "^7.25.6"
"@mui/types" "^7.2.17"
"@types/prop-types" "^15.7.13"
clsx "^2.1.1"
prop-types "^15.8.1"
react-is "^18.3.1"
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@ -571,6 +694,11 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@popperjs/core@^2.11.8":
version "2.11.8"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@radix-ui/number@1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.0.tgz#4c536161d0de750b3f5d55860fc3de46264f897b"
@ -876,6 +1004,11 @@
dependencies:
"@types/node" "*"
"@types/lodash@^4.14.105":
version "4.17.10"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.10.tgz#64f3edf656af2fe59e7278b73d3e62404144a6e6"
integrity sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==
"@types/mime@^1":
version "1.3.5"
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690"
@ -910,6 +1043,11 @@
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
"@types/prop-types@^15.7.13":
version "15.7.13"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451"
integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
"@types/qs@*":
version "6.9.16"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.16.tgz#52bba125a07c0482d26747d5d4947a64daf8f794"
@ -920,7 +1058,7 @@
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb"
integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==
"@types/react-transition-group@^4.4.0", "@types/react-transition-group@^4.4.1":
"@types/react-transition-group@^4.4.0", "@types/react-transition-group@^4.4.1", "@types/react-transition-group@^4.4.11":
version "4.4.11"
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5"
integrity sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==
@ -935,6 +1073,15 @@
"@types/prop-types" "*"
csstype "^3.0.2"
"@types/react@^16.0.40":
version "16.14.62"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.62.tgz#449e4e81caaf132d0c2c390644e577702db1dd9e"
integrity sha512-BWf7hqninZav6nerxXj+NeZT/mTpDeG6Lk2zREHAy63CrnXoOGPGtNqTFYFN/sqpSaREDP5otVV88axIXmKfGA==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "^0.16"
csstype "^3.0.2"
"@types/responselike@^1.0.0":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50"
@ -947,6 +1094,11 @@
resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a"
integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==
"@types/scheduler@^0.16":
version "0.16.8"
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff"
integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==
"@types/send@*":
version "0.17.4"
resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a"
@ -2279,6 +2431,11 @@ clsx@1.1.1:
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
clsx@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999"
integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
collect.js@^4.36.1:
version "4.36.1"
resolved "https://registry.yarnpkg.com/collect.js/-/collect.js-4.36.1.tgz#0194c52e90e01db6f136d28e7a3cf88c5687894d"
@ -2741,7 +2898,7 @@ csstype@3.0.9:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b"
integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==
csstype@^3.0.2:
csstype@^3.0.2, csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
@ -4789,6 +4946,11 @@ leaflet-bing-layer@^3.3.1:
fetch-jsonp "^1.0.0"
leaflet "^1.0.0-beta.2"
leaflet.control.layers.tree@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/leaflet.control.layers.tree/-/leaflet.control.layers.tree-1.1.0.tgz#84b5818a2d9620434be3a6ddbed221c49211d31c"
integrity sha512-B4/dfplsWL2ozra6UcHOfsA20ncmtBwu2HRNdrUSB5Xcd+kK5Tuxb9I+YyjE30cy2oRA3jHoM9sU11aFXAEaBA==
leaflet.locatecontrol@^0.62.0:
version "0.62.0"
resolved "https://registry.yarnpkg.com/leaflet.locatecontrol/-/leaflet.locatecontrol-0.62.0.tgz#cf0c65170a87f2ed4b1a59e3307b773cd268d27d"
@ -6096,7 +6258,7 @@ process@^0.11.1, process@~0.11.0:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2:
prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@ -6257,6 +6419,13 @@ react-dom@^18.3.1:
loose-envify "^1.1.0"
scheduler "^0.23.2"
react-feather@^2.0.10:
version "2.0.10"
resolved "https://registry.yarnpkg.com/react-feather/-/react-feather-2.0.10.tgz#0e9abf05a66754f7b7bb71757ac4da7fb6be3b68"
integrity sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==
dependencies:
prop-types "^15.7.2"
react-flatpickr@^3.10.13:
version "3.10.13"
resolved "https://registry.yarnpkg.com/react-flatpickr/-/react-flatpickr-3.10.13.tgz#5b9d8f35f84e43f342fb0f0334b78a8dcd7d67c4"
@ -6270,6 +6439,11 @@ react-is@^16.13.1, react-is@^16.7.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-is@^18.3.1:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
react-leaflet-custom-control@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/react-leaflet-custom-control/-/react-leaflet-custom-control-1.4.0.tgz#3f3a644c26bdedd10a44e57671d6958c6ff0a2ad"
@ -6334,6 +6508,14 @@ react-popper@^1.3.6:
typed-styles "^0.0.7"
warning "^4.0.2"
react-rating@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/react-rating/-/react-rating-2.0.5.tgz#2c9d7ebe5907db0361ba28b7c19f0394e6e4dd76"
integrity sha512-uldxgLCe5bzqGX7V+7/bPgQQj2Kok6eiMgTMxjKOhfhnQkFLDlc4TjMlp7gaJFAHWdbiOnqpiShI7z8as6oWtg==
dependencies:
"@types/lodash" "^4.14.105"
"@types/react" "^16.0.40"
react-redux@^9.1.2:
version "9.1.2"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.2.tgz#deba38c64c3403e9abd0c3fbeab69ffd9d8a7e4b"
@ -6419,7 +6601,7 @@ react-transition-group@^2.3.1:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
react-transition-group@^4.3.0, react-transition-group@^4.4.1:
react-transition-group@^4.3.0, react-transition-group@^4.4.1, react-transition-group@^4.4.5:
version "4.4.5"
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
@ -7472,6 +7654,11 @@ svgo@^3.3.2:
csso "^5.0.5"
picocolors "^1.0.0"
swiper@^11.1.14:
version "11.1.14"
resolved "https://registry.yarnpkg.com/swiper/-/swiper-11.1.14.tgz#7901b4955c46dd0ad76fac1e9de2a69f04f34abb"
integrity sha512-VbQLQXC04io6AoAjIUWuZwW4MSYozkcP9KjLdrsG/00Q/yiwvhz9RQyt0nHXV10hi9NVnDNy1/wv7Dzq1lkOCQ==
syntax-error@^1.1.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c"

Loading…
Cancel
Save