summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2018-07-09 18:32:31 +0200 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2018-07-09 18:32:31 +0200 |
commit | f716016b5a6fd774fa49640f3dec9b67280853b0 (patch) | |
tree | cd2ea48fe31a352b6bd04501aacd90c91b321982 | |
parent | cd3cfd38bf25c6c307639e5c182fd8312db8ba33 (diff) |
Starting to implement some JS stuff...
-rw-r--r-- | src/battlemap/src/ElmModule/Init.elm | 5 | ||||
-rw-r--r-- | src/battlemap/src/Main.elm | 5 | ||||
-rw-r--r-- | src/battlemap/src/Struct/Flags.elm | 26 | ||||
-rw-r--r-- | src/battlemap/www/index.html | 19 | ||||
-rw-r--r-- | src/global/www/script/session.js | 88 | ||||
-rw-r--r-- | src/global/www/script/urlparams.js | 53 |
6 files changed, 190 insertions, 6 deletions
diff --git a/src/battlemap/src/ElmModule/Init.elm b/src/battlemap/src/ElmModule/Init.elm index 88e8441..3e6cc52 100644 --- a/src/battlemap/src/ElmModule/Init.elm +++ b/src/battlemap/src/ElmModule/Init.elm @@ -6,6 +6,7 @@ module ElmModule.Init exposing (init) import Comm.LoadBattlemap import Struct.Event +import Struct.Flags import Struct.Model -------------------------------------------------------------------------------- @@ -15,8 +16,8 @@ import Struct.Model -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- -------------------------------------------------------------------------------- -init : (Struct.Model.Type, (Cmd Struct.Event.Type)) -init = +init : Struct.Flags.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) +init flags = let model = (Struct.Model.new) in ( model, diff --git a/src/battlemap/src/Main.elm b/src/battlemap/src/Main.elm index 96b267f..0d22cd5 100644 --- a/src/battlemap/src/Main.elm +++ b/src/battlemap/src/Main.elm @@ -4,15 +4,16 @@ import Html -- Battlemap ------------------------------------------------------------------- import Struct.Model import Struct.Event +import Struct.Flags import ElmModule.Init import ElmModule.Subscriptions import ElmModule.View import ElmModule.Update -main : (Program Never Struct.Model.Type Struct.Event.Type) +main : (Program Struct.Flags.Type Struct.Model.Type Struct.Event.Type) main = - (Html.program + (Html.programWithFlags { init = ElmModule.Init.init, view = ElmModule.View.view, diff --git a/src/battlemap/src/Struct/Flags.elm b/src/battlemap/src/Struct/Flags.elm new file mode 100644 index 0000000..d25f432 --- /dev/null +++ b/src/battlemap/src/Struct/Flags.elm @@ -0,0 +1,26 @@ +module Struct.Flags exposing + ( + Type + ) + +-- Elm ------------------------------------------------------------------------- + +-- Battlemap ------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type alias Type = + { + user_id : String, + token : String, + url_params : (List (List String)) + } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- diff --git a/src/battlemap/www/index.html b/src/battlemap/www/index.html index c90a5d4..fcba44a 100644 --- a/src/battlemap/www/index.html +++ b/src/battlemap/www/index.html @@ -3,13 +3,28 @@ <head> <link rel="stylesheet" type="text/css" href="../global/style.css"> <link rel="stylesheet" type="text/css" href="../battlemap/style.css"> - <link rel="stylesheet" type="text/css" href="../asset/tiles.css"> <link rel="stylesheet" type="text/css" href="../asset/characters.css"> <link rel="stylesheet" type="text/css" href="../asset/armors.css"> <link rel="icon" type="image/x-icon" href="/favicon.ico"> </head> <body> <script src="script/main.js"></script> - <script>Elm.Main.fullscreen();</script> + <script src="../global/script/session.js"></script> + <script src="../global/script/urlparams.js"></script> + <script> + tacticians_online.session.load(); + + tacticians_online.app = + Elm.Main.fullscreen + ( + { + user_id: tacticians_online.session.get_user_id(), + token: tacticians_online.session.get_token(), + url_params: tacticians_online.urlparams.get_parameters() + } + ); + + tacticians_online.session.attach_to(tacticians_online.app); + </script> </body> </html> diff --git a/src/global/www/script/session.js b/src/global/www/script/session.js new file mode 100644 index 0000000..c712999 --- /dev/null +++ b/src/global/www/script/session.js @@ -0,0 +1,88 @@ +/******************************************************************************/ +/** Session Management ********************************************************/ +/******************************************************************************/ + +/*** + * This module uses local storage to keep users logged in across pages, and + * through further visits. + **/ + +var tacticians_online = tacticians_online || new Object(); + +tacticians_online.session = new Object(); + +tacticians_online.session.private = new Object(); +tacticians_online.session.private.user_id = ""; +tacticians_online.session.private.token = ""; + +tacticians_online.session.store = +function () +{ + localStorage.setItem("user_id", tacticians_online.session.private.user_id); + localStorage.setItem("token", tacticians_online.session.private.token); +} + +tacticians_online.session.reset = +function () +{ + localStorage.removeItem("user_id"); + localStorage.removeItem("token"); +} + +tacticians_online.session.load = +function () +{ + tacticians_online.session.private.user_id = localStorage.getItem("user_id"); + tacticians_online.session.private.token = localStorage.getItem("token"); + + if (tacticians_online.session.private.user_id == null) + { + tacticians_online.session.private.user_id = ""; + } + + if (tacticians_online.session.private.token == null) + { + tacticians_online.session.private.token = ""; + } +} + +tacticians_online.session.get_user_id = +function () +{ + return tacticians_online.session.private.user_id; +} + +tacticians_online.session.get_token = +function () +{ + return tacticians_online.session.private.token; +} + +tacticians_online.session.set_user_id = +function (user_id) +{ + tacticians_online.session.private.user_id = user_id; +} + +tacticians_online.session.set_token = +function (token) +{ + tacticians_online.session.private.token = token; +} + +tacticians_online.session.store_new_session = +function (user_id, token) +{ + tacticians_online.session.set_user_id(user_id); + tacticians_online.session.set_token(token); + tacticians_online.session.store(); +} + +tacticians_online.session.attach_to = +function (app) +{ + app.ports.store_new_session.subscribe = + tacticians_online.session.store_new_session; + + app.ports.reset_session.subscribe = tacticians_online.session.reset; +} diff --git a/src/global/www/script/urlparams.js b/src/global/www/script/urlparams.js new file mode 100644 index 0000000..60e6af4 --- /dev/null +++ b/src/global/www/script/urlparams.js @@ -0,0 +1,53 @@ +/******************************************************************************/ +/** URL Parameters ************************************************************/ +/******************************************************************************/ + +/*** + * This module uses parses the current page's URL and converts it to a format + * that can be used by Elm. + **/ + +var tacticians_online = tacticians_online || new Object(); + +tacticians_online.urlparams = new Object(); + +tacticians_online.urlparams.private = new Object(); + +tacticians_online.urlparams.private.get_clean_parameters_string = +function () +{ + var all_parameters_string = window.location.search; + + if (all_parameters_string == "") + { + return ""; + } + + if (all_parameters_string[0] == "?") + { + return all_parameters_string.slice(1); + } + + return all_parameters_string; +} + +tacticians_online.urlparams.get_parameters = +function () +{ + var all_parameters_string = + tacticians_online.urlparams.private.get_clean_parameters_string(); + + var all_parameters_array = all_parameters_string.split('&'); + + var result = []; + + all_parameters_array.forEach + ( + function (param) + { + result.push(param.split('=')); + } + ); + + return result; +} |