From 44052381c61ad81305661c4431541cd498f74f07 Mon Sep 17 00:00:00 2001 From: Kamila Souckova Date: Tue, 13 Mar 2018 15:47:33 +0100 Subject: [PATCH] add bare-bones graph (ugly atm) --- webui/elm-package.json | 1 + webui/src/CsvTsdb/Graph.elm | 37 +++++++++++++++++++++++++++++++++++++ webui/src/View.elm | 3 ++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 webui/src/CsvTsdb/Graph.elm diff --git a/webui/elm-package.json b/webui/elm-package.json index f0b976e..1ca4037 100644 --- a/webui/elm-package.json +++ b/webui/elm-package.json @@ -16,6 +16,7 @@ "elm-lang/html": "2.0.0 <= v <= 2.0.0", "elm-lang/http": "1.0.0 <= v <= 1.0.0", "elm-lang/navigation": "2.1.0 <= v <= 2.1.0", + "juanedi/charty": "2.0.0 <= v < 3.0.0", "justinmimbs/elm-date-extra": "3.0.0 <= v <= 3.0.0", "rgrempel/elm-route-url": "4.0.0 <= v <= 4.0.0" }, diff --git a/webui/src/CsvTsdb/Graph.elm b/webui/src/CsvTsdb/Graph.elm new file mode 100644 index 0000000..7330ce5 --- /dev/null +++ b/webui/src/CsvTsdb/Graph.elm @@ -0,0 +1,37 @@ +module CsvTsdb.Graph exposing (..) + +import Date +import Time +import List exposing (..) +import List.Extra exposing (..) +import Html exposing (Html) +import Html.Attributes exposing (class) +import Charty.LineChart as LineChart exposing (Dataset) +import Charty.Color + +import CsvTsdb.Model exposing (Record) + +config = { drawPoints = True + , background = "white" + , colorAssignment = Charty.Color.assignDefaults + , labelPrecision = 0 + , drawLabels = True + } + +records_to_dataset : List Record -> Dataset +records_to_dataset = + let + grouplabel : List Record -> String + grouplabel = map .label >> head >> Maybe.withDefault "whatever" -- always non-empty + record2datapoint : Record -> LineChart.DataPoint + record2datapoint r = (r.date |> Date.toTime |> Time.inSeconds, r.value) + group2series : List Record -> LineChart.Series + group2series rs = { label = grouplabel rs, data = map record2datapoint rs } + in sortBy .label >> groupWhile (\a b -> a.label == b.label) >> map group2series + +view : List Record -> Html m +view = records_to_dataset >> + LineChart.view config >> + List.singleton >> + Html.div [ class "csvtsdb-graph" ] + diff --git a/webui/src/View.elm b/webui/src/View.elm index b94e4c2..fb18386 100644 --- a/webui/src/View.elm +++ b/webui/src/View.elm @@ -11,6 +11,7 @@ import Material.Options as Options exposing (cs, css, div) import Material.Typography as Typography import TrackView +import CsvTsdb.Graph import Model exposing (Model, Msg(..), Tab(..)) @@ -57,7 +58,7 @@ view_content : Model -> Html Msg view_content model = let content = case model.tab of Track -> TrackView.view model - View -> text "Not Implemented Yet" + View -> CsvTsdb.Graph.view model.data Explore -> text "Not Implemented Yet" NotFound -> Options.styled Html.h1 [ cs "mdl-typography--display-4", Typography.center ]