charter-0.1.1.0: app/Examples/Random.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
module Examples.Random where
import Charts
import Control.Monad.Random
import Data.Traversable
import Data.Aeson
import Control.Concurrent
randomChart :: IO Chart
randomChart = do
rows <- for [1..10] $ \i -> do
a <- randomRIO (0, 1)
b <- randomRIO (0, 1)
return [toJSON @Int i, toJSON @Float a, toJSON @Double b]
return $ buildChart defaultChartOptions ScatterChart [NumberColumn "Iteration", NumberColumn "Value A", NumberColumn "Value B"] rows
buildRandomChart :: (Chart -> IO ()) -> IO ()
buildRandomChart sendChart = forever $ do
randomChart >>= sendChart
threadDelay 2000000
serveUpdatingRandomChart :: IO ()
serveUpdatingRandomChart = serveDynamicChart 8080 buildRandomChart