39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
import useRequest from "@/lib/app/hooks/useRequest";
|
|
import useSWR from "swr";
|
|
import {useState} from "react";
|
|
|
|
const useChart = (chart_url) => {
|
|
const requestServer = useRequest({auth: true, notification: false})
|
|
const [filterOption, setFilterOption] = useState([]);
|
|
const queryString = filterOption.length !== 0
|
|
? `?${filterOption.map((option) => `${option.key}=${option.value}`).join('&')}`
|
|
: '';
|
|
//swr config
|
|
const fetcher = (...args) => {
|
|
return requestServer(args, 'get').then(({data}) => {
|
|
return data.data;
|
|
}).catch(() => {
|
|
})
|
|
};
|
|
|
|
const {
|
|
data,
|
|
isValidating,
|
|
mutate
|
|
} = useSWR(filterOption.length !== 0 ? `${chart_url}${queryString}` : "", fetcher, {
|
|
revalidateIfStale: false,
|
|
revalidateOnFocus: false,
|
|
revalidateOnReconnect: false,
|
|
keepPreviousData: true
|
|
});
|
|
|
|
return {
|
|
reportList: data,
|
|
isLoadingReportList: isValidating,
|
|
errorReportList: !data,
|
|
setFilterOption: setFilterOption,
|
|
mutate: mutate
|
|
}
|
|
};
|
|
|
|
export default useChart; |