Skip to content
This repository has been archived by the owner on Jun 15, 2023. It is now read-only.

Commit

Permalink
Merge pull request #47 from cryogenian/trans
Browse files Browse the repository at this point in the history
Transformer
  • Loading branch information
cryogenian authored Oct 6, 2017
2 parents 30515e8 + ad440bc commit 6f205ff
Show file tree
Hide file tree
Showing 18 changed files with 717 additions and 638 deletions.
3 changes: 2 additions & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@
"purescript-dom": "^4.0.0",
"purescript-transformers": "^3.0.0",
"purescript-colors": "^3.0.0",
"purescript-variant": "^3.2.1"
"purescript-variant": "^3.2.1",
"purescript-aff": "^4.0.0"
},
"devDependencies": {
"purescript-debug": "^3.0.0",
Expand Down
8 changes: 4 additions & 4 deletions example/src/Bar.purs
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ import Debug.Trace as DT
import ECharts.Chart as EC
import ECharts.Commands as E
import ECharts.Event as EE
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import Utils as U

itemStyle DSL ETP.ItemStyleI
itemStyle DSL' ETP.ItemStyleI
itemStyle = do
E.normalItemStyle $ pure unit
E.emphasisItemStyle do
Expand All @@ -39,7 +39,7 @@ type OptionInput =
, four Number
}

options Array OptionInput DSL ETP.OptionI
options Array OptionInput DSL' ETP.OptionI
options inp = do
F.for_ (C.fromHexString "#eee") E.backgroundColor

Expand Down Expand Up @@ -146,6 +146,6 @@ chart = do
Just el → do
ch ← EC.init el
inp ← genInp
EC.setOption (options inp) ch
EC.setOption (interpret $ options inp) ch
EC.getOption ch >>= DT.traceAnyA
EE.listenAll ch DT.traceAnyA
6 changes: 3 additions & 3 deletions example/src/Funnel.purs
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)

import Utils as U

options DSL ETP.OptionI
options DSL' ETP.OptionI
options = do
E.title do
E.text "Funnel example"
Expand Down Expand Up @@ -121,4 +121,4 @@ chart = do
NothingDT.traceAnyA "There is no element with 'funnel' id"
Just el → do
ch ← EC.init el
EC.setOption options ch
EC.setOption (interpret options) ch
8 changes: 4 additions & 4 deletions example/src/Gauge.purs
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)

import Signal (Signal, runSignal, (~>))
import Signal.Time (every)

import Utils as U

options {speed Number, r Number, gas Number, water Number} DSL ETP.OptionI
options {speed Number, r Number, gas Number, water Number} DSL' ETP.OptionI
options obj = do
E.tooltip $ E.formatterString "{a} <br />{c} {b}"

Expand Down Expand Up @@ -170,7 +170,7 @@ chart = do
NothingDT.traceAnyA "There is no element with 'gauge' id"
Just el → do
ch ← EC.init el
EC.setOption (options initialVal) ch
EC.setOption (interpret $ options initialVal) ch
runSignal $ dataStream ~> \effVal → do
val ← effVal
EC.setOption (options val) ch
EC.setOption (interpret $ options val) ch
6 changes: 3 additions & 3 deletions example/src/Graph.purs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)

import Utils as U

options DSL ETP.OptionI
options DSL' ETP.OptionI
options = do
E.title $ E.text "Graph"
E.tooltip $ pure unit
Expand Down Expand Up @@ -96,4 +96,4 @@ chart = do
NothingDT.traceAnyA "There is no element with 'graph' id"
Just el → do
ch ← EC.init el
EC.setOption options ch
EC.setOption (interpret options) ch
8 changes: 4 additions & 4 deletions example/src/Heatmap.purs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)

import Utils as U

Expand Down Expand Up @@ -72,7 +72,7 @@ arrValues =
, [6, 17, 0], [6, 18, 0], [6, 19, 0], [6, 20, 1], [6, 21, 2], [6, 22, 2], [6, 23, 6]
]

values i. Array (DSL (value ETP.I|i))
values i. Array (DSL' (value ETP.I|i))
values = A.catMaybes $ arrValues <#> case _ of
[x, y, z] → pure $ E.buildValues do
E.addValue $ toNumber y
Expand All @@ -82,7 +82,7 @@ values = A.catMaybes $ arrValues <#> case _ of
else E.addValue $ toNumber z
_ → Nothing

options DSL ETP.OptionI
options DSL' ETP.OptionI
options = do
E.tooltip $ pure unit
E.animationEnabled false
Expand Down Expand Up @@ -121,4 +121,4 @@ chart = do
NothingDT.traceAnyA "There is no element with 'heatmap' id"
Just el → do
ch ← EC.init el
EC.setOption options ch
EC.setOption (interpret options) ch
8 changes: 4 additions & 4 deletions example/src/HeatmapCalendar.purs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)

