Refactor Game change event handlers

Into game.js as static members.
This commit is contained in:
Oliver Hamlet
2016-01-06 18:27:09 +00:00
parent 444478d519
commit 4f727c7ed0
3 changed files with 70 additions and 71 deletions
-65
View File
@@ -1,68 +1,4 @@
'use strict';
function onGamePluginsChange(evt) {
if (!evt.detail.valuesAreTotals) {
evt.detail.totalMessageNo += parseInt(document.getElementById('totalMessageNo').textContent, 10);
evt.detail.warnMessageNo += parseInt(document.getElementById('totalWarningNo').textContent, 10);
evt.detail.errorMessageNo += parseInt(document.getElementById('totalErrorNo').textContent, 10);
evt.detail.totalPluginNo += parseInt(document.getElementById('totalPluginNo').textContent, 10);
evt.detail.activePluginNo += parseInt(document.getElementById('activePluginNo').textContent, 10);
evt.detail.dirtyPluginNo += parseInt(document.getElementById('dirtyPluginNo').textContent, 10);
}
document.getElementById('filterTotalMessageNo').textContent = evt.detail.totalMessageNo;
document.getElementById('totalMessageNo').textContent = evt.detail.totalMessageNo;
document.getElementById('totalWarningNo').textContent = evt.detail.warnMessageNo;
document.getElementById('totalErrorNo').textContent = evt.detail.errorMessageNo;
document.getElementById('filterTotalPluginNo').textContent = evt.detail.totalPluginNo;
document.getElementById('totalPluginNo').textContent = evt.detail.totalPluginNo;
document.getElementById('activePluginNo').textContent = evt.detail.activePluginNo;
document.getElementById('dirtyPluginNo').textContent = evt.detail.dirtyPluginNo;
}
function onGameGlobalMessagesChange(evt) {
document.getElementById('filterTotalMessageNo').textContent = parseInt(document.getElementById('filterTotalMessageNo').textContent, 10) + evt.detail.totalDiff;
document.getElementById('totalMessageNo').textContent = parseInt(document.getElementById('totalMessageNo').textContent, 10) + evt.detail.totalDiff;
document.getElementById('totalWarningNo').textContent = parseInt(document.getElementById('totalWarningNo').textContent, 10) + evt.detail.warningDiff;
document.getElementById('totalErrorNo').textContent = parseInt(document.getElementById('totalErrorNo').textContent, 10) + evt.detail.errorDiff;
/* Remove old messages from UI. */
const generalMessagesList = document.getElementById('summary').getElementsByTagName('ul')[0];
while (generalMessagesList.firstElementChild) {
generalMessagesList.removeChild(generalMessagesList.firstElementChild);
}
/* Add new messages. */
if (evt.detail.messages) {
evt.detail.messages.forEach((message) => {
const li = document.createElement('li');
li.className = message.type;
/* Use the Marked library for Markdown formatting support. */
li.innerHTML = marked(message.content[0].str);
generalMessagesList.appendChild(li);
});
}
}
function onGameMasterlistChange(evt) {
document.getElementById('masterlistRevision').textContent = evt.detail.revision;
document.getElementById('masterlistDate').textContent = evt.detail.date;
}
function onGameFolderChange(evt) {
loot.dom.updateSelectedGame(evt.detail.folder);
/* Enable/disable the redate plugins option. */
let gameSettings = undefined;
if (loot.settings && loot.settings.games) {
gameSettings = loot.settings.games.find((game) => {
return game.folder === evt.detail.folder;
});
}
const redateButton = document.getElementById('redatePluginsButton');
if (gameSettings && gameSettings.type === 'Skyrim') {
redateButton.removeAttribute('disabled');
} else {
redateButton.setAttribute('disabled', true);
}
}
function onPluginMessageChange(evt) {
document.getElementById('filterTotalMessageNo').textContent = parseInt(document.getElementById('filterTotalMessageNo').textContent, 10) + evt.detail.totalDiff;
document.getElementById('totalMessageNo').textContent = parseInt(document.getElementById('totalMessageNo').textContent, 10) + evt.detail.totalDiff;
@@ -401,7 +337,6 @@ function onContentRefresh() {
}).catch(handlePromiseError);
}
function onOpenReadme() {
loot.query('openReadme').catch(handlePromiseError);
}
+66 -2
View File
@@ -7,9 +7,9 @@
} else {
// Browser globals
root.loot = root.loot || {};
root.loot.Game = factory();
root.loot.Game = factory(root.marked);
}
}(this, () => {
}(this, (marked) => {
return class Game {
constructor(obj, l10n) {
this.folder = obj.folder || '';
@@ -253,5 +253,69 @@
this._plugins.splice(index, 1);
}
static onPluginsChange(evt) {
if (!evt.detail.valuesAreTotals) {
evt.detail.totalMessageNo += parseInt(document.getElementById('totalMessageNo').textContent, 10);
evt.detail.warnMessageNo += parseInt(document.getElementById('totalWarningNo').textContent, 10);
evt.detail.errorMessageNo += parseInt(document.getElementById('totalErrorNo').textContent, 10);
evt.detail.totalPluginNo += parseInt(document.getElementById('totalPluginNo').textContent, 10);
evt.detail.activePluginNo += parseInt(document.getElementById('activePluginNo').textContent, 10);
evt.detail.dirtyPluginNo += parseInt(document.getElementById('dirtyPluginNo').textContent, 10);
}
document.getElementById('filterTotalMessageNo').textContent = evt.detail.totalMessageNo;
document.getElementById('totalMessageNo').textContent = evt.detail.totalMessageNo;
document.getElementById('totalWarningNo').textContent = evt.detail.warnMessageNo;
document.getElementById('totalErrorNo').textContent = evt.detail.errorMessageNo;
document.getElementById('filterTotalPluginNo').textContent = evt.detail.totalPluginNo;
document.getElementById('totalPluginNo').textContent = evt.detail.totalPluginNo;
document.getElementById('activePluginNo').textContent = evt.detail.activePluginNo;
document.getElementById('dirtyPluginNo').textContent = evt.detail.dirtyPluginNo;
}
static onGlobalMessagesChange(evt) {
document.getElementById('filterTotalMessageNo').textContent = parseInt(document.getElementById('filterTotalMessageNo').textContent, 10) + evt.detail.totalDiff;
document.getElementById('totalMessageNo').textContent = parseInt(document.getElementById('totalMessageNo').textContent, 10) + evt.detail.totalDiff;
document.getElementById('totalWarningNo').textContent = parseInt(document.getElementById('totalWarningNo').textContent, 10) + evt.detail.warningDiff;
document.getElementById('totalErrorNo').textContent = parseInt(document.getElementById('totalErrorNo').textContent, 10) + evt.detail.errorDiff;
/* Remove old messages from UI. */
const generalMessagesList = document.getElementById('summary').getElementsByTagName('ul')[0];
while (generalMessagesList.firstElementChild) {
generalMessagesList.removeChild(generalMessagesList.firstElementChild);
}
/* Add new messages. */
if (evt.detail.messages) {
evt.detail.messages.forEach((message) => {
const li = document.createElement('li');
li.className = message.type;
/* Use the Marked library for Markdown formatting support. */
li.innerHTML = marked(message.content[0].str);
generalMessagesList.appendChild(li);
});
}
}
static onMasterlistChange(evt) {
document.getElementById('masterlistRevision').textContent = evt.detail.revision;
document.getElementById('masterlistDate').textContent = evt.detail.date;
}
static onFolderChange(evt) {
loot.dom.updateSelectedGame(evt.detail.folder);
/* Enable/disable the redate plugins option. */
let gameSettings = undefined;
if (loot.settings && loot.settings.games) {
gameSettings = loot.settings.games.find((game) => {
return game.folder === evt.detail.folder;
});
}
const redateButton = document.getElementById('redatePluginsButton');
if (gameSettings && gameSettings.type === 'Skyrim') {
redateButton.removeAttribute('disabled');
} else {
redateButton.setAttribute('disabled', true);
}
}
};
}));
+4 -4
View File
@@ -97,10 +97,10 @@
document.addEventListener('loot-plugin-isdirty-change', onPluginIsDirtyChange);
/* Set up event handlers for game member variable changes. */
document.addEventListener('loot-game-folder-change', onGameFolderChange);
document.addEventListener('loot-game-masterlist-change', onGameMasterlistChange);
document.addEventListener('loot-game-global-messages-change', onGameGlobalMessagesChange);
document.addEventListener('loot-game-plugins-change', onGamePluginsChange);
document.addEventListener('loot-game-folder-change', Game.onFolderChange);
document.addEventListener('loot-game-masterlist-change', Game.onMasterlistChange);
document.addEventListener('loot-game-global-messages-change', Game.onGlobalMessagesChange);
document.addEventListener('loot-game-plugins-change', Game.onPluginsChange);
}
function applyEnabledFilters(filters, settings, plugins) {