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