module Monitor where
import Job
data Monitor = JobMonitor { mJobId :: String
, mSecondsInState :: Double
, mJobName :: String
, mJobStatus :: Status
}
updateMonitors :: Double -> Jobs -> [Monitor] -> [Monitor]
updateMonitors secondsSinceLastUpdate jobs = map updateMonitor
where
updateMonitor monitor@(JobMonitor {}) =
let newStatus = status $ jobWithId jobs (mJobId monitor)
newSeconds = if mJobStatus monitor == newStatus
then secondsSinceLastUpdate + mSecondsInState monitor
else 0
in monitor { mJobStatus = newStatus
, mSecondsInState = newSeconds
}