-- | DataTables reply formatting. module Yesod.DataTables.Reply (Reply(..), formatReply) where import Prelude import qualified Data.ByteString.Lazy as L import Data.Aeson as J -- | Container for holding the reply to DataTables jQuery plugin. data Reply = Reply { -- |Total records, before filtering -- (i.e. the total number of records in the database). replyNumRecords :: Int, -- |Total records, after filtering (i.e. the total number of records -- after filtering has been applied - not just the number of records -- being returned in this result set). replyNumDisplayRecords :: Int, -- |An array of JSON objects, one for each record. replyRecords :: J.Value, -- |An unaltered copy of 'sEcho' sent from the client side. replyEcho :: Int } deriving (Eq, Show) -- |Translates the reply object to a JSON value that DataTables javascript -- plugin expects. formatReply :: Reply -> J.Value formatReply reply = J.object [ "iTotalRecords" .= replyNumRecords reply, "iTotalDisplayRecords" .= replyNumDisplayRecords reply, "sEcho" .= replyEcho reply, "aaData" .= replyRecords reply ]