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).
This commit is contained in:
Oliver Hamlet
2016-05-30 16:19:20 +01:00
parent d4425d406d
commit b5cf4d427f
6 changed files with 64 additions and 64 deletions
+18 -18
View File
@@ -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;
},
}
};
}));
+6 -6
View File
@@ -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() {
+1 -1
View File
@@ -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) {
+7 -7
View File
@@ -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) => {
+27 -27
View File
@@ -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;
}
+5 -5
View File
@@ -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', () => {