From e07d732193719d677cd3e866dc0857f554dc16aa Mon Sep 17 00:00:00 2001 From: Eike Kettner <eike.kettner@posteo.de> Date: Wed, 17 Feb 2021 22:18:22 +0100 Subject: [PATCH] Show item position in detail view --- .../src/main/elm/Comp/ItemDetail/View2.elm | 13 +++++++ modules/webapp/src/main/elm/Data/ItemNav.elm | 38 ++++++++++++++++++- .../webapp/src/main/elm/Page/Home/Data.elm | 11 +----- 3 files changed, 51 insertions(+), 11 deletions(-) diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm index 196fcf4a..486566c4 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/View2.elm @@ -85,6 +85,19 @@ menuBar inav settings model = [ title ("Previous item." ++ keyDescr "Ctrl-,") ] } + , div + [ classList [ ( "hidden", inav.index == Nothing ) ] + , class S.secondaryBasicButtonMain + , class " px-4 py-2 border-t border-b border-r opacity-75" + ] + [ Maybe.map ((+) 1) inav.index + |> Maybe.map String.fromInt + |> Maybe.withDefault "" + |> text + , text " / " + , String.fromInt inav.length + |> text + ] , B.genericButton { label = "" , icon = "fa fa-caret-right" diff --git a/modules/webapp/src/main/elm/Data/ItemNav.elm b/modules/webapp/src/main/elm/Data/ItemNav.elm index 6788f6ec..17537056 100644 --- a/modules/webapp/src/main/elm/Data/ItemNav.elm +++ b/modules/webapp/src/main/elm/Data/ItemNav.elm @@ -1,7 +1,43 @@ -module Data.ItemNav exposing (ItemNav) +module Data.ItemNav exposing (ItemNav, fromList) + +import Api.Model.ItemLight exposing (ItemLight) +import Api.Model.ItemLightList exposing (ItemLightList) +import Util.List type alias ItemNav = { prev : Maybe String , next : Maybe String + , index : Maybe Int + , length : Int + } + + +fromList : ItemLightList -> String -> ItemNav +fromList list id = + let + all : List ItemLight + all = + List.concatMap .items list.groups + + next = + Util.List.findNext (\i -> i.id == id) all + |> Maybe.map .id + + prev = + Util.List.findPrev (\i -> i.id == id) all + |> Maybe.map .id + + len = + List.length all + + index : Maybe Int + index = + Util.List.findIndexed (.id >> (==) id) all + |> Maybe.map Tuple.second + in + { prev = prev + , next = next + , index = index + , length = len } diff --git a/modules/webapp/src/main/elm/Page/Home/Data.elm b/modules/webapp/src/main/elm/Page/Home/Data.elm index 39dcb7b2..b0bf156c 100644 --- a/modules/webapp/src/main/elm/Page/Home/Data.elm +++ b/modules/webapp/src/main/elm/Page/Home/Data.elm @@ -227,16 +227,7 @@ searchTypeString st = itemNav : String -> Model -> ItemNav itemNav id model = - let - prev = - Comp.ItemCardList.prevItem model.itemListModel id - - next = - Comp.ItemCardList.nextItem model.itemListModel id - in - { prev = Maybe.map .id prev - , next = Maybe.map .id next - } + Data.ItemNav.fromList model.itemListModel.results id doSearchCmd : SearchParam -> Model -> Cmd Msg