From b5cf4d427fa146ee2ffc965446be01315dc7f450 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Mon, 30 May 2016 16:19:20 +0100 Subject: [PATCH] Reimplement dom.js export as a static class Doing so makes the independence of the member functions obvious. Also uppercase the exported class name, as it's a class (so should start with an uppercase letter) and a three-letter acronym (so can be all uppercase). --- src/gui/html/js/dom.js | 36 +++++++++---------- src/gui/html/js/events.js | 12 +++---- src/gui/html/js/game.js | 2 +- src/gui/html/js/initialise.js | 14 ++++---- src/gui/html/js/state.js | 54 ++++++++++++++--------------- src/tests/gui/html/js/test_state.js | 10 +++--- 6 files changed, 64 insertions(+), 64 deletions(-) diff --git a/src/gui/html/js/dom.js b/src/gui/html/js/dom.js index b468c3df..b08e048c 100644 --- a/src/gui/html/js/dom.js +++ b/src/gui/html/js/dom.js @@ -6,31 +6,31 @@ } else { // Browser globals root.loot = root.loot || {}; - root.loot.dom = factory(); + root.loot.DOM = factory(); } }(this, () => { - return { - getElementInTableRowTemplate(rowTemplateId, elementClass) { + return class { + static getElementInTableRowTemplate(rowTemplateId, elementClass) { const select = document.querySelector('link[rel="import"][href$="editable-table.html"]'); if (select) { return select.import.querySelector(`#${rowTemplateId}`).content.querySelector(`.${elementClass}`); } return document.querySelector(`#${rowTemplateId}`).content.querySelector(`.${elementClass}`); - }, + } - show(elementId, showElement = true) { + static show(elementId, showElement = true) { document.getElementById(elementId).hidden = !showElement; - }, + } - enable(elementId, enableElement = true) { + static enable(elementId, enableElement = true) { if (enableElement) { document.getElementById(elementId).removeAttribute('disabled'); } else { document.getElementById(elementId).setAttribute('disabled', ''); } - }, + } - updateSelectedGame(gameFolder) { + static updateSelectedGame(gameFolder) { document.getElementById('gameMenu').value = gameFolder; /* Also disable deletion of the game's row in the settings dialog. */ @@ -43,9 +43,9 @@ folderElements[0].value === gameFolder); } } - }, + } - updateEnabledGames(installedGames) { + static updateEnabledGames(installedGames) { const gameMenuItems = document.getElementById('gameMenu').children; for (let i = 0; i < gameMenuItems.length; ++i) { if (installedGames.indexOf(gameMenuItems[i].getAttribute('value')) === -1) { @@ -54,17 +54,17 @@ gameMenuItems[i].removeAttribute('disabled'); } } - }, + } - createGameItem(game) { + static createGameItem(game) { const menuItem = document.createElement('paper-item'); menuItem.setAttribute('value', game.folder); menuItem.textContent = game.name; return menuItem; - }, + } - setGameMenuItems(games) { + static setGameMenuItems(games) { const gameMenu = document.getElementById('gameMenu'); /* First make sure game listing elements don't have any existing entries. */ @@ -75,9 +75,9 @@ games.forEach((game) => { gameMenu.appendChild(this.createGameItem(game)); }); - }, + } - updateSettingsDialog(settings) { + static updateSettingsDialog(settings) { const gameSelect = document.getElementById('defaultGameSelect'); const gameTable = document.getElementById('gameTable'); @@ -99,6 +99,6 @@ document.getElementById('languageSelect').value = settings.language; document.getElementById('enableDebugLogging').checked = settings.enableDebugLogging; document.getElementById('updateMasterlist').checked = settings.updateMasterlist; - }, + } }; })); diff --git a/src/gui/html/js/events.js b/src/gui/html/js/events.js index 24cf6662..0f184b03 100644 --- a/src/gui/html/js/events.js +++ b/src/gui/html/js/events.js @@ -327,7 +327,7 @@ function onCloseSettingsDialog(evt) { } if (!evt.detail.confirmed) { /* Re-apply the existing settings to the settings dialog elements. */ - loot.dom.updateSettingsDialog(loot.settings); + loot.DOM.updateSettingsDialog(loot.settings); return; } @@ -345,13 +345,13 @@ function onCloseSettingsDialog(evt) { /* Send the settings back to the C++ side. */ loot.query('closeSettings', settings).then(JSON.parse).then((installedGames) => { loot.installedGames = installedGames; - loot.dom.updateEnabledGames(installedGames); + loot.DOM.updateEnabledGames(installedGames); }).catch(handlePromiseError).then(() => { loot.settings = settings; - loot.dom.updateSettingsDialog(loot.settings); - loot.dom.setGameMenuItems(loot.settings.games); - loot.dom.updateEnabledGames(loot.installedGames); - loot.dom.updateSelectedGame(loot.game.folder); + loot.DOM.updateSettingsDialog(loot.settings); + loot.DOM.setGameMenuItems(loot.settings.games); + loot.DOM.updateEnabledGames(loot.installedGames); + loot.DOM.updateSelectedGame(loot.game.folder); }).catch(handlePromiseError); } function onShowSettingsDialog() { diff --git a/src/gui/html/js/game.js b/src/gui/html/js/game.js index 809106af..92490c8c 100644 --- a/src/gui/html/js/game.js +++ b/src/gui/html/js/game.js @@ -339,7 +339,7 @@ document.getElementById('masterlistDate').textContent = evt.detail.date; } static onFolderChange(evt) { - loot.dom.updateSelectedGame(evt.detail.folder); + loot.DOM.updateSelectedGame(evt.detail.folder); /* Enable/disable the redate plugins option. */ let gameSettings = undefined; if (loot.settings && loot.settings.games) { diff --git a/src/gui/html/js/initialise.js b/src/gui/html/js/initialise.js index 598bfd8e..0fff85d6 100644 --- a/src/gui/html/js/initialise.js +++ b/src/gui/html/js/initialise.js @@ -30,7 +30,7 @@ // Browser globals root.loot = root.loot || {}; root.loot.initialise = factory(root.loot.Dialog, - root.loot.dom, + root.loot.DOM, root.loot.Filters, root.loot.Game, root.loot.translateStaticText, @@ -219,9 +219,9 @@ return query('getSettings').then(JSON.parse).then((result) => { appData.settings = result; dom.updateSettingsDialog(appData.settings); - loot.dom.setGameMenuItems(appData.settings.games); - loot.dom.updateEnabledGames(appData.installedGames); - loot.dom.updateSelectedGame(appData.game.folder); + loot.DOM.setGameMenuItems(appData.settings.games); + loot.DOM.updateEnabledGames(appData.installedGames); + loot.DOM.updateSelectedGame(appData.game.folder); }); } @@ -268,9 +268,9 @@ translateStaticText(loot.l10n); /* Also need to update the settings UI. */ dom.updateSettingsDialog(loot.settings); - loot.dom.setGameMenuItems(loot.settings.games); - loot.dom.updateEnabledGames(loot.installedGames); - loot.dom.updateSelectedGame(loot.game.folder); + loot.DOM.setGameMenuItems(loot.settings.games); + loot.DOM.updateEnabledGames(loot.installedGames); + loot.DOM.updateSelectedGame(loot.game.folder); }).then(() => { return displayInitErrors(); }).then((result) => { diff --git a/src/gui/html/js/state.js b/src/gui/html/js/state.js index 50878541..2cab1d34 100644 --- a/src/gui/html/js/state.js +++ b/src/gui/html/js/state.js @@ -6,7 +6,7 @@ } else { // Browser globals root.loot = root.loot || {}; - root.loot.State = factory(root.loot.dom); + root.loot.State = factory(root.loot.DOM); root.loot.state = new root.loot.State(); } }(this, (dom) => { @@ -50,14 +50,14 @@ /* Hide the masterlist update buttons, and display the accept and cancel sort buttons. */ - loot.dom.show('updateMasterlistButton', false); - loot.dom.show('sortButton', false); - loot.dom.show('applySortButton'); - loot.dom.show('cancelSortButton'); + loot.DOM.show('updateMasterlistButton', false); + loot.DOM.show('sortButton', false); + loot.DOM.show('applySortButton'); + loot.DOM.show('cancelSortButton'); /* Disable changing game. */ - loot.dom.enable('gameMenu', false); - loot.dom.enable('refreshContentButton', false); + loot.DOM.enable('gameMenu', false); + loot.DOM.enable('refreshContentButton', false); this.currentState = State.SORTING_STATE; } @@ -72,14 +72,14 @@ /* Show the masterlist update buttons, and hide the accept and cancel sort buttons. */ - loot.dom.show('updateMasterlistButton'); - loot.dom.show('sortButton'); - loot.dom.show('applySortButton', false); - loot.dom.show('cancelSortButton', false); + loot.DOM.show('updateMasterlistButton'); + loot.DOM.show('sortButton'); + loot.DOM.show('applySortButton', false); + loot.DOM.show('cancelSortButton', false); /* Enable changing game. */ - loot.dom.enable('gameMenu'); - loot.dom.enable('refreshContentButton'); + loot.DOM.enable('gameMenu'); + loot.DOM.enable('refreshContentButton'); this.currentState = State.DEFAULT_STATE; } @@ -93,13 +93,13 @@ } /* Disable the toolbar elements. */ - loot.dom.enable('wipeUserlistButton', false); - loot.dom.enable('copyContentButton', false); - loot.dom.enable('refreshContentButton', false); - loot.dom.enable('settingsButton', false); - loot.dom.enable('gameMenu', false); - loot.dom.enable('updateMasterlistButton', false); - loot.dom.enable('sortButton', false); + loot.DOM.enable('wipeUserlistButton', false); + loot.DOM.enable('copyContentButton', false); + loot.DOM.enable('refreshContentButton', false); + loot.DOM.enable('settingsButton', false); + loot.DOM.enable('gameMenu', false); + loot.DOM.enable('updateMasterlistButton', false); + loot.DOM.enable('sortButton', false); this.currentState = State.EDITING_STATE; } @@ -113,13 +113,13 @@ } /* Re-enable toolbar elements. */ - loot.dom.enable('wipeUserlistButton'); - loot.dom.enable('copyContentButton'); - loot.dom.enable('refreshContentButton'); - loot.dom.enable('settingsButton'); - loot.dom.enable('gameMenu'); - loot.dom.enable('updateMasterlistButton'); - loot.dom.enable('sortButton'); + loot.DOM.enable('wipeUserlistButton'); + loot.DOM.enable('copyContentButton'); + loot.DOM.enable('refreshContentButton'); + loot.DOM.enable('settingsButton'); + loot.DOM.enable('gameMenu'); + loot.DOM.enable('updateMasterlistButton'); + loot.DOM.enable('sortButton'); this.currentState = State.DEFAULT_STATE; } diff --git a/src/tests/gui/html/js/test_state.js b/src/tests/gui/html/js/test_state.js index 25dca55c..8870b707 100644 --- a/src/tests/gui/html/js/test_state.js +++ b/src/tests/gui/html/js/test_state.js @@ -1,7 +1,7 @@ 'use strict'; /* Mock the DOM interactions */ -loot.dom = { +loot.DOM = { elementShownStates: new Map(), elementEnabledStates: new Map(), @@ -15,16 +15,16 @@ loot.dom = { }; function getShown(elementId) { - return loot.dom.elementShownStates.get(elementId); + return loot.DOM.elementShownStates.get(elementId); } function getEnabled(elementId) { - return loot.dom.elementEnabledStates.get(elementId); + return loot.DOM.elementEnabledStates.get(elementId); } beforeEach(() => { - loot.dom.elementShownStates.clear(); - loot.dom.elementEnabledStates.clear(); + loot.DOM.elementShownStates.clear(); + loot.DOM.elementEnabledStates.clear(); }); describe('State', () => {