Remember repo list filter (#3671)

* Remember repo list filter

resolves #3552 

Changes:
- store filter in local storage instead of session storage, so it is remembered on abapgit restart
- filter is saved whenever it is changed instead of page unload
- removed debug output, it doesn't need to clutter the main page

* Don't resave on page load

* Add semicolons

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Frederik Hudák 2020-08-01 12:42:20 +02:00 committed by GitHub
parent 679bef9ce0
commit b34f5c36b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -239,6 +239,13 @@ function RepoOverViewHelper() {
}
RepoOverViewHelper.prototype.toggleRepoListDetail = function (forceDisplay) {
if (this.detailCssClass) {
this.toggleItemsDetail(forceDisplay);
this.saveFilter();
}
};
RepoOverViewHelper.prototype.toggleItemsDetail = function(forceDisplay){
if (this.detailCssClass) {
this.isDetailsDisplayed = forceDisplay || !this.isDetailsDisplayed;
this.detailCssClass.style.display = this.isDetailsDisplayed ? "" : "none";
@ -258,6 +265,11 @@ RepoOverViewHelper.prototype.toggleFilterIcon = function (icon, isEnabled) {
};
RepoOverViewHelper.prototype.toggleRepoListFavorites = function (forceDisplay) {
this.toggleItemsFavorites(forceDisplay);
this.saveFilter();
};
RepoOverViewHelper.prototype.toggleItemsFavorites = function(forceDisplay){
this.isOnlyFavoritesDisplayed = forceDisplay || !this.isOnlyFavoritesDisplayed;
var repositories = document.getElementsByClassName("repo");
var icon = document.getElementById("icon-filter-favorite");
@ -272,34 +284,31 @@ RepoOverViewHelper.prototype.toggleRepoListFavorites = function (forceDisplay) {
repo.style.display = "";
}
}
};
RepoOverViewHelper.prototype.setHooks = function () {
window.onbeforeunload = this.onPageUnload.bind(this);
window.onload = this.onPageLoad.bind(this);
};
RepoOverViewHelper.prototype.onPageUnload = function () {
if (!window.sessionStorage) return;
RepoOverViewHelper.prototype.saveFilter = function () {
if (!window.localStorage) return;
var data = {
isDetailsDisplayed: this.isDetailsDisplayed,
isOnlyFavoritesDisplayed: this.isOnlyFavoritesDisplayed
};
window.sessionStorage.setItem(this.pageId, JSON.stringify(data));
window.localStorage.setItem(this.pageId, JSON.stringify(data));
};
RepoOverViewHelper.prototype.onPageLoad = function () {
var data = window.sessionStorage && JSON.parse(window.sessionStorage.getItem(this.pageId));
var data = window.localStorage && JSON.parse(window.localStorage.getItem(this.pageId));
if (data) {
if (data.isDetailsDisplayed) {
this.toggleRepoListDetail(true);
this.toggleItemsDetail(true);
}
if (data.isOnlyFavoritesDisplayed) {
this.toggleRepoListFavorites(true);
this.toggleItemsFavorites(true);
}
}
debugOutput("RepoOverViewHelper.onPageLoad: " + ((data) ? "from Storage" : "initial state"));
};
/**********************************************************