elm format

This commit is contained in:
DieMyst 2020-11-25 19:51:53 +03:00
parent fb3b426e78
commit ea2fcf9971
33 changed files with 192 additions and 122 deletions

View File

@ -1,8 +1,9 @@
module Config exposing (..)
type alias Config =
{ peerId: String
, relayId: String
{ peerId : String
, relayId : String
}

View File

@ -1,5 +1,5 @@
module HubPage.Model exposing (..)
type alias Model =
{
}
{}

View File

@ -1,3 +1,5 @@
module HubPage.Msg exposing (..)
type Msg = NoOp
type Msg
= NoOp

View File

@ -1 +1 @@
module HubPage.Update exposing (..)
module HubPage.Update exposing (..)

View File

@ -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 }
]

View File

@ -1,10 +1,9 @@
module Instances.Model exposing (..)
type alias Instance =
{
}
type alias Instance =
{}
type alias Model =
{
}
{}

View File

@ -1,3 +1,5 @@
module Instances.Msg exposing (..)
type Msg = NoOp
type Msg
= NoOp

View File

@ -1 +1 @@
module Instances.Update exposing (..)
module Instances.Update exposing (..)

View File

@ -1 +1 @@
module Instances.View exposing (..)
module Instances.View exposing (..)

View File

@ -29,7 +29,9 @@ type Route
type alias PeerData =
{ services : List Service
, modules: List String }
, modules : List String
}
emptyPeerData : PeerData
emptyPeerData =

View File

@ -1 +1 @@
module ModulePage.Model exposing (..)
module ModulePage.Model exposing (..)

View File

@ -1 +1 @@
module ModulePage.Msg exposing (..)
module ModulePage.Msg exposing (..)

View File

@ -1 +1 @@
module ModulePage.Update exposing (..)
module ModulePage.Update exposing (..)

View File

@ -1 +1 @@
module ModulePage.View exposing (..)
module ModulePage.View exposing (..)

View File

@ -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

View File

@ -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
}
}

View File

@ -1 +1 @@
module Modules.Msg exposing (..)
module Modules.Msg exposing (..)

View File

@ -1 +1 @@
module Modules.Update exposing (..)
module Modules.Update exposing (..)

View File

@ -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 ] ]
]
]

View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
module ServicePage.Model exposing (..)
module ServicePage.Model exposing (..)

View File

@ -1 +1 @@
module ServicePage.Msg exposing (..)
module ServicePage.Msg exposing (..)

View File

@ -1 +1 @@
module ServicePage.Update exposing (..)
module ServicePage.Update exposing (..)

View File

@ -1 +1 @@
module ServicePage.View exposing (..)
module ServicePage.View exposing (..)

View File

@ -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

View File

@ -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
}
}

View File

@ -1 +1 @@
module Services.Msg exposing (..)
module Services.Msg exposing (..)

View File

@ -1 +1 @@
module Services.Update exposing (..)
module Services.Update exposing (..)

View File

@ -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 ]
]
]

View File

@ -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 )

View File

@ -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")

View File

@ -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
)
]