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

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, dataOpsi }) => {
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: dataOpsi.pengampu.key, 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