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 Page.Home.Data.itemNav model.itemDetailModel.detail.item.id model.homeModel
( lm, lc, ls ) = ( 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 in
( { model ( { model
| itemDetailModel = lm | itemDetailModel = lm

View File

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

View File

@ -24,7 +24,7 @@ emptyModel =
Comp.ItemDetail.Model.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 = update =
Comp.ItemDetail.Update.update Comp.ItemDetail.Update.update

View File

@ -31,7 +31,9 @@ import Comp.PersonForm
import Comp.SentMails import Comp.SentMails
import Comp.YesNoDimmer import Comp.YesNoDimmer
import Data.Direction exposing (Direction) import Data.Direction exposing (Direction)
import Data.Fields exposing (Field)
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings)
import DatePicker import DatePicker
import Dict import Dict
import Html exposing (..) import Html exposing (..)
@ -125,10 +127,11 @@ type Msg
| StartEditCorrOrgModal | StartEditCorrOrgModal
| StartEditPersonModal (Comp.Dropdown.Model IdName) | StartEditPersonModal (Comp.Dropdown.Model IdName)
| StartEditEquipModal | StartEditEquipModal
| ResetHiddenMsg Field (Result Http.Error BasicResult)
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 key flags next msg model = update key flags next settings msg model =
case msg of case msg of
Init -> Init ->
let let
@ -152,12 +155,18 @@ update key flags next msg model =
SetItem item -> SetItem item ->
let let
( m1, c1, s1 ) = ( 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 ) = ( m2, c2, s2 ) =
update key update key
flags flags
next next
settings
(DirDropdownMsg (DirDropdownMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(Data.Direction.fromString item.direction (Data.Direction.fromString item.direction
@ -172,6 +181,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(OrgDropdownMsg (OrgDropdownMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.corrOrg (item.corrOrg
@ -186,6 +196,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(CorrPersonMsg (CorrPersonMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.corrPerson (item.corrPerson
@ -200,6 +211,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(ConcPersonMsg (ConcPersonMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.concPerson (item.concPerson
@ -214,6 +226,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(ConcEquipMsg (ConcEquipMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.concEquipment (item.concEquipment
@ -225,12 +238,13 @@ update key flags next msg model =
m5 m5
( m7, c7, s7 ) = ( m7, c7, s7 ) =
update key flags next AddFilesReset m6 update key flags next settings AddFilesReset m6
( m8, c8, s8 ) = ( m8, c8, s8 ) =
update key update key
flags flags
next next
settings
(FolderDropdownMsg (FolderDropdownMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.folder (item.folder
@ -477,7 +491,11 @@ update key flags next msg model =
noSub ( model, setNotes flags model ) noSub ( model, setNotes flags model )
ConfirmItem -> 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 -> UnconfirmItem ->
noSub ( model, Api.setUnconfirmed flags model.item.id SaveResp ) noSub ( model, Api.setUnconfirmed flags model.item.id SaveResp )
@ -535,7 +553,7 @@ update key flags next msg model =
noSub ( { model | deleteItemConfirm = cm }, cmd ) noSub ( { model | deleteItemConfirm = cm }, cmd )
RequestDelete -> RequestDelete ->
update key flags next (DeleteItemConfirm Comp.YesNoDimmer.activate) model update key flags next settings (DeleteItemConfirm Comp.YesNoDimmer.activate) model
SetCorrOrgSuggestion idname -> SetCorrOrgSuggestion idname ->
noSub ( model, setCorrOrg flags model (Just idname) ) noSub ( model, setCorrOrg flags model (Just idname) )
@ -574,7 +592,7 @@ update key flags next msg model =
|> List.map mkIdName |> List.map mkIdName
|> Comp.Dropdown.SetOptions |> Comp.Dropdown.SetOptions
in in
update key flags next (FolderDropdownMsg opts) model_ update key flags next settings (FolderDropdownMsg opts) model_
GetFolderResp (Err _) -> GetFolderResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -585,7 +603,7 @@ update key flags next msg model =
Comp.Dropdown.SetOptions tags.items Comp.Dropdown.SetOptions tags.items
( m1, c1, s1 ) = ( m1, c1, s1 ) =
update key flags next (TagDropdownMsg tagList) model update key flags next settings (TagDropdownMsg tagList) model
in in
( m1, c1, s1 ) ( m1, c1, s1 )
@ -597,7 +615,7 @@ update key flags next msg model =
opts = opts =
Comp.Dropdown.SetOptions orgs.items Comp.Dropdown.SetOptions orgs.items
in in
update key flags next (OrgDropdownMsg opts) model update key flags next settings (OrgDropdownMsg opts) model
GetOrgResp (Err _) -> GetOrgResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -608,10 +626,10 @@ update key flags next msg model =
Comp.Dropdown.SetOptions ps.items Comp.Dropdown.SetOptions ps.items
( m1, c1, s1 ) = ( m1, c1, s1 ) =
update key flags next (CorrPersonMsg opts) model update key flags next settings (CorrPersonMsg opts) model
( m2, c2, s2 ) = ( m2, c2, s2 ) =
update key flags next (ConcPersonMsg opts) m1 update key flags next settings (ConcPersonMsg opts) m1
in in
( m2, Cmd.batch [ c1, c2 ], Sub.batch [ s1, s2 ] ) ( m2, Cmd.batch [ c1, c2 ], Sub.batch [ s1, s2 ] )
@ -626,7 +644,7 @@ update key flags next msg model =
equips.items equips.items
) )
in in
update key flags next (ConcEquipMsg opts) model update key flags next settings (ConcEquipMsg opts) model
GetEquipResp (Err _) -> GetEquipResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -657,7 +675,7 @@ update key flags next msg model =
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
GetItemResp (Ok item) -> GetItemResp (Ok item) ->
update key flags next (SetItem item) model update key flags next settings (SetItem item) model
GetItemResp (Err _) -> GetItemResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -852,7 +870,7 @@ update key flags next msg model =
DeleteAttachResp (Ok res) -> DeleteAttachResp (Ok res) ->
if res.success then if res.success then
update key flags next ReloadItem model update key flags next settings ReloadItem model
else else
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -864,6 +882,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(DeleteAttachConfirm id Comp.YesNoDimmer.activate) (DeleteAttachConfirm id Comp.YesNoDimmer.activate)
model model
@ -1235,6 +1254,9 @@ update key flags next msg model =
EditAttachNameResp (Err _) -> EditAttachNameResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
ResetHiddenMsg _ _ ->
noSub ( model, Cmd.none )
--- Helper --- Helper
@ -1372,3 +1394,45 @@ setErrored model fileid =
noSub : ( Model, Cmd Msg ) -> ( Model, Cmd Msg, Sub Msg ) noSub : ( Model, Cmd Msg ) -> ( Model, Cmd Msg, Sub Msg )
noSub ( m, c ) = noSub ( m, c ) =
( m, c, Sub.none ) ( 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 = renderItemInfo settings model =
let let
date = date =
div ( div
[ class "item" [ class "item"
, title "Item Date" , title "Item Date"
] ]
@ -561,9 +561,11 @@ renderItemInfo settings model =
|> Util.Time.formatDate |> Util.Time.formatDate
|> text |> text
] ]
, Data.UiSettings.fieldVisible settings Data.Fields.Date
)
duedate = duedate =
div ( div
[ class "item" [ class "item"
, title "Due Date" , title "Due Date"
] ]
@ -572,9 +574,12 @@ renderItemInfo settings model =
|> Maybe.withDefault "" |> Maybe.withDefault ""
|> text |> text
] ]
, Data.UiSettings.fieldVisible settings Data.Fields.DueDate
&& Util.Maybe.nonEmpty model.item.dueDate
)
corr = corr =
div ( div
[ class "item" [ class "item"
, title "Correspondent" , title "Correspondent"
] ]
@ -585,9 +590,12 @@ renderItemInfo settings model =
|> Util.String.withDefault "(None)" |> Util.String.withDefault "(None)"
|> text |> text
] ]
, Data.UiSettings.fieldVisible settings Data.Fields.CorrOrg
|| Data.UiSettings.fieldVisible settings Data.Fields.CorrPerson
)
conc = conc =
div ( div
[ class "item" [ class "item"
, title "Concerning" , title "Concerning"
] ]
@ -598,9 +606,12 @@ renderItemInfo settings model =
|> Util.String.withDefault "(None)" |> Util.String.withDefault "(None)"
|> text |> text
] ]
, Data.UiSettings.fieldVisible settings Data.Fields.ConcEquip
|| Data.UiSettings.fieldVisible settings Data.Fields.ConcPerson
)
itemfolder = itemfolder =
div ( div
[ class "item" [ class "item"
, title "Folder" , title "Folder"
] ]
@ -609,21 +620,28 @@ renderItemInfo settings model =
|> Maybe.withDefault "-" |> Maybe.withDefault "-"
|> text |> text
] ]
, Data.UiSettings.fieldVisible settings Data.Fields.Folder
)
src = src =
div ( div
[ class "item" [ class "item"
, title "Source" , title "Source"
] ]
[ text model.item.source [ text model.item.source
] ]
, True
)
in in
div [ class "ui fluid container" ] div [ class "ui fluid container" ]
(h2 (h2
[ class "ui header" [ class "ui header"
] ]
[ i [ 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 , title model.item.direction
] ]
[] []
@ -638,20 +656,17 @@ renderItemInfo settings model =
[ text "New!" [ text "New!"
] ]
, div [ class "sub header" ] , div [ class "sub header" ]
[ div [ class "ui horizontal bulleted list" ] <| [ div [ class "ui horizontal bulleted list" ]
List.append (List.filter Tuple.second
[ date [ date
, corr , corr
, conc , conc
, itemfolder , itemfolder
, src , src
, duedate
] ]
(if Util.Maybe.isEmpty model.item.dueDate then |> List.map Tuple.first
[] )
else
[ duedate ]
)
] ]
] ]
] ]
@ -661,25 +676,29 @@ renderItemInfo settings model =
renderTags : UiSettings -> Model -> List (Html Msg) renderTags : UiSettings -> Model -> List (Html Msg)
renderTags settings model = renderTags settings model =
case model.item.tags of if Data.UiSettings.fieldHidden settings Data.Fields.Tag then
[] -> []
[]
_ -> else
[ div [ class "ui right aligned fluid container" ] <| case model.item.tags of
List.map [] ->
(\t -> []
div
[ classList _ ->
[ ( "ui tag label", True ) [ div [ class "ui right aligned fluid container" ] <|
, ( Data.UiSettings.tagColorString t settings, True ) List.map
(\t ->
div
[ classList
[ ( "ui tag label", True )
, ( Data.UiSettings.tagColorString t settings, True )
]
] ]
] [ text t.name
[ text t.name ]
] )
) model.item.tags
model.item.tags ]
]
renderEditMenu : UiSettings -> Model -> List (Html Msg) renderEditMenu : UiSettings -> Model -> List (Html Msg)
@ -759,9 +778,6 @@ renderEditForm settings model =
fieldVisible field = fieldVisible field =
Data.UiSettings.fieldVisible settings field Data.UiSettings.fieldVisible settings field
fieldHidden field =
Data.UiSettings.fieldHidden settings field
optional fields html = optional fields html =
if if
List.map fieldVisible fields List.map fieldVisible fields

View File

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

View File

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