2023-05-16 10:50:42 +08:00

82 lines
2.9 KiB
JavaScript

function handleDatatableReady()
{
$('th.datatable-head-cell').each(function() { $(this).attr('title', $(this).html()); });
var rowspan = 1;
var compareVal = '';
var mergeIndex = 0;
$('.datatable-rows .datatable-rows-span:first table tr').each(function()
{
var leftHeight = $(this).height();
var dataIndex = $(this).data('index');
var $right = $('.datatable-rows .datatable-rows-span:last table tr[data-index=' + dataIndex + ']');
var rightHeight = $right.height();
var trHeight = leftHeight;
if(leftHeight <= rightHeight) trHeight = rightHeight;
$right.height(trHeight);
$(this).height(trHeight);
if(dataIndex == 0)
{
compareVal = $(this).find('td:first').html();
mergeIndex = dataIndex;
}
if(mergeIndex != dataIndex)
{
if(compareVal == $(this).find('td:first').html())
{
rowspan += 1;
$(this).parent().find('tr').eq(mergeIndex).find('td:first').attr('rowspan', rowspan);
$(this).find('td:first').remove();
}
else
{
rowspan = 1;
compareVal = $(this).find('td:first').html();
mergeIndex = dataIndex;
}
}
});
}
$(function()
{
handleDatatableReady();
fixScroll();
});
function fixScroll()
{
var $scrollwrapper = $('div.datatable').first().find('.scroll-wrapper:first');
if($scrollwrapper.size() == 0)return;
var $tfoot = $('div.datatable').first().find('table tfoot:last');
var scrollOffset = $scrollwrapper.offset().top + $scrollwrapper.find('.scroll-slide').height();
if($tfoot.size() > 0) scrollOffset += $tfoot.height();
if($('div.datatable.head-fixed').size() == 0) scrollOffset -= '29';
var windowH = $(window).height();
var bottom = $tfoot.hasClass('fixedTfootAction') ? 14 + $tfoot.height() : 14;
if(typeof(ssoRedirect) != "undefined") bottom = 14;
if(scrollOffset > windowH + $(window).scrollTop()) $scrollwrapper.css({'position': 'fixed', 'bottom': '0px'});
$('.datatable .scroll-slide.scroll-pos-out').css('bottom', '0px');
$(window).scroll(function()
{
newBottom = $tfoot.hasClass('fixedTfootAction') ? 14 + $tfoot.height() : 14;
if(typeof(ssoRedirect) != "undefined") newBottom = 14;
if(scrollOffset <= windowH + $(window).scrollTop())
{
$scrollwrapper.css({'position':'relative', 'bottom': '0px'});
$('.datatable .scroll-slide.scroll-pos-out').css('bottom', '-14px');
}
else if($scrollwrapper.css('position') != 'fixed' || bottom != newBottom)
{
$scrollwrapper.css({'position': 'fixed', 'bottom': newBottom + 'px'});
bottom = newBottom;
$('.datatable .scroll-slide.scroll-pos-out').css('bottom', '-' + newBottom + 'px');
}
});
}