Fix tag menu when restricting results

When search results are restricted in a share view, tags may disappear
and thus the tags from the beginning need to be kept.
This commit is contained in:
eikek 2021-10-06 00:26:53 +02:00
parent 813797756c
commit 4ad90b76b4
4 changed files with 70 additions and 11 deletions

View File

@ -9,6 +9,7 @@ module Comp.SearchMenu exposing
( Model ( Model
, Msg(..) , Msg(..)
, NextState , NextState
, SearchTab(..)
, TextSearchModel , TextSearchModel
, getItemQuery , getItemQuery
, init , init
@ -563,7 +564,7 @@ updateDrop ddm flags settings msg model =
List.sortBy .count stats.tagCategoryCloud.items List.sortBy .count stats.tagCategoryCloud.items
selectModel = selectModel =
Comp.TagSelect.modifyCount model.tagSelectModel tagCount catCount Comp.TagSelect.modifyCountKeepExisting model.tagSelectModel tagCount catCount
orgOpts = orgOpts =
Comp.Dropdown.update (Comp.Dropdown.SetOptions (List.map .ref stats.corrOrgStats)) Comp.Dropdown.update (Comp.Dropdown.SetOptions (List.map .ref stats.corrOrgStats))
@ -1044,15 +1045,20 @@ updateDrop ddm flags settings msg model =
--- View2 --- View2
viewDrop2 : Texts -> DD.DragDropData -> Flags -> UiSettings -> Model -> Html Msg type alias ViewConfig =
viewDrop2 texts ddd flags settings model = { overrideTabLook : SearchTab -> Comp.Tabs.Look -> Comp.Tabs.Look
}
viewDrop2 : Texts -> DD.DragDropData -> Flags -> ViewConfig -> UiSettings -> Model -> Html Msg
viewDrop2 texts ddd flags cfg settings model =
let let
akkordionStyle = akkordionStyle =
Comp.Tabs.searchMenuStyle Comp.Tabs.searchMenuStyle
in in
Comp.Tabs.akkordion Comp.Tabs.akkordion
akkordionStyle akkordionStyle
(searchTabState settings model) (searchTabState settings cfg model)
(searchTabs texts ddd flags settings model) (searchTabs texts ddd flags settings model)
@ -1254,12 +1260,9 @@ tabLook settings model tab =
Comp.Tabs.Normal Comp.Tabs.Normal
searchTabState : UiSettings -> Model -> Comp.Tabs.Tab Msg -> ( Comp.Tabs.State, Msg ) searchTabState : UiSettings -> ViewConfig -> Model -> Comp.Tabs.Tab Msg -> ( Comp.Tabs.State, Msg )
searchTabState settings model tab = searchTabState settings cfg model tab =
let let
isHidden f =
Data.UiSettings.fieldHidden settings f
searchTab = searchTab =
findTab tab findTab tab
@ -1273,7 +1276,7 @@ searchTabState settings model tab =
state = state =
{ folded = folded { folded = folded
, look = , look =
Maybe.map (tabLook settings model) searchTab Maybe.map (\t -> tabLook settings model t |> cfg.overrideTabLook t) searchTab
|> Maybe.withDefault Comp.Tabs.Normal |> Maybe.withDefault Comp.Tabs.Normal
} }
in in

View File

@ -16,6 +16,7 @@ module Comp.TagSelect exposing
, makeWorkModel , makeWorkModel
, modifyAll , modifyAll
, modifyCount , modifyCount
, modifyCountKeepExisting
, reset , reset
, toggleTag , toggleTag
, update , update
@ -99,6 +100,40 @@ modifyCount model tags cats =
} }
modifyCountKeepExisting : Model -> List TagCount -> List NameCount -> Model
modifyCountKeepExisting model tags cats =
let
tagZeros : Dict String TagCount
tagZeros =
Dict.map (\_ -> \tc -> TagCount tc.tag 0) model.availableTags
tagAvail =
List.foldl (\tc -> \dict -> Dict.insert tc.tag.id tc dict) tagZeros tags
tcs =
Dict.values tagAvail
catcs =
List.filterMap (\e -> Maybe.map (\k -> CategoryCount k e.count) e.name) cats
catZeros : Dict String CategoryCount
catZeros =
Dict.map (\_ -> \cc -> CategoryCount cc.name 0) model.availableCats
catAvail =
List.foldl (\cc -> \dict -> Dict.insert cc.name cc dict) catZeros catcs
ccs =
Dict.values catAvail
in
{ model
| tagCounts = tcs
, availableTags = tagAvail
, categoryCounts = ccs
, availableCats = catAvail
}
reset : Model -> Model reset : Model -> Model
reset model = reset model =
{ model { model

View File

@ -82,10 +82,16 @@ viewSearch texts flags settings model =
, end = [] , end = []
, rootClasses = "my-1 text-xs hidden sm:flex" , rootClasses = "my-1 text-xs hidden sm:flex"
} }
, Html.map SearchMenuMsg , let
searchMenuCfg =
{ overrideTabLook = \_ -> identity
}
in
Html.map SearchMenuMsg
(Comp.SearchMenu.viewDrop2 texts.searchMenu (Comp.SearchMenu.viewDrop2 texts.searchMenu
model.dragDropData model.dragDropData
flags flags
searchMenuCfg
settings settings
model.searchMenuModel model.searchMenuModel
) )

View File

@ -8,6 +8,7 @@
module Page.Share.Sidebar exposing (..) module Page.Share.Sidebar exposing (..)
import Comp.SearchMenu import Comp.SearchMenu
import Comp.Tabs
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings) import Data.UiSettings exposing (UiSettings)
import Html exposing (..) import Html exposing (..)
@ -19,6 +20,19 @@ import Util.ItemDragDrop
view : Texts -> Flags -> UiSettings -> Model -> Html Msg view : Texts -> Flags -> UiSettings -> Model -> Html Msg
view texts flags settings model = view texts flags settings model =
let
hideTrashTab tab default =
case tab of
Comp.SearchMenu.TabTrashed ->
Comp.Tabs.Hidden
_ ->
default
searchMenuCfg =
{ overrideTabLook = hideTrashTab
}
in
div div
[ class "flex flex-col" [ class "flex flex-col"
] ]
@ -26,6 +40,7 @@ view texts flags settings model =
(Comp.SearchMenu.viewDrop2 texts.searchMenu (Comp.SearchMenu.viewDrop2 texts.searchMenu
ddDummy ddDummy
flags flags
searchMenuCfg
settings settings
model.searchMenuModel model.searchMenuModel
) )