Allow to change use enum for org/equipment

This commit is contained in:
Eike Kettner
2021-03-10 23:54:04 +01:00
parent 0229a867af
commit 274e433d9d
10 changed files with 252 additions and 7 deletions

View File

@ -10,6 +10,8 @@ module Comp.EquipmentForm exposing
import Api.Model.Equipment exposing (Equipment)
import Comp.Basic as B
import Comp.FixedDropdown
import Data.EquipmentUse exposing (EquipmentUse)
import Data.Flags exposing (Flags)
import Html exposing (..)
import Html.Attributes exposing (..)
@ -22,6 +24,8 @@ type alias Model =
{ equipment : Equipment
, name : String
, notes : Maybe String
, use : EquipmentUse
, useModel : Comp.FixedDropdown.Model EquipmentUse
}
@ -30,6 +34,11 @@ emptyModel =
{ equipment = Api.Model.Equipment.empty
, name = ""
, notes = Nothing
, use = Data.EquipmentUse.Concerning
, useModel =
Comp.FixedDropdown.initMap
Data.EquipmentUse.label
Data.EquipmentUse.all
}
@ -44,6 +53,7 @@ getEquipment model =
, name = model.name
, created = model.equipment.created
, notes = model.notes
, use = Data.EquipmentUse.asString model.use
}
@ -51,6 +61,7 @@ type Msg
= SetName String
| SetEquipment Equipment
| SetNotes String
| UseDropdownMsg (Comp.FixedDropdown.Msg EquipmentUse)
update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
@ -61,6 +72,9 @@ update _ msg model =
| equipment = t
, name = t.name
, notes = t.notes
, use =
Data.EquipmentUse.fromString t.use
|> Maybe.withDefault Data.EquipmentUse.Concerning
}
, Cmd.none
)
@ -71,6 +85,16 @@ update _ msg model =
SetNotes str ->
( { model | notes = Util.Maybe.fromString str }, Cmd.none )
UseDropdownMsg lm ->
let
( nm, mu ) =
Comp.FixedDropdown.update lm model.useModel
newUse =
Maybe.withDefault model.use mu
in
( { model | useModel = nm, use = newUse }, Cmd.none )
--- View2
@ -102,6 +126,22 @@ view2 model =
]
[]
]
, div [ class "mb-4" ]
[ label
[ class S.inputLabel
]
[ text "Use" ]
, Html.map UseDropdownMsg
(Comp.FixedDropdown.view2 (makeUseItem model) model.useModel)
, span [ class "opacity-50 text-sm" ]
[ case model.use of
Data.EquipmentUse.Concerning ->
text "Use as concerning equipment"
Data.EquipmentUse.Disabled ->
text "Do not use for suggestions."
]
]
, div [ class "mb-4" ]
[ h3 [ class S.header3 ]
[ text "Notes"
@ -116,3 +156,9 @@ view2 model =
]
]
]
makeUseItem : Model -> Maybe (Comp.FixedDropdown.Item EquipmentUse)
makeUseItem model =
Just <|
Comp.FixedDropdown.Item model.use (Data.EquipmentUse.label model.use)