31 lines
710 B
Haskell
31 lines
710 B
Haskell
|
module Main where
|
||
|
|
||
|
import Parser
|
||
|
import GUI
|
||
|
import Types
|
||
|
import Data.ByteString as BS
|
||
|
import Data.Array
|
||
|
import Data.Time
|
||
|
import Data.Word
|
||
|
import Graphics.Gloss
|
||
|
import Data.Monoid
|
||
|
|
||
|
datafile :: String
|
||
|
datafile = "time_ip.csv"
|
||
|
|
||
|
mainStatic :: IO ()
|
||
|
mainStatic = do
|
||
|
df <- BS.readFile datafile
|
||
|
let pd = hourBuckets <$> parseData df
|
||
|
case pd of
|
||
|
Right pd' -> display (InWindow "Bar Chart" (800,600) (100,200)) white (drawBar 240 200 pd')
|
||
|
Left err -> print $ "parsing Error:" <> err
|
||
|
|
||
|
main :: IO ()
|
||
|
main = mainStatic
|
||
|
|
||
|
hourBuckets :: [Data] -> Array Int Int
|
||
|
hourBuckets d = accumArray (+) 0 (0,23) (f <$> d)
|
||
|
where
|
||
|
f (Data _ (TimeOfDay h _ _) _) = (h,1)
|