{- Copyright (C) 2013-2015 Dr. Alistair Ward This file is part of WeekDaze. WeekDaze is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. WeekDaze is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with WeekDaze. If not, see . -} {- | [@AUTHOR@] Dr. Alistair Ward [@DESCRIPTION@] A flattened /timetable/, for one week, without any undefined /time-slot/s. -} module WeekDaze.LinearModel.TimetableForWeek( -- * Types -- ** Type-synonyms TimetableForWeek, -- * Functions -- ** Translation fromTimetableForWeek ) where import qualified Data.Array.IArray import qualified WeekDaze.Model.TimetableForWeek as Model.TimetableForWeek import qualified WeekDaze.Temporal.Time as Temporal.Time -- | A flattened /timetable/, with undefined /time-slot/s removed. type TimetableForWeek timeslotId resourceIds level = [Model.TimetableForWeek.Booking timeslotId resourceIds level] -- | Serialises the /lesson/-definitions in the weekly /timetable/. fromTimetableForWeek :: Data.Array.IArray.Ix timeslotId => Model.TimetableForWeek.TimetableForWeek timeslotId resourceIds level -> TimetableForWeek timeslotId resourceIds level fromTimetableForWeek timetableForWeek = [ (Temporal.Time.mkTime day timeslotId, lesson) | (day, timetableForDay) <- Data.Array.IArray.assocs timetableForWeek, (timeslotId, Just {-i.e. allocated-} lesson) <- Data.Array.IArray.assocs timetableForDay ] -- List-comprehension.