charter-0.1.1.1
Safe HaskellNone
LanguageHaskell2010

Charts

Synopsis

Serving Charts

serveChart :: Port -> Chart -> IO () Source #

Serve a single static chart on the given port

serveDynamicChart :: Port -> ((Chart -> IO ()) -> IO ()) -> IO () Source #

Serve a chart on the given port. The application can update the chart using the given handler.

Creating Charts

Automatic Charts

autoChart :: forall row. (ChartRowHeaderAuto row, ChartRowAuto row) => ChartOptions -> ChartStyle -> [row] -> Chart Source #

Create a chart from the provided options, style, and data by inferring column header types.

Prefer autoChartWithHeaders when you know your column headers up front.

E.g. The following generates a 2-series bar chart with 4 sections, A, B, C, D

myAutoChart :: Chart
myAutoChart = autoChart defaultChartOptions BarChart myData
  where
    myData :: [(T.Text, Float, Int)]
    myData = [ (A, 16, 20)
             , (B, 11, 23)
             , (C, 9, 25)
             , (D, 8, 34)
             ]

autoChartWithHeaders :: forall row. ChartRowAuto row => ChartOptions -> ChartStyle -> [Column] -> [row] -> Chart Source #

Create a chart from the provided options, style, and data, but use the explicitly provided column headers and types.

E.g. The following generates a 2-series bar chart with 4 sections, A, B, C, D

myAutoChart :: Chart
myAutoChart = autoChartWithHeaders defaultChartOptions BarChart headers myData
  where
    headers :: [Column]
    headers = [StringColumn Series, NumberColumn Successes, NumberColumn Inconclusive]
    myData :: [(T.Text, Float, Int)]
    myData = [ (A, 16, 20)
             , (B, 11, 23)
             , (C, 9, 25)
             , (D, 8, 34)
             ]

Manual Charts

buildChart :: ChartOptions -> ChartStyle -> [Column] -> [[Value]] -> Chart Source #

Construct a chart.

e.g.

myChart :: Chart
myChart = buildChart defaultChartOptions BarChart
  [StringColumn Year, NumberColumn Population]
  [ [ String "2004", Number 1000 ]
  , [ String "2005", Number 1170 ]
  , [ String "2006", Number 660 ]
  , [ String "2007", Number 1030 ]
  ]

Chart Options

data ChartOptions Source #

I plan to make this typesafe for each partiular chart type but that's a LOT of work, so for now it's just free-form, if you'd actually use this, please make an issue on Github so I know folks need this behaviour :)

Find your chart in the chart gallery to see which options it will accept.

https://developers.google.com/chart/interactive/docs/gallery

Constructors

ChartOptions Value 

Assorted Types

data Chart Source #

The primary chart type.

Instances

Instances details
ToJSON Chart Source # 
Instance details

Defined in Charts.Internal.Chart

data Column Source #

Valid Column types. Each "data" column also accepts a column header. Role columns do not.

See https://developers.google.com/chart/interactive/docs/roles

Instances

Instances details
Eq Column Source # 
Instance details

Defined in Charts.Internal.Chart

Methods

(==) :: Column -> Column -> Bool #

(/=) :: Column -> Column -> Bool #

Show Column Source # 
Instance details

Defined in Charts.Internal.Chart

ToJSON Column Source # 
Instance details

Defined in Charts.Internal.Chart

type ChartRowAuto a = (ADT a, Constraints a ToJSON) Source #

A constraint representing a type which can be converted into a chart row

This constraint is satisfied by tuple types containing JSON serializable types.

E.g. data rows of type (Text, Int, Float) will infer a chart with a String column and two number columns.

You shouldn't need to implement any instances of this constraint yourself.

type ChartRowHeaderAuto a = Constraints a ChartColumn Source #

A constraint that a column-type can be determined for all elements of the provided tuple type.

class ChartColumn a where Source #

Class representing types for which a column type can be inferred.

You can implement your own instances for this if you like, but generally shouldn't need to.

Instances

Instances details
ChartColumn Bool Source # 
Instance details

Defined in Charts.Internal.Auto

ChartColumn Double Source # 
Instance details

Defined in Charts.Internal.Auto

ChartColumn Float Source # 
Instance details

Defined in Charts.Internal.Auto

ChartColumn Int Source # 
Instance details

Defined in Charts.Internal.Auto

ChartColumn Scientific Source # 
Instance details

Defined in Charts.Internal.Auto

ChartColumn String Source # 
Instance details

Defined in Charts.Internal.Auto

ChartColumn Text Source # 
Instance details

Defined in Charts.Internal.Auto