mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-29 19:48:26 +00:00
Allow to select multiple items for deletion and edit
This commit is contained in:
@ -2,12 +2,18 @@ module Page.Home.Data exposing
|
||||
( Model
|
||||
, Msg(..)
|
||||
, SearchType(..)
|
||||
, SelectActionMode(..)
|
||||
, SelectViewModel
|
||||
, ViewMode(..)
|
||||
, defaultSearchType
|
||||
, doSearchCmd
|
||||
, init
|
||||
, initSelectViewModel
|
||||
, itemNav
|
||||
, menuCollapsed
|
||||
, resultsBelowLimit
|
||||
, searchTypeString
|
||||
, selectActive
|
||||
)
|
||||
|
||||
import Api
|
||||
@ -16,12 +22,16 @@ import Api.Model.ItemSearch
|
||||
import Browser.Dom as Dom
|
||||
import Comp.FixedDropdown
|
||||
import Comp.ItemCardList
|
||||
import Comp.ItemDetail.EditMenu
|
||||
import Comp.SearchMenu
|
||||
import Comp.YesNoDimmer
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.ItemNav exposing (ItemNav)
|
||||
import Data.ItemSelection exposing (ItemSelection)
|
||||
import Data.Items
|
||||
import Data.UiSettings exposing (UiSettings)
|
||||
import Http
|
||||
import Set exposing (Set)
|
||||
import Throttle exposing (Throttle)
|
||||
import Util.Html exposing (KeyCode(..))
|
||||
import Util.ItemDragDrop as DD
|
||||
@ -31,7 +41,7 @@ type alias Model =
|
||||
{ searchMenuModel : Comp.SearchMenu.Model
|
||||
, itemListModel : Comp.ItemCardList.Model
|
||||
, searchInProgress : Bool
|
||||
, menuCollapsed : Bool
|
||||
, viewMode : ViewMode
|
||||
, searchOffset : Int
|
||||
, moreAvailable : Bool
|
||||
, moreInProgress : Bool
|
||||
@ -45,6 +55,29 @@ type alias Model =
|
||||
}
|
||||
|
||||
|
||||
type alias SelectViewModel =
|
||||
{ ids : Set String
|
||||
, action : SelectActionMode
|
||||
, deleteAllConfirm : Comp.YesNoDimmer.Model
|
||||
, editModel : Comp.ItemDetail.EditMenu.Model
|
||||
}
|
||||
|
||||
|
||||
initSelectViewModel : SelectViewModel
|
||||
initSelectViewModel =
|
||||
{ ids = Set.empty
|
||||
, action = NoneAction
|
||||
, deleteAllConfirm = Comp.YesNoDimmer.initActive
|
||||
, editModel = Comp.ItemDetail.EditMenu.init
|
||||
}
|
||||
|
||||
|
||||
type ViewMode
|
||||
= SimpleView
|
||||
| SearchView
|
||||
| SelectView SelectViewModel
|
||||
|
||||
|
||||
init : Flags -> Model
|
||||
init flags =
|
||||
let
|
||||
@ -58,7 +91,6 @@ init flags =
|
||||
{ searchMenuModel = Comp.SearchMenu.init
|
||||
, itemListModel = Comp.ItemCardList.init
|
||||
, searchInProgress = False
|
||||
, menuCollapsed = True
|
||||
, searchOffset = 0
|
||||
, moreAvailable = True
|
||||
, moreInProgress = False
|
||||
@ -72,6 +104,7 @@ init flags =
|
||||
, dragDropData =
|
||||
DD.DragDropData DD.init Nothing
|
||||
, scrollToCard = Nothing
|
||||
, viewMode = SimpleView
|
||||
}
|
||||
|
||||
|
||||
@ -84,6 +117,32 @@ defaultSearchType flags =
|
||||
BasicSearch
|
||||
|
||||
|
||||
menuCollapsed : Model -> Bool
|
||||
menuCollapsed model =
|
||||
case model.viewMode of
|
||||
SimpleView ->
|
||||
True
|
||||
|
||||
SearchView ->
|
||||
False
|
||||
|
||||
SelectView _ ->
|
||||
False
|
||||
|
||||
|
||||
selectActive : Model -> Bool
|
||||
selectActive model =
|
||||
case model.viewMode of
|
||||
SimpleView ->
|
||||
False
|
||||
|
||||
SearchView ->
|
||||
False
|
||||
|
||||
SelectView _ ->
|
||||
True
|
||||
|
||||
|
||||
type Msg
|
||||
= Init
|
||||
| SearchMenuMsg Comp.SearchMenu.Msg
|
||||
@ -93,6 +152,7 @@ type Msg
|
||||
| ItemSearchAddResp (Result Http.Error ItemLightList)
|
||||
| DoSearch
|
||||
| ToggleSearchMenu
|
||||
| ToggleSelectView
|
||||
| LoadMore
|
||||
| UpdateThrottle
|
||||
| SetBasicSearch String
|
||||
@ -101,6 +161,12 @@ type Msg
|
||||
| SetContentOnly String
|
||||
| ScrollResult (Result Dom.Error ())
|
||||
| ClearItemDetailId
|
||||
| SelectAllItems
|
||||
| SelectNoItems
|
||||
| RequestDeleteSelected
|
||||
| DeleteSelectedConfirmMsg Comp.YesNoDimmer.Msg
|
||||
| EditSelectedItems
|
||||
| EditMenuMsg Comp.ItemDetail.EditMenu.Msg
|
||||
|
||||
|
||||
type SearchType
|
||||
@ -109,6 +175,12 @@ type SearchType
|
||||
| ContentOnlySearch
|
||||
|
||||
|
||||
type SelectActionMode
|
||||
= NoneAction
|
||||
| DeleteSelected
|
||||
| EditSelected
|
||||
|
||||
|
||||
searchTypeString : SearchType -> String
|
||||
searchTypeString st =
|
||||
case st of
|
||||
|
Reference in New Issue
Block a user