Manage: remember scroll position, initialize styles earlier

This commit is contained in:
tophf 2015-05-27 23:30:22 +03:00
parent 761b5bd7d9
commit 9cfa214d19
2 changed files with 34 additions and 16 deletions

View File

@ -134,6 +134,7 @@
<script src="storage.js"></script> <script src="storage.js"></script>
<script src="messaging.js"></script> <script src="messaging.js"></script>
<script src="apply.js"></script> <script src="apply.js"></script>
<script src="manage.js"></script>
</head> </head>
<body id="stylish-manage"> <body id="stylish-manage">
<div id="header"> <div id="header">
@ -158,7 +159,5 @@
</div> </div>
</div> </div>
<div id="installed"></div> <div id="installed"></div>
<script src="manage.js"></script>
</body> </body>
</html> </html>

View File

@ -15,28 +15,32 @@ var styleTemplate = tHTML('\
'); ');
var lastUpdatedStyleId = null; var lastUpdatedStyleId = null;
var installed = document.getElementById("installed"); var installed;
var appliesToExtraTemplate = document.createElement("span"); var appliesToExtraTemplate = document.createElement("span");
appliesToExtraTemplate.className = "applies-to-extra"; appliesToExtraTemplate.className = "applies-to-extra";
appliesToExtraTemplate.innerHTML = " " + t('appliesDisplayTruncatedSuffix'); appliesToExtraTemplate.innerHTML = " " + t('appliesDisplayTruncatedSuffix');
chrome.extension.sendMessage({method: "getStyles"}, showStyles); chrome.extension.sendMessage({method: "getStyles"}, showStyles);
loadPrefs({
"manage.onlyEnabled": false,
"manage.onlyEdited": false,
"show-badge": true
});
function showStyles(styles) { function showStyles(styles) {
if (!styles) { // Chrome is starting up if (!styles) { // Chrome is starting up
chrome.extension.sendMessage({method: "getStyles"}, showStyles); chrome.extension.sendMessage({method: "getStyles"}, showStyles);
return; return;
} }
if (!installed) {
// "getStyles" message callback is invoked before document is loaded,
// postpone the action until DOMContentLoaded is fired
document.stylishStyles = styles;
return;
}
styles.sort(function(a, b) { return a.name.localeCompare(b.name)}); styles.sort(function(a, b) { return a.name.localeCompare(b.name)});
styles.map(createStyleElement).forEach(function(e) { styles.map(createStyleElement).forEach(function(e) {
installed.appendChild(e); installed.appendChild(e);
}); });
if (history.state) {
window.scrollTo(0, history.state.scrollY);
}
} }
function createStyleElement(style) { function createStyleElement(style) {
@ -132,6 +136,8 @@ function createStyleElement(style) {
active: openForegroundTab active: openForegroundTab
}); });
} }
} else {
history.replaceState({scrollY: window.scrollY}, document.title);
} }
} }
}); });
@ -468,11 +474,6 @@ function searchStyles(immediately) {
} }
} }
document.getElementById("check-all-updates").addEventListener("click", checkUpdateAll, false);
document.getElementById("apply-all-updates").addEventListener("click", applyUpdateAll, false);
document.getElementById("search").addEventListener("input", searchStyles);
searchStyles(true); // re-apply filtering on history Back
function onFilterChange (className, event) { function onFilterChange (className, event) {
installed.classList.toggle(className, event.target.checked); installed.classList.toggle(className, event.target.checked);
} }
@ -480,7 +481,25 @@ function initFilter(className, node) {
node.addEventListener("change", onFilterChange.bind(undefined, className), false); node.addEventListener("change", onFilterChange.bind(undefined, className), false);
onFilterChange(className, {target: node}); onFilterChange(className, {target: node});
} }
document.addEventListener("DOMContentLoaded", function() {
installed = document.getElementById("installed");
if (document.stylishStyles) {
showStyles(document.stylishStyles);
delete document.stylishStyles;
}
document.getElementById("check-all-updates").addEventListener("click", checkUpdateAll);
document.getElementById("apply-all-updates").addEventListener("click", applyUpdateAll);
document.getElementById("search").addEventListener("input", searchStyles);
searchStyles(true); // re-apply filtering on history Back
loadPrefs({
"manage.onlyEnabled": false,
"manage.onlyEdited": false,
"show-badge": true,
"popup.stylesFirst": true
});
initFilter("enabled-only", document.getElementById("manage.onlyEnabled")); initFilter("enabled-only", document.getElementById("manage.onlyEnabled"));
initFilter("edited-only", document.getElementById("manage.onlyEdited")); initFilter("edited-only", document.getElementById("manage.onlyEdited"));
});
loadPrefs({"popup.stylesFirst": true});