Apply tag colors from settings

This commit is contained in:
Eike Kettner
2020-06-08 00:54:47 +02:00
parent 1cd65b7b7c
commit 1dd84c11bd
39 changed files with 375 additions and 341 deletions

View File

@ -27,13 +27,12 @@ type alias Model =
, searchOffset : Int
, moreAvailable : Bool
, moreInProgress : Bool
, uiSettings : UiSettings
}
init : Flags -> Model
init _ =
{ searchMenuModel = Comp.SearchMenu.emptyModel
{ searchMenuModel = Comp.SearchMenu.init
, itemListModel = Comp.ItemCardList.init
, searchInProgress = False
, viewMode = Listing
@ -41,7 +40,6 @@ init _ =
, searchOffset = 0
, moreAvailable = True
, moreInProgress = False
, uiSettings = Data.UiSettings.defaults
}
@ -55,7 +53,6 @@ type Msg
| DoSearch
| ToggleSearchMenu
| LoadMore
| GetUiSettings UiSettings
type ViewMode
@ -77,15 +74,15 @@ itemNav id model =
}
doSearchCmd : Flags -> Int -> Model -> Cmd Msg
doSearchCmd flags offset model =
doSearchCmd : Flags -> UiSettings -> Int -> Model -> Cmd Msg
doSearchCmd flags settings offset model =
let
smask =
Comp.SearchMenu.getItemSearch model.searchMenuModel
mask =
{ smask
| limit = model.uiSettings.itemSearchPageSize
| limit = settings.itemSearchPageSize
, offset = offset
}
in
@ -96,10 +93,10 @@ doSearchCmd flags offset model =
Api.itemSearch flags mask ItemSearchAddResp
resultsBelowLimit : Model -> Bool
resultsBelowLimit model =
resultsBelowLimit : UiSettings -> Model -> Bool
resultsBelowLimit settings model =
let
len =
Data.Items.length model.itemListModel.results
in
len < model.uiSettings.itemSearchPageSize
len < settings.itemSearchPageSize

View File

@ -4,17 +4,18 @@ import Browser.Navigation as Nav
import Comp.ItemCardList
import Comp.SearchMenu
import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings)
import Page exposing (Page(..))
import Page.Home.Data exposing (..)
import Util.Update
update : Nav.Key -> Flags -> Msg -> Model -> ( Model, Cmd Msg )
update key flags msg model =
update : Nav.Key -> Flags -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg )
update key flags settings msg model =
case msg of
Init ->
Util.Update.andThen1
[ update key flags (SearchMenuMsg Comp.SearchMenu.Init)
[ update key flags settings (SearchMenuMsg Comp.SearchMenu.Init)
]
model
@ -23,19 +24,19 @@ update key flags msg model =
nm =
{ model | searchOffset = 0 }
in
update key flags (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
update key flags settings (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
SearchMenuMsg m ->
let
nextState =
Comp.SearchMenu.update flags m model.searchMenuModel
Comp.SearchMenu.update flags settings m model.searchMenuModel
newModel =
{ model | searchMenuModel = Tuple.first nextState.modelCmd }
( m2, c2 ) =
if nextState.stateChange then
doSearch flags newModel
doSearch flags settings newModel
else
( newModel, Cmd.none )
@ -62,7 +63,7 @@ update key flags msg model =
ItemSearchResp (Ok list) ->
let
noff =
model.uiSettings.itemSearchPageSize
settings.itemSearchPageSize
m =
{ model
@ -72,12 +73,12 @@ update key flags msg model =
, moreAvailable = list.groups /= []
}
in
update key flags (ItemCardListMsg (Comp.ItemCardList.SetResults list)) m
update key flags settings (ItemCardListMsg (Comp.ItemCardList.SetResults list)) m
ItemSearchAddResp (Ok list) ->
let
noff =
model.searchOffset + model.uiSettings.itemSearchPageSize
model.searchOffset + settings.itemSearchPageSize
m =
{ model
@ -88,7 +89,7 @@ update key flags msg model =
, moreAvailable = list.groups /= []
}
in
update key flags (ItemCardListMsg (Comp.ItemCardList.AddResults list)) m
update key flags settings (ItemCardListMsg (Comp.ItemCardList.AddResults list)) m
ItemSearchAddResp (Err _) ->
( { model
@ -109,7 +110,7 @@ update key flags msg model =
nm =
{ model | searchOffset = 0 }
in
doSearch flags nm
doSearch flags settings nm
ToggleSearchMenu ->
( { model | menuCollapsed = not model.menuCollapsed }
@ -118,24 +119,17 @@ update key flags msg model =
LoadMore ->
if model.moreAvailable then
doSearchMore flags model
doSearchMore flags settings model
else
( model, Cmd.none )
GetUiSettings settings ->
let
m_ =
{ model | uiSettings = settings }
in
doSearch flags m_
doSearch : Flags -> Model -> ( Model, Cmd Msg )
doSearch flags model =
doSearch : Flags -> UiSettings -> Model -> ( Model, Cmd Msg )
doSearch flags settings model =
let
cmd =
doSearchCmd flags 0 model
doSearchCmd flags settings 0 model
in
( { model
| searchInProgress = True
@ -146,11 +140,11 @@ doSearch flags model =
)
doSearchMore : Flags -> Model -> ( Model, Cmd Msg )
doSearchMore flags model =
doSearchMore : Flags -> UiSettings -> Model -> ( Model, Cmd Msg )
doSearchMore flags settings model =
let
cmd =
doSearchCmd flags model.searchOffset model
doSearchCmd flags settings model.searchOffset model
in
( { model | moreInProgress = True, viewMode = Listing }
, cmd

View File

@ -2,6 +2,7 @@ module Page.Home.View exposing (view)
import Comp.ItemCardList
import Comp.SearchMenu
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
@ -9,8 +10,8 @@ import Page exposing (Page(..))
import Page.Home.Data exposing (..)
view : Model -> Html Msg
view model =
view : UiSettings -> Model -> Html Msg
view settings model =
div [ class "home-page ui padded grid" ]
[ div
[ classList
@ -52,7 +53,7 @@ view model =
]
]
, div [ class "ui attached fluid segment" ]
[ Html.map SearchMenuMsg (Comp.SearchMenu.view model.searchMenuModel)
[ Html.map SearchMenuMsg (Comp.SearchMenu.view settings model.searchMenuModel)
]
]
, div
@ -86,7 +87,7 @@ view model =
else
Html.map ItemCardListMsg
(Comp.ItemCardList.view model.itemListModel)
(Comp.ItemCardList.view settings model.itemListModel)
Detail ->
div [] []
@ -101,7 +102,7 @@ view model =
[ classList
[ ( "ui basic tiny button", True )
, ( "disabled", not model.moreAvailable )
, ( "hidden invisible", resultsBelowLimit model )
, ( "hidden invisible", resultsBelowLimit settings model )
]
, disabled (not model.moreAvailable || model.moreInProgress || model.searchInProgress)
, title "Load more items"