implementation module iTasksTimeAndDateHandling // ********************************************************************************************************************************* // iTasks for Time and Date Handling // ********************************************************************************************************************************* // iTask & iData Concept and Implementation: (c) 2006,2007,2008 - Rinus Plasmeijer // ********************************************************************************************************************************* // import StdFunc import iDataFormlib import InternaliTasksCommon, iTasksBasicCombinators // Timer Tasks ending when timed out waitForTimeTask:: !HtmlTime -> (Task HtmlTime) waitForTimeTask time = mkTask "waitForTimeTask" waitForTimeTask` where waitForTimeTask` tst=:{tasknr,userId,hst} # taskId = iTaskId userId tasknr "Time_" # (stime,hst) = mkStoreForm (Init,storageFormId tst.options taskId time) id hst // remember time # ((currtime,_),hst) = getTimeAndDate hst | currtime < stime.value= (stime.value,{tst & activated = False,hst = hst}) = (currtime - stime.value,{tst & hst = hst}) waitForDateTask:: !HtmlDate -> (Task HtmlDate) waitForDateTask date = mkTask "waitForDateTask" waitForDateTask` where waitForDateTask` tst=:{tasknr,userId,hst} # taskId = iTaskId userId tasknr "Date_" # (taskdone,hst) = mkStoreForm (Init,storageFormId tst.options taskId (False,date)) id hst // remember date # ((_,currdate),hst) = getTimeAndDate hst | currdate < date = (date,{tst & activated = False, hst = hst}) = (date,{tst & hst = hst})