mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-23 19:08:26 +00:00
Allow to reprocess single and multiple items in the ui
This commit is contained in:
@ -22,6 +22,7 @@ import Api.Model.BasicResult exposing (BasicResult)
|
||||
import Api.Model.ItemLightList exposing (ItemLightList)
|
||||
import Api.Model.SearchStats exposing (SearchStats)
|
||||
import Browser.Dom as Dom
|
||||
import Comp.ConfirmModal
|
||||
import Comp.FixedDropdown
|
||||
import Comp.ItemCardList
|
||||
import Comp.ItemDetail.FormChange exposing (FormChange)
|
||||
@ -64,7 +65,7 @@ type alias Model =
|
||||
type alias SelectViewModel =
|
||||
{ ids : Set String
|
||||
, action : SelectActionMode
|
||||
, deleteAllConfirm : Comp.YesNoDimmer.Model
|
||||
, confirmModal : Maybe (Comp.ConfirmModal.Settings Msg)
|
||||
, editModel : Comp.ItemDetail.MultiEditMenu.Model
|
||||
, saveNameState : SaveNameState
|
||||
, saveCustomFieldState : Set String
|
||||
@ -75,7 +76,7 @@ initSelectViewModel : SelectViewModel
|
||||
initSelectViewModel =
|
||||
{ ids = Set.empty
|
||||
, action = NoneAction
|
||||
, deleteAllConfirm = Comp.YesNoDimmer.initActive
|
||||
, confirmModal = Nothing
|
||||
, editModel = Comp.ItemDetail.MultiEditMenu.init
|
||||
, saveNameState = SaveSuccess
|
||||
, saveCustomFieldState = Set.empty
|
||||
@ -187,7 +188,8 @@ type Msg
|
||||
| SelectAllItems
|
||||
| SelectNoItems
|
||||
| RequestDeleteSelected
|
||||
| DeleteSelectedConfirmMsg Comp.YesNoDimmer.Msg
|
||||
| DeleteSelectedConfirmed
|
||||
| CloseConfirmModal
|
||||
| EditSelectedItems
|
||||
| EditMenuMsg Comp.ItemDetail.MultiEditMenu.Msg
|
||||
| MultiUpdateResp FormChange (Result Http.Error BasicResult)
|
||||
@ -199,6 +201,8 @@ type Msg
|
||||
| TogglePreviewFullWidth
|
||||
| PowerSearchMsg Comp.PowerSearchInput.Msg
|
||||
| KeyUpPowerSearchbarMsg (Maybe KeyCode)
|
||||
| RequestReprocessSelected
|
||||
| ReprocessSelectedConfirmed
|
||||
|
||||
|
||||
type SearchType
|
||||
@ -210,6 +214,7 @@ type SelectActionMode
|
||||
= NoneAction
|
||||
| DeleteSelected
|
||||
| EditSelected
|
||||
| ReprocessSelected
|
||||
|
||||
|
||||
type alias SearchParam =
|
||||
|
@ -3,6 +3,7 @@ module Page.Home.Update exposing (update)
|
||||
import Api
|
||||
import Api.Model.ItemLightList exposing (ItemLightList)
|
||||
import Browser.Navigation as Nav
|
||||
import Comp.ConfirmModal
|
||||
import Comp.FixedDropdown
|
||||
import Comp.ItemCardList
|
||||
import Comp.ItemDetail.FormChange exposing (FormChange(..))
|
||||
@ -10,7 +11,6 @@ import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
|
||||
import Comp.LinkTarget exposing (LinkTarget)
|
||||
import Comp.PowerSearchInput
|
||||
import Comp.SearchMenu
|
||||
import Comp.YesNoDimmer
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.ItemQuery as Q
|
||||
import Data.ItemSelection
|
||||
@ -358,34 +358,20 @@ update mId key flags settings msg model =
|
||||
_ ->
|
||||
noSub ( model, Cmd.none )
|
||||
|
||||
DeleteSelectedConfirmMsg lmsg ->
|
||||
DeleteSelectedConfirmed ->
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
let
|
||||
( confirmModel, confirmed ) =
|
||||
Comp.YesNoDimmer.update lmsg svm.deleteAllConfirm
|
||||
|
||||
cmd =
|
||||
if confirmed then
|
||||
Api.deleteAllItems flags svm.ids DeleteAllResp
|
||||
|
||||
else
|
||||
Cmd.none
|
||||
|
||||
act =
|
||||
if confirmModel.active || confirmed then
|
||||
DeleteSelected
|
||||
|
||||
else
|
||||
NoneAction
|
||||
Api.deleteAllItems flags svm.ids DeleteAllResp
|
||||
in
|
||||
noSub
|
||||
( { model
|
||||
| viewMode =
|
||||
SelectView
|
||||
{ svm
|
||||
| deleteAllConfirm = confirmModel
|
||||
, action = act
|
||||
| confirmModal = Nothing
|
||||
, action = DeleteSelected
|
||||
}
|
||||
}
|
||||
, cmd
|
||||
@ -416,6 +402,74 @@ update mId key flags settings msg model =
|
||||
DeleteAllResp (Err _) ->
|
||||
noSub ( model, Cmd.none )
|
||||
|
||||
RequestReprocessSelected ->
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
if svm.ids == Set.empty then
|
||||
noSub ( model, Cmd.none )
|
||||
|
||||
else
|
||||
let
|
||||
lmsg =
|
||||
Comp.ConfirmModal.defaultSettings
|
||||
ReprocessSelectedConfirmed
|
||||
CloseConfirmModal
|
||||
"Really reprocess all selected items? Metadata of unconfirmed items may change."
|
||||
|
||||
model_ =
|
||||
{ model
|
||||
| viewMode =
|
||||
SelectView
|
||||
{ svm
|
||||
| action = ReprocessSelected
|
||||
, confirmModal = Just lmsg
|
||||
}
|
||||
}
|
||||
in
|
||||
noSub ( model_, Cmd.none )
|
||||
|
||||
_ ->
|
||||
noSub ( model, Cmd.none )
|
||||
|
||||
CloseConfirmModal ->
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
noSub
|
||||
( { model
|
||||
| viewMode = SelectView { svm | confirmModal = Nothing, action = NoneAction }
|
||||
}
|
||||
, Cmd.none
|
||||
)
|
||||
|
||||
_ ->
|
||||
noSub ( model, Cmd.none )
|
||||
|
||||
ReprocessSelectedConfirmed ->
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
if svm.ids == Set.empty then
|
||||
noSub ( model, Cmd.none )
|
||||
|
||||
else
|
||||
let
|
||||
cmd =
|
||||
Api.reprocessMultiple flags svm.ids DeleteAllResp
|
||||
in
|
||||
noSub
|
||||
( { model
|
||||
| viewMode =
|
||||
SelectView
|
||||
{ svm
|
||||
| confirmModal = Nothing
|
||||
, action = ReprocessSelected
|
||||
}
|
||||
}
|
||||
, cmd
|
||||
)
|
||||
|
||||
_ ->
|
||||
noSub ( model, Cmd.none )
|
||||
|
||||
RequestDeleteSelected ->
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
@ -425,12 +479,22 @@ update mId key flags settings msg model =
|
||||
else
|
||||
let
|
||||
lmsg =
|
||||
DeleteSelectedConfirmMsg Comp.YesNoDimmer.activate
|
||||
Comp.ConfirmModal.defaultSettings
|
||||
DeleteSelectedConfirmed
|
||||
CloseConfirmModal
|
||||
"Really delete all selected items?"
|
||||
|
||||
model_ =
|
||||
{ model | viewMode = SelectView { svm | action = DeleteSelected } }
|
||||
{ model
|
||||
| viewMode =
|
||||
SelectView
|
||||
{ svm
|
||||
| action = DeleteSelected
|
||||
, confirmModal = Just lmsg
|
||||
}
|
||||
}
|
||||
in
|
||||
update mId key flags settings lmsg model_
|
||||
noSub ( model_, Cmd.none )
|
||||
|
||||
_ ->
|
||||
noSub ( model, Cmd.none )
|
||||
|
@ -1,6 +1,7 @@
|
||||
module Page.Home.View2 exposing (viewContent, viewSidebar)
|
||||
|
||||
import Comp.Basic as B
|
||||
import Comp.ConfirmModal
|
||||
import Comp.ItemCardList
|
||||
import Comp.MenuBar as MB
|
||||
import Comp.PowerSearchInput
|
||||
@ -67,13 +68,13 @@ deleteSelectedDimmer model =
|
||||
in
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
[ Html.map DeleteSelectedConfirmMsg
|
||||
(Comp.YesNoDimmer.viewN
|
||||
(selectAction == DeleteSelected)
|
||||
deleteAllDimmer
|
||||
svm.deleteAllConfirm
|
||||
)
|
||||
]
|
||||
case svm.confirmModal of
|
||||
Just confirm ->
|
||||
[ Comp.ConfirmModal.view confirm
|
||||
]
|
||||
|
||||
Nothing ->
|
||||
[]
|
||||
|
||||
_ ->
|
||||
[]
|
||||
@ -219,6 +220,16 @@ editMenuBar model svm =
|
||||
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == EditSelected )
|
||||
]
|
||||
}
|
||||
, MB.CustomButton
|
||||
{ tagger = RequestReprocessSelected
|
||||
, label = ""
|
||||
, icon = Just "fa fa-redo"
|
||||
, title = "Reprocess " ++ selectCount ++ " selected items"
|
||||
, inputClass =
|
||||
[ ( btnStyle, True )
|
||||
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == ReprocessSelected )
|
||||
]
|
||||
}
|
||||
, MB.CustomButton
|
||||
{ tagger = RequestDeleteSelected
|
||||
, label = ""
|
||||
|
Reference in New Issue
Block a user