mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-09-28 07:38:23 +00:00
Improve item detail view
- Separate page (permalink) for item details - Use available space and hide search menu - Disable item navigation links if there is nothing to go to - Show notes more prominently and allow to hide them
This commit is contained in:
@@ -15,6 +15,7 @@ import Http
|
||||
import Page exposing (Page(..))
|
||||
import Page.CollectiveSettings.Data
|
||||
import Page.Home.Data
|
||||
import Page.ItemDetail.Data
|
||||
import Page.Login.Data
|
||||
import Page.ManageData.Data
|
||||
import Page.NewInvite.Data
|
||||
@@ -39,6 +40,7 @@ type alias Model =
|
||||
, registerModel : Page.Register.Data.Model
|
||||
, uploadModel : Page.Upload.Data.Model
|
||||
, newInviteModel : Page.NewInvite.Data.Model
|
||||
, itemDetailModel : Page.ItemDetail.Data.Model
|
||||
, navMenuOpen : Bool
|
||||
, subs : Sub Msg
|
||||
}
|
||||
@@ -64,6 +66,7 @@ init key url flags =
|
||||
, registerModel = Page.Register.Data.emptyModel
|
||||
, uploadModel = Page.Upload.Data.emptyModel
|
||||
, newInviteModel = Page.NewInvite.Data.emptyModel
|
||||
, itemDetailModel = Page.ItemDetail.Data.emptyModel
|
||||
, navMenuOpen = False
|
||||
, subs = Sub.none
|
||||
}
|
||||
@@ -82,6 +85,7 @@ type Msg
|
||||
| RegisterMsg Page.Register.Data.Msg
|
||||
| UploadMsg Page.Upload.Data.Msg
|
||||
| NewInviteMsg Page.NewInvite.Data.Msg
|
||||
| ItemDetailMsg Page.ItemDetail.Data.Msg
|
||||
| Logout
|
||||
| LogoutResp (Result Http.Error ())
|
||||
| SessionCheckResp (Result Http.Error AuthResult)
|
||||
|
@@ -13,6 +13,8 @@ import Page.CollectiveSettings.Data
|
||||
import Page.CollectiveSettings.Update
|
||||
import Page.Home.Data
|
||||
import Page.Home.Update
|
||||
import Page.ItemDetail.Data
|
||||
import Page.ItemDetail.Update
|
||||
import Page.Login.Data
|
||||
import Page.Login.Update
|
||||
import Page.ManageData.Data
|
||||
@@ -71,6 +73,9 @@ updateWithSub msg model =
|
||||
NewInviteMsg m ->
|
||||
updateNewInvite m model |> noSub
|
||||
|
||||
ItemDetailMsg m ->
|
||||
updateItemDetail m model |> noSub
|
||||
|
||||
VersionResp (Ok info) ->
|
||||
( { model | version = info }, Cmd.none ) |> noSub
|
||||
|
||||
@@ -170,6 +175,20 @@ updateWithSub msg model =
|
||||
( { model | navMenuOpen = not model.navMenuOpen }, Cmd.none, Sub.none )
|
||||
|
||||
|
||||
updateItemDetail : Page.ItemDetail.Data.Msg -> Model -> ( Model, Cmd Msg )
|
||||
updateItemDetail lmsg model =
|
||||
let
|
||||
inav =
|
||||
Page.Home.Data.itemNav model.itemDetailModel.detail.item.id model.homeModel
|
||||
|
||||
( lm, lc ) =
|
||||
Page.ItemDetail.Update.update model.key model.flags inav.next lmsg model.itemDetailModel
|
||||
in
|
||||
( { model | itemDetailModel = lm }
|
||||
, Cmd.map ItemDetailMsg lc
|
||||
)
|
||||
|
||||
|
||||
updateNewInvite : Page.NewInvite.Data.Msg -> Model -> ( Model, Cmd Msg )
|
||||
updateNewInvite lmsg model =
|
||||
let
|
||||
@@ -265,7 +284,7 @@ updateHome : Page.Home.Data.Msg -> Model -> ( Model, Cmd Msg )
|
||||
updateHome lmsg model =
|
||||
let
|
||||
( lm, lc ) =
|
||||
Page.Home.Update.update model.flags lmsg model.homeModel
|
||||
Page.Home.Update.update model.key model.flags lmsg model.homeModel
|
||||
in
|
||||
( { model | homeModel = lm }
|
||||
, Cmd.map HomeMsg lc
|
||||
@@ -321,6 +340,9 @@ initPage model page =
|
||||
NewInvitePage ->
|
||||
updateQueue Page.Queue.Data.StopRefresh model
|
||||
|
||||
ItemDetailPage id ->
|
||||
updateItemDetail (Page.ItemDetail.Data.Init id) model
|
||||
|
||||
|
||||
noSub : ( Model, Cmd Msg ) -> ( Model, Cmd Msg, Sub Msg )
|
||||
noSub ( m, c ) =
|
||||
|
@@ -6,7 +6,9 @@ import Html.Attributes exposing (..)
|
||||
import Html.Events exposing (onClick)
|
||||
import Page exposing (Page(..))
|
||||
import Page.CollectiveSettings.View
|
||||
import Page.Home.Data
|
||||
import Page.Home.View
|
||||
import Page.ItemDetail.View
|
||||
import Page.Login.View
|
||||
import Page.ManageData.View
|
||||
import Page.NewInvite.View
|
||||
@@ -105,11 +107,23 @@ defaultLayout model =
|
||||
|
||||
NewInvitePage ->
|
||||
viewNewInvite model
|
||||
|
||||
ItemDetailPage id ->
|
||||
viewItemDetail id model
|
||||
]
|
||||
, footer model
|
||||
]
|
||||
|
||||
|
||||
viewItemDetail : String -> Model -> Html Msg
|
||||
viewItemDetail id model =
|
||||
let
|
||||
inav =
|
||||
Page.Home.Data.itemNav id model.homeModel
|
||||
in
|
||||
Html.map ItemDetailMsg (Page.ItemDetail.View.view inav model.itemDetailModel)
|
||||
|
||||
|
||||
viewNewInvite : Model -> Html Msg
|
||||
viewNewInvite model =
|
||||
Html.map NewInviteMsg (Page.NewInvite.View.view model.flags model.newInviteModel)
|
||||
|
Reference in New Issue
Block a user