-- | -- Module : Simulation.Aivika.Experiment.TimingStatsWriter -- Copyright : Copyright (c) 2012, David Sorokin -- License : BSD3 -- Maintainer : David Sorokin -- Stability : experimental -- Tested with: GHC 7.4.1 -- -- The module defines 'TimingStatsWriter' that knows how to write -- the timing statistics in HTML. -- module Simulation.Aivika.Experiment.TimingStatsWriter (TimingStatsWriter(..), defaultTimingStatsWriter) where import Simulation.Aivika.Experiment import Simulation.Aivika.Experiment.HtmlWriter import Simulation.Aivika.Statistics -- | Defines a writer that knows how to represent the 'TimingStats' -- as the HTML table. data TimingStatsWriter a = TimingStatsWriter { timingStatsWidth :: Int, -- ^ The width of the HTML table. timingStatsTimeText :: String, -- ^ Translated text \"time\". timingStatsMeanText :: String, -- ^ Translated text \"mean\". timingStatsDeviationText :: String, -- ^ Translated text \"deviation\". timingStatsMinText :: String, -- ^ Translated text \"minimum\". timingStatsMaxText :: String, -- ^ Translated text \"maximum\". timingStatsFormatter :: ShowS, -- ^ The formatter of numbers. timingStatsWrite :: TimingStatsWriter a -> String -> TimingStats a -> HtmlWriter () -- ^ This function reprensents the named statistics -- as the HTML table. } -- | The default writer. defaultTimingStatsWriter :: (Show a, TimingData a) => TimingStatsWriter a defaultTimingStatsWriter = TimingStatsWriter { timingStatsWidth = 400, timingStatsMeanText = "mean", timingStatsTimeText = "time", timingStatsDeviationText = "deviation", timingStatsMinText = "minimum", timingStatsMaxText = "maximum", timingStatsFormatter = id, timingStatsWrite = \writer name stats -> do let format x = timingStatsFormatter writer (show x) writeHtml "

" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "" writeHtml "
" writeHtml "

" writeHtmlText name writeHtml "" writeHtml "

" writeHtmlText $ timingStatsMeanText writer writeHtml "" writeHtmlText $ format $ timingStatsMean stats writeHtml "
" writeHtmlText $ timingStatsDeviationText writer writeHtml "" writeHtmlText $ format $ timingStatsDeviation stats writeHtml "
" writeHtmlText $ timingStatsMinText writer writeHtml "" writeHtmlText $ format $ timingStatsMin stats writeHtml "" writeHtmlText "(" writeHtmlText $ timingStatsTimeText writer writeHtmlText " = " writeHtmlText $ format $ timingStatsMinTime stats writeHtmlText ")" writeHtml "
" writeHtmlText $ timingStatsMaxText writer writeHtml "" writeHtmlText $ format $ timingStatsMax stats writeHtml "" writeHtmlText "(" writeHtmlText $ timingStatsTimeText writer writeHtmlText " = " writeHtmlText $ format $ timingStatsMaxTime stats writeHtmlText ")" writeHtml "
" writeHtmlText $ timingStatsTimeText writer writeHtml "" writeHtml "[" writeHtml $ format $ timingStatsStartTime stats writeHtml "; " writeHtml $ format $ timingStatsLastTime stats writeHtml "]" writeHtml "
" writeHtml "

" }