js: consolidate sidebar collapse persistence logic

Consolidate all the sidebar collapse persistence logic.
Implement a single function to handle all the views.
master
Alejandro Sirgo Rica 2024-09-16 12:34:32 +02:00
parent f85c61df99
commit 233156b19a
5 changed files with 10 additions and 51 deletions

View File

@ -152,60 +152,19 @@ function keepSelectedClients(context) {
});
}
function keepImagesTreeState() {
const images_tree = $('#servers .collapse')
images_tree.on('hidden.bs.collapse', function (event) {
function keepTreeState(selector) {
const tree = $(selector + ' .collapse');
tree.on('hidden.bs.collapse', function (event) {
event.stopPropagation();
localStorage.removeItem(this.id);
});
images_tree.on('shown.bs.collapse', function (event) {
tree.on('shown.bs.collapse', function (event) {
event.stopPropagation();
localStorage.setItem(this.id, 'show');
});
images_tree.each(function () {
if (localStorage.getItem(this.id) == 'show') {
$(this).collapse('show');
} else {
$(this).siblings('a').addClass('collapsed');
}
});
}
function keepReposTreeState() {
const repos_tree = $('#repos-list .collapse')
repos_tree.on('hidden.bs.collapse', function (event) {
event.stopPropagation();
localStorage.removeItem(this.id);
});
repos_tree.on('shown.bs.collapse', function (event) {
event.stopPropagation();
localStorage.setItem(this.id, 'show');
});
repos_tree.each(function () {
if (localStorage.getItem(this.id) == 'show') {
$(this).collapse('show');
} else {
$(this).siblings('a').addClass('collapsed');
}
});
}
function keepScopesTreeState() {
const scopes_tree = $('#scopes .collapse')
scopes_tree.on('hidden.bs.collapse', function (event) {
event.stopPropagation();
localStorage.removeItem(this.id);
});
scopes_tree.on('shown.bs.collapse', function (event) {
event.stopPropagation();
localStorage.setItem(this.id, 'show');
});
scopes_tree.each(function () {
tree.each(function () {
if (localStorage.getItem(this.id) == 'show') {
$(this).collapse('show');
} else {

View File

@ -111,7 +111,7 @@
<!-- ChartJS -->
<script src="{{ url_for('static', filename='AdminLTE/plugins/chart.js/Chart.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/ogcp.js') }}?v=17"></script>
<script src="{{ url_for('static', filename='js/ogcp.js') }}?v=18"></script>
<script>
// error messages

View File

@ -14,7 +14,7 @@
// in the scope
document.addEventListener('readystatechange', () => {
if (document.readyState === 'complete') {
keepImagesTreeState();
keepTreeState('#servers');
checkImageServer();
}
});

View File

@ -10,7 +10,7 @@
if (document.readyState === 'complete') {
showSelectedClientsOnEvents();
updateScopeState();
keepScopesTreeState();
keepTreeState('#scopes');
let context = {{ selection_mode | tojson | safe }};
{% if selection_mode == 'commands' %}
configureCommandCheckboxes(context);

View File

@ -42,7 +42,7 @@
// in the scope
document.addEventListener('readystatechange', () => {
if (document.readyState === 'complete') {
keepReposTreeState()
keepTreeState('#repos-list')
checkRepoServer()
}
});