mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
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:
+18
-18
@@ -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;
|
||||
},
|
||||
}
|
||||
};
|
||||
}));
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
Reference in New Issue
Block a user