import Partial.Unsafe (unsafePartial)
import Utils as U
Expand Down Expand Up @@ -48,14 +48,14 @@ arrValues =
, [ "2017-02-24", "528" ], [ "2017-02-25", "859" ], [ "2017-02-26", "802" ]
, [ "2017-02-27", "992" ], [ "2017-02-28", "342" ] ]

values i. Array (DSL (value ETP.I|i))
values i. Array (DSL' (value ETP.I|i))
values = A.catMaybes $ arrValues <#> case _ of
[x, y] → pure $ E.buildValues do
E.addStringValue x
E.addStringValue y
_ → Nothing

options DSL ETP.OptionI
options DSL' ETP.OptionI
options = do
E.tooltip do
E.positionTop
Expand Down Expand Up @@ -105,4 +105,4 @@ chart = do
NothingDT.traceAnyA "There is no element with 'heatmap-calendar' id"
Just el → do
ch ← EC.init el
EC.setOption options ch
EC.setOption (interpret options) ch
6 changes: 3 additions & 3 deletions example/src/K.purs
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)

import Utils as U

options DSL ETP.OptionI
options DSL' ETP.OptionI
options = do
E.xAxis do
E.axisType ET.Category
Expand Down Expand Up @@ -62,4 +62,4 @@ chart = do
NothingDT.traceAnyA "There is no element with 'k' id"
Just el → do
ch ← EC.init el
EC.setOption options ch
EC.setOption (interpret options) ch
16 changes: 8 additions & 8 deletions example/src/Line.purs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import Debug.Trace as DT
import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)
import ECharts.Types.Phantom (I)
import ECharts.Types.Phantom as ETP

Expand All @@ -32,7 +32,7 @@ import Signal.Time (every)

import Utils as U

