86 lines
3.3 KiB
Elm
Raw Normal View History

2020-12-01 15:43:06 +03:00
module ModulePage.View exposing (..)
2020-11-30 16:33:24 +03:00
2020-12-01 15:43:06 +03:00
import Dict exposing (Dict)
2020-12-03 16:43:08 +03:00
import Html exposing (Html, a, article, div, h3, span, text)
import Html.Attributes exposing (attribute)
import Info exposing (getDescription, getSite, modulesDescription)
2020-12-02 03:21:02 +03:00
import Instances.View
import Interface.View exposing (interfaceView)
2020-11-30 16:33:24 +03:00
import Model exposing (Model)
2020-12-01 15:43:06 +03:00
import ModulePage.Model exposing (ModuleViewInfo)
import Modules.Model exposing (Module)
2020-11-30 16:33:24 +03:00
import Palette exposing (classes)
view : Model -> String -> Html msg
view model id =
let
moduleInfo =
2020-12-02 03:21:02 +03:00
moduleToInfo model.modules id
2020-11-30 16:33:24 +03:00
in
case moduleInfo of
Just mi ->
2020-12-02 03:21:02 +03:00
let
2020-12-02 12:10:59 +03:00
check =
Maybe.map (\bp -> bp.dependencies |> List.member id)
filter =
\s -> model.blueprints |> Dict.get s.blueprint_id |> check |> Maybe.withDefault False
( instanceNum, instanceView ) =
Instances.View.view model filter
2020-12-02 03:21:02 +03:00
in
2020-12-02 12:10:59 +03:00
div [ classes "fl w-100 cf ph2-ns" ]
[ div [ classes "fl w-100 mb2 pt2" ]
[ span [ classes "fl w-100 f1 lh-title dark-red" ] [ text ("Module: " ++ mi.name) ]
2020-12-02 03:21:02 +03:00
]
2020-12-03 17:09:22 +03:00
, div [ classes "fl w-100 bg-white mt2 ph4 pt3 mb4 pb2 br3" ] [ viewInfo mi ]
2020-12-02 12:10:59 +03:00
, h3 [ classes "pt3" ] [ text ("Instances (" ++ String.fromInt instanceNum ++ ")") ]
2020-12-03 17:09:22 +03:00
, div [ classes "fl w-100 mt2 mb4 bg-white br3" ] [ instanceView ]
2020-12-02 12:10:59 +03:00
]
2020-11-30 16:33:24 +03:00
Nothing ->
div [ classes "cf ph2-ns" ]
[ span [ classes "fl w-100 f1 lh-title dark-red" ] [ text "Module not found" ]
]
2020-12-02 03:21:02 +03:00
moduleToInfo : Dict String Module -> String -> Maybe ModuleViewInfo
moduleToInfo modules id =
2020-11-30 16:33:24 +03:00
let
2020-12-01 15:43:06 +03:00
moduleInfo =
Dict.get id modules
2020-11-30 16:33:24 +03:00
name =
2020-12-01 15:43:06 +03:00
moduleInfo |> Maybe.map .name |> Maybe.withDefault "unknown"
2020-11-30 16:33:24 +03:00
info =
2020-12-01 15:43:06 +03:00
moduleInfo
2020-11-30 16:33:24 +03:00
|> Maybe.map
2020-12-01 15:43:06 +03:00
(\m ->
2020-11-30 16:33:24 +03:00
{ name = name
, id = id
, author = "Fluence Labs"
2020-12-03 16:43:08 +03:00
, authorPeerId = ""
, description = getDescription m.name
, website = getSite m.name
2020-12-01 15:43:06 +03:00
, moduleInfo = m
2020-11-30 16:33:24 +03:00
}
)
in
info
2020-12-01 15:43:06 +03:00
viewInfo : ModuleViewInfo -> Html msg
viewInfo moduleInfo =
2020-11-30 16:33:24 +03:00
article [ classes "cf" ]
[ div [ classes "fl w-30 gray mv1" ] [ text "AUTHOR" ]
2020-12-01 15:43:06 +03:00
, div [ classes "fl w-70 mv1" ] [ span [ classes "fl w-100 black b" ] [ text moduleInfo.author ], span [ classes "fl w-100 black" ] [ text moduleInfo.authorPeerId ] ]
2020-12-03 16:43:08 +03:00
, div [ classes "fl w-30 gray mv1" ] [ text "WEBSITE" ]
, div [ classes "fl w-70 mv1" ] [ a [ attribute "href" moduleInfo.website, classes "fl w-100 black" ] [ text moduleInfo.website ] ]
2020-11-30 16:33:24 +03:00
, div [ classes "fl w-30 gray mv1" ] [ text "DESCRIPTION" ]
2020-12-01 15:43:06 +03:00
, div [ classes "fl w-70 mv1" ] [ span [ classes "fl w-100 black" ] [ text moduleInfo.description ] ]
2020-11-30 16:33:24 +03:00
, div [ classes "fl w-30 gray mv1" ] [ text "INTERFACE" ]
, div [ classes "fl w-70 mv1" ] [ span [ classes "fl w-100 black" ] (interfaceView moduleInfo.moduleInfo.interface) ]
2020-11-30 16:33:24 +03:00
]