Allow the user to choose between 3 preview sizes

This commit is contained in:
Eike Kettner
2020-11-09 09:40:21 +01:00
parent 8c8788bc69
commit 5906c705c9
6 changed files with 154 additions and 1 deletions

View File

@ -0,0 +1,55 @@
module Data.BasicSize exposing
( BasicSize(..)
, all
, asString
, fromString
, label
)
type BasicSize
= Small
| Medium
| Large
all : List BasicSize
all =
[ Small
, Medium
, Large
]
fromString : String -> Maybe BasicSize
fromString str =
case String.toLower str of
"small" ->
Just Small
"medium" ->
Just Medium
"large" ->
Just Large
_ ->
Nothing
asString : BasicSize -> String
asString size =
label size |> String.toLower
label : BasicSize -> String
label size =
case size of
Small ->
"Small"
Medium ->
"Medium"
Large ->
"Large"

View File

@ -2,6 +2,7 @@ module Data.UiSettings exposing
( Pos(..)
, StoredUiSettings
, UiSettings
, cardPreviewSize
, catColor
, catColorString
, defaults
@ -17,9 +18,12 @@ module Data.UiSettings exposing
)
import Api.Model.Tag exposing (Tag)
import Data.BasicSize exposing (BasicSize)
import Data.Color exposing (Color)
import Data.Fields exposing (Field)
import Dict exposing (Dict)
import Html exposing (Attribute)
import Html.Attributes as HA
{-| Settings for the web ui. All fields should be optional, since it
@ -43,6 +47,7 @@ type alias StoredUiSettings =
, itemDetailShortcuts : Bool
, searchMenuVisible : Bool
, editMenuVisible : Bool
, cardPreviewSize : Maybe String
}
@ -66,6 +71,7 @@ type alias UiSettings =
, itemDetailShortcuts : Bool
, searchMenuVisible : Bool
, editMenuVisible : Bool
, cardPreviewSize : BasicSize
}
@ -111,6 +117,7 @@ defaults =
, itemDetailShortcuts = False
, searchMenuVisible = False
, editMenuVisible = False
, cardPreviewSize = Data.BasicSize.Medium
}
@ -146,6 +153,10 @@ merge given fallback =
, itemDetailShortcuts = given.itemDetailShortcuts
, searchMenuVisible = given.searchMenuVisible
, editMenuVisible = given.editMenuVisible
, cardPreviewSize =
given.cardPreviewSize
|> Maybe.andThen Data.BasicSize.fromString
|> Maybe.withDefault fallback.cardPreviewSize
}
@ -172,6 +183,10 @@ toStoredUiSettings settings =
, itemDetailShortcuts = settings.itemDetailShortcuts
, searchMenuVisible = settings.searchMenuVisible
, editMenuVisible = settings.editMenuVisible
, cardPreviewSize =
settings.cardPreviewSize
|> Data.BasicSize.asString
|> Just
}
@ -209,6 +224,19 @@ fieldHidden settings field =
fieldVisible settings field |> not
cardPreviewSize : UiSettings -> Attribute msg
cardPreviewSize settings =
case settings.cardPreviewSize of
Data.BasicSize.Small ->
HA.style "max-width" "80px"
Data.BasicSize.Medium ->
HA.style "max-width" "160px"
Data.BasicSize.Large ->
HA.style "max-width" "none"
--- Helpers