mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-07-04 16:48:26 +00:00
Store item selection globally
This commit is contained in:
@ -24,6 +24,7 @@ import Data.Fields
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.Icons as Icons
|
||||
import Data.ItemArrange exposing (ItemArrange)
|
||||
import Data.ItemIds exposing (ItemIdChange, ItemIds)
|
||||
import Data.ItemSelection exposing (ItemSelection)
|
||||
import Data.ItemTemplate as IT
|
||||
import Data.UiSettings exposing (UiSettings)
|
||||
@ -49,7 +50,7 @@ type alias Model =
|
||||
|
||||
type Msg
|
||||
= CyclePreview ItemLight
|
||||
| ToggleSelectItem (Set String) String
|
||||
| ToggleSelectItem ItemIds String
|
||||
| ItemDDMsg DD.Msg
|
||||
| SetLinkTarget LinkTarget
|
||||
| ToggleRowOpen String
|
||||
@ -70,7 +71,7 @@ type alias ViewConfig =
|
||||
type alias UpdateResult =
|
||||
{ model : Model
|
||||
, dragModel : DD.Model
|
||||
, selection : ItemSelection
|
||||
, selection : ItemIdChange
|
||||
, linkTarget : LinkTarget
|
||||
, toggleRow : Maybe String
|
||||
}
|
||||
@ -117,25 +118,21 @@ update : DD.Model -> Msg -> Model -> UpdateResult
|
||||
update ddm msg model =
|
||||
case msg of
|
||||
ToggleRowOpen id ->
|
||||
UpdateResult model ddm Data.ItemSelection.Inactive LinkNone (Just id)
|
||||
UpdateResult model ddm Data.ItemIds.noChange LinkNone (Just id)
|
||||
|
||||
ItemDDMsg lm ->
|
||||
let
|
||||
ddd =
|
||||
DD.update lm ddm
|
||||
in
|
||||
UpdateResult model ddd.model Data.ItemSelection.Inactive LinkNone Nothing
|
||||
UpdateResult model ddd.model Data.ItemIds.noChange LinkNone Nothing
|
||||
|
||||
ToggleSelectItem ids id ->
|
||||
let
|
||||
newSet =
|
||||
if Set.member id ids then
|
||||
Set.remove id ids
|
||||
|
||||
else
|
||||
Set.insert id ids
|
||||
Data.ItemIds.toggle ids id
|
||||
in
|
||||
UpdateResult model ddm (Data.ItemSelection.Active newSet) LinkNone Nothing
|
||||
UpdateResult model ddm newSet LinkNone Nothing
|
||||
|
||||
CyclePreview item ->
|
||||
let
|
||||
@ -147,12 +144,12 @@ update ddm msg model =
|
||||
in
|
||||
UpdateResult { model | previewAttach = next }
|
||||
ddm
|
||||
Data.ItemSelection.Inactive
|
||||
Data.ItemIds.noChange
|
||||
LinkNone
|
||||
Nothing
|
||||
|
||||
SetLinkTarget target ->
|
||||
UpdateResult model ddm Data.ItemSelection.Inactive target Nothing
|
||||
UpdateResult model ddm Data.ItemIds.noChange target Nothing
|
||||
|
||||
|
||||
|
||||
@ -532,7 +529,7 @@ viewCard texts cfg settings flags model item =
|
||||
|
||||
|
||||
mkCardAction : Texts -> ViewConfig -> UiSettings -> ItemLight -> List (Attribute Msg)
|
||||
mkCardAction texts cfg settings item =
|
||||
mkCardAction texts cfg _ item =
|
||||
case cfg.selection of
|
||||
Data.ItemSelection.Inactive ->
|
||||
case cfg.arrange of
|
||||
@ -977,7 +974,7 @@ isSelected : ViewConfig -> String -> Bool
|
||||
isSelected cfg id =
|
||||
case cfg.selection of
|
||||
Data.ItemSelection.Active ids ->
|
||||
Set.member id ids
|
||||
Data.ItemIds.isMember ids id
|
||||
|
||||
Data.ItemSelection.Inactive ->
|
||||
False
|
||||
|
@ -25,6 +25,7 @@ import Comp.ItemCard
|
||||
import Comp.LinkTarget exposing (LinkTarget)
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.ItemArrange exposing (ItemArrange)
|
||||
import Data.ItemIds exposing (ItemIdChange)
|
||||
import Data.ItemSelection exposing (ItemSelection)
|
||||
import Data.Items
|
||||
import Data.UiSettings exposing (UiSettings)
|
||||
@ -83,7 +84,7 @@ type alias UpdateResult =
|
||||
{ model : Model
|
||||
, cmd : Cmd Msg
|
||||
, dragModel : DD.Model
|
||||
, selection : ItemSelection
|
||||
, selection : ItemIdChange
|
||||
, linkTarget : LinkTarget
|
||||
, toggleOpenRow : Maybe String
|
||||
}
|
||||
@ -105,7 +106,7 @@ updateDrag dm _ msg model =
|
||||
UpdateResult newModel
|
||||
Cmd.none
|
||||
dm
|
||||
Data.ItemSelection.Inactive
|
||||
Data.ItemIds.noChange
|
||||
Comp.LinkTarget.LinkNone
|
||||
Nothing
|
||||
|
||||
@ -114,7 +115,7 @@ updateDrag dm _ msg model =
|
||||
UpdateResult model
|
||||
Cmd.none
|
||||
dm
|
||||
Data.ItemSelection.Inactive
|
||||
Data.ItemIds.noChange
|
||||
Comp.LinkTarget.LinkNone
|
||||
Nothing
|
||||
|
||||
@ -126,7 +127,7 @@ updateDrag dm _ msg model =
|
||||
UpdateResult newModel
|
||||
Cmd.none
|
||||
dm
|
||||
Data.ItemSelection.Inactive
|
||||
Data.ItemIds.noChange
|
||||
Comp.LinkTarget.LinkNone
|
||||
Nothing
|
||||
|
||||
@ -153,7 +154,7 @@ updateDrag dm _ msg model =
|
||||
UpdateResult { model | results = removeItemById id model.results }
|
||||
Cmd.none
|
||||
dm
|
||||
Data.ItemSelection.Inactive
|
||||
Data.ItemIds.noChange
|
||||
Comp.LinkTarget.LinkNone
|
||||
Nothing
|
||||
|
||||
|
@ -24,8 +24,8 @@ import Api.Model.ItemsAndRefs exposing (ItemsAndRefs)
|
||||
import Api.Model.ReferenceList exposing (ReferenceList)
|
||||
import Data.Direction exposing (Direction)
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.ItemIds exposing (ItemIds)
|
||||
import Http
|
||||
import Set exposing (Set)
|
||||
|
||||
|
||||
type FormChange
|
||||
@ -49,14 +49,14 @@ type FormChange
|
||||
|
||||
multiUpdate :
|
||||
Flags
|
||||
-> Set String
|
||||
-> ItemIds
|
||||
-> FormChange
|
||||
-> (Result Http.Error BasicResult -> msg)
|
||||
-> Cmd msg
|
||||
multiUpdate flags ids change receive =
|
||||
let
|
||||
items =
|
||||
Set.toList ids
|
||||
Data.ItemIds.toList ids
|
||||
in
|
||||
case change of
|
||||
CustomValueChange field value ->
|
||||
@ -159,10 +159,10 @@ multiUpdate flags ids change receive =
|
||||
|
||||
ConfirmChange flag ->
|
||||
if flag then
|
||||
Api.confirmMultiple flags ids receive
|
||||
Api.confirmMultiple flags items receive
|
||||
|
||||
else
|
||||
Api.unconfirmMultiple flags ids receive
|
||||
Api.unconfirmMultiple flags items receive
|
||||
|
||||
NoFormChange ->
|
||||
Cmd.none
|
||||
|
Reference in New Issue
Block a user