From 4f727c7ed0ed4ec90ab5651e2f86af1245a5cbce Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Tue, 29 Dec 2015 18:56:32 +0000 Subject: [PATCH] Refactor Game change event handlers Into game.js as static members. --- src/gui/html/js/events.js | 65 ------------------------------------- src/gui/html/js/game.js | 68 +++++++++++++++++++++++++++++++++++++-- src/gui/html/js/init.js | 8 ++--- 3 files changed, 70 insertions(+), 71 deletions(-) diff --git a/src/gui/html/js/events.js b/src/gui/html/js/events.js index 84efc290..cf05721c 100644 --- a/src/gui/html/js/events.js +++ b/src/gui/html/js/events.js @@ -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); } diff --git a/src/gui/html/js/game.js b/src/gui/html/js/game.js index 6ccac03f..a95ea157 100644 --- a/src/gui/html/js/game.js +++ b/src/gui/html/js/game.js @@ -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); + } + } }; })); diff --git a/src/gui/html/js/init.js b/src/gui/html/js/init.js index 8e152a1e..321805e2 100644 --- a/src/gui/html/js/init.js +++ b/src/gui/html/js/init.js @@ -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) {