Purescript bindings for Baidu's Enterprise Charts (Echarts) charting library.
This approach drastically differs with v2.0.0.
All basic echarts function are implemented as effectful functions. They are wrapped in MonadEff
typeclass and could be used not only in Eff
monad but in Aff
and effectful transformers.
Option
object is constructed using Writer
monad augmented with phantom rows. I.e. there is no any
special type for Option
, Legend
or Tooltip
, but they are DSL PhantomRowsI
where PhantomRowsI
is phantom row type.
To write a field to objects one should use function from ECharts.Commands
module. Row label of this function indicates if this function could be used for building particular objects. For example, if you build something like Pie
series object you can use function name
because it has type forall i. String -> DSL (name :: I|i)
and PieI
has this name
label in its phantom part, but you can't use symbol
because its type is forall i. Symbol -> DSL (symbol :: I|i)
and PieI
hasn't symbol
label.
To run examples
npm run build
npm run serve
Then go to localhost:5050
echarts
npm dependency to your project.Writer
's log is Array (Tuple String Foreign)
. There are three different functions that builds sub-dsls: buildObj
takes pairs from log and write Foreign
s as values to empty object; buildArr
ignores first part of tuple and just write Foreign
s to empty array, buildSeries
takes first part of tuple and write it as "type"
field to the second part (Tuple "foo" $ toForeign {a: 12} -> toForeign {"type": "foo", a: 12}
) and then put it to empty array.data
field and purescript-echarts
uses items
. Other thing is that some field names collide and to fix it there are new row names: normalItemStyle
, normalLabel
.PercentOrPixel
) OR add command (like leftCenter
) OR add new DSL
for building foreign data (like addItem
).