From 1af3bc9a9a10c831d3217742eeb45318c9748a27 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 16 Jan 2016 11:28:03 +0000 Subject: [PATCH] Fix version, Bash Tag and CRC filters If the filters were applied on startup, disabling them would not reveal the hidden data, as the cards' content would not be refreshed. This fixes #530. --- src/gui/html/elements/loot-plugin-card.html | 12 +++++++----- src/gui/html/js/events.js | 21 +-------------------- src/gui/html/js/helpers.js | 10 +++++----- src/gui/html/js/init.js | 6 +++--- 4 files changed, 16 insertions(+), 33 deletions(-) diff --git a/src/gui/html/elements/loot-plugin-card.html b/src/gui/html/elements/loot-plugin-card.html index 6e584acd..01fa3aac 100644 --- a/src/gui/html/elements/loot-plugin-card.html +++ b/src/gui/html/elements/loot-plugin-card.html @@ -116,11 +116,6 @@ loot-clear-metadata font-weight: 400; font-size: 1rem; } - :host-context(#main[data-hide-crc]) content::content > .crc, - :host-context(#main[data-hide-tag]) content::content > .tag, - :host-context(#main[data-hide-version]) content::content > .version { - display: none; - } /* Misc Styling. */ core-toolbar { @@ -279,6 +274,13 @@ loot-clear-metadata } }, + updateContent: function() { + this.getElementsByClassName('version')[0].textContent = this.data.getCardContent(loot.filters).version; + this.onCrcChange(); + this.onTagsChange(); + this.onMessagesChange(); + }, + onCrcChange: function(oldValue, newValue) { if (this.data) { this.getElementsByClassName('crc')[0].textContent = this.data.getCardContent(loot.filters).crc; diff --git a/src/gui/html/js/events.js b/src/gui/html/js/events.js index c7486e03..1110c98d 100644 --- a/src/gui/html/js/events.js +++ b/src/gui/html/js/events.js @@ -1,30 +1,11 @@ 'use strict'; -function saveFilterState(evt) { - loot.query('saveFilterState', evt.target.id, evt.target.checked).catch(handlePromiseError); -} -function onToggleDisplayCSS(evt) { - saveFilterState(evt); - const attr = 'data-hide-' + evt.target.getAttribute('data-class'); - if (evt.target.checked) { - document.getElementById('main').setAttribute(attr, true); - } else { - document.getElementById('main').removeAttribute(attr); - } - - if (evt.target.id === 'hideBashTags') { - document.getElementById('main').lastElementChild.updateSize(); - } - /* Now perform search again. If there is no current search, this won't - do anything. */ - document.getElementById('searchBar').search(); -} function onSidebarFilterToggle(evt) { if (evt.target.id !== 'contentFilter') { loot.filters[evt.target.id] = evt.target.checked; } else { loot.filters.contentSearchString = evt.target.value; } - saveFilterState(evt); + loot.query('saveFilterState', evt.target.id, evt.target.checked).catch(handlePromiseError); filterPluginData(loot.game.plugins, loot.filters); } diff --git a/src/gui/html/js/helpers.js b/src/gui/html/js/helpers.js index fd92f52c..08db0c61 100644 --- a/src/gui/html/js/helpers.js +++ b/src/gui/html/js/helpers.js @@ -47,12 +47,12 @@ function filterPluginData(plugins, filters) { document.getElementById('cardsNav').data = filteredPlugins; document.getElementById('pluginCardList').data = filteredPlugins; - filteredPlugins.forEach((plugin) => { - const element = document.getElementById(plugin.id); - if (element) { - element.onMessagesChange(); + const pluginCards = document.getElementById('pluginCardList').children; + for (let i = 0; i < pluginCards.length; ++i) { + if (pluginCards[i].data) { + pluginCards[i].updateContent(); } - }); + } document.getElementById('cardsNav').updateSize(); document.getElementById('pluginCardList').updateSize(); diff --git a/src/gui/html/js/init.js b/src/gui/html/js/init.js index 68a5179a..c9ecdfd0 100644 --- a/src/gui/html/js/init.js +++ b/src/gui/html/js/init.js @@ -41,9 +41,9 @@ }(this, (Dialog, dom, Filters, Game, translateStaticText, Plugin, query, Translator) => { function setupEventHandlers() { /* Set up handlers for filters. */ - document.getElementById('hideVersionNumbers').addEventListener('change', onToggleDisplayCSS); - document.getElementById('hideCRCs').addEventListener('change', onToggleDisplayCSS); - document.getElementById('hideBashTags').addEventListener('change', onToggleDisplayCSS); + document.getElementById('hideVersionNumbers').addEventListener('change', onSidebarFilterToggle); + document.getElementById('hideCRCs').addEventListener('change', onSidebarFilterToggle); + document.getElementById('hideBashTags').addEventListener('change', onSidebarFilterToggle); document.getElementById('hideNotes').addEventListener('change', onSidebarFilterToggle); document.getElementById('hideDoNotCleanMessages').addEventListener('change', onSidebarFilterToggle); document.getElementById('hideInactivePlugins').addEventListener('change', onSidebarFilterToggle);