summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-11-26 18:57:59 +0100
committernsensfel <SpamShield0@noot-noot.org>2018-11-26 18:57:59 +0100
commitd5e25e0b95aef3ce8e707d3ed04dcd1b0447cedb (patch)
treec638a8228c052388203940172a22cbb1e53a27c1 /src
parentd69308b98cf1ff43b9b094bd78a6d8684154af30 (diff)
...
Diffstat (limited to 'src')
-rw-r--r--src/main-menu/src/ElmModule/Update.elm3
-rw-r--r--src/main-menu/src/ElmModule/View.elm5
-rw-r--r--src/main-menu/src/Struct/Event.elm1
-rw-r--r--src/main-menu/src/Struct/Player.elm10
-rw-r--r--src/main-menu/src/View/Invasions.elm106
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))
+ )
+ ]
+ )