houdini/app/javascript/legacy/common/panels_layout.js
2020-04-23 14:09:14 -05:00

71 lines
2.1 KiB
JavaScript

// License: LGPL-3.0-or-later
var $panelsLayout = $('.panelsLayout'),
$panelsLayoutBody = $panelsLayout.find('.panelsLayout-body'),
$sidePanel = $panelsLayoutBody.find('.sidePanel'),
$mainPanel = $panelsLayoutBody.find('.mainPanel'),
filterButton = document.getElementById('button--openFilter'),
$tableMeta = $('.table-meta--main'),
win = window
function setPanelsLayoutBodyHeight(){
var bodyOffsetTop = $panelsLayoutBody.offset().top
var winInnerHeight = win.innerHeight
var calculatedHeight = (winInnerHeight - bodyOffsetTop) + 'px'
if($('.filterPanel').length)
$('.filterPanel, .sidePanel, .mainPanel').css('height', calculatedHeight)
else
$('.sidePanel, .mainPanel').css('height', calculatedHeight)
}
setPanelsLayoutBodyHeight()
$(win).resize(setPanelsLayoutBodyHeight)
appl.def('open_side_panel', function(){
appl.def('is_showing_side_panel', true)
$panelsLayout.removeClass('is-showingFilterPanel')
$sidePanel.scrollTop(0)
$panelsLayout.addClass('is-showingSidePanel')
setPanelsLayoutBodyHeight()
$mainPanel.css({
left: '0px',
right: 'initial'
})
if (filterButton)
filterButton.removeAttribute('data-selected')
return appl
})
appl.def('close_side_panel', function(){
appl.def('is_showing_side_panel', false)
$mainPanel.find('tr').removeAttr('data-selected')
$panelsLayout.removeClass('is-showingSidePanel')
setPanelsLayoutBodyHeight()
window.history.pushState({},'index', win.location.pathname)
return appl
})
appl.def('open_filter_panel', function(){
$panelsLayout.removeClass('is-showingSidePanel')
$panelsLayout.addClass('is-showingFilterPanel')
$mainPanel.find('tr').removeAttr('data-selected')
$mainPanel.css({
right: '0px',
left: 'initial'
})
filterButton.setAttribute('data-selected', '')
window.history.pushState({},'index', win.location.pathname)
return appl
})
appl.def('close_filter_panel', function(){
$panelsLayout.removeClass('is-showingFilterPanel')
filterButton.removeAttribute('data-selected')
return appl
})
appl.def('scroll_main_panel', function(){
var main_panel = document.querySelector('.mainPanel')
main_panel.scrollTop = main_panel.scrollHeight
})