From d5e25e0b95aef3ce8e707d3ed04dcd1b0447cedb Mon Sep 17 00:00:00 2001 From: nsensfel Date: Mon, 26 Nov 2018 18:57:59 +0100 Subject: ... --- src/main-menu/src/ElmModule/Update.elm | 3 + src/main-menu/src/ElmModule/View.elm | 5 +- src/main-menu/src/Struct/Event.elm | 1 + src/main-menu/src/Struct/Player.elm | 10 ++-- src/main-menu/src/View/Invasions.elm | 106 +++++++++++++++++++++++++++++++++ 5 files changed, 118 insertions(+), 7 deletions(-) create mode 100644 src/main-menu/src/View/Invasions.elm (limited to 'src') diff --git a/src/main-menu/src/ElmModule/Update.elm b/src/main-menu/src/ElmModule/Update.elm index c4724d6..3f2db04 100644 --- a/src/main-menu/src/ElmModule/Update.elm +++ b/src/main-menu/src/ElmModule/Update.elm @@ -37,5 +37,8 @@ update event model = (Struct.Event.ServerReplied result) -> (Update.HandleServerReply.apply_to model result) + (Struct.Event.NewInvasion ix) -> + (model, Cmd.none) + (Struct.Event.TabSelected tab) -> (Update.SelectTab.apply_to new_model tab) diff --git a/src/main-menu/src/ElmModule/View.elm b/src/main-menu/src/ElmModule/View.elm index 30a9c77..a48238c 100644 --- a/src/main-menu/src/ElmModule/View.elm +++ b/src/main-menu/src/ElmModule/View.elm @@ -14,6 +14,7 @@ import Struct.Model import Struct.Player import View.BattleListing +import View.Invasions import View.Header import View.MapListing import View.Roster @@ -42,9 +43,7 @@ view model = "main-menu-campaigns" (Struct.Player.get_campaigns model.player) ), - (View.BattleListing.get_html - "Invasions" - "main-menu-invasions" + (View.Invasions.get_html (Struct.Player.get_invasions model.player) ), (View.BattleListing.get_html diff --git a/src/main-menu/src/Struct/Event.elm b/src/main-menu/src/Struct/Event.elm index 419ef51..21edd3a 100644 --- a/src/main-menu/src/Struct/Event.elm +++ b/src/main-menu/src/Struct/Event.elm @@ -15,6 +15,7 @@ type Type = None | Failed Struct.Error.Type | ServerReplied (Result Http.Error (List Struct.ServerReply.Type)) + | NewInvasion Int | TabSelected Struct.UI.Tab attempted : (Result.Result err val) -> Type diff --git a/src/main-menu/src/Struct/Player.elm b/src/main-menu/src/Struct/Player.elm index 73fbdb3..81b4ed8 100644 --- a/src/main-menu/src/Struct/Player.elm +++ b/src/main-menu/src/Struct/Player.elm @@ -14,6 +14,8 @@ module Struct.Player exposing ) -- Elm ------------------------------------------------------------------------- +import Array + import Json.Decode import Json.Decode.Pipeline @@ -30,7 +32,7 @@ type alias Type = name : String, maps : (List Struct.MapSummary.Type), campaigns : (List Struct.BattleSummary.Type), - invasions : (List Struct.BattleSummary.Type), + invasions : (Array.Array Struct.BattleSummary.Type), events : (List Struct.BattleSummary.Type), roster_id : String, inventory_id : String @@ -55,7 +57,7 @@ get_maps t = t.maps get_campaigns : Type -> (List Struct.BattleSummary.Type) get_campaigns t = t.campaigns -get_invasions : Type -> (List Struct.BattleSummary.Type) +get_invasions : Type -> (Array.Array Struct.BattleSummary.Type) get_invasions t = t.invasions get_events : Type -> (List Struct.BattleSummary.Type) @@ -83,7 +85,7 @@ decoder = ) |> (Json.Decode.Pipeline.required "invs" - (Json.Decode.list Struct.BattleSummary.decoder) + (Json.Decode.array Struct.BattleSummary.decoder) ) |> (Json.Decode.Pipeline.required "evts" @@ -100,7 +102,7 @@ none = name = "Unknown", maps = [], campaigns = [], - invasions = [], + invasions = (Array.empty), events = [], roster_id = "", inventory_id = "" diff --git a/src/main-menu/src/View/Invasions.elm b/src/main-menu/src/View/Invasions.elm new file mode 100644 index 0000000..b6bf17d --- /dev/null +++ b/src/main-menu/src/View/Invasions.elm @@ -0,0 +1,106 @@ +module View.Invasions exposing (get_html) + +-- Elm ------------------------------------------------------------------------- +import Array + +import Html +import Html.Attributes +import Html.Events + +-- Main Menu ------------------------------------------------------------------- +import Struct.BattleSummary +import Struct.Event + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_invasion_html : ( + Int -> + Struct.BattleSummary.Type -> + (Html.Html Struct.Event.Type) + ) +get_invasion_html ix invasion = + let + invasion_id = (Struct.BattleSummary.get_id invasion) + activation_class = + ( + if (Struct.BattleSummary.is_players_turn invasion) + then (Html.Attributes.class "main-menu-battle-summary-is-active") + else (Html.Attributes.class "main-menu-battle-summary-is-inactive") + ) + invasion_type = + ( + if (ix >= 3) + then (Html.Attributes.class "main-menu-invasion-defense") + else (Html.Attributes.class "main-menu-invasion-attack") + ) + in + if (invasion_id == "") + then + (Html.a + [ + (Html.Events.onClick (Struct.Event.NewInvasion ix)), + invasion_type + ] + [ + (Html.text "New Invasion") + ] + ) + else + (Html.a + [ + (Html.Attributes.href ("/battle/?id=" ++ invasion_id)), + invasion_type, + activation_class + ] + [ + (Html.div + [ + (Html.Attributes.class "main-menu-battle-summary-name") + ] + [ + (Html.text (Struct.BattleSummary.get_name invasion)) + ] + ), + (Html.div + [ + (Html.Attributes.class "main-menu-battle-summary-date") + ] + [ + (Html.text (Struct.BattleSummary.get_last_edit invasion)) + ] + ) + ] + ) + + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_html : ( + (Array.Array Struct.BattleSummary.Type) -> + (Html.Html Struct.Event.Type) + ) +get_html invasions = + (Html.div + [ + (Html.Attributes.class "main-menu-invasions"), + (Html.Attributes.class "main-menu-battle-listing") + ] + [ + (Html.div + [ + (Html.Attributes.class "main-menu-battle-listing-header") + ] + [ + (Html.text "Invasions") + ] + ), + (Html.div + [ + (Html.Attributes.class "main-menu-battle-listing-body") + ] + (Array.toList (Array.indexedMap (get_invasion_html) invasions)) + ) + ] + ) -- cgit v1.2.3-70-g09d2