Display custom field values on item card

This commit is contained in:
Eike Kettner
2020-11-23 10:23:37 +01:00
parent 7b7f1e4d6d
commit 6d22bac720
4 changed files with 81 additions and 43 deletions

View File

@ -25,6 +25,7 @@ import Html.Events exposing (onClick)
import Markdown
import Page exposing (Page(..))
import Set exposing (Set)
import Util.CustomField
import Util.ItemDragDrop as DD
import Util.List
import Util.Maybe
@ -360,28 +361,48 @@ mainContent cardAction cardColor isConfirmed settings _ item =
[ Util.Time.formatDate item.date |> text
]
, div [ class "meta description" ]
[ div
[ classList
[ ( "ui right floated tiny labels", True )
, ( "invisible hidden", item.tags == [] || fieldHidden Data.Fields.Tag )
]
]
(List.map
(\tag ->
div
[ classList
[ ( "ui basic label", True )
, ( Data.UiSettings.tagColorString tag settings, True )
]
]
[ text tag.name ]
)
item.tags
)
[ mainTagsAndFields settings item
]
]
mainTagsAndFields : UiSettings -> ItemLight -> Html Msg
mainTagsAndFields settings item =
let
fieldHidden f =
Data.UiSettings.fieldHidden settings f
hideTags =
item.tags == [] || fieldHidden Data.Fields.Tag
hideFields =
item.customfields == [] || fieldHidden Data.Fields.CustomFields
showTag tag =
div
[ classList
[ ( "ui basic label", True )
, ( Data.UiSettings.tagColorString tag settings, True )
]
]
[ i [ class "tag icon" ] []
, div [ class "detail" ]
[ text tag.name
]
]
showField fv =
Util.CustomField.renderValue "ui basic label" fv
in
div
[ classList
[ ( "ui right floated tiny labels", True )
, ( "invisible hidden", hideTags && hideFields )
]
]
(List.map showField item.customfields ++ List.map showTag item.tags)
previewImage : UiSettings -> Attribute Msg -> Model -> ItemLight -> Html Msg
previewImage settings cardAction model item =
let

View File

@ -32,6 +32,7 @@ import Html.Events exposing (onCheck, onClick, onInput)
import Markdown
import Page exposing (Page(..))
import Set
import Util.CustomField
import Util.File exposing (makeFileId)
import Util.Folder
import Util.List
@ -628,30 +629,8 @@ renderTags settings model =
renderCustomValues : UiSettings -> Model -> List (Html Msg)
renderCustomValues settings model =
let
cfIcon cv =
Data.CustomFieldType.fromString cv.ftype
|> Maybe.map (Icons.customFieldTypeIcon "")
|> Maybe.withDefault (i [ class "question circle outline icon" ] [])
renderBool cv =
if cv.value == "true" then
i [ class "check icon" ] []
else
i [ class "minus icon" ] []
fieldView cv =
div [ class "ui secondary basic label" ]
[ cfIcon cv
, Maybe.withDefault cv.name cv.label |> text
, div [ class "detail" ]
[ if Data.CustomFieldType.fromString cv.ftype == Just Data.CustomFieldType.Boolean then
renderBool cv
else
text cv.value
]
]
Util.CustomField.renderValue "ui secondary basic label" cv
labelThenName cv =
Maybe.withDefault cv.name cv.label