mirror of
https://github.com/fluencelabs/dashboard
synced 2025-03-16 13:30:48 +00:00
elm format
This commit is contained in:
parent
fb3b426e78
commit
ea2fcf9971
@ -1,8 +1,9 @@
|
||||
module Config exposing (..)
|
||||
|
||||
|
||||
type alias Config =
|
||||
{ peerId: String
|
||||
, relayId: String
|
||||
{ peerId : String
|
||||
, relayId : String
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
module HubPage.Model exposing (..)
|
||||
|
||||
|
||||
type alias Model =
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
@ -1,3 +1,5 @@
|
||||
module HubPage.Msg exposing (..)
|
||||
|
||||
type Msg = NoOp
|
||||
|
||||
type Msg
|
||||
= NoOp
|
||||
|
@ -1 +1 @@
|
||||
module HubPage.Update exposing (..)
|
||||
module HubPage.Update exposing (..)
|
||||
|
@ -8,6 +8,7 @@ import Modules.View
|
||||
import Services.Model exposing (ServiceInfo)
|
||||
import Services.View
|
||||
|
||||
|
||||
servicesExample : List ServiceInfo
|
||||
servicesExample =
|
||||
[ { name = "SQLite", author = "Company Inc", instanceNumber = 2 }
|
||||
@ -16,6 +17,7 @@ servicesExample =
|
||||
, { name = "Imagemagick", author = "Magic Corp", instanceNumber = 0 }
|
||||
]
|
||||
|
||||
|
||||
modulesExample : List ModuleInfo
|
||||
modulesExample =
|
||||
[ { name = "sqlite3", instanceNumber = 2 }
|
||||
@ -26,8 +28,10 @@ modulesExample =
|
||||
, { name = "basic_auth", instanceNumber = 0 }
|
||||
]
|
||||
|
||||
|
||||
view : Model -> Html msg
|
||||
view model = Html.div []
|
||||
[ Services.View.view {services = servicesExample}
|
||||
, Modules.View.view {modules = modulesExample }
|
||||
]
|
||||
view model =
|
||||
Html.div []
|
||||
[ Services.View.view { services = servicesExample }
|
||||
, Modules.View.view { modules = modulesExample }
|
||||
]
|
||||
|
@ -1,10 +1,9 @@
|
||||
module Instances.Model exposing (..)
|
||||
|
||||
type alias Instance =
|
||||
{
|
||||
|
||||
}
|
||||
type alias Instance =
|
||||
{}
|
||||
|
||||
|
||||
type alias Model =
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
@ -1,3 +1,5 @@
|
||||
module Instances.Msg exposing (..)
|
||||
|
||||
type Msg = NoOp
|
||||
|
||||
type Msg
|
||||
= NoOp
|
||||
|
@ -1 +1 @@
|
||||
module Instances.Update exposing (..)
|
||||
module Instances.Update exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module Instances.View exposing (..)
|
||||
module Instances.View exposing (..)
|
||||
|
@ -29,7 +29,9 @@ type Route
|
||||
|
||||
type alias PeerData =
|
||||
{ services : List Service
|
||||
, modules: List String }
|
||||
, modules : List String
|
||||
}
|
||||
|
||||
|
||||
emptyPeerData : PeerData
|
||||
emptyPeerData =
|
||||
|
@ -1 +1 @@
|
||||
module ModulePage.Model exposing (..)
|
||||
module ModulePage.Model exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module ModulePage.Msg exposing (..)
|
||||
module ModulePage.Msg exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module ModulePage.Update exposing (..)
|
||||
module ModulePage.Update exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module ModulePage.View exposing (..)
|
||||
module ModulePage.View exposing (..)
|
||||
|
@ -3,6 +3,7 @@ module Modules.Air exposing (..)
|
||||
import Air exposing (Air, callBI, fold, next, par, relayEvent, seq, set)
|
||||
import Json.Encode exposing (list, string)
|
||||
|
||||
|
||||
air : String -> String -> List String -> Air
|
||||
air peerId relayId peers =
|
||||
let
|
||||
@ -17,15 +18,14 @@ air peerId relayId peers =
|
||||
|
||||
airScript =
|
||||
seq
|
||||
(callBI "relayId" ( "op", "identity" ) [ ] Nothing)
|
||||
(callBI "relayId" ( "op", "identity" ) [] Nothing)
|
||||
(fold "peers" "p" <|
|
||||
par
|
||||
(seq
|
||||
(callBI "p" ( "dist", "get_modules" ) [ ] (Just "modules"))
|
||||
(callBI "p" ( "dist", "get_modules" ) [] (Just "modules"))
|
||||
(relayEvent "modules_discovered" [ "p", "modules" ])
|
||||
)
|
||||
(next "p")
|
||||
)
|
||||
in
|
||||
clientIdSet <| relayIdSet <| peersSet <| airScript
|
||||
|
||||
clientIdSet <| relayIdSet <| peersSet <| airScript
|
||||
|
@ -1,10 +1,12 @@
|
||||
module Modules.Model exposing (..)
|
||||
|
||||
|
||||
type alias ModuleInfo =
|
||||
{ name: String
|
||||
, instanceNumber: Int
|
||||
{ name : String
|
||||
, instanceNumber : Int
|
||||
}
|
||||
|
||||
|
||||
type alias Model =
|
||||
{ modules : List ModuleInfo
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
module Modules.Msg exposing (..)
|
||||
module Modules.Msg exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module Modules.Update exposing (..)
|
||||
module Modules.Update exposing (..)
|
||||
|
@ -4,17 +4,21 @@ import Html exposing (Html)
|
||||
import Modules.Model exposing (Model, ModuleInfo)
|
||||
import Palette exposing (classes)
|
||||
import Utils.Utils exposing (instancesText)
|
||||
|
||||
|
||||
view : Model -> Html msg
|
||||
view model =
|
||||
let
|
||||
modulesView = List.map viewService model.modules
|
||||
modulesView =
|
||||
List.map viewService model.modules
|
||||
in
|
||||
Html.div [classes "cf ph2-ns"] modulesView
|
||||
Html.div [ classes "cf ph2-ns" ] modulesView
|
||||
|
||||
|
||||
viewService : ModuleInfo -> Html msg
|
||||
viewService service =
|
||||
Html.div [classes "fl w-third-ns pa2"]
|
||||
[ Html.div [classes "fl w-100 br2 ba solid pa2 mh2"]
|
||||
[ Html.p [classes "tl di"] [Html.span [classes "b pl2"] [Html.text service.name], Html.span [classes "di fr pr2"] [instancesText service.instanceNumber]]
|
||||
]
|
||||
]
|
||||
Html.div [ classes "fl w-third-ns pa2" ]
|
||||
[ Html.div [ classes "fl w-100 br2 ba solid pa2 mh2" ]
|
||||
[ Html.p [ classes "tl di" ] [ Html.span [ classes "b pl2" ] [ Html.text service.name ], Html.span [ classes "di fr pr2" ] [ instancesText service.instanceNumber ] ]
|
||||
]
|
||||
]
|
||||
|
@ -19,11 +19,13 @@ limitations under the License.
|
||||
import Html exposing (Html)
|
||||
import Html.Attributes exposing (classList)
|
||||
|
||||
classes: String -> Html.Attribute msg
|
||||
|
||||
classes : String -> Html.Attribute msg
|
||||
classes cls =
|
||||
classList <|
|
||||
List.map (\s -> (s, True)) <|
|
||||
String.split " " cls
|
||||
List.map (\s -> ( s, True )) <|
|
||||
String.split " " cls
|
||||
|
||||
|
||||
shortHashRaw size hash =
|
||||
String.concat
|
||||
|
@ -20,6 +20,7 @@ routeParser =
|
||||
parse url =
|
||||
Maybe.withDefault (Page "") <| Url.Parser.parse routeParser url
|
||||
|
||||
|
||||
routeView : Route -> Html msg
|
||||
routeView route =
|
||||
case route of
|
||||
@ -27,19 +28,22 @@ routeView route =
|
||||
case page of
|
||||
"hub" ->
|
||||
HubPage.view {}
|
||||
|
||||
_ ->
|
||||
Html.text ("undefined page: " ++ page)
|
||||
|
||||
|
||||
Peer peer ->
|
||||
Html.text peer
|
||||
|
||||
|
||||
routeCommand : Model -> Route -> Cmd msg
|
||||
routeCommand m r =
|
||||
case r of
|
||||
Page s ->
|
||||
let
|
||||
_ = Debug.log "page" s
|
||||
_ =
|
||||
Debug.log "page" s
|
||||
|
||||
clientId =
|
||||
set "clientId" <| Encode.string m.peerId
|
||||
|
||||
|
@ -1 +1 @@
|
||||
module ServicePage.Model exposing (..)
|
||||
module ServicePage.Model exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module ServicePage.Msg exposing (..)
|
||||
module ServicePage.Msg exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module ServicePage.Update exposing (..)
|
||||
module ServicePage.Update exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module ServicePage.View exposing (..)
|
||||
module ServicePage.View exposing (..)
|
||||
|
@ -3,6 +3,7 @@ module Services.Air exposing (..)
|
||||
import Air exposing (Air, callBI, fold, next, par, relayEvent, seq, set)
|
||||
import Json.Encode exposing (list, string)
|
||||
|
||||
|
||||
air : String -> String -> List String -> Air
|
||||
air peerId relayId peers =
|
||||
let
|
||||
@ -17,15 +18,14 @@ air peerId relayId peers =
|
||||
|
||||
airScript =
|
||||
seq
|
||||
(callBI "relayId" ( "op", "identity" ) [ ] Nothing)
|
||||
(callBI "relayId" ( "op", "identity" ) [] Nothing)
|
||||
(fold "peers" "p" <|
|
||||
par
|
||||
(seq
|
||||
(callBI "p" ( "srv", "get_interfaces" ) [ ] (Just "interfaces"))
|
||||
(callBI "p" ( "srv", "get_interfaces" ) [] (Just "interfaces"))
|
||||
(relayEvent "services_discovered" [ "p", "interfaces" ])
|
||||
)
|
||||
(next "p")
|
||||
)
|
||||
in
|
||||
clientIdSet <| relayIdSet <| peersSet <| airScript
|
||||
|
||||
clientIdSet <| relayIdSet <| peersSet <| airScript
|
||||
|
@ -1,34 +1,40 @@
|
||||
module Services.Model exposing (..)
|
||||
|
||||
|
||||
type alias Signature =
|
||||
{ arguments: List (List String)
|
||||
, name: String
|
||||
, output_types: List String
|
||||
{ arguments : List (List String)
|
||||
, name : String
|
||||
, output_types : List String
|
||||
}
|
||||
|
||||
|
||||
type alias Record =
|
||||
{ fields: List (List String)
|
||||
, id: Int
|
||||
, name: String
|
||||
{ fields : List (List String)
|
||||
, id : Int
|
||||
, name : String
|
||||
}
|
||||
|
||||
|
||||
type alias Interface =
|
||||
{ function_signatures: List Signature
|
||||
, record_types: List Record
|
||||
{ function_signatures : List Signature
|
||||
, record_types : List Record
|
||||
}
|
||||
|
||||
|
||||
type alias Service =
|
||||
{ service_id: String
|
||||
, blueprint_id: String
|
||||
, interface: Interface
|
||||
{ service_id : String
|
||||
, blueprint_id : String
|
||||
, interface : Interface
|
||||
}
|
||||
|
||||
|
||||
type alias ServiceInfo =
|
||||
{ name: String,
|
||||
author: String,
|
||||
instanceNumber: Int
|
||||
{ name : String
|
||||
, author : String
|
||||
, instanceNumber : Int
|
||||
}
|
||||
|
||||
|
||||
type alias Model =
|
||||
{ services : List ServiceInfo
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
module Services.Msg exposing (..)
|
||||
module Services.Msg exposing (..)
|
||||
|
@ -1 +1 @@
|
||||
module Services.Update exposing (..)
|
||||
module Services.Update exposing (..)
|
||||
|
@ -5,18 +5,22 @@ import Palette exposing (classes)
|
||||
import Services.Model exposing (Model, ServiceInfo)
|
||||
import Utils.Utils exposing (instancesText)
|
||||
|
||||
|
||||
view : Model -> Html msg
|
||||
view model =
|
||||
let
|
||||
servicesView = List.map viewService model.services
|
||||
servicesView =
|
||||
List.map viewService model.services
|
||||
in
|
||||
Html.div [classes "cf ph2-ns"] servicesView
|
||||
Html.div [ classes "cf ph2-ns" ] servicesView
|
||||
|
||||
|
||||
viewService : ServiceInfo -> Html msg
|
||||
viewService service =
|
||||
Html.div [classes "fl w-third-ns pa2"]
|
||||
[ Html.div [classes "fl w-100 br2 ba solid ma2 pa3"]
|
||||
[ Html.div [classes "w-100 mb2 b"] [Html.text service.name]
|
||||
, Html.div [classes "w-100 mb4"] [Html.text ("By " ++ service.author)]
|
||||
, Html.div [classes "w-100"] [instancesText service.instanceNumber]]
|
||||
]
|
||||
Html.div [ classes "fl w-third-ns pa2" ]
|
||||
[ Html.div [ classes "fl w-100 br2 ba solid ma2 pa3" ]
|
||||
[ Html.div [ classes "w-100 mb2 b" ] [ Html.text service.name ]
|
||||
, Html.div [ classes "w-100 mb4" ] [ Html.text ("By " ++ service.author) ]
|
||||
, Html.div [ classes "w-100" ] [ instancesText service.instanceNumber ]
|
||||
]
|
||||
]
|
||||
|
@ -29,11 +29,12 @@ import Route
|
||||
import Services.Air
|
||||
import Url
|
||||
|
||||
|
||||
maybeValueToString : Maybe Value -> String
|
||||
maybeValueToString mv =
|
||||
case mv of
|
||||
Just v ->
|
||||
case (decodeValue string v) of
|
||||
case decodeValue string v of
|
||||
Ok value ->
|
||||
value
|
||||
|
||||
@ -43,31 +44,39 @@ maybeValueToString mv =
|
||||
Nothing ->
|
||||
""
|
||||
|
||||
|
||||
|
||||
-- list of lists of strings in json to list of strings from first element if it is an array
|
||||
|
||||
|
||||
maybeValueToListString : Maybe Value -> List String
|
||||
maybeValueToListString mv =
|
||||
case mv of
|
||||
Just v ->
|
||||
case (decodeValue (list (list string)) v) of
|
||||
case decodeValue (list (list string)) v of
|
||||
Ok value ->
|
||||
Maybe.withDefault [] (List.head value)
|
||||
|
||||
Err error ->
|
||||
let
|
||||
_ = Debug.log "error" error
|
||||
_ =
|
||||
Debug.log "error" error
|
||||
in
|
||||
case (decodeValue (list string) v) of
|
||||
Ok value ->
|
||||
value
|
||||
Err err ->
|
||||
let
|
||||
_ = Debug.log "err" err
|
||||
in
|
||||
["error"]
|
||||
case decodeValue (list string) v of
|
||||
Ok value ->
|
||||
value
|
||||
|
||||
Err err ->
|
||||
let
|
||||
_ =
|
||||
Debug.log "err" err
|
||||
in
|
||||
[ "error" ]
|
||||
|
||||
Nothing ->
|
||||
[]
|
||||
|
||||
|
||||
update : Msg -> Model -> ( Model, Cmd Msg )
|
||||
update msg model =
|
||||
case msg of
|
||||
@ -95,37 +104,60 @@ update msg model =
|
||||
AquamarineEvent { name, peer, peers, services, modules } ->
|
||||
case name of
|
||||
"peers_discovered" ->
|
||||
-- TODO call different function to parse args and change model
|
||||
let
|
||||
peersMap = List.map (\p -> Tuple.pair p emptyPeerData) (withDefault [] peers)
|
||||
newDict = Dict.fromList (peersMap)
|
||||
updatedDict = Dict.union model.discoveredPeers newDict
|
||||
peersMap =
|
||||
List.map (\p -> Tuple.pair p emptyPeerData) (withDefault [] peers)
|
||||
|
||||
newDict =
|
||||
Dict.fromList peersMap
|
||||
|
||||
updatedDict =
|
||||
Dict.union model.discoveredPeers newDict
|
||||
in
|
||||
-- TODO get data from args, propagate
|
||||
( { model | discoveredPeers = updatedDict }, Cmd.none )
|
||||
|
||||
"services_discovered" ->
|
||||
let
|
||||
newServices = Maybe.withDefault [] services
|
||||
empty = emptyPeerData
|
||||
up = (\old -> Just (Maybe.withDefault {empty | services = newServices} (Maybe.map (\o -> {o | services = newServices}) old)))
|
||||
updatedDict = Dict.update peer up model.discoveredPeers
|
||||
_ = Debug.log "discovered" updatedDict
|
||||
newServices =
|
||||
Maybe.withDefault [] services
|
||||
|
||||
empty =
|
||||
emptyPeerData
|
||||
|
||||
up =
|
||||
\old -> Just (Maybe.withDefault { empty | services = newServices } (Maybe.map (\o -> { o | services = newServices }) old))
|
||||
|
||||
updatedDict =
|
||||
Dict.update peer up model.discoveredPeers
|
||||
|
||||
_ =
|
||||
Debug.log "discovered" updatedDict
|
||||
in
|
||||
( { model | discoveredPeers = updatedDict }, Cmd.none )
|
||||
( { model | discoveredPeers = updatedDict }, Cmd.none )
|
||||
|
||||
"modules_discovered" ->
|
||||
let
|
||||
newModules = Maybe.withDefault [] modules
|
||||
empty = emptyPeerData
|
||||
up = (\old -> Just (Maybe.withDefault {empty | modules = newModules} (Maybe.map (\o -> {o | modules = newModules}) old)))
|
||||
updatedDict = Dict.update peer up model.discoveredPeers
|
||||
_ = Debug.log "discovered" updatedDict
|
||||
newModules =
|
||||
Maybe.withDefault [] modules
|
||||
|
||||
empty =
|
||||
emptyPeerData
|
||||
|
||||
up =
|
||||
\old -> Just (Maybe.withDefault { empty | modules = newModules } (Maybe.map (\o -> { o | modules = newModules }) old))
|
||||
|
||||
updatedDict =
|
||||
Dict.update peer up model.discoveredPeers
|
||||
|
||||
_ =
|
||||
Debug.log "discovered" updatedDict
|
||||
in
|
||||
( { model | discoveredPeers = updatedDict }, Cmd.none )
|
||||
( { model | discoveredPeers = updatedDict }, Cmd.none )
|
||||
|
||||
_ ->
|
||||
let
|
||||
_ = Debug.log "event in ELM" name
|
||||
_ =
|
||||
Debug.log "event in ELM" name
|
||||
in
|
||||
( model, Cmd.none )
|
||||
|
||||
|
@ -2,12 +2,15 @@ module Utils.Utils exposing (..)
|
||||
|
||||
import Html exposing (Html)
|
||||
|
||||
|
||||
instancesText : Int -> Html msg
|
||||
instancesText num =
|
||||
let
|
||||
strNum = String.fromInt num
|
||||
strNum =
|
||||
String.fromInt num
|
||||
in
|
||||
if num == 1 then
|
||||
Html.text (strNum ++ " instance")
|
||||
else
|
||||
Html.text (strNum ++ " instances")
|
||||
if num == 1 then
|
||||
Html.text (strNum ++ " instance")
|
||||
|
||||
else
|
||||
Html.text (strNum ++ " instances")
|
||||
|
25
src/View.elm
25
src/View.elm
@ -39,24 +39,27 @@ title _ =
|
||||
body : Model -> Html Msg
|
||||
body model =
|
||||
let
|
||||
a = 1
|
||||
url = model.url
|
||||
newUrl = { url | path = "/hub"}
|
||||
a =
|
||||
1
|
||||
|
||||
url =
|
||||
model.url
|
||||
|
||||
newUrl =
|
||||
{ url | path = "/hub" }
|
||||
in
|
||||
layout <|
|
||||
List.concat
|
||||
[
|
||||
[ header [ classes "w-100 bt bb b--black-10" ] [ routeView (Page "hub") ] ] ++
|
||||
[ header [ classes "w-100 bt bb b--black-10", onClick Click ] [ text "GET SERVICES" ] ]
|
||||
]
|
||||
layout <|
|
||||
List.concat
|
||||
[ [ header [ classes "w-100 bt bb b--black-10" ] [ routeView (Page "hub") ] ]
|
||||
++ [ header [ classes "w-100 bt bb b--black-10", onClick Click ] [ text "GET SERVICES" ] ]
|
||||
]
|
||||
|
||||
|
||||
layout : List (Html Msg) -> Html Msg
|
||||
layout elms =
|
||||
div [ classes "mw9 center w-70" ]
|
||||
[ div [ classes "fl w-100 pa2" ]
|
||||
([
|
||||
]
|
||||
([]
|
||||
++ elms
|
||||
)
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user