From 0365c1980aa7c2f6e2eff90d769917f03287029f Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Fri, 10 Jul 2020 01:04:59 +0200 Subject: [PATCH] Show new data about spaces in web-ui --- modules/webapp/src/main/elm/Api.elm | 15 +++++++-- .../webapp/src/main/elm/Comp/SpaceManage.elm | 33 ++++++++++++++++--- .../webapp/src/main/elm/Comp/SpaceTable.elm | 11 ++++++- 3 files changed, 51 insertions(+), 8 deletions(-) diff --git a/modules/webapp/src/main/elm/Api.elm b/modules/webapp/src/main/elm/Api.elm index aa2ff687..e2adb8c9 100644 --- a/modules/webapp/src/main/elm/Api.elm +++ b/modules/webapp/src/main/elm/Api.elm @@ -221,10 +221,19 @@ getSpaceDetail flags id receive = } -getSpaces : Flags -> String -> (Result Http.Error SpaceList -> msg) -> Cmd msg -getSpaces flags query receive = +getSpaces : Flags -> String -> Bool -> (Result Http.Error SpaceList -> msg) -> Cmd msg +getSpaces flags query owningOnly receive = Http2.authGet - { url = flags.config.baseUrl ++ "/api/v1/sec/space?q=" ++ Url.percentEncode query + { url = + flags.config.baseUrl + ++ "/api/v1/sec/space?q=" + ++ Url.percentEncode query + ++ (if owningOnly then + "&owning=true" + + else + "" + ) , account = getAccount flags , expect = Http.expectJson receive Api.Model.SpaceList.decoder } diff --git a/modules/webapp/src/main/elm/Comp/SpaceManage.elm b/modules/webapp/src/main/elm/Comp/SpaceManage.elm index 66aa2487..d050d6d6 100644 --- a/modules/webapp/src/main/elm/Comp/SpaceManage.elm +++ b/modules/webapp/src/main/elm/Comp/SpaceManage.elm @@ -18,7 +18,7 @@ import Comp.SpaceTable import Data.Flags exposing (Flags) import Html exposing (..) import Html.Attributes exposing (..) -import Html.Events exposing (onClick, onInput) +import Html.Events exposing (onCheck, onClick, onInput) import Http @@ -28,6 +28,7 @@ type alias Model = , spaces : List SpaceItem , users : List User , query : String + , owningOnly : Bool , loading : Bool } @@ -40,6 +41,7 @@ type Msg | SpaceDetailResp (Result Http.Error SpaceDetail) | SetQuery String | InitNewSpace + | ToggleOwningOnly empty : Model @@ -49,6 +51,7 @@ empty = , spaces = [] , users = [] , query = "" + , owningOnly = True , loading = False } @@ -58,7 +61,7 @@ init flags = ( empty , Cmd.batch [ Api.getUsers flags UserListResp - , Api.getSpaces flags "" SpaceListResp + , Api.getSpaces flags empty.query empty.owningOnly SpaceListResp ] ) @@ -94,7 +97,7 @@ update flags msg model = cmd = if back then - Api.getSpaces flags model.query SpaceListResp + Api.getSpaces flags model.query model.owningOnly SpaceListResp else Cmd.none @@ -117,7 +120,18 @@ update flags msg model = ( model, Cmd.none ) SetQuery str -> - ( { model | query = str }, Api.getSpaces flags str SpaceListResp ) + ( { model | query = str } + , Api.getSpaces flags str model.owningOnly SpaceListResp + ) + + ToggleOwningOnly -> + let + newOwning = + not model.owningOnly + in + ( { model | owningOnly = newOwning } + , Api.getSpaces flags model.query newOwning SpaceListResp + ) UserListResp (Ok ul) -> ( { model | users = ul.items }, Cmd.none ) @@ -187,6 +201,17 @@ viewTable model = [] ] ] + , div [ class "item" ] + [ div [ class "ui checkbox" ] + [ input + [ type_ "checkbox" + , onCheck (\_ -> ToggleOwningOnly) + , checked model.owningOnly + ] + [] + , label [] [ text "Show owning spaces only" ] + ] + ] , div [ class "right menu" ] [ div [ class "item" ] [ a diff --git a/modules/webapp/src/main/elm/Comp/SpaceTable.elm b/modules/webapp/src/main/elm/Comp/SpaceTable.elm index acfac4dc..19f7fb3e 100644 --- a/modules/webapp/src/main/elm/Comp/SpaceTable.elm +++ b/modules/webapp/src/main/elm/Comp/SpaceTable.elm @@ -8,10 +8,10 @@ module Comp.SpaceTable exposing ) import Api.Model.SpaceItem exposing (SpaceItem) -import Api.Model.SpaceList exposing (SpaceList) import Html exposing (..) import Html.Attributes exposing (..) import Html.Events exposing (onClick) +import Util.Html import Util.Time @@ -48,6 +48,8 @@ view _ items = [ th [ class "collapsing" ] [] , th [] [ text "Name" ] , th [] [ text "Owner" ] + , th [] [ text "Owner or Member" ] + , th [] [ text "#Member" ] , th [] [ text "Created" ] ] , tbody [] @@ -75,6 +77,13 @@ viewItem item = , td [] [ text item.owner.name ] + , td [] + [ Util.Html.checkbox item.isMember + ] + , td [] + [ String.fromInt item.memberCount + |> text + ] , td [] [ Util.Time.formatDateShort item.created |> text