diff options
Diffstat (limited to 'elm3/RelEdit/Main.elm')
-rw-r--r-- | elm3/RelEdit/Main.elm | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/elm3/RelEdit/Main.elm b/elm3/RelEdit/Main.elm deleted file mode 100644 index 16e317f0..00000000 --- a/elm3/RelEdit/Main.elm +++ /dev/null @@ -1,137 +0,0 @@ -module RelEdit.Main exposing (..) - -import Html 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 RelEdit.General as General -import RelEdit.Producers as Producers -import RelEdit.Vn as Vn - - -main : Program Gen.RelEdit 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 - , producers : Producers.Model - , vn : Vn.Model - , id : Maybe Int - } - - -init : Gen.RelEdit -> Model -init d = - { state = Api.Normal - , editsum = { authmod = d.authmod, editsum = d.editsum, locked = d.locked, hidden = d.hidden } - , general = General.init d - , producers = Producers.init d.producers - , vn = Vn.init d.vn - , id = d.id - } - - -new : Int -> String -> String -> Model -new vid title orig = - { state = Api.Normal - , editsum = Editsum.new - , general = General.new title orig - , producers = Producers.init [] - , vn = Vn.init [{vid = vid, title = title}] - , id = Nothing - } - - -encode : Model -> Gen.RelEditSend -encode model = - { editsum = model.editsum.editsum - , hidden = model.editsum.hidden - , locked = model.editsum.locked - , catalog = model.general.catalog - , doujin = model.general.doujin - , freeware = model.general.freeware - , gtin = Maybe.withDefault 0 model.general.gtinVal - , lang = model.general.lang - , minage = model.general.minage - , notes = model.general.notes - , original = model.general.original - , patch = model.general.patch - , rtype = model.general.rtype - , released = model.general.released - , title = model.general.title - , uncensored = model.general.uncensored - , website = model.general.website - , resolution = model.general.resolution - , voiced = model.general.voiced - , ani_story = model.general.aniStory - , ani_ero = model.general.aniEro - , platforms = model.general.platforms - , media = model.general.media - , producers = List.map (\e -> { pid = e.pid, developer = e.developer, publisher = e.publisher }) model.producers.producers - , vn = List.map (\e -> { vid = e.vid }) model.vn.vn - } - - -type Msg - = Editsum Editsum.Msg - | General General.Msg - | Producers Producers.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 -> ({ model | general = General.update m model.general }, Cmd.none) - Producers m -> let (nm, c) = Producers.update m model.producers in ({ model | producers = nm }, Cmd.map Producers 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 -> "/r" ++ String.fromInt id ++ "/edit" - Nothing -> "/r/add" - body = Gen.releditSendEncode (encode model) - in ({ model | state = Api.Loading }, Api.post path body Submitted) - - Submitted (Gen.Changed id rev) -> (model, load <| "/r" ++ String.fromInt id ++ "." ++ String.fromInt rev) - Submitted r -> ({ model | state = Api.Error r }, Cmd.none) - - -isValid : Model -> Bool -isValid model = not - ( List.isEmpty model.general.lang - || model.general.gtinVal == Nothing - || model.producers.duplicates - || model.vn.duplicates - || List.isEmpty model.vn.vn - ) - - -view : Model -> Html Msg -view model = - form_ Submit (model.state == Api.Loading) - [ Html.map General <| General.general model.general - , Html.map General <| General.format model.general - , card "relations" "Relations" [] - [ Html.map Producers <| Producers.view model.producers - , Html.map Vn <| Vn.view model.vn - ] - , Html.map Editsum <| Editsum.view model.editsum - , submitButton "Submit" model.state (isValid model) False - ] |