mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-09-30 00:28:23 +00:00
Permalink for bookmark searches
This commit is contained in:
@@ -17,7 +17,7 @@ view texts _ model =
|
||||
div [ class "flex flex-col" ]
|
||||
[ div [ class "mt-2" ]
|
||||
[ menuLink [ onClick InitDashboard, href "#" ] (Icons.dashboardIcon "") "Dashboard"
|
||||
, menuLink [ Page.href SearchPage ] (Icons.searchIcon "") "Items"
|
||||
, menuLink [ Page.href (SearchPage Nothing) ] (Icons.searchIcon "") "Items"
|
||||
]
|
||||
, h3
|
||||
[ class S.header3
|
||||
|
@@ -7,6 +7,7 @@
|
||||
|
||||
module Page.Dashboard.Update exposing (update)
|
||||
|
||||
import Browser.Navigation as Nav
|
||||
import Comp.BookmarkChooser
|
||||
import Comp.EquipmentManage
|
||||
import Comp.FolderManage
|
||||
@@ -19,11 +20,13 @@ import Comp.SourceManage
|
||||
import Comp.TagManage
|
||||
import Data.Flags exposing (Flags)
|
||||
import Messages.Page.Dashboard exposing (Texts)
|
||||
import Page exposing (Page(..))
|
||||
import Page.Dashboard.Data exposing (..)
|
||||
import Set
|
||||
|
||||
|
||||
update : Texts -> Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||
update texts flags msg model =
|
||||
update : Texts -> Nav.Key -> Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||
update texts navKey flags msg model =
|
||||
case msg of
|
||||
GetBookmarksResp list ->
|
||||
let
|
||||
@@ -43,9 +46,12 @@ update texts flags msg model =
|
||||
lm
|
||||
sideMenu.bookmarkChooser
|
||||
Comp.BookmarkChooser.emptySelection
|
||||
|
||||
bmId =
|
||||
Set.toList sel.bookmarks |> List.head
|
||||
in
|
||||
( { model | sideMenu = { sideMenu | bookmarkChooser = bm } }
|
||||
, Cmd.none
|
||||
, Page.set navKey (SearchPage bmId)
|
||||
, Sub.none
|
||||
)
|
||||
|
||||
|
@@ -60,7 +60,7 @@ update key flags inav settings msg model =
|
||||
Cmd.none
|
||||
|
||||
_ ->
|
||||
Page.set key SearchPage
|
||||
Page.set key (SearchPage Nothing)
|
||||
in
|
||||
{ model = { model | detail = result.model }
|
||||
, cmd = Cmd.batch [ pageSwitch, Cmd.map ItemDetailMsg result.cmd ]
|
||||
|
@@ -48,7 +48,6 @@ 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
|
||||
|
||||
@@ -61,7 +60,6 @@ type alias Model =
|
||||
, searchOffset : Int
|
||||
, moreAvailable : Bool
|
||||
, moreInProgress : Bool
|
||||
, throttle : Throttle Msg
|
||||
, searchTypeDropdownValue : SearchType
|
||||
, lastSearchType : SearchType
|
||||
, dragDropData : DD.DragDropData
|
||||
@@ -129,7 +127,6 @@ init flags viewMode =
|
||||
, searchOffset = 0
|
||||
, moreAvailable = True
|
||||
, moreInProgress = False
|
||||
, throttle = Throttle.create 1
|
||||
, searchTypeDropdownValue =
|
||||
if Comp.SearchMenu.isFulltextSearch searchMenuModel then
|
||||
ContentOnlySearch
|
||||
@@ -199,6 +196,7 @@ editActive model =
|
||||
|
||||
type Msg
|
||||
= Init
|
||||
| DoNothing
|
||||
| SearchMenuMsg Comp.SearchMenu.Msg
|
||||
| ResetSearch
|
||||
| ItemCardListMsg Comp.ItemCardList.Msg
|
||||
@@ -208,7 +206,6 @@ type Msg
|
||||
| ToggleSearchMenu
|
||||
| ToggleSelectView
|
||||
| LoadMore
|
||||
| UpdateThrottle
|
||||
| SetBasicSearch String
|
||||
| ToggleSearchType
|
||||
| KeyUpSearchbarMsg (Maybe KeyCode)
|
||||
@@ -310,10 +307,11 @@ doSearchDefaultCmd param model =
|
||||
|
||||
createQuery : Model -> Maybe Q.ItemQuery
|
||||
createQuery model =
|
||||
Q.and
|
||||
[ Comp.SearchMenu.getItemQuery model.searchMenuModel
|
||||
, Maybe.map Q.Fragment model.powerSearchInput.input
|
||||
]
|
||||
Debug.log "query" <|
|
||||
Q.and
|
||||
[ Comp.SearchMenu.getItemQuery model.searchMenuModel
|
||||
, Maybe.map Q.Fragment model.powerSearchInput.input
|
||||
]
|
||||
|
||||
|
||||
resultsBelowLimit : UiSettings -> Model -> Bool
|
||||
|
@@ -35,8 +35,6 @@ import Process
|
||||
import Scroll
|
||||
import Set exposing (Set)
|
||||
import Task
|
||||
import Throttle
|
||||
import Time
|
||||
import Util.Html exposing (KeyCode(..))
|
||||
import Util.ItemDragDrop as DD
|
||||
import Util.Update
|
||||
@@ -50,8 +48,8 @@ type alias UpdateResult =
|
||||
}
|
||||
|
||||
|
||||
update : Maybe String -> Nav.Key -> Flags -> Texts -> UiSettings -> Msg -> Model -> UpdateResult
|
||||
update mId key flags texts settings msg model =
|
||||
update : Maybe String -> Maybe String -> Nav.Key -> Flags -> Texts -> UiSettings -> Msg -> Model -> UpdateResult
|
||||
update bookmarkId mId key flags texts settings msg model =
|
||||
case msg of
|
||||
Init ->
|
||||
let
|
||||
@@ -62,20 +60,28 @@ update mId key flags texts settings msg model =
|
||||
, offset = 0
|
||||
, scroll = True
|
||||
}
|
||||
|
||||
setBookmark =
|
||||
Maybe.map (\bmId -> SearchMenuMsg <| Comp.SearchMenu.SetBookmark bmId) bookmarkId
|
||||
|> Maybe.withDefault DoNothing
|
||||
in
|
||||
makeResult <|
|
||||
Util.Update.andThen3
|
||||
[ update mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.Init)
|
||||
[ update bookmarkId mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.Init)
|
||||
, update bookmarkId mId key flags texts settings setBookmark
|
||||
, doSearch searchParam
|
||||
]
|
||||
model
|
||||
|
||||
DoNothing ->
|
||||
UpdateResult model Cmd.none Sub.none Nothing
|
||||
|
||||
ResetSearch ->
|
||||
let
|
||||
nm =
|
||||
{ model | searchOffset = 0, powerSearchInput = Comp.PowerSearchInput.init }
|
||||
in
|
||||
update mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
|
||||
update bookmarkId mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
|
||||
|
||||
SearchMenuMsg m ->
|
||||
let
|
||||
@@ -103,7 +109,7 @@ update mId key flags texts settings msg model =
|
||||
}
|
||||
|
||||
result =
|
||||
if nextState.stateChange && not model.searchInProgress then
|
||||
if Debug.log "state" nextState.stateChange && not model.searchInProgress then
|
||||
doSearch (SearchParam flags BasicSearch settings.itemSearchPageSize 0 False) newModel
|
||||
|
||||
else
|
||||
@@ -121,7 +127,7 @@ update mId key flags texts settings msg model =
|
||||
SetLinkTarget lt ->
|
||||
case linkTargetMsg lt of
|
||||
Just m ->
|
||||
update mId key flags texts settings m model
|
||||
update bookmarkId mId key flags texts settings m model
|
||||
|
||||
Nothing ->
|
||||
makeResult ( model, Cmd.none, Sub.none )
|
||||
@@ -193,7 +199,7 @@ update mId key flags texts settings msg model =
|
||||
in
|
||||
makeResult <|
|
||||
Util.Update.andThen3
|
||||
[ update mId key flags texts settings (ItemCardListMsg (Comp.ItemCardList.SetResults list))
|
||||
[ update bookmarkId mId key flags texts settings (ItemCardListMsg (Comp.ItemCardList.SetResults list))
|
||||
, if scroll then
|
||||
scrollToCard mId
|
||||
|
||||
@@ -215,7 +221,7 @@ update mId key flags texts settings msg model =
|
||||
, moreAvailable = list.groups /= []
|
||||
}
|
||||
in
|
||||
update mId key flags texts settings (ItemCardListMsg (Comp.ItemCardList.AddResults list)) m
|
||||
update bookmarkId mId key flags texts settings (ItemCardListMsg (Comp.ItemCardList.AddResults list)) m
|
||||
|
||||
ItemSearchAddResp (Err _) ->
|
||||
withSub
|
||||
@@ -319,30 +325,23 @@ update mId key flags texts settings msg model =
|
||||
else
|
||||
withSub ( model, Cmd.none )
|
||||
|
||||
UpdateThrottle ->
|
||||
let
|
||||
( newThrottle, cmd ) =
|
||||
Throttle.update model.throttle
|
||||
in
|
||||
withSub ( { model | throttle = newThrottle }, cmd )
|
||||
|
||||
SetBasicSearch str ->
|
||||
let
|
||||
smMsg =
|
||||
SearchMenuMsg (Comp.SearchMenu.SetTextSearch str)
|
||||
in
|
||||
update mId key flags texts settings smMsg model
|
||||
update bookmarkId mId key flags texts settings smMsg model
|
||||
|
||||
ToggleSearchType ->
|
||||
case model.searchTypeDropdownValue of
|
||||
BasicSearch ->
|
||||
update mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.SetFulltextSearch) model
|
||||
update bookmarkId mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.SetFulltextSearch) model
|
||||
|
||||
ContentOnlySearch ->
|
||||
update mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.SetNamesSearch) model
|
||||
update bookmarkId mId key flags texts settings (SearchMenuMsg Comp.SearchMenu.SetNamesSearch) model
|
||||
|
||||
KeyUpSearchbarMsg (Just Enter) ->
|
||||
update mId key flags texts settings (DoSearch model.searchTypeDropdownValue) model
|
||||
update bookmarkId mId key flags texts settings (DoSearch model.searchTypeDropdownValue) model
|
||||
|
||||
KeyUpSearchbarMsg _ ->
|
||||
withSub ( model, Cmd.none )
|
||||
@@ -653,7 +652,8 @@ update mId key flags texts settings msg model =
|
||||
{ model | viewMode = nextView }
|
||||
in
|
||||
if result.outcome == Comp.ItemMerge.OutcomeMerged then
|
||||
update mId
|
||||
update bookmarkId
|
||||
mId
|
||||
key
|
||||
flags
|
||||
texts
|
||||
@@ -733,7 +733,8 @@ update mId key flags texts settings msg model =
|
||||
{ model | viewMode = nextView }
|
||||
in
|
||||
if result.outcome == Comp.PublishItems.OutcomeDone then
|
||||
update mId
|
||||
update bookmarkId
|
||||
mId
|
||||
key
|
||||
flags
|
||||
texts
|
||||
@@ -853,7 +854,7 @@ update mId key flags texts settings msg model =
|
||||
model_ =
|
||||
{ model | viewMode = viewMode }
|
||||
in
|
||||
update mId key flags texts settings (DoSearch model.lastSearchType) model_
|
||||
update bookmarkId mId key flags texts settings (DoSearch model.lastSearchType) model_
|
||||
|
||||
SearchStatsResp result ->
|
||||
let
|
||||
@@ -863,7 +864,7 @@ update mId key flags texts settings msg model =
|
||||
stats =
|
||||
Result.withDefault model.searchStats result
|
||||
in
|
||||
update mId key flags texts settings lm { model | searchStats = stats }
|
||||
update bookmarkId mId key flags texts settings lm { model | searchStats = stats }
|
||||
|
||||
TogglePreviewFullWidth ->
|
||||
let
|
||||
@@ -905,16 +906,16 @@ update mId key flags texts settings msg model =
|
||||
makeResult ( model_, cmd_, Sub.map PowerSearchMsg result.subs )
|
||||
|
||||
Comp.PowerSearchInput.SubmitSearch ->
|
||||
update mId key flags texts settings (DoSearch model_.searchTypeDropdownValue) model_
|
||||
update bookmarkId mId key flags texts settings (DoSearch model_.searchTypeDropdownValue) model_
|
||||
|
||||
KeyUpPowerSearchbarMsg (Just Enter) ->
|
||||
update mId key flags texts settings (DoSearch model.searchTypeDropdownValue) model
|
||||
update bookmarkId mId key flags texts settings (DoSearch model.searchTypeDropdownValue) model
|
||||
|
||||
KeyUpPowerSearchbarMsg _ ->
|
||||
withSub ( model, Cmd.none )
|
||||
|
||||
RemoveItem id ->
|
||||
update mId key flags texts settings (ItemCardListMsg (Comp.ItemCardList.RemoveItem id)) model
|
||||
update bookmarkId mId key flags texts settings (ItemCardListMsg (Comp.ItemCardList.RemoveItem id)) model
|
||||
|
||||
TogglePublishCurrentQueryView ->
|
||||
case createQuery model of
|
||||
@@ -1146,18 +1147,14 @@ doSearch param model =
|
||||
|
||||
searchCmd =
|
||||
doSearchCmd param_ model
|
||||
|
||||
( newThrottle, cmd ) =
|
||||
Throttle.try searchCmd model.throttle
|
||||
in
|
||||
withSub
|
||||
( { model
|
||||
| searchInProgress = cmd /= Cmd.none
|
||||
| searchInProgress = True
|
||||
, searchOffset = 0
|
||||
, throttle = newThrottle
|
||||
, lastSearchType = param.searchType
|
||||
}
|
||||
, cmd
|
||||
, searchCmd
|
||||
)
|
||||
|
||||
|
||||
@@ -1190,9 +1187,7 @@ withSub ( m, c ) =
|
||||
makeResult
|
||||
( m
|
||||
, c
|
||||
, Throttle.ifNeeded
|
||||
(Time.every 500 (\_ -> UpdateThrottle))
|
||||
m.throttle
|
||||
, Sub.none
|
||||
)
|
||||
|
||||
|
||||
|
@@ -195,7 +195,7 @@ renderSuccessMsg texts public model =
|
||||
[ text texts.successBox.line1
|
||||
, a
|
||||
[ class S.successMessageLink
|
||||
, Page.href SearchPage
|
||||
, Page.href (SearchPage Nothing)
|
||||
]
|
||||
[ text texts.successBox.itemsPage
|
||||
]
|
||||
|
Reference in New Issue
Block a user