mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-09-30 00:28:23 +00:00
Link multiple items via selection
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
module Page.Search.Data exposing
|
||||
( ConfirmModalValue(..)
|
||||
, ItemMergeModel(..)
|
||||
, Model
|
||||
, Msg(..)
|
||||
, SearchParam
|
||||
@@ -88,19 +89,24 @@ type alias SelectViewModel =
|
||||
{ action : SelectActionMode
|
||||
, confirmModal : Maybe ConfirmModalValue
|
||||
, editModel : Comp.ItemDetail.MultiEditMenu.Model
|
||||
, mergeModel : Comp.ItemMerge.Model
|
||||
, mergeModel : ItemMergeModel
|
||||
, publishModel : Comp.PublishItems.Model
|
||||
, saveNameState : SaveNameState
|
||||
, saveCustomFieldState : Set String
|
||||
}
|
||||
|
||||
|
||||
type ItemMergeModel
|
||||
= MergeItems Comp.ItemMerge.Model
|
||||
| LinkItems Comp.ItemMerge.Model
|
||||
|
||||
|
||||
initSelectViewModel : Flags -> SelectViewModel
|
||||
initSelectViewModel flags =
|
||||
{ action = NoneAction
|
||||
, confirmModal = Nothing
|
||||
, editModel = Comp.ItemDetail.MultiEditMenu.init
|
||||
, mergeModel = Comp.ItemMerge.init []
|
||||
, mergeModel = MergeItems (Comp.ItemMerge.init [])
|
||||
, publishModel = Tuple.first (Comp.PublishItems.init flags)
|
||||
, saveNameState = SaveSuccess
|
||||
, saveCustomFieldState = Set.empty
|
||||
@@ -221,7 +227,7 @@ type Msg
|
||||
| ReprocessSelectedConfirmed
|
||||
| ClientSettingsSaveResp (Result Http.Error BasicResult)
|
||||
| RemoveItem String
|
||||
| MergeSelectedItems
|
||||
| MergeSelectedItems (Comp.ItemMerge.Model -> ItemMergeModel)
|
||||
| MergeItemsMsg Comp.ItemMerge.Msg
|
||||
| PublishSelectedItems
|
||||
| PublishItemsMsg Comp.PublishItems.Msg
|
||||
|
@@ -555,7 +555,7 @@ update texts bookmarkId lastViewedItemId env msg model =
|
||||
_ ->
|
||||
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||
|
||||
MergeSelectedItems ->
|
||||
MergeSelectedItems createModel ->
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
if svm.action == MergeSelected then
|
||||
@@ -565,7 +565,7 @@ update texts bookmarkId lastViewedItemId env msg model =
|
||||
SelectView
|
||||
{ svm
|
||||
| action = NoneAction
|
||||
, mergeModel = Comp.ItemMerge.init []
|
||||
, mergeModel = createModel <| Comp.ItemMerge.init []
|
||||
}
|
||||
}
|
||||
, Cmd.none
|
||||
@@ -584,7 +584,7 @@ update texts bookmarkId lastViewedItemId env msg model =
|
||||
SelectView
|
||||
{ svm
|
||||
| action = MergeSelected
|
||||
, mergeModel = mm
|
||||
, mergeModel = createModel mm
|
||||
}
|
||||
}
|
||||
, Cmd.map MergeItemsMsg mc
|
||||
@@ -600,11 +600,16 @@ update texts bookmarkId lastViewedItemId env msg model =
|
||||
case model.viewMode of
|
||||
SelectView svm ->
|
||||
let
|
||||
action =
|
||||
Api.mergeItemsTask env.flags
|
||||
( mergeModel, createModel, action ) =
|
||||
case svm.mergeModel of
|
||||
MergeItems a ->
|
||||
( a, MergeItems, Api.mergeItemsTask env.flags )
|
||||
|
||||
LinkItems a ->
|
||||
( a, LinkItems, Api.addRelatedItemsTask env.flags )
|
||||
|
||||
result =
|
||||
Comp.ItemMerge.update env.flags action lmsg svm.mergeModel
|
||||
Comp.ItemMerge.update env.flags action lmsg mergeModel
|
||||
|
||||
nextView =
|
||||
case result.outcome of
|
||||
@@ -612,7 +617,7 @@ update texts bookmarkId lastViewedItemId env msg model =
|
||||
SelectView { svm | action = NoneAction }
|
||||
|
||||
Comp.ItemMerge.OutcomeNotYet ->
|
||||
SelectView { svm | mergeModel = result.model }
|
||||
SelectView { svm | mergeModel = createModel result.model }
|
||||
|
||||
Comp.ItemMerge.OutcomeActionDone ->
|
||||
SearchView
|
||||
|
@@ -130,7 +130,7 @@ itemPublishView texts settings flags svm =
|
||||
itemMergeView : Texts -> UiSettings -> SelectViewModel -> List (Html Msg)
|
||||
itemMergeView texts settings svm =
|
||||
let
|
||||
cfg =
|
||||
cfgMerge =
|
||||
{ infoMessage = texts.mergeInfoText
|
||||
, warnMessage = texts.mergeDeleteWarn
|
||||
, actionButton = texts.submitMerge
|
||||
@@ -138,10 +138,32 @@ itemMergeView texts settings svm =
|
||||
, cancelTitle = texts.cancelMergeTitle
|
||||
, actionSuccessful = texts.mergeSuccessful
|
||||
, actionInProcess = texts.mergeInProcess
|
||||
, title = texts.mergeHeader
|
||||
, actionIcon = "fa fa-less-than"
|
||||
}
|
||||
|
||||
cfgLink =
|
||||
{ infoMessage = ""
|
||||
, warnMessage = texts.linkItemsMessage
|
||||
, actionButton = texts.submitLinkItems
|
||||
, actionTitle = texts.submitLinkItemsTitle
|
||||
, cancelTitle = texts.cancelLinkItemsTitle
|
||||
, actionSuccessful = texts.linkItemsSuccessful
|
||||
, actionInProcess = texts.linkItemsInProcess
|
||||
, title = texts.linkItemsHeader
|
||||
, actionIcon = "fa fa-link"
|
||||
}
|
||||
|
||||
( mergeModel, cfg ) =
|
||||
case svm.mergeModel of
|
||||
MergeItems a ->
|
||||
( a, cfgMerge )
|
||||
|
||||
LinkItems a ->
|
||||
( a, cfgLink )
|
||||
in
|
||||
[ Html.map MergeItemsMsg
|
||||
(Comp.ItemMerge.view texts.itemMerge cfg settings svm.mergeModel)
|
||||
(Comp.ItemMerge.view texts.itemMerge cfg settings mergeModel)
|
||||
]
|
||||
|
||||
|
||||
@@ -496,7 +518,7 @@ editMenuBar texts model selectedItems svm =
|
||||
]
|
||||
}
|
||||
, MB.CustomButton
|
||||
{ tagger = MergeSelectedItems
|
||||
{ tagger = MergeSelectedItems MergeItems
|
||||
, label = ""
|
||||
, icon = Just "fa fa-less-than"
|
||||
, title = texts.mergeItemsTitle selectCount
|
||||
@@ -517,6 +539,17 @@ editMenuBar texts model selectedItems svm =
|
||||
, ( "hidden", model.searchMenuModel.searchMode == Data.SearchMode.Trashed )
|
||||
]
|
||||
}
|
||||
, MB.CustomButton
|
||||
{ tagger = MergeSelectedItems LinkItems
|
||||
, label = ""
|
||||
, icon = Just Icons.linkItems
|
||||
, title = texts.linkItemsTitle selectCount
|
||||
, inputClass =
|
||||
[ ( btnStyle, True )
|
||||
, ( "bg-gray-200 dark:bg-slate-600", svm.action == PublishSelected )
|
||||
, ( "hidden", model.searchMenuModel.searchMode == Data.SearchMode.Trashed )
|
||||
]
|
||||
}
|
||||
]
|
||||
, end =
|
||||
[ MB.CustomButton
|
||||
|
Reference in New Issue
Block a user