mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-06 15:15:58 +00:00
Use correct category count in search menu
This commit is contained in:
parent
3e0914ece7
commit
39ed246a42
@ -92,7 +92,7 @@ type TextSearchModel
|
|||||||
|
|
||||||
init : Flags -> Model
|
init : Flags -> Model
|
||||||
init flags =
|
init flags =
|
||||||
{ tagSelectModel = Comp.TagSelect.init [] []
|
{ tagSelectModel = Comp.TagSelect.init [] [] [] []
|
||||||
, tagSelection = Comp.TagSelect.emptySelection
|
, tagSelection = Comp.TagSelect.emptySelection
|
||||||
, directionModel =
|
, directionModel =
|
||||||
Comp.Dropdown.makeSingleList
|
Comp.Dropdown.makeSingleList
|
||||||
@ -483,7 +483,9 @@ updateDrop ddm flags settings msg model =
|
|||||||
GetAllTagsResp (Ok stats) ->
|
GetAllTagsResp (Ok stats) ->
|
||||||
let
|
let
|
||||||
tagSel =
|
tagSel =
|
||||||
Comp.TagSelect.modifyAll stats.tagCloud.items model.tagSelectModel
|
Comp.TagSelect.modifyAll stats.tagCloud.items
|
||||||
|
stats.tagCategoryCloud.items
|
||||||
|
model.tagSelectModel
|
||||||
in
|
in
|
||||||
{ model = { model | tagSelectModel = tagSel }
|
{ model = { model | tagSelectModel = tagSel }
|
||||||
, cmd = Cmd.none
|
, cmd = Cmd.none
|
||||||
@ -500,9 +502,14 @@ updateDrop ddm flags settings msg model =
|
|||||||
|
|
||||||
GetStatsResp (Ok stats) ->
|
GetStatsResp (Ok stats) ->
|
||||||
let
|
let
|
||||||
selectModel =
|
tagCount =
|
||||||
List.sortBy .count stats.tagCloud.items
|
List.sortBy .count stats.tagCloud.items
|
||||||
|> Comp.TagSelect.modifyCount model.tagSelectModel
|
|
||||||
|
catCount =
|
||||||
|
List.sortBy .count stats.tagCategoryCloud.items
|
||||||
|
|
||||||
|
selectModel =
|
||||||
|
Comp.TagSelect.modifyCount model.tagSelectModel tagCount catCount
|
||||||
|
|
||||||
model_ =
|
model_ =
|
||||||
{ model
|
{ model
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
module Comp.TagSelect exposing
|
module Comp.TagSelect exposing
|
||||||
( Category
|
( Model
|
||||||
, Model
|
|
||||||
, Msg
|
, Msg
|
||||||
, Selection
|
, Selection
|
||||||
, WorkModel
|
, WorkModel
|
||||||
@ -18,6 +17,7 @@ module Comp.TagSelect exposing
|
|||||||
, viewTagsDrop2
|
, viewTagsDrop2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
import Api.Model.NameCount exposing (NameCount)
|
||||||
import Api.Model.Tag exposing (Tag)
|
import Api.Model.Tag exposing (Tag)
|
||||||
import Api.Model.TagCount exposing (TagCount)
|
import Api.Model.TagCount exposing (TagCount)
|
||||||
import Data.Icons as I
|
import Data.Icons as I
|
||||||
@ -38,9 +38,9 @@ import Util.Maybe
|
|||||||
|
|
||||||
type alias Model =
|
type alias Model =
|
||||||
{ availableTags : Dict String TagCount
|
{ availableTags : Dict String TagCount
|
||||||
, availableCats : Dict String Category
|
, availableCats : Dict String NameCount
|
||||||
, tagCounts : List TagCount
|
, tagCounts : List TagCount
|
||||||
, categoryCounts : List Category
|
, categoryCounts : List NameCount
|
||||||
, filterTerm : Maybe String
|
, filterTerm : Maybe String
|
||||||
, expandedTags : Bool
|
, expandedTags : Bool
|
||||||
, expandedCats : Bool
|
, expandedCats : Bool
|
||||||
@ -48,23 +48,16 @@ type alias Model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type alias Category =
|
init : List TagCount -> List NameCount -> List TagCount -> List NameCount -> Model
|
||||||
{ name : String
|
init allTags allCats tags cats =
|
||||||
, count : Int
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init : List TagCount -> List TagCount -> Model
|
|
||||||
init allTags tags =
|
|
||||||
{ availableTags =
|
{ availableTags =
|
||||||
List.map (\e -> ( e.tag.id, e )) allTags
|
List.map (\e -> ( e.tag.id, e )) allTags
|
||||||
|> Dict.fromList
|
|> Dict.fromList
|
||||||
, availableCats = sumCategories allTags
|
, availableCats =
|
||||||
|
List.map (\e -> ( e.name, e )) allCats
|
||||||
|
|> Dict.fromList
|
||||||
, tagCounts = tags
|
, tagCounts = tags
|
||||||
, categoryCounts =
|
, categoryCounts = cats
|
||||||
sumCategories tags
|
|
||||||
|> Dict.toList
|
|
||||||
|> List.map Tuple.second
|
|
||||||
, filterTerm = Nothing
|
, filterTerm = Nothing
|
||||||
, expandedTags = False
|
, expandedTags = False
|
||||||
, expandedCats = False
|
, expandedCats = False
|
||||||
@ -72,24 +65,23 @@ init allTags tags =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
modifyAll : List TagCount -> Model -> Model
|
modifyAll : List TagCount -> List NameCount -> Model -> Model
|
||||||
modifyAll allTags model =
|
modifyAll allTags allCats model =
|
||||||
{ model
|
{ model
|
||||||
| availableTags =
|
| availableTags =
|
||||||
List.map (\e -> ( e.tag.id, e )) allTags
|
List.map (\e -> ( e.tag.id, e )) allTags
|
||||||
|> Dict.fromList
|
|> Dict.fromList
|
||||||
, availableCats = sumCategories allTags
|
, availableCats =
|
||||||
|
List.map (\e -> ( e.name, e )) allCats
|
||||||
|
|> Dict.fromList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
modifyCount : Model -> List TagCount -> Model
|
modifyCount : Model -> List TagCount -> List NameCount -> Model
|
||||||
modifyCount model tags =
|
modifyCount model tags cats =
|
||||||
{ model
|
{ model
|
||||||
| tagCounts = tags
|
| tagCounts = tags
|
||||||
, categoryCounts =
|
, categoryCounts = cats
|
||||||
sumCategories tags
|
|
||||||
|> Dict.toList
|
|
||||||
|> List.map Tuple.second
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -108,34 +100,11 @@ toggleTag id =
|
|||||||
ToggleTag id
|
ToggleTag id
|
||||||
|
|
||||||
|
|
||||||
sumCategories : List TagCount -> Dict String Category
|
|
||||||
sumCategories tags =
|
|
||||||
let
|
|
||||||
filterCat tc =
|
|
||||||
Maybe.map (\cat -> Category cat tc.count) tc.tag.category
|
|
||||||
|
|
||||||
withCats =
|
|
||||||
List.filterMap filterCat tags
|
|
||||||
|
|
||||||
sum cat mc =
|
|
||||||
Maybe.map ((+) cat.count) mc
|
|
||||||
|> Maybe.withDefault cat.count
|
|
||||||
|> Just
|
|
||||||
|
|
||||||
sumCounts cat dict =
|
|
||||||
Dict.update cat.name (sum cat) dict
|
|
||||||
|
|
||||||
cats =
|
|
||||||
List.foldl sumCounts Dict.empty withCats
|
|
||||||
in
|
|
||||||
Dict.map (\name -> \count -> Category name count) cats
|
|
||||||
|
|
||||||
|
|
||||||
type alias Selection =
|
type alias Selection =
|
||||||
{ includeTags : List TagCount
|
{ includeTags : List TagCount
|
||||||
, excludeTags : List TagCount
|
, excludeTags : List TagCount
|
||||||
, includeCats : List Category
|
, includeCats : List NameCount
|
||||||
, excludeCats : List Category
|
, excludeCats : List NameCount
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -145,7 +114,7 @@ emptySelection =
|
|||||||
|
|
||||||
|
|
||||||
type alias WorkModel =
|
type alias WorkModel =
|
||||||
{ filteredCats : List Category
|
{ filteredCats : List NameCount
|
||||||
, filteredTags : List TagCount
|
, filteredTags : List TagCount
|
||||||
, selectedTags : Dict String Bool
|
, selectedTags : Dict String Bool
|
||||||
, selectedCats : Dict String Bool
|
, selectedCats : Dict String Bool
|
||||||
@ -166,7 +135,7 @@ orderTagCountStable model tagCounts =
|
|||||||
List.sortBy order tagCounts
|
List.sortBy order tagCounts
|
||||||
|
|
||||||
|
|
||||||
orderCatCountStable : Model -> List Category -> List Category
|
orderCatCountStable : Model -> List NameCount -> List NameCount
|
||||||
orderCatCountStable model catCounts =
|
orderCatCountStable model catCounts =
|
||||||
let
|
let
|
||||||
order cat =
|
order cat =
|
||||||
@ -193,7 +162,7 @@ removeEmptyTagCounts sel tagCounts =
|
|||||||
List.filter (\tc -> isSelected tc || tc.count > 0) tagCounts
|
List.filter (\tc -> isSelected tc || tc.count > 0) tagCounts
|
||||||
|
|
||||||
|
|
||||||
removeEmptyCatCounts : Selection -> List Category -> List Category
|
removeEmptyCatCounts : Selection -> List NameCount -> List NameCount
|
||||||
removeEmptyCatCounts sel catCounts =
|
removeEmptyCatCounts sel catCounts =
|
||||||
let
|
let
|
||||||
selected =
|
selected =
|
||||||
@ -548,7 +517,7 @@ viewTagItem2 ddm settings model tag =
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
viewCategoryItem2 : UiSettings -> WorkModel -> Category -> Html Msg
|
viewCategoryItem2 : UiSettings -> WorkModel -> NameCount -> Html Msg
|
||||||
viewCategoryItem2 settings model cat =
|
viewCategoryItem2 settings model cat =
|
||||||
let
|
let
|
||||||
state =
|
state =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user