You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
5.1 KiB
180 lines
5.1 KiB
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 "../util" |
|
import $ from "jquery" |
|
import collect from "collect.js" |
|
const NipPengampu = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMatoa }) => { |
|
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 = "<?=base_url()?>" |
|
useEffect(() => { |
|
$.ajax({ |
|
url: base_url + "kewilayahan/ref/kanwil", |
|
method: "GET", |
|
dataType: "json", |
|
success: (data) => { |
|
setKanwil(data) |
|
} |
|
}) |
|
}, []) |
|
|
|
useEffect(() => { |
|
setKpp(null) |
|
setSeksi([]) |
|
setAr([]) |
|
setKppSelected(null) |
|
setSeksiSelected([]) |
|
setArSelected([]) |
|
if (kanwilSelected && !isObjEmpty(kanwilSelected)) { |
|
const kanwil = kanwilSelected.value |
|
$.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 = collect(kppSelected).pluck("value").all() |
|
const kpp = kppSelected.value |
|
$.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 |
|
|
|
$.ajax({ |
|
url: base_url + "kewilayahan/ref/ar", |
|
method: "POST", |
|
dataType: "json", |
|
data: { kpp, seksi }, |
|
success: (data) => { |
|
setAr(data) |
|
} |
|
}) |
|
} |
|
}, [seksiSelected]) |
|
const buttonProsesOnClick = () => { |
|
const nip_ar_pengampu = collect(arSelected).pluck("value").all() |
|
if (nip_ar_pengampu.length) { |
|
setDataSend({ opsiWilZona: activeTab, nip_ar_pengampu }) |
|
setHiddenGraphMatoa(true) |
|
} 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
|
|
|