From b34f5c36b51e3f997e6f6354ce3d0c5e4396c27f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Hud=C3=A1k?= Date: Sat, 1 Aug 2020 12:42:20 +0200 Subject: [PATCH] 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 --- src/ui/zabapgit_js_common.w3mi.data.js | 27 +++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/ui/zabapgit_js_common.w3mi.data.js b/src/ui/zabapgit_js_common.w3mi.data.js index a8ef1033d..81e0fca39 100644 --- a/src/ui/zabapgit_js_common.w3mi.data.js +++ b/src/ui/zabapgit_js_common.w3mi.data.js @@ -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")); }; /**********************************************************