Merge pull request #339 from eikek/fix-detail-links

Fix detail links
This commit is contained in:
mergify[bot] 2020-10-18 19:53:26 +00:00 committed by GitHub
commit 5c9f214f80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 52 additions and 64 deletions

View File

@ -160,7 +160,7 @@ checkPage flags page =
defaultPage : Flags -> Page
defaultPage flags =
if isSignedIn flags then
HomePage Nothing
HomePage
else
LoginPage Nothing

View File

@ -31,6 +31,7 @@ import Page.UserSettings.Data
import Page.UserSettings.Update
import Ports
import Url
import Util.Maybe
import Util.Update
@ -312,8 +313,8 @@ updateHome lmsg model =
let
mid =
case model.page of
HomePage x ->
x
HomePage ->
Util.Maybe.fromString model.itemDetailModel.detail.item.id
_ ->
Nothing
@ -348,7 +349,7 @@ initPage model_ page =
{ model_ | page = page }
in
case page of
HomePage _ ->
HomePage ->
Util.Update.andThen2
[ updateHome Page.Home.Data.Init
, updateQueue Page.Queue.Data.StopRefresh

View File

@ -16,6 +16,7 @@ import Page.Queue.View
import Page.Register.View
import Page.Upload.View
import Page.UserSettings.View
import Util.Maybe
view : Model -> Html Msg
@ -65,7 +66,7 @@ defaultLayout model =
[ div [ class "ui fluid container" ]
[ a
[ class "header item narrow-item"
, Page.href (HomePage Nothing)
, Page.href HomePage
]
[ img
[ class "image"
@ -84,7 +85,7 @@ defaultLayout model =
, id "main-content"
]
[ case model.page of
HomePage _ ->
HomePage ->
viewHome model
LoginPage _ ->
@ -180,8 +181,8 @@ viewHome model =
let
mid =
case model.page of
HomePage x ->
x
HomePage ->
Util.Maybe.fromString model.itemDetailModel.detail.item.id
_ ->
Nothing
@ -218,7 +219,7 @@ loginInfo model =
]
]
[ menuEntry model
(HomePage Nothing)
HomePage
[ img
[ class "image icon"
, src (model.flags.config.docspellAssetPath ++ "/img/logo-mc-96.png")

View File

@ -21,8 +21,8 @@ import Data.Items
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
import Markdown
import Page exposing (Page(..))
import Util.ItemDragDrop as DD
import Util.List
import Util.String
@ -37,7 +37,6 @@ type alias Model =
type Msg
= SetResults ItemLightList
| AddResults ItemLightList
| SelectItem ItemLight
| ItemDDMsg DD.Msg
@ -63,19 +62,18 @@ prevItem model id =
--- Update
update : Flags -> Msg -> Model -> ( Model, Cmd Msg, Maybe ItemLight )
update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
update flags msg model =
let
res =
updateDrag DD.init flags msg model
in
( res.model, res.cmd, res.selected )
( res.model, res.cmd )
type alias UpdateResult =
{ model : Model
, cmd : Cmd Msg
, selected : Maybe ItemLight
, dragModel : DD.Model
}
@ -93,28 +91,25 @@ updateDrag dm _ msg model =
newModel =
{ model | results = list }
in
UpdateResult newModel Cmd.none Nothing dm
UpdateResult newModel Cmd.none dm
AddResults list ->
if list.groups == [] then
UpdateResult model Cmd.none Nothing dm
UpdateResult model Cmd.none dm
else
let
newModel =
{ model | results = Data.Items.concat model.results list }
in
UpdateResult newModel Cmd.none Nothing dm
SelectItem item ->
UpdateResult model Cmd.none (Just item) dm
UpdateResult newModel Cmd.none dm
ItemDDMsg lm ->
let
ddd =
DD.update lm dm
in
UpdateResult model Cmd.none Nothing ddd.model
UpdateResult model Cmd.none ddd.model
@ -181,8 +176,7 @@ viewItem current settings item =
, ( "current", current == Just item.id )
]
, id item.id
, href "#"
, onClick (SelectItem item)
, Page.href (ItemDetailPage item.id)
]
++ DD.draggable ItemDDMsg item.id
)

View File

@ -632,7 +632,7 @@ update key flags inav settings msg model =
noSub ( model, Page.set key (ItemDetailPage id) )
Nothing ->
noSub ( model, Page.set key (HomePage Nothing) )
noSub ( model, Page.set key HomePage )
else
noSub ( model, Cmd.none )

View File

@ -110,7 +110,7 @@ renderDetailMenu settings inav model =
)
]
]
[ a [ class "item", Page.href (HomePage (Just model.item.id)) ]
[ a [ class "item", Page.href HomePage ]
[ i [ class "arrow left icon" ] []
]
, a

View File

@ -11,7 +11,7 @@ import Data.UiSettings
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Page
import Page exposing (Page(..))
import Ports
import Url exposing (Url)
@ -73,7 +73,16 @@ init flags url key =
viewDoc : Model -> Document Msg
viewDoc model =
{ title = model.flags.config.appName ++ ": " ++ Page.pageName model.page
let
title =
case model.page of
ItemDetailPage _ ->
model.itemDetailModel.detail.item.name
_ ->
Page.pageName model.page
in
{ title = model.flags.config.appName ++ ": " ++ title
, body = [ view model ]
}

View File

@ -24,7 +24,7 @@ import Util.Maybe
type Page
= HomePage (Maybe String)
= HomePage
| LoginPage (Maybe Page)
| ManageDataPage
| CollectiveSettingPage
@ -39,7 +39,7 @@ type Page
isSecured : Page -> Bool
isSecured page =
case page of
HomePage _ ->
HomePage ->
True
LoginPage _ ->
@ -88,7 +88,7 @@ loginPage p =
pageName : Page -> String
pageName page =
case page of
HomePage _ ->
HomePage ->
"Home"
LoginPage _ ->
@ -147,10 +147,7 @@ uploadId page =
pageToString : Page -> String
pageToString page =
case page of
HomePage (Just id) ->
"/app/home?item=" ++ id
HomePage Nothing ->
HomePage ->
"/app/home"
LoginPage referer ->
@ -232,8 +229,8 @@ parser =
oneOf
[ Parser.map HomePage
(oneOf
[ Parser.top <?> itemQuery
, s pathPrefix </> s "home" <?> itemQuery
[ Parser.top
, s pathPrefix </> s "home"
]
)
, Parser.map LoginPage (s pathPrefix </> s "login" <?> pageQuery)
@ -271,8 +268,3 @@ pageQuery =
in
Query.string "r"
|> Query.map parsePage
itemQuery : Query.Parser (Maybe String)
itemQuery =
Query.string "item"

View File

@ -41,6 +41,7 @@ type alias Model =
, searchTypeForm : SearchType
, contentOnlySearch : Maybe String
, dragDropData : DD.DragDropData
, scrollToCard : Maybe String
}
@ -70,6 +71,7 @@ init flags =
, contentOnlySearch = Nothing
, dragDropData =
DD.DragDropData DD.init Nothing
, scrollToCard = Nothing
}
@ -98,7 +100,7 @@ type Msg
| KeyUpMsg (Maybe KeyCode)
| SetContentOnly String
| ScrollResult (Result Dom.Error ())
| ClearItemDetailId (Maybe String)
| ClearItemDetailId
type SearchType

View File

@ -82,21 +82,13 @@ update mId key flags settings msg model =
flags
m
model.itemListModel
( cmd, id ) =
case result.selected of
Just item ->
( Page.set key (ItemDetailPage item.id), Just item.id )
Nothing ->
( Cmd.none, Nothing )
in
withSub
( { model
| itemListModel = result.model
, dragDropData = DD.DragDropData result.dragModel Nothing
}
, Cmd.batch [ Cmd.map ItemCardListMsg result.cmd, cmd ]
, Cmd.batch [ Cmd.map ItemCardListMsg result.cmd ]
)
ItemSearchResp (Ok list) ->
@ -251,18 +243,12 @@ update mId key flags settings msg model =
ScrollResult _ ->
let
cmd =
Process.sleep 800 |> Task.perform (always (ClearItemDetailId mId))
Process.sleep 800 |> Task.perform (always ClearItemDetailId)
in
withSub ( model, cmd )
ClearItemDetailId id ->
-- if user clicks quickly away (e.g. on another item), the
-- deferred command should be ignored
if mId == id then
noSub ( model, Page.set key (HomePage Nothing) )
else
noSub ( model, Cmd.none )
ClearItemDetailId ->
noSub ( { model | scrollToCard = Nothing }, Cmd.none )
@ -277,7 +263,10 @@ scrollToCard mId model =
in
case mId of
Just id ->
( model, Task.attempt ScrollResult (scroll id), Sub.none )
( { model | scrollToCard = mId }
, Task.attempt ScrollResult (scroll id)
, Sub.none
)
Nothing ->
( model, Cmd.none, Sub.none )

View File

@ -82,7 +82,7 @@ view current flags settings model =
]
[ viewSearchBar flags model
, Html.map ItemCardListMsg
(Comp.ItemCardList.view current settings model.itemListModel)
(Comp.ItemCardList.view model.scrollToCard settings model.itemListModel)
]
, div
[ classList

View File

@ -25,7 +25,7 @@ update referrer flags msg model =
AuthResp (Ok lr) ->
let
gotoRef =
Maybe.withDefault (HomePage Nothing) referrer |> Page.goto
Maybe.withDefault HomePage referrer |> Page.goto
in
if lr.success then
( { model | result = Just lr, password = "" }, Cmd.batch [ setAccount lr, gotoRef ], Just lr )

View File

@ -77,7 +77,7 @@ renderSuccessMsg public _ =
else
p []
[ text "Your files have been successfully uploaded. They are now being processed. Check the "
, a [ class "ui link", Page.href (HomePage Nothing) ]
, a [ class "ui link", Page.href HomePage ]
[ text "Items page"
]
, text " later where the files will arrive eventually. Or go to the "