Allow to set item notes below or above the files

This commit is contained in:
Eike Kettner 2020-08-05 21:23:42 +02:00
parent 0453494cc6
commit baa25d0f2f
4 changed files with 117 additions and 29 deletions

View File

@ -65,11 +65,20 @@ view inav settings model =
] ]
<| <|
List.concat List.concat
[ [ renderAttachmentsTabMenu model [ if settings.itemDetailNotesPosition == Data.UiSettings.Top then
[ renderNotes model ]
else
[]
, [ renderAttachmentsTabMenu model
] ]
, renderAttachmentsTabBody settings model , renderAttachmentsTabBody settings model
, [ renderNotes model ]
, renderIdInfo model , renderIdInfo model
, if settings.itemDetailNotesPosition == Data.UiSettings.Bottom then
[ renderNotes model ]
else
[]
] ]
] ]
] ]
@ -166,18 +175,25 @@ actionInputDatePicker =
renderIdInfo : Model -> List (Html msg) renderIdInfo : Model -> List (Html msg)
renderIdInfo model = renderIdInfo model =
[ div [ class "ui bottom attached segment" ]
[ div [ class "ui center aligned container" ] [ div [ class "ui center aligned container" ]
[ span [ class "small-info" ] [ div [ class "ui bulleted mini horizontal list small-info" ]
[ text model.item.id [ div [ class "item" ]
, text " " [ i [ class "bullseye icon" ] []
, text "Created: " , text model.item.id
]
, div [ class "item" ]
[ i [ class "sun outline icon" ] []
, Util.Time.formatDateTime model.item.created |> text , Util.Time.formatDateTime model.item.created |> text
, text " " ]
, text "Updated: " , div [ class "item" ]
[ i [ class "pencil alternate icon" ] []
, Util.Time.formatDateTime model.item.updated |> text , Util.Time.formatDateTime model.item.updated |> text
] ]
] ]
] ]
]
]
renderNotes : Model -> Html Msg renderNotes : Model -> Html Msg
@ -224,7 +240,7 @@ renderNotes model =
[ text "Notes" [ text "Notes"
] ]
] ]
, div [ class "twelve wide center aligned column" ] , div [ class "eleven wide center aligned column" ]
[ div [ class "ui horizontal bulleted link list" ] [ div [ class "ui horizontal bulleted link list" ]
[ Html.map NotesEditMsg [ Html.map NotesEditMsg
(Comp.MarkdownInput.viewEditLink classes mm) (Comp.MarkdownInput.viewEditLink classes mm)
@ -234,16 +250,9 @@ renderNotes model =
(Comp.MarkdownInput.viewSplitLink classes mm) (Comp.MarkdownInput.viewSplitLink classes mm)
] ]
] ]
, div [ class "right aligned two wide column" ] , div [ class "right aligned three wide column" ]
[ a [ div [ class "ui horizontal link list" ]
[ classList [ Comp.MarkdownInput.viewCheatLink "item" mm
[ ( "ui basic icon link", True )
, ( "invisible hidden", Util.String.isNothingOrBlank model.item.notes )
]
, onClick ToggleEditNotes
, href "#"
]
[ i [ class "cancel icon" ] []
] ]
] ]
] ]
@ -675,14 +684,16 @@ renderTags settings model =
renderEditMenu : UiSettings -> Model -> List (Html Msg) renderEditMenu : UiSettings -> Model -> List (Html Msg)
renderEditMenu settings model = renderEditMenu settings model =
[ div [ class "ui segments" ]
[ renderEditButtons model [ renderEditButtons model
, renderEditForm settings model , renderEditForm settings model
] ]
]
renderEditButtons : Model -> Html Msg renderEditButtons : Model -> Html Msg
renderEditButtons model = renderEditButtons model =
div [ class "ui top attached segment" ] div [ class "ui segment" ]
[ button [ button
[ classList [ classList
[ ( "ui primary button", True ) [ ( "ui primary button", True )
@ -723,7 +734,7 @@ renderEditForm settings model =
[ i [ class "grey plus link icon" ] [] [ i [ class "grey plus link icon" ] []
] ]
in in
div [ class "ui attached segment" ] div [ class "ui segment" ]
[ div [ class "ui form warning" ] [ div [ class "ui form warning" ]
[ div [ class "field" ] [ div [ class "field" ]
[ label [] [ label []

View File

@ -12,7 +12,7 @@ import Comp.ColorTagger
import Comp.IntField import Comp.IntField
import Data.Color exposing (Color) import Data.Color exposing (Color)
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings) import Data.UiSettings exposing (Pos(..), UiSettings)
import Dict exposing (Dict) import Dict exposing (Dict)
import Html exposing (..) import Html exposing (..)
import Html.Attributes exposing (..) import Html.Attributes exposing (..)
@ -29,6 +29,7 @@ type alias Model =
, nativePdfPreview : Bool , nativePdfPreview : Bool
, itemSearchNoteLength : Maybe Int , itemSearchNoteLength : Maybe Int
, searchNoteLengthModel : Comp.IntField.Model , searchNoteLengthModel : Comp.IntField.Model
, itemDetailNotesPosition : Pos
} }
@ -54,6 +55,7 @@ init flags settings =
(Just flags.config.maxNoteLength) (Just flags.config.maxNoteLength)
False False
"Max. Note Length" "Max. Note Length"
, itemDetailNotesPosition = settings.itemDetailNotesPosition
} }
, Api.getTags flags "" GetTagsResp , Api.getTags flags "" GetTagsResp
) )
@ -65,6 +67,7 @@ type Msg
| GetTagsResp (Result Http.Error TagList) | GetTagsResp (Result Http.Error TagList)
| TogglePdfPreview | TogglePdfPreview
| NoteLengthMsg Comp.IntField.Msg | NoteLengthMsg Comp.IntField.Msg
| SetNotesPosition Pos
@ -106,6 +109,17 @@ update sett msg model =
in in
( model_, nextSettings ) ( model_, nextSettings )
SetNotesPosition pos ->
let
model_ =
{ model | itemDetailNotesPosition = pos }
in
if model_.itemDetailNotesPosition == sett.itemDetailNotesPosition then
( model_, Nothing )
else
( model_, Just { sett | itemDetailNotesPosition = model_.itemDetailNotesPosition } )
TagColorMsg lm -> TagColorMsg lm ->
let let
( m_, d_ ) = ( m_, d_ ) =
@ -207,6 +221,31 @@ view flags _ model =
] ]
] ]
] ]
, div [ class "grouped fields" ]
[ label [] [ text "Position of item notes" ]
, div [ class "field" ]
[ div [ class "ui radio checkbox" ]
[ input
[ type_ "radio"
, checked (model.itemDetailNotesPosition == Top)
, onCheck (\_ -> SetNotesPosition Top)
]
[]
, label [] [ text "Top" ]
]
]
, div [ class "field" ]
[ div [ class "ui radio checkbox" ]
[ input
[ type_ "radio"
, checked (model.itemDetailNotesPosition == Bottom)
, onCheck (\_ -> SetNotesPosition Bottom)
]
[]
, label [] [ text "Bottom" ]
]
]
]
, div [ class "ui dividing header" ] , div [ class "ui dividing header" ]
[ text "Tag Category Colors" [ text "Tag Category Colors"
] ]

