module DisTract.HTML.BugNew
(formatNew,
newToHTML
)
where
import Text.HTML.Chunks
import DisTract.Types
import DisTract.Utils
import DisTract.Layout
import DisTract.HTML.Fields
import System.FilePath
import Data.List
import Data.Time
import qualified Data.Map as M
$(chunksFromFile "./html/templates/bugNew.html")
formatNew :: Config -> IO ()
formatNew config
= do { htmlStr <- newToHTML config
; writeFile path htmlStr
}
where
path = combine (htmlDir . baseDir $ config) filename
filename = addExtension "newBug" "html"
newToHTML :: Config -> IO String
newToHTML config
= do { time <- (getZonedTime >>= formatTimeHuman)
; let page = format $ Chunk_page
{ page_base = baseDir config,
page_fields = "<tr>\n" ++ fieldsFormatted ++ "</tr>\n",
page_generation_time = time,
page_version = version
}
; return page
}
where
version = (packageName config) ++ " version " ++ (packageVersion config)
fieldsSorted = sort . filter (not . isPseudoField) . M.elems .
fieldDfns $ config
fieldsFormattedList = map (toFormInput . fieldDefault) fieldsSorted
fieldsFormatted = concat . intersperseEvery 2 "</tr><tr>\n" .
filter (not . null) $ fieldsFormattedList