From ed00cf84c8ac38559d454542afddfd274e7393ff Mon Sep 17 00:00:00 2001 From: storm1er Date: Sat, 11 Nov 2017 11:58:25 +0100 Subject: [PATCH 01/18] Rename scss's file's name. --- src/css/{color.scss => _color.scss} | 0 src/css/{normalize.scss => _normalize.scss} | 0 src/css/index.scss | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/css/{color.scss => _color.scss} (100%) rename src/css/{normalize.scss => _normalize.scss} (100%) diff --git a/src/css/color.scss b/src/css/_color.scss similarity index 100% rename from src/css/color.scss rename to src/css/_color.scss diff --git a/src/css/normalize.scss b/src/css/_normalize.scss similarity index 100% rename from src/css/normalize.scss rename to src/css/_normalize.scss diff --git a/src/css/index.scss b/src/css/index.scss index bf6c923..2b6ff80 100644 --- a/src/css/index.scss +++ b/src/css/index.scss @@ -1,5 +1,5 @@ -@import "normalize"; -@import "color"; +@import "_normalize"; +@import "_color"; html, body, From f8c0eed2d259bf0160b6482890ef51ca35bcda74 Mon Sep 17 00:00:00 2001 From: storm1er Date: Sat, 11 Nov 2017 11:58:51 +0100 Subject: [PATCH 02/18] Adding some comment to game.js loader. --- src/js/game.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/js/game.js b/src/js/game.js index 94b6475..a0e24c2 100644 --- a/src/js/game.js +++ b/src/js/game.js @@ -2,7 +2,12 @@ var main = document.querySelector('main'); main.innerHTML += 'Loading /js/game.js ...'; - + /** + * This simply add a + + diff --git a/src/js/core/gameManager.js b/src/js/core/gameManager.js index 7b8c801..703ab82 100644 --- a/src/js/core/gameManager.js +++ b/src/js/core/gameManager.js @@ -303,9 +303,9 @@ class GameManager extends Emitter { fatalError(str=null) { this.destroy(); var main = document.querySelector('main'); - main.innerHTML = 'Fatal error
'; + main.innerHTML = 'Fatal error
'; if (typeof str === "string") { - main.innerHTML += ''+str+''; + main.innerHTML += ''+str+''; } } diff --git a/src/js/game.js b/src/js/game.js index a0e24c2..f60433f 100644 --- a/src/js/game.js +++ b/src/js/game.js @@ -13,7 +13,7 @@ var s = document.createElement('script'); s.setAttribute('src', url); s.onload = function(){ - main.innerHTML += ' done
'; + main.innerHTML += ' done
'; if (typeof cb === 'function') { setTimeout(function(){ cb(); @@ -41,7 +41,7 @@ }, timeToWait); }; - d(' done'); + d(' done'); d(); d('
 ___________________________________________/\\\\\\___/\\\\\\______________/\\\\\\_____________________________/\\\\\\\\\\\\____________/\\\\\\__
'); d('
  __________________________________________\\/\\\\\\__\\/\\\\\\_____________\\/\\\\\\____________________________\\////\\\\\\___________\\/\\\\\\__
'); diff --git a/src/js/material-components-web.min.js b/src/js/material-components-web.min.js new file mode 120000 index 0000000..6d87439 --- /dev/null +++ b/src/js/material-components-web.min.js @@ -0,0 +1 @@ +../../node_modules/material-components-web/dist/material-components-web.min.js \ No newline at end of file From d32818fd3765117fff187058a2d7e892aab93851 Mon Sep 17 00:00:00 2001 From: storm1er Date: Sun, 12 Nov 2017 15:48:01 +0100 Subject: [PATCH 10/18] Fix missing clean when removing homepage. --- src/js/core/HomePage.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/core/HomePage.js b/src/js/core/HomePage.js index 1540ffe..3178c46 100644 --- a/src/js/core/HomePage.js +++ b/src/js/core/HomePage.js @@ -66,6 +66,7 @@ class HomePage extends GameElement { } // Remove menu else if (this.isMenuLoaded() && !isMenuActive) { + this.menuUuid = false; this.sm.remove(page); } } From ef424a7ce01500d78f97630761cf552096c147c1 Mon Sep 17 00:00:00 2001 From: storm1er Date: Sun, 12 Nov 2017 15:48:44 +0100 Subject: [PATCH 11/18] Add check for 404 when downloading game element. --- src/js/core/gameManager.js | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/js/core/gameManager.js b/src/js/core/gameManager.js index 703ab82..da59fc8 100644 --- a/src/js/core/gameManager.js +++ b/src/js/core/gameManager.js @@ -176,14 +176,26 @@ class GameManager extends Emitter { downloadGameElement(gameElementDef, resolve, reject) { var _this = this; function addScript(url, cb) { - var s = document.createElement('script'); - if (_this.testEnv) { - url = url.substr(1); - url = '../../'+url; - } - s.setAttribute('src', url); - s.onload = cb; - document.body.appendChild(s); + + // When using From 474918736cb61643717c10b51b43450548c9e179 Mon Sep 17 00:00:00 2001 From: storm1er Date: Sun, 12 Nov 2017 16:05:01 +0100 Subject: [PATCH 14/18] Fix js doc. --- src/js/core/gameManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/core/gameManager.js b/src/js/core/gameManager.js index da59fc8..78fc22a 100644 --- a/src/js/core/gameManager.js +++ b/src/js/core/gameManager.js @@ -98,7 +98,7 @@ class GameManager extends Emitter { /** * Check if a GameElement has been 'ask' but is not loaded yet - * @method isGameElementExist + * @method isGameElementLoading * @param {string} gameElementName gameElement's name * @return {Boolean} true if exist */ From fe6354b1405f7e34322f37ba1d6d89633f97b89d Mon Sep 17 00:00:00 2001 From: storm1er Date: Sun, 12 Nov 2017 17:18:50 +0100 Subject: [PATCH 15/18] Forgot to delete TODO about 404 error. --- src/js/core/gameManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/core/gameManager.js b/src/js/core/gameManager.js index 78fc22a..1932291 100644 --- a/src/js/core/gameManager.js +++ b/src/js/core/gameManager.js @@ -167,7 +167,7 @@ class GameManager extends Emitter { /** * Download a game element and initialize it - * TODO handle download error + * * @method downloadGameElement * @param {object} gameElementDef provided by GameManager.getGameElementDefinition * @param {function} resolve Promise's resolve function From 2dea3b52cc678c974551e592f5508e99ce49e121 Mon Sep 17 00:00:00 2001 From: storm1er Date: Sun, 12 Nov 2017 17:19:07 +0100 Subject: [PATCH 16/18] Fix english typo. --- src/js/core/gameManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/core/gameManager.js b/src/js/core/gameManager.js index 1932291..5ea4907 100644 --- a/src/js/core/gameManager.js +++ b/src/js/core/gameManager.js @@ -142,7 +142,7 @@ class GameManager extends Emitter { loadGameElement(gameElementName) { var _this = this; - // prépare auto-deletion of promise + // prepare auto-deletion of promise function deletePromise(){ // waiting free time for deleting promise setTimeout(function(){ From fe9f32b21d0393dbf0b208ae0a61494d5a47f124 Mon Sep 17 00:00:00 2001 From: storm1er Date: Sun, 12 Nov 2017 17:19:37 +0100 Subject: [PATCH 17/18] GameElement are now aware about test env. --- src/js/core/gameElement.js | 3 ++- src/js/core/gameManager.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/js/core/gameElement.js b/src/js/core/gameElement.js index 25f9f1b..f4e21d2 100644 --- a/src/js/core/gameElement.js +++ b/src/js/core/gameElement.js @@ -4,8 +4,9 @@ class GameElement { /** * Defining imutable method setGameManager() */ - constructor(verbose = false) { + constructor(verbose = false, testEnv = false) { this.log = !!verbose; + this.testEnv = !!testEnv; Object.defineProperty(this, 'setGameManager', { configurable:false, writable:false, diff --git a/src/js/core/gameManager.js b/src/js/core/gameManager.js index 5ea4907..f9ce84f 100644 --- a/src/js/core/gameManager.js +++ b/src/js/core/gameManager.js @@ -7,7 +7,7 @@ class GameManager extends Emitter { constructor(verbose = false, _testEnv = false) { super(); - this.testEnv = _testEnv; + this.testEnv = !!_testEnv; this.gameElements = {}; // TODO list of gameElement currently loading {name:promise} this.loadingGameElement = {}; @@ -199,7 +199,7 @@ class GameManager extends Emitter { } addScript(gameElementDef.url, function(){ - _this.gameElements[gameElementDef.name] = (Function('return new '+gameElementDef.className+'('+_this.log+')'))(); + _this.gameElements[gameElementDef.name] = (Function('return new '+gameElementDef.className+'('+_this.log+', '+_this.testEnv+')'))(); _this.gameElements[gameElementDef.name].setGameManager( _this.getLittleManager(gameElementDef.name) ); From f4410f06fc9547093ef13c9cb7d18b7a13b9a1c3 Mon Sep 17 00:00:00 2001 From: storm1er Date: Sun, 12 Nov 2017 17:20:52 +0100 Subject: [PATCH 18/18] WIP weird test ... see HomePage.test.js L35. --- src/js/core/HomePage.test.js | 60 ++++++++++++++++++++++++++++++++++++ src/js/core/ScreenManager.js | 5 +++ 2 files changed, 65 insertions(+) create mode 100644 src/js/core/HomePage.test.js diff --git a/src/js/core/HomePage.test.js b/src/js/core/HomePage.test.js new file mode 100644 index 0000000..30a9931 --- /dev/null +++ b/src/js/core/HomePage.test.js @@ -0,0 +1,60 @@ +var jsdom = require("jsdom"); +var { JSDOM } = jsdom; +var fs = require('fs'); +var virtualConsole = new jsdom.VirtualConsole(); +var helper = require("../helper.mocha.js"); + +describe('HomePage & ScreenManager', function(){ + + it("should be able to load element & dependency without error", function(done){ + helper.testHtml("core/gameManager.test.html", function(dom){ + + var onEvent = function(){ + dom.window.gm.off('Core::loadGameElement[Core::ScreenManager]', onEvent); + done(); + }; + + dom.window.gm.on('Core::loadGameElement[Core::ScreenManager]', onEvent); + dom.window.gm.element('Core::HomePage'); + + }, done); + }); + + it("should be able to display HomePage", function(done){ + helper.testHtml("core/gameManager.test.html", function(dom){ + + var onEvent = function(){ + dom.window.gm.off('Core::loadGameElement[Core::ScreenManager]', onEvent); + if (!dom.window.gm.gameElements['Core::HomePage']) { + done(new Error('gameElement "Core::HomePage" doesn\'t exist ?')); + } + dom.window.gm.gameElements['Core::HomePage'].activeMenu(); + setTimeout(function(){ + var doc = dom.window.document; + + // The test work only with this console.log ?! + console.log(doc.querySelector('body').innerHTML); + + var main = doc.querySelector("main"); + if (main == null) { + return done(new Error('
is missing')); + } + var div = main.querySelector('div'); + if (div == null) { + return done(new Error('
is missing')); + } + if (div.querySelector('h1') == null) { + return done(new Error('

is missing')); + } + done(); + }, 100); + }; + + dom.window.gm.on('Core::loadGameElement[Core::ScreenManager]', onEvent); + dom.window.gm.element('Core::HomePage'); + + }, done); + }); + + +}); diff --git a/src/js/core/ScreenManager.js b/src/js/core/ScreenManager.js index 6a10166..9322a9b 100644 --- a/src/js/core/ScreenManager.js +++ b/src/js/core/ScreenManager.js @@ -33,6 +33,11 @@ class ScreenManager extends GameElement { var _this = this; var $ = this.JQuery; var url = '/html/'+page+'.html'; + + if (this.testEnv) { + url = '../../'+url; + } + var uuid = this.master.guid(); $.get(url).done(function(data){ var el = $('
'+data+'
');