summaryrefslogtreecommitdiff
path: root/elm3/ProdEdit/Names.elm
diff options
context:
space:
mode:
Diffstat (limited to 'elm3/ProdEdit/Names.elm')
-rw-r--r--elm3/ProdEdit/Names.elm81
1 files changed, 81 insertions, 0 deletions
diff --git a/elm3/ProdEdit/Names.elm b/elm3/ProdEdit/Names.elm
new file mode 100644
index 00000000..e28f4916
--- /dev/null
+++ b/elm3/ProdEdit/Names.elm
@@ -0,0 +1,81 @@
+module ProdEdit.Names exposing (..)
+
+import Html exposing (..)
+import Html.Attributes exposing (..)
+import Dict
+import Lib.Html exposing (..)
+import Lib.Gen exposing (ProdEdit)
+import Lib.Util exposing (..)
+
+
+type alias Model =
+ { name : String
+ , original : String
+ , alias : String
+ , aliasList : List String
+ , aliasDuplicates : Bool
+ }
+
+
+init : ProdEdit -> Model
+init d =
+ { name = d.name
+ , original = d.original
+ , alias = d.alias
+ , aliasList = splitLn d.alias
+ , aliasDuplicates = False
+ }
+
+
+new : Model
+new =
+ { name = ""
+ , original = ""
+ , alias = ""
+ , aliasList = []
+ , aliasDuplicates = False
+ }
+
+
+type Msg
+ = Name String
+ | Original String
+ | Alias String
+
+
+update : Msg -> Model -> Model
+update msg model =
+ case msg of
+ Name s -> { model | name = s }
+ Original s -> { model | original = s }
+ Alias s ->
+ { model
+ | alias = s
+ , aliasList = splitLn s
+ , aliasDuplicates = hasDuplicates (model.name :: model.original :: splitLn s)
+ }
+
+
+view : Model -> List (Html Msg)
+view model =
+ [ cardRow "Name" Nothing <| formGroups
+ [ [ label [for "name"] [text "Name (romaji)"]
+ , inputText "name" model.name Name [required True, maxlength 200]
+ ]
+ , [ label [for "original"] [text "Original"]
+ , inputText "original" model.original Original [maxlength 200]
+ , div [class "form-group__help"] [text "The original name of this producer, leave blank if it already is in the Latin alphabet."]
+ ]
+ ]
+ , cardRow "Aliases" Nothing <| formGroup
+ [ inputTextArea "aliases" model.alias Alias
+ [ rows 4, maxlength 500
+ , classList [("is-invalid", model.aliasDuplicates)]
+ ]
+ , if model.aliasDuplicates
+ then div [class "invalid-feedback"]
+ [ text "There are duplicate aliases." ]
+ else text ""
+ , div [class "form-group__help"] [ text "(Un)official aliases, separated by a newline." ]
+ ]
+ ]