View File

@ -1,9 +1,12 @@
module Data.UiSettings exposing module Data.UiSettings exposing
( StoredUiSettings ( Pos(..)
, StoredUiSettings
, UiSettings , UiSettings
, defaults , defaults
, merge , merge
, mergeDefaults , mergeDefaults
, posFromString
, posToString
, tagColor , tagColor
, tagColorString , tagColorString
, toStoredUiSettings , toStoredUiSettings
@ -27,6 +30,7 @@ type alias StoredUiSettings =
, tagCategoryColors : List ( String, String ) , tagCategoryColors : List ( String, String )
, nativePdfPreview : Bool , nativePdfPreview : Bool
, itemSearchNoteLength : Maybe Int , itemSearchNoteLength : Maybe Int
, itemDetailNotesPosition : Maybe String
} }
@ -42,15 +46,45 @@ type alias UiSettings =
, tagCategoryColors : Dict String Color , tagCategoryColors : Dict String Color
, nativePdfPreview : Bool , nativePdfPreview : Bool
, itemSearchNoteLength : Int , itemSearchNoteLength : Int
, itemDetailNotesPosition : Pos
} }
type Pos
= Top
| Bottom
posToString : Pos -> String
posToString pos =
case pos of
Top ->
"top"
Bottom ->
"bottom"
posFromString : String -> Maybe Pos
posFromString str =
case str of
"top" ->
Just Top
"bottom" ->
Just Bottom
_ ->
Nothing
defaults : UiSettings defaults : UiSettings
defaults = defaults =
{ itemSearchPageSize = 60 { itemSearchPageSize = 60
, tagCategoryColors = Dict.empty , tagCategoryColors = Dict.empty
, nativePdfPreview = False , nativePdfPreview = False
, itemSearchNoteLength = 0 , itemSearchNoteLength = 0
, itemDetailNotesPosition = Top
} }
@ -69,6 +103,9 @@ merge given fallback =
, nativePdfPreview = given.nativePdfPreview , nativePdfPreview = given.nativePdfPreview
, itemSearchNoteLength = , itemSearchNoteLength =
choose given.itemSearchNoteLength fallback.itemSearchNoteLength choose given.itemSearchNoteLength fallback.itemSearchNoteLength
, itemDetailNotesPosition =
choose (Maybe.andThen posFromString given.itemDetailNotesPosition)
fallback.itemDetailNotesPosition
} }
@ -85,6 +122,7 @@ toStoredUiSettings settings =
|> Dict.toList |> Dict.toList
, nativePdfPreview = settings.nativePdfPreview , nativePdfPreview = settings.nativePdfPreview
, itemSearchNoteLength = Just settings.itemSearchNoteLength , itemSearchNoteLength = Just settings.itemSearchNoteLength
, itemDetailNotesPosition = Just (posToString settings.itemDetailNotesPosition)
} }

View File

@ -122,7 +122,7 @@ textarea.markdown-editor {
max-height: 300px; max-height: 300px;
width: 100%; width: 100%;
border: 0; border: 0;
min-height: 10em; min-height: 5em;
} }
.default-layout .job-log { .default-layout .job-log {