import React, {useEffect} from 'react'; import '../styles/footer.css'; import JobFunctions from './JobFunctions'; import Icon from '@mdi/react'; import {mdiCounter, mdiEyeCheck, mdiRun, mdiTrayFull} from '@mdi/js'; import QueuePopUp from "./QueuePopUp"; import {JobState, JobType} from "./interfaces/Jobs/IJob"; export default function Footer({connectedToBackend, apiUri, checkConnectedInterval} : {connectedToBackend: boolean, apiUri: string, checkConnectedInterval: number}) { const [MonitoringJobsCount, setMonitoringJobsCount] = React.useState(0); const [AllJobsCount, setAllJobsCount] = React.useState(0); const [RunningJobsCount, setRunningJobsCount] = React.useState(0); const [WaitingJobsCount, setWaitingJobs] = React.useState(0); const [countUpdateInterval, setCountUpdateInterval] = React.useState(undefined); function UpdateBackendState(){ JobFunctions.GetJobsWithType(apiUri, JobType.DownloadAvailableChaptersJob).then((jobs) => setMonitoringJobsCount(jobs.length)); JobFunctions.GetAllJobs(apiUri).then((jobs) => setAllJobsCount(jobs.length)); JobFunctions.GetJobsInState(apiUri, JobState.Running).then((jobs) => setRunningJobsCount(jobs.length)); JobFunctions.GetJobsInState(apiUri, JobState.Waiting).then((jobs) => setWaitingJobs(jobs.length)); } useEffect(() => { if(connectedToBackend){ UpdateBackendState(); if(countUpdateInterval === undefined){ setCountUpdateInterval(setInterval(() => { UpdateBackendState(); }, checkConnectedInterval * 5)); } }else{ clearInterval(countUpdateInterval); setCountUpdateInterval(undefined); } }, [connectedToBackend]); return ( ) }