aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/logger-ui.js
diff options
context:
space:
mode:
authorgorhill <rhill@raymondhill.net>2015-08-01 11:30:54 -0400
committergorhill <rhill@raymondhill.net>2015-08-01 11:30:54 -0400
commit528354f5945d12fdff5dc7c4a699c4d6aec76125 (patch)
tree154217d9fa4d895919c25e4ac6a2e4af5425dfc2 /src/js/logger-ui.js
parentf1cf2036fc4f1d5853f0436dd565cf0b1773663c (diff)
downloaduBlock-528354f5945d12fdff5dc7c4a699c4d6aec76125.zip
uBlock-528354f5945d12fdff5dc7c4a699c4d6aec76125.tar.gz
uBlock-528354f5945d12fdff5dc7c4a699c4d6aec76125.tar.bz2
this fixes #507
Diffstat (limited to 'src/js/logger-ui.js')
-rw-r--r--src/js/logger-ui.js93
1 files changed, 61 insertions, 32 deletions
diff --git a/src/js/logger-ui.js b/src/js/logger-ui.js
index 83d47c2..3c2c8fa 100644
--- a/src/js/logger-ui.js
+++ b/src/js/logger-ui.js
@@ -688,6 +688,10 @@ var onLogBufferRead = function(response) {
allTabIdsToken = response.tabIdsToken;
}
+ // https://github.com/gorhill/uBlock/issues/507
+ // Ensure tab selector is in sync with URL hash
+ pageSelectorFromURLHash();
+
renderLogEntries(response);
if ( rowVoided ) {
@@ -719,26 +723,55 @@ var readLogBuffer = function() {
/******************************************************************************/
var pageSelectorChanged = function() {
- var style = uDom.nodeFromId('tabFilterer');
- var tabClass = uDom.nodeFromId('pageSelector').value;
- var sheet = style.sheet;
- while ( sheet.cssRules.length !== 0 ) {
- sheet.deleteRule(0);
- }
- if ( tabClass !== '' ) {
- sheet.insertRule(
- '#netInspector tr:not(.' + tabClass + ') { display: none; }',
- 0
- );
- }
- uDom('.needtab').toggleClass(
- 'disabled',
- tabClass === '' || tabClass === 'tab_bts'
- );
+ window.location.replace('#' + uDom.nodeFromId('pageSelector').value);
+ pageSelectorFromURLHash();
};
/******************************************************************************/
+var pageSelectorFromURLHash = (function() {
+ var lastHash = '';
+
+ return function() {
+ var hash = window.location.hash;
+ if ( hash === lastHash ) {
+ return;
+ }
+
+ var tabClass = hash.slice(1);
+ var select = uDom.nodeFromId('pageSelector');
+ var option = select.querySelector('option[value="' + tabClass + '"]');
+ if ( option === null ) {
+ hash = window.location.hash = '';
+ tabClass = '';
+ option = select.options[0];
+ }
+
+ lastHash = hash;
+
+ select.selectedIndex = option.index;
+ select.value = option.value;
+
+ var style = uDom.nodeFromId('tabFilterer');
+ var sheet = style.sheet;
+ while ( sheet.cssRules.length !== 0 ) {
+ sheet.deleteRule(0);
+ }
+ if ( tabClass !== '' ) {
+ sheet.insertRule(
+ '#netInspector tr:not(.' + tabClass + ') { display: none; }',
+ 0
+ );
+ }
+ uDom('.needtab').toggleClass(
+ 'disabled',
+ tabClass === '' || tabClass === 'tab_bts'
+ );
+ };
+})();
+
+/******************************************************************************/
+
var reloadTab = function() {
var tabClass = uDom.nodeFromId('pageSelector').value;
var tabId = tabIdFromClassName(tabClass);
@@ -1720,25 +1753,21 @@ var popupManager = (function() {
/******************************************************************************/
-uDom.onLoad(function() {
- readLogBuffer();
+readLogBuffer();
- uDom('#pageSelector').on('change', pageSelectorChanged);
- uDom('#refresh').on('click', reloadTab);
- uDom('#showdom').on('click', toggleInspectors);
+uDom('#pageSelector').on('change', pageSelectorChanged);
+uDom('#refresh').on('click', reloadTab);
+uDom('#showdom').on('click', toggleInspectors);
- uDom('#compactViewToggler').on('click', toggleCompactView);
- uDom('#clean').on('click', cleanBuffer);
- uDom('#clear').on('click', clearBuffer);
- uDom('#maxEntries').on('change', onMaxEntriesChanged);
- uDom('#netInspector table').on('click', 'tr.canMtx > td:nth-of-type(2)', popupManager.toggleOn);
- uDom('#netInspector').on('click', 'tr.canLookup > td:nth-of-type(3)', reverseLookupManager.toggleOn);
- uDom('#netInspector').on('click', 'tr.cat_net > td:nth-of-type(4)', netFilteringManager.toggleOn);
+uDom('#compactViewToggler').on('click', toggleCompactView);
+uDom('#clean').on('click', cleanBuffer);
+uDom('#clear').on('click', clearBuffer);
+uDom('#maxEntries').on('change', onMaxEntriesChanged);
+uDom('#netInspector table').on('click', 'tr.canMtx > td:nth-of-type(2)', popupManager.toggleOn);
+uDom('#netInspector').on('click', 'tr.canLookup > td:nth-of-type(3)', reverseLookupManager.toggleOn);
+uDom('#netInspector').on('click', 'tr.cat_net > td:nth-of-type(4)', netFilteringManager.toggleOn);
- // https://github.com/gorhill/uBlock/issues/404
- // Ensure page state is in sync with the state of its various widgets.
- pageSelectorChanged();
-});
+window.addEventListener('hashchange', pageSelectorFromURLHash);
/******************************************************************************/