mirror of
https://github.com/fluencelabs/dashboard
synced 2025-03-27 10:21:03 +00:00
70 lines
1.6 KiB
Elm
70 lines
1.6 KiB
Elm
module Route exposing (..)
|
|
|
|
import AirScripts.GetAll as GetAll
|
|
import BlueprintPage.View as BlueprintPage
|
|
import Html exposing (Html, text)
|
|
import HubPage.View as HubPage
|
|
import Model exposing (Model, Route(..))
|
|
import ModulePage.View as ModulePage
|
|
import Msg exposing (Msg)
|
|
import NodePage.View as NodePage
|
|
import Port exposing (sendAir)
|
|
import Url.Parser exposing ((</>), Parser, map, oneOf, s, string)
|
|
|
|
|
|
routeParser : Parser (Route -> a) a
|
|
routeParser =
|
|
oneOf
|
|
[ map Peer (s "peer" </> string)
|
|
, map Module (s "module" </> string)
|
|
, map Blueprint (s "blueprint" </> string)
|
|
, map Page string
|
|
]
|
|
|
|
|
|
parse url =
|
|
Maybe.withDefault (Page "") <| Url.Parser.parse routeParser url
|
|
|
|
|
|
routeView : Model -> Route -> Html Msg
|
|
routeView model route =
|
|
case route of
|
|
Page page ->
|
|
case page of
|
|
"" ->
|
|
HubPage.view model
|
|
|
|
"hub" ->
|
|
HubPage.view model
|
|
|
|
"nodes" ->
|
|
NodePage.view model
|
|
|
|
_ ->
|
|
text ("undefined page: " ++ page)
|
|
|
|
Peer peer ->
|
|
text peer
|
|
|
|
Blueprint id ->
|
|
BlueprintPage.view model id
|
|
|
|
Module moduleName ->
|
|
ModulePage.view model moduleName
|
|
|
|
|
|
getAllCmd : String -> String -> List String -> Cmd msg
|
|
getAllCmd peerId relayId knownPeers =
|
|
Cmd.batch
|
|
[ sendAir (GetAll.air peerId relayId knownPeers)
|
|
]
|
|
|
|
|
|
routeCommand : Model -> Route -> Cmd msg
|
|
routeCommand m _ =
|
|
if m.isInitialized then
|
|
Cmd.none
|
|
|
|
else
|
|
getAllCmd m.peerId m.relayId m.knownPeers
|