2020-11-26 02:46:33 +03:00

45 lines
1.8 KiB
Elm

module ModulePage.View exposing (..)
import Html exposing (Html)
import Json.Encode as Encode
import ModulePage.Model exposing (ModuleInfo)
import Palette exposing (classes)
import Services.Model exposing (Record)
import String.Interpolate exposing(interpolate)
view : ModuleInfo -> Html msg
view moduleInfo =
Html.div [classes "cf ph2-ns"]
[ Html.span [classes "fl w-100 f1 lh-title dark-red"] [Html.text ("Module: " ++ moduleInfo.name)]
, Html.span [classes "fl w-100 light-red"] [Html.text (moduleInfo.id)]
, viewInfo moduleInfo
]
viewInfo : ModuleInfo -> Html msg
viewInfo moduleInfo =
Html.article [classes "cf"]
[ Html.div [classes "fl w-30 gray mv1"] [Html.text "AUTHOR"]
, Html.div [classes "fl w-70 mv1"] [ Html.span [classes "fl w-100 black b"] [Html.text moduleInfo.author], Html.span [classes "fl w-100 black"] [Html.text moduleInfo.authorPeerId]]
, Html.div [classes "fl w-30 gray mv1"] [Html.text "DESCRIPTION"]
, Html.div [classes "fl w-70 mv1"] [ Html.span [classes "fl w-100 black"] [Html.text moduleInfo.description]]
, Html.div [classes "fl w-30 gray mv1"] [Html.text "INTERFACE"]
, Html.div [classes "fl w-70 mv1"] [ Html.span [classes "fl w-100 black"] (recordsToString moduleInfo.service.interface.record_types)]
]
recordsToString : List Record -> List (Html msg)
recordsToString record =
(List.map recordToString record)
recordToString : Record -> Html msg
recordToString record =
Html.div [classes "i"]
([Html.span [classes "fl w-100 mt2"] [Html.text (record.name ++ " {")]] ++
fieldsToString record.fields ++
[Html.span [classes "fl w-100 mb2"] [Html.text ("}")]])
fieldsToString : List (List String) -> List (Html msg)
fieldsToString fields =
(fields |> List.map (\f -> Html.span [classes "fl w-100 ml2"] [Html.text (String.join ": " f)] ))