startOptions DSL ETP.OptionI
startOptions DSL' ETP.OptionI
startOptions = do
E.title do
E.text "Dynamic line"
Expand All @@ -58,11 +58,11 @@ startOptions = do
type Accum =
{ dt D.DateTime
, value Number
, values Array (DSL ETP.ItemI)
, values Array (DSL' ETP.ItemI)
}

dataStream
e i. Accum Signal (Eff (randomRANDOM|e) (DSL (itemsI|i)))
e i. Accum Signal (Eff (randomRANDOM|e) (DSL' (itemsI|i)))
dataStream start =
accumStream ~> map (E.itemsDSL <<< _.values)
where
Expand All @@ -78,14 +78,14 @@ dataStream start =
newTimeLabel = either (const $ "Incorrect date") id $ FDT.formatDateTime "YYYY-MM-DD" newTime
newValue = acc.value + (ran * 21.0 - 10.0)

newItem DSL ETP.ItemI
newItem DSL' ETP.ItemI
newItem = do
E.name newTimeLabel
E.valuePair newTimeLabel newValue

pure { value: newValue, dt: newTime, values: [newItem] <> acc.values }

optStream e. Accum Signal (Eff (now NOW, random RANDOM|e) (DSL ETP.OptionI))
optStream e. Accum Signal (Eff (now NOW, random RANDOM|e) (DSL' ETP.OptionI))
optStream acc =
dataStream acc ~> \effItemsSet → do
itemsSet ← effItemsSet
Expand All @@ -98,9 +98,9 @@ chart = do
NothingDT.traceAnyA "There is no element with line id"
Just el → do
ch ← EC.init el
EC.setOption startOptions ch
EC.setOption (interpret startOptions) ch
timeStart ← map toDateTime now
valueStart ← random
runSignal $ optStream {dt: timeStart, value: valueStart, values: []} ~> \effOpt → do
opt ← effOpt
EC.setOption opt ch
EC.setOption (interpret opt) ch
6 changes: 3 additions & 3 deletions example/src/Pie.purs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ import ECharts.Event as EE
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)
import Utils as U

options DSL ETP.OptionI
options DSL' ETP.OptionI
options = do
E.tooltip do
E.trigger ET.ItemTrigger
Expand Down Expand Up @@ -84,7 +84,7 @@ chart = do
NothingDT.traceAnyA "There is no element with pie id"
Just el → do
ch ← EC.init el
EC.setOption options ch
EC.setOption (interpret options) ch
EE.listenAll ch DT.traceAnyA
EE.dispatch
(V.inj (SProxy SProxy "pieselected")
Expand Down
8 changes: 4 additions & 4 deletions example/src/Radar.purs
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@ import ECharts.Chart as EC
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)

import Utils as U

lineStyle DSL ETP.LineStylePairI
lineStyle DSL' ETP.LineStylePairI
lineStyle = E.normalLineStyle do
E.width 1
E.opacity 0.5


options DSL ETP.OptionI
options DSL' ETP.OptionI
options = do
F.for_ (C.fromHexString "#161627") E.backgroundColor

Expand Down Expand Up @@ -124,7 +124,7 @@ chart = do
NothingDT.traceAnyA "There is no element with 'radar' id"
Just el → do
ch ← EC.init el
EC.setOption options ch
EC.setOption (interpret options) ch

dataBJ Array (Array Number)
dataBJ =
Expand Down
6 changes: 3 additions & 3 deletions example/src/Scatter.purs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import ECharts.Theme as ETheme
import ECharts.Types as ET
import ECharts.Types.Phantom as ETP
import ECharts.Commands as E
import ECharts.Monad (DSL)
import ECharts.Monad (DSL', interpret)
import Math (cos, sin, (%))
import Utils as U

Expand Down Expand Up @@ -46,7 +46,7 @@ genCosData = do
$ Tuple i (U.precise 3.0 $ cos i - i * (if i % 2.0 > 0.0 then 0.1 else -0.1) * rnd)
pure $ map mapfn randoms

options Array ET.Item Array ET.Item DSL ETP.OptionI
options Array ET.Item Array ET.Item DSL' ETP.OptionI
options sinData cosData = do
E.title do
E.text "SIN and COS random scatter"
Expand Down Expand Up @@ -110,4 +110,4 @@ chart' id theme = do
ch ← maybe EC.init EC.initWithTheme theme el
sinData ← genSinData
cosData ← genCosData
EC.setOption (options sinData cosData) ch
EC.setOption (interpret $ options sinData cosData) ch
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
"private": true,
"devDependencies": {
"echarts": "cryogenian/echarts#item-value-unshift-prebuild",
"express": "^4.14.0"
"express": "^4.16.1"
},
"scripts": {
"build": "pulp browserify --include example/src --to public/build.js",
"serve": "node script/serve.js",
"ide": "purs ide server"
},
"dependencies": {
"pulp": "^11.0.2",
"pulp": "^12.0.1",
"purescript": "^0.11.6",
"purescript-psa": "^0.5.1"
}
Expand Down
16 changes: 7 additions & 9 deletions src/ECharts/Chart.purs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@ import Data.Foreign (Foreign, toForeign)
import DOM (DOM)
import DOM.HTML.Types (HTMLElement)
import ECharts.Internal (undefinedValue)
import ECharts.Monad (DSL, buildObj)
import ECharts.Theme (Theme, builtInThemeName)
import ECharts.Types (Chart, ECHARTS)
import ECharts.Types.Phantom (OptionI)
import ECharts.Types (Chart, ECHARTS, Option)

foreign import initImpl
e. Foreign
Expand Down Expand Up @@ -52,28 +50,28 @@ foreign import registerTheme
Eff (echarts ECHARTS|e) Unit

foreign import setOptionImpl
e. Foreign Chart Eff (echarts ECHARTS, exception EXCEPTION|e) Unit
e. Option Chart Eff (echarts ECHARTS, exception EXCEPTION|e) Unit

setOption
m e
. MonadEff (echartsECHARTS, exceptionEXCEPTION|e) m
DSL OptionI
Option
Chart
m Unit
setOption opts chart = liftEff $ setOptionImpl (buildObj opts) chart
setOption opts chart = liftEff $ setOptionImpl opts chart


foreign import resetOptionImpl
e. Foreign Chart Eff (echarts ECHARTS, exception EXCEPTION|e) Unit
e. Option Chart Eff (echarts ECHARTS, exception EXCEPTION|e) Unit


resetOption
m e
. MonadEff (echartsECHARTS, exceptionEXCEPTION|e) m
DSL OptionI
Option
Chart
m Unit
resetOption opts chart = liftEff $ resetOptionImpl (buildObj opts) chart
resetOption opts chart = liftEff $ resetOptionImpl opts chart


foreign import resizeImpl
Expand Down
Loading

0 comments on commit 6f205ff

Please sign in to comment.