Changeset View
Changeset View
Standalone View
Standalone View
swh/web/assets/src/bundles/webapp/webapp-utils.js
/** | /** | ||||
* Copyright (C) 2018-2019 The Software Heritage developers | * Copyright (C) 2018-2019 The Software Heritage developers | ||||
* See the AUTHORS file at the top-level directory of this distribution | * See the AUTHORS file at the top-level directory of this distribution | ||||
* License: GNU Affero General Public License version 3, or any later version | * License: GNU Affero General Public License version 3, or any later version | ||||
* See top-level LICENSE file for more information | * See top-level LICENSE file for more information | ||||
*/ | */ | ||||
import objectFitImages from 'object-fit-images'; | import objectFitImages from 'object-fit-images'; | ||||
import {selectText} from 'utils/functions'; | import {selectText} from 'utils/functions'; | ||||
import {BREAKPOINT_MD} from 'utils/constants'; | import {BREAKPOINT_MD} from 'utils/constants'; | ||||
let collapseSidebar = false; | let collapseSidebar = false; | ||||
let previousSidebarState = localStorage.getItem('swh-sidebar-collapsed'); | let previousSidebarState = localStorage.getItem('remember.lte.pushmenu'); | ||||
if (previousSidebarState !== undefined) { | if (previousSidebarState !== undefined) { | ||||
collapseSidebar = JSON.parse(previousSidebarState); | collapseSidebar = previousSidebarState === 'sidebar-collapse'; | ||||
} | } | ||||
$(document).on('DOMContentLoaded', () => { | $(document).on('DOMContentLoaded', () => { | ||||
// set state to collapsed on smaller devices | // set state to collapsed on smaller devices | ||||
if ($(window).width() < BREAKPOINT_MD) { | if ($(window).width() < BREAKPOINT_MD) { | ||||
collapseSidebar = true; | collapseSidebar = true; | ||||
} | } | ||||
Show All 35 Lines | $(document).ready(() => { | ||||
$(`.swh-browse-link`).click(event => { | $(`.swh-browse-link`).click(event => { | ||||
let lastBrowsePage = sessionStorage.getItem('last-browse-page'); | let lastBrowsePage = sessionStorage.getItem('last-browse-page'); | ||||
if (lastBrowsePage) { | if (lastBrowsePage) { | ||||
event.preventDefault(); | event.preventDefault(); | ||||
window.location = lastBrowsePage; | window.location = lastBrowsePage; | ||||
} | } | ||||
}); | }); | ||||
const mainSideBar = $('.main-sidebar'); | |||||
function updateSidebarState() { | |||||
const body = $('body'); | |||||
if (body.hasClass('sidebar-collapse') && | |||||
!mainSideBar.hasClass('swh-sidebar-collapsed')) { | |||||
mainSideBar.removeClass('swh-sidebar-expanded'); | |||||
mainSideBar.addClass('swh-sidebar-collapsed'); | |||||
$('.swh-words-logo-swh').css('visibility', 'visible'); | |||||
} else if (!body.hasClass('sidebar-collapse') && | |||||
!mainSideBar.hasClass('swh-sidebar-expanded')) { | |||||
mainSideBar.removeClass('swh-sidebar-collapsed'); | |||||
mainSideBar.addClass('swh-sidebar-expanded'); | |||||
$('.swh-words-logo-swh').css('visibility', 'hidden'); | |||||
} | |||||
// ensure correct sidebar state when loading a page | |||||
if (body.hasClass('hold-transition')) { | |||||
setTimeout(() => { | |||||
updateSidebarState(); | |||||
}); | |||||
} | |||||
} | |||||
// set sidebar state after collapse / expand animation | |||||
mainSideBar.on('transitionend', evt => { | |||||
updateSidebarState(); | |||||
}); | |||||
updateSidebarState(); | |||||
// ensure footer do not overflow main content for mobile devices | // ensure footer do not overflow main content for mobile devices | ||||
// or after resizing the browser window | // or after resizing the browser window | ||||
ensureNoFooterOverflow(); | ensureNoFooterOverflow(); | ||||
$(window).resize(function() { | $(window).resize(function() { | ||||
ensureNoFooterOverflow(); | ensureNoFooterOverflow(); | ||||
if ($('body').hasClass('sidebar-collapse') && $('body').width() >= BREAKPOINT_MD) { | if ($('body').hasClass('sidebar-collapse') && $('body').width() >= BREAKPOINT_MD) { | ||||
$('.swh-words-logo-swh').css('visibility', 'visible'); | $('.swh-words-logo-swh').css('visibility', 'visible'); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | export function initPage(page) { | ||||
$(document).ready(() => { | $(document).ready(() => { | ||||
// set relevant sidebar link to page active | // set relevant sidebar link to page active | ||||
$(`.swh-${page}-item`).addClass('active'); | $(`.swh-${page}-item`).addClass('active'); | ||||
$(`.swh-${page}-link`).addClass('active'); | $(`.swh-${page}-link`).addClass('active'); | ||||
// triggered when unloading the current page | // triggered when unloading the current page | ||||
$(window).on('unload', () => { | $(window).on('unload', () => { | ||||
// backup sidebar state (collapsed/expanded) | |||||
let sidebarCollapsed = $('body').hasClass('sidebar-collapse'); | |||||
localStorage.setItem('swh-sidebar-collapsed', JSON.stringify(sidebarCollapsed)); | |||||
// backup current browse page | // backup current browse page | ||||
if (page === 'browse') { | if (page === 'browse') { | ||||
sessionStorage.setItem('last-browse-page', window.location); | sessionStorage.setItem('last-browse-page', window.location); | ||||
} | } | ||||
}); | }); | ||||
}); | }); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 106 Lines • Show Last 20 Lines |