| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-11-26 18:57:59 +0100 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-11-26 18:57:59 +0100 | 
| commit | d5e25e0b95aef3ce8e707d3ed04dcd1b0447cedb (patch) | |
| tree | c638a8228c052388203940172a22cbb1e53a27c1 /src | |
| parent | d69308b98cf1ff43b9b094bd78a6d8684154af30 (diff) | |
...
Diffstat (limited to 'src')
| -rw-r--r-- | src/main-menu/src/ElmModule/Update.elm | 3 | ||||
| -rw-r--r-- | src/main-menu/src/ElmModule/View.elm | 5 | ||||
| -rw-r--r-- | src/main-menu/src/Struct/Event.elm | 1 | ||||
| -rw-r--r-- | src/main-menu/src/Struct/Player.elm | 10 | ||||
| -rw-r--r-- | src/main-menu/src/View/Invasions.elm | 106 | 
5 files changed, 118 insertions, 7 deletions
| 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)) +         ) +      ] +   ) | 


