|
|
|
@ -36,6 +36,10 @@ export default function CriteriaManage() { |
|
|
|
|
const [isLoading, setIsLoading] = useState(false); |
|
|
|
|
const [isFiltered, setIsFiltered] = useState(false); |
|
|
|
|
const [endPointSave, setendPointSave] = useState(null) |
|
|
|
|
const [isLoadMoreOnline, setLoadMoreOnline] = useState(true); |
|
|
|
|
const [limitOnline] = useState(10); |
|
|
|
|
const [offsetOnline, setOffsetOnline] = useState(0); |
|
|
|
|
const [isEndOnlineClasses, setIsEndOnlineClasses] = useState(false); |
|
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
const changeProvince = (item) => { |
|
|
|
|
setProvinceSelect(item); |
|
|
|
@ -283,6 +287,67 @@ export default function CriteriaManage() { |
|
|
|
|
sessionStorage.setItem('criteriaManageState', JSON.stringify(currentState)); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handleScroll = (e) => { |
|
|
|
|
if ( |
|
|
|
|
e.target.scrollHeight - e.target.scrollTop < e.target.clientHeight + 5 && |
|
|
|
|
isLoadMoreOnline && |
|
|
|
|
!isLoading |
|
|
|
|
) { |
|
|
|
|
onLoadMoreClasses(); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// Load More Classes for Teacher
|
|
|
|
|
const onLoadMoreClasses = async () => { |
|
|
|
|
let offsetOnlineMore = offsetOnline + limitOnline; |
|
|
|
|
let listNext = []; |
|
|
|
|
setIsLoading(true); |
|
|
|
|
try { |
|
|
|
|
if (!isEndOnlineClasses) { |
|
|
|
|
const queryParams = []; |
|
|
|
|
|
|
|
|
|
const addParam = (key, value) => { |
|
|
|
|
if (value !== undefined && value !== null && value !== '') { |
|
|
|
|
queryParams.push(`${key}=${value}`); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
addParam('province_id', provinceSelect?.value); |
|
|
|
|
addParam('district_id', districtSelect?.value); |
|
|
|
|
if (statusCriteriaSelected?.value !== undefined && statusCriteriaSelected?.value !== null) { |
|
|
|
|
const statusValue = statusCriteriaSelected.value === '0' |
|
|
|
|
? JSON.stringify(statusCriteriaSelected.value) |
|
|
|
|
: statusCriteriaSelected.value; |
|
|
|
|
addParam('status', statusValue); |
|
|
|
|
} |
|
|
|
|
addParam('school_name', searchText); |
|
|
|
|
|
|
|
|
|
const endPoint = `/report/api_report/getOrganizationAndCriteria${ |
|
|
|
|
queryParams.length ? `?${queryParams.join("&")}` : "" |
|
|
|
|
}&limit=${limitOnline}&offset=${offsetOnlineMore}`;
|
|
|
|
|
const res = await apiCaller(endPoint, "GET"); |
|
|
|
|
|
|
|
|
|
if (res?.status) { |
|
|
|
|
listNext = res?.data; |
|
|
|
|
setOffsetOnline(offsetOnline + limitOnline); |
|
|
|
|
if (res?.data?.length < limitOnline) { |
|
|
|
|
setLoadMoreOnline(false); |
|
|
|
|
if (res?.data?.length == 0) setLoadMoreOnline(false); |
|
|
|
|
setIsEndOnlineClasses(true); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
setIsEndOnlineClasses(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let listPrev = listData; |
|
|
|
|
setListData(listPrev?.concat(listNext)); |
|
|
|
|
} catch (e) { |
|
|
|
|
} finally { |
|
|
|
|
setIsLoading(false); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<div className="flex-1"> |
|
|
|
|
<Header |
|
|
|
@ -362,7 +427,7 @@ export default function CriteriaManage() { |
|
|
|
|
onClick={handleSelectAll} |
|
|
|
|
placement="right" |
|
|
|
|
/> |
|
|
|
|
<div className="criteria-manage-list scrollbar-custom"> |
|
|
|
|
<div onScroll={handleScroll} className="criteria-manage-list scrollbar-custom"> |
|
|
|
|
{listData?.map((item, index) => { |
|
|
|
|
return ( |
|
|
|
|
<div className="criteria-manage-item"> |
|
|
|
|