Merge pull request #272 from eikek/hidden-fields-fix

Hidden fields fix
This commit is contained in:
mergify[bot] 2020-09-21 13:41:41 +00:00 committed by GitHub
commit 6b58bba1c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 203 additions and 73 deletions

View File

@ -192,7 +192,13 @@ updateItemDetail lmsg model =
Page.Home.Data.itemNav model.itemDetailModel.detail.item.id model.homeModel
( lm, lc, ls ) =
Page.ItemDetail.Update.update model.key model.flags inav.next lmsg model.itemDetailModel
Page.ItemDetail.Update.update
model.key
model.flags
inav.next
model.uiSettings
lmsg
model.itemDetailModel
in
( { model
| itemDetailModel = lm

View File

@ -14,6 +14,7 @@ import Api.Model.ItemLight exposing (ItemLight)
import Api.Model.ItemLightGroup exposing (ItemLightGroup)
import Api.Model.ItemLightList exposing (ItemLightList)
import Data.Direction
import Data.Fields
import Data.Flags exposing (Flags)
import Data.Icons as Icons
import Data.Items
@ -169,6 +170,9 @@ viewItem current settings item =
newColor =
"blue"
fieldHidden f =
Data.UiSettings.fieldHidden settings f
in
a
([ classList
@ -183,15 +187,21 @@ viewItem current settings item =
++ DD.draggable ItemDDMsg item.id
)
[ div [ class "content" ]
[ div
[ class "header"
, Data.Direction.labelFromMaybe item.direction
|> title
]
[ dirIcon
, Util.String.underscoreToSpace item.name
|> text
]
[ if fieldHidden Data.Fields.Direction then
div [ class "header" ]
[ Util.String.underscoreToSpace item.name |> text
]
else
div
[ class "header"
, Data.Direction.labelFromMaybe item.direction
|> title
]
[ dirIcon
, Util.String.underscoreToSpace item.name
|> text
]
, div
[ classList
[ ( "ui right corner label", True )
@ -202,16 +212,19 @@ viewItem current settings item =
]
[ i [ class "exclamation icon" ] []
]
, div [ class "meta" ]
[ span []
[ Util.Time.formatDate item.date |> text
, div
[ classList
[ ( "meta", True )
, ( "invisible hidden", fieldHidden Data.Fields.Date )
]
]
[ Util.Time.formatDate item.date |> text
]
, div [ class "meta description" ]
[ div
[ classList
[ ( "ui right floated tiny labels", True )
, ( "invisible hidden", item.tags == [] )
, ( "invisible hidden", item.tags == [] || fieldHidden Data.Fields.Tag )
]
]
(List.map
@ -247,7 +260,13 @@ viewItem current settings item =
, div [ class "content" ]
[ div [ class "ui horizontal list" ]
[ div
[ class "item"
[ classList
[ ( "item", True )
, ( "invisible hidden"
, fieldHidden Data.Fields.CorrOrg
&& fieldHidden Data.Fields.CorrPerson
)
]
, title "Correspondent"
]
[ Icons.correspondentIcon ""
@ -255,7 +274,13 @@ viewItem current settings item =
, Util.String.withDefault "-" corr |> text
]
, div
[ class "item"
[ classList
[ ( "item", True )
, ( "invisible hidden"
, fieldHidden Data.Fields.ConcPerson
&& fieldHidden Data.Fields.ConcEquip
)
]
, title "Concerning"
]
[ Icons.concernedIcon
@ -263,7 +288,10 @@ viewItem current settings item =
, Util.String.withDefault "-" conc |> text
]
, div
[ class "item"
[ classList
[ ( "item", True )
, ( "invisible hidden", fieldHidden Data.Fields.Folder )
]
, title "Folder"
]
[ Icons.folderIcon ""
@ -282,7 +310,11 @@ viewItem current settings item =
, div
[ classList
[ ( "item", True )
, ( "invisible hidden", item.dueDate == Nothing )
, ( "invisible hidden"
, item.dueDate
== Nothing
|| fieldHidden Data.Fields.DueDate
)
]
, title ("Due on " ++ dueDate)
]

View File

@ -24,7 +24,7 @@ emptyModel =
Comp.ItemDetail.Model.emptyModel
update : Nav.Key -> Flags -> Maybe String -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update : Nav.Key -> Flags -> Maybe String -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update =
Comp.ItemDetail.Update.update

View File

@ -31,7 +31,9 @@ import Comp.PersonForm
import Comp.SentMails
import Comp.YesNoDimmer
import Data.Direction exposing (Direction)
import Data.Fields exposing (Field)
import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings)
import DatePicker
import Dict
import Html exposing (..)
@ -125,10 +127,11 @@ type Msg
| StartEditCorrOrgModal
| StartEditPersonModal (Comp.Dropdown.Model IdName)
| StartEditEquipModal
| ResetHiddenMsg Field (Result Http.Error BasicResult)
update : Nav.Key -> Flags -> Maybe String -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update key flags next msg model =
update : Nav.Key -> Flags -> Maybe String -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update key flags next settings msg model =
case msg of
Init ->
let
@ -152,12 +155,18 @@ update key flags next msg model =
SetItem item ->
let
( m1, c1, s1 ) =
update key flags next (TagDropdownMsg (Comp.Dropdown.SetSelection item.tags)) model
update key
flags
next
settings
(TagDropdownMsg (Comp.Dropdown.SetSelection item.tags))
model
( m2, c2, s2 ) =
update key
flags
next
settings
(DirDropdownMsg
(Comp.Dropdown.SetSelection
(Data.Direction.fromString item.direction
@ -172,6 +181,7 @@ update key flags next msg model =
update key
flags
next
settings
(OrgDropdownMsg
(Comp.Dropdown.SetSelection
(item.corrOrg
@ -186,6 +196,7 @@ update key flags next msg model =
update key
flags
next
settings
(CorrPersonMsg
(Comp.Dropdown.SetSelection
(item.corrPerson
@ -200,6 +211,7 @@ update key flags next msg model =
update key
flags
next
settings
(ConcPersonMsg
(Comp.Dropdown.SetSelection
(item.concPerson
@ -214,6 +226,7 @@ update key flags next msg model =
update key
flags
next
settings
(ConcEquipMsg
(Comp.Dropdown.SetSelection
(item.concEquipment
@ -225,12 +238,13 @@ update key flags next msg model =
m5
( m7, c7, s7 ) =
update key flags next AddFilesReset m6
update key flags next settings AddFilesReset m6
( m8, c8, s8 ) =
update key
flags
next
settings
(FolderDropdownMsg
(Comp.Dropdown.SetSelection
(item.folder
@ -477,7 +491,11 @@ update key flags next msg model =
noSub ( model, setNotes flags model )
ConfirmItem ->
noSub ( model, Api.setConfirmed flags model.item.id SaveResp )
let
resetCmds =
resetHiddenFields settings flags model.item.id ResetHiddenMsg
in
noSub ( model, Cmd.batch (Api.setConfirmed flags model.item.id SaveResp :: resetCmds) )
UnconfirmItem ->
noSub ( model, Api.setUnconfirmed flags model.item.id SaveResp )
@ -535,7 +553,7 @@ update key flags next msg model =
noSub ( { model | deleteItemConfirm = cm }, cmd )
RequestDelete ->
update key flags next (DeleteItemConfirm Comp.YesNoDimmer.activate) model
update key flags next settings (DeleteItemConfirm Comp.YesNoDimmer.activate) model
SetCorrOrgSuggestion idname ->
noSub ( model, setCorrOrg flags model (Just idname) )
@ -574,7 +592,7 @@ update key flags next msg model =
|> List.map mkIdName
|> Comp.Dropdown.SetOptions
in
update key flags next (FolderDropdownMsg opts) model_
update key flags next settings (FolderDropdownMsg opts) model_
GetFolderResp (Err _) ->
noSub ( model, Cmd.none )
@ -585,7 +603,7 @@ update key flags next msg model =
Comp.Dropdown.SetOptions tags.items
( m1, c1, s1 ) =
update key flags next (TagDropdownMsg tagList) model
update key flags next settings (TagDropdownMsg tagList) model
in
( m1, c1, s1 )
@ -597,7 +615,7 @@ update key flags next msg model =
opts =
Comp.Dropdown.SetOptions orgs.items
in
update key flags next (OrgDropdownMsg opts) model
update key flags next settings (OrgDropdownMsg opts) model
GetOrgResp (Err _) ->
noSub ( model, Cmd.none )
@ -608,10 +626,10 @@ update key flags next msg model =
Comp.Dropdown.SetOptions ps.items
( m1, c1, s1 ) =
update key flags next (CorrPersonMsg opts) model
update key flags next settings (CorrPersonMsg opts) model
( m2, c2, s2 ) =
update key flags next (ConcPersonMsg opts) m1
update key flags next settings (ConcPersonMsg opts) m1
in
( m2, Cmd.batch [ c1, c2 ], Sub.batch [ s1, s2 ] )
@ -626,7 +644,7 @@ update key flags next msg model =
equips.items
)
in
update key flags next (ConcEquipMsg opts) model
update key flags next settings (ConcEquipMsg opts) model
GetEquipResp (Err _) ->
noSub ( model, Cmd.none )
@ -657,7 +675,7 @@ update key flags next msg model =
noSub ( model, Cmd.none )
GetItemResp (Ok item) ->
update key flags next (SetItem item) model
update key flags next settings (SetItem item) model
GetItemResp (Err _) ->
noSub ( model, Cmd.none )
@ -852,7 +870,7 @@ update key flags next msg model =
DeleteAttachResp (Ok res) ->
if res.success then
update key flags next ReloadItem model
update key flags next settings ReloadItem model
else
noSub ( model, Cmd.none )
@ -864,6 +882,7 @@ update key flags next msg model =
update key
flags
next
settings
(DeleteAttachConfirm id Comp.YesNoDimmer.activate)
model
@ -1235,6 +1254,9 @@ update key flags next msg model =
EditAttachNameResp (Err _) ->
noSub ( model, Cmd.none )
ResetHiddenMsg _ _ ->
noSub ( model, Cmd.none )
--- Helper
@ -1372,3 +1394,45 @@ setErrored model fileid =
noSub : ( Model, Cmd Msg ) -> ( Model, Cmd Msg, Sub Msg )
noSub ( m, c ) =
( m, c, Sub.none )
resetField : Flags -> String -> (Field -> Result Http.Error BasicResult -> msg) -> Field -> Cmd msg
resetField flags item tagger field =
case field of
Data.Fields.Tag ->
Api.setTags flags item Api.Model.ReferenceList.empty (tagger Data.Fields.Tag)
Data.Fields.Folder ->
Api.setFolder flags item Api.Model.OptionalId.empty (tagger Data.Fields.Folder)
Data.Fields.CorrOrg ->
Api.setCorrOrg flags item Api.Model.OptionalId.empty (tagger Data.Fields.CorrOrg)
Data.Fields.CorrPerson ->
Api.setCorrPerson flags item Api.Model.OptionalId.empty (tagger Data.Fields.CorrPerson)
Data.Fields.ConcPerson ->
Api.setConcPerson flags item Api.Model.OptionalId.empty (tagger Data.Fields.ConcPerson)
Data.Fields.ConcEquip ->
Api.setConcEquip flags item Api.Model.OptionalId.empty (tagger Data.Fields.ConcEquip)
Data.Fields.Date ->
Api.setItemDate flags item Api.Model.OptionalDate.empty (tagger Data.Fields.Date)
Data.Fields.DueDate ->
Api.setItemDueDate flags item Api.Model.OptionalDate.empty (tagger Data.Fields.DueDate)
Data.Fields.Direction ->
Cmd.none
resetHiddenFields :
UiSettings
-> Flags
-> String
-> (Field -> Result Http.Error BasicResult -> msg)
-> List (Cmd msg)
resetHiddenFields settings flags item tagger =
List.filter (Data.UiSettings.fieldHidden settings) Data.Fields.all
|> List.map (resetField flags item tagger)

View File

@ -553,7 +553,7 @@ renderItemInfo : UiSettings -> Model -> Html Msg
renderItemInfo settings model =
let
date =
div
( div
[ class "item"
, title "Item Date"
]
@ -561,9 +561,11 @@ renderItemInfo settings model =
|> Util.Time.formatDate
|> text
]
, Data.UiSettings.fieldVisible settings Data.Fields.Date
)
duedate =
div
( div
[ class "item"
, title "Due Date"
]
@ -572,9 +574,12 @@ renderItemInfo settings model =
|> Maybe.withDefault ""
|> text
]
, Data.UiSettings.fieldVisible settings Data.Fields.DueDate
&& Util.Maybe.nonEmpty model.item.dueDate
)
corr =
div
( div
[ class "item"
, title "Correspondent"
]
@ -585,9 +590,12 @@ renderItemInfo settings model =
|> Util.String.withDefault "(None)"
|> text
]
, Data.UiSettings.fieldVisible settings Data.Fields.CorrOrg
|| Data.UiSettings.fieldVisible settings Data.Fields.CorrPerson
)
conc =
div
( div
[ class "item"
, title "Concerning"
]
@ -598,9 +606,12 @@ renderItemInfo settings model =
|> Util.String.withDefault "(None)"
|> text
]
, Data.UiSettings.fieldVisible settings Data.Fields.ConcEquip
|| Data.UiSettings.fieldVisible settings Data.Fields.ConcPerson
)
itemfolder =
div
( div
[ class "item"
, title "Folder"
]
@ -609,21 +620,28 @@ renderItemInfo settings model =
|> Maybe.withDefault "-"
|> text
]
, Data.UiSettings.fieldVisible settings Data.Fields.Folder
)
src =
div
( div
[ class "item"
, title "Source"
]
[ text model.item.source
]
, True
)
in
div [ class "ui fluid container" ]
(h2
[ class "ui header"
]
[ i
[ class (Data.Direction.iconFromString model.item.direction)
[ classList
[ ( Data.Direction.iconFromString model.item.direction, True )
, ( "hidden invisible", Data.UiSettings.fieldHidden settings Data.Fields.Direction )
]
, title model.item.direction
]
[]
@ -638,20 +656,17 @@ renderItemInfo settings model =
[ text "New!"
]
, div [ class "sub header" ]
[ div [ class "ui horizontal bulleted list" ] <|
List.append
[ div [ class "ui horizontal bulleted list" ]
(List.filter Tuple.second
[ date
, corr
, conc
, itemfolder
, src
, duedate
]
(if Util.Maybe.isEmpty model.item.dueDate then
[]
else
[ duedate ]
)
|> List.map Tuple.first
)
]
]
]
@ -661,25 +676,29 @@ renderItemInfo settings model =
renderTags : UiSettings -> Model -> List (Html Msg)
renderTags settings model =
case model.item.tags of
[] ->
[]
if Data.UiSettings.fieldHidden settings Data.Fields.Tag then
[]
_ ->
[ div [ class "ui right aligned fluid container" ] <|
List.map
(\t ->
div
[ classList
[ ( "ui tag label", True )
, ( Data.UiSettings.tagColorString t settings, True )
else
case model.item.tags of
[] ->
[]
_ ->
[ div [ class "ui right aligned fluid container" ] <|
List.map
(\t ->
div
[ classList
[ ( "ui tag label", True )
, ( Data.UiSettings.tagColorString t settings, True )
]
]
]
[ text t.name
]
)
model.item.tags
]
[ text t.name
]
)
model.item.tags
]
renderEditMenu : UiSettings -> Model -> List (Html Msg)
@ -759,9 +778,6 @@ renderEditForm settings model =
fieldVisible field =
Data.UiSettings.fieldVisible settings field
fieldHidden field =
Data.UiSettings.fieldHidden settings field
optional fields html =
if
List.map fieldVisible fields

View File

@ -5,18 +5,24 @@ import Browser.Navigation as Nav
import Comp.ItemDetail
import Comp.ItemDetail.Update
import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings)
import Page.ItemDetail.Data exposing (Model, Msg(..))
import Scroll
import Task
update : Nav.Key -> Flags -> Maybe String -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update key flags next msg model =
update : Nav.Key -> Flags -> Maybe String -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update key flags next settings msg model =
case msg of
Init id ->
let
( lm, lc, ls ) =
Comp.ItemDetail.update key flags next Comp.ItemDetail.Update.Init model.detail
Comp.ItemDetail.update key
flags
next
settings
Comp.ItemDetail.Update.Init
model.detail
task =
Scroll.scroll "main-content" 0 0 0 0
@ -33,7 +39,7 @@ update key flags next msg model =
ItemDetailMsg lmsg ->
let
( lm, lc, ls ) =
Comp.ItemDetail.update key flags next lmsg model.detail
Comp.ItemDetail.update key flags next settings lmsg model.detail
in
( { model | detail = lm }
, Cmd.map ItemDetailMsg lc
@ -45,7 +51,7 @@ update key flags next msg model =
lmsg =
Comp.ItemDetail.Update.SetItem item
in
update key flags next (ItemDetailMsg lmsg) model
update key flags next settings (ItemDetailMsg lmsg) model
ItemResp (Err _) ->
( model, Cmd.none, Sub.none )

View File

@ -5,6 +5,7 @@ import Comp.FolderManage
import Comp.OrgManage
import Comp.PersonManage
import Comp.TagManage
import Data.Fields
import Data.Flags exposing (Flags)
import Data.Icons as Icons
import Data.UiSettings exposing (UiSettings)
@ -54,6 +55,11 @@ view flags settings model =
]
, div
[ classActive (model.currentTab == Just FolderTab) "link icon item"
, classList
[ ( "invisible hidden"
, Data.UiSettings.fieldHidden settings Data.Fields.Folder
)
]
, onClick (SetTab FolderTab)
]
[ Icons.folderIcon ""