diff options
Diffstat (limited to 'elm3/CharEdit/Main.elm')
-rw-r--r-- | elm3/CharEdit/Main.elm | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/elm3/CharEdit/Main.elm b/elm3/CharEdit/Main.elm deleted file mode 100644 index dbb88788..00000000 --- a/elm3/CharEdit/Main.elm +++ /dev/null @@ -1,130 +0,0 @@ -module CharEdit.Main exposing (Model,Msg,main,new,update,view) - -import Html exposing (..) -import Html.Lazy exposing (..) -import Browser -import Browser.Navigation exposing (load) -import Lib.Html exposing (..) -import Lib.Gen as Gen -import Lib.Api as Api -import Lib.Editsum as Editsum -import CharEdit.General as General -import CharEdit.Traits as Traits -import CharEdit.VN as VN - - -main : Program Gen.CharEdit Model Msg -main = Browser.element - { init = \e -> (init e, Cmd.none) - , view = view - , update = update - , subscriptions = always Sub.none - } - - -type alias Model = - { state : Api.State - , editsum : Editsum.Model - , general : General.Model - , traits : Traits.Model - , vn : VN.Model - , id : Maybe Int - } - - -init : Gen.CharEdit -> Model -init d = - { state = Api.Normal - , editsum = { authmod = d.authmod, editsum = d.editsum, locked = d.locked, hidden = d.hidden } - , general = General.init d - , traits = Traits.init d.traits - , vn = VN.init d.vns d.vnrels - , id = d.id - } - - -new : List Gen.CharEditVns -> List Gen.CharEditVnrels -> Model -new vns vnrels = - { state = Api.Normal - , editsum = Editsum.new - , general = General.new - , traits = Traits.init [] - , vn = VN.init vns vnrels - , id = Nothing - } - - -encode : Model -> Gen.CharEditSend -encode model = - { editsum = model.editsum.editsum - , hidden = model.editsum.hidden - , locked = model.editsum.locked - , alias = model.general.alias - , b_day = model.general.bDay - , b_month = model.general.bMonth - , bloodt = model.general.bloodt - , desc = model.general.desc - , gender = model.general.gender - , height = model.general.height - , image = model.general.image - , name = model.general.name - , original = model.general.original - , s_bust = model.general.sBust - , s_hip = model.general.sHip - , s_waist = model.general.sWaist - , weight = model.general.weight - , main = if not model.general.mainInstance || model.general.mainId == 0 then Nothing else Just model.general.mainId - , main_spoil = model.general.mainSpoil - , traits = List.map (\e -> { tid = e.tid, spoil = e.spoil }) model.traits.traits - , vns = VN.encode model.vn - } - - -type Msg - = Editsum Editsum.Msg - | General General.Msg - | Traits Traits.Msg - | VN VN.Msg - | Submit - | Submitted Api.Response - - -update : Msg -> Model -> (Model, Cmd Msg) -update msg model = - case msg of - Editsum m -> ({ model | editsum = Editsum.update m model.editsum }, Cmd.none) - General m -> let (nm, c) = General.update m model.general in ({ model | general = nm }, Cmd.map General c) - Traits m -> let (nm, c) = Traits.update m model.traits in ({ model | traits = nm }, Cmd.map Traits c) - VN m -> let (nm, c) = VN.update m model.vn in ({ model | vn = nm }, Cmd.map VN c) - - Submit -> - let - path = - case model.id of - Just id -> "/c" ++ String.fromInt id ++ "/edit" - Nothing -> "/c/add" - body = Gen.chareditSendEncode (encode model) - in ({ model | state = Api.Loading }, Api.post path body Submitted) - - Submitted (Gen.Changed id rev) -> (model, load <| "/c" ++ String.fromInt id ++ "." ++ String.fromInt rev) - Submitted r -> ({ model | state = Api.Error r }, Cmd.none) - - -isValid : Model -> Bool -isValid model = not - ( model.general.aliasDuplicates - || (model.general.mainInstance && model.general.mainId == 0) - || model.traits.duplicates - || model.vn.duplicates - ) - - -view : Model -> Html Msg -view model = - form_ Submit (model.state == Api.Loading) - [ Html.map General <| lazy General.view model.general - , Html.map Traits <| lazy Traits.view model.traits - , Html.map VN <| lazy VN.view model.vn - , Html.map Editsum <| lazy Editsum.view model.editsum - , submitButton "Submit" model.state (isValid model) False - ] |