Files
Disco/Disco.Web/ClientSource/Scripts/Modules/Disco-DataTableHelpers.js
T
Gary Sharp c846fa053a Dialog height reduced & remove js minify maps
Provide better support for lower resolution devices (buttons became
hidden in tall dialogs). Remove references to JavaScript minification
source maps which aren't deployed and caused confusion.
2014-09-08 14:51:51 +10:00

162 lines
6.4 KiB
JavaScript

(function (window, document, $) {
var dataTables = [];
$(function () {
$('table.jobTable').each(function () {
var $table = $(this);
var tableDrawn = false;
var enablePaging = $table.hasClass('enablePaging');
var enableFilter = $table.hasClass('enableFilter');
var dataTableOptionsPagination = ($table.find('tr').length > 20);
var dataTableOptions = {
"bPaginate": enablePaging,
"sPaginationType": "full_numbers",
"bLengthChange": dataTableOptionsPagination,
"iDisplayLength": 20,
"bFilter": enableFilter,
"bSort": true,
"bInfo": false,
"bAutoWidth": false,
"aoColumnDefs": [
{ 'aTargets': ['dates'], 'sSortDataType': 'disco_datetime', 'sType': 'disco_datetime' }
],
"aaSorting": [],
"oLanguage": {
"sSearch": "Filter:"
},
"fnDrawCallback": function () {
if (tableDrawn)
scrollCheck.apply($table);
else
tableDrawn = true;
}
};
var $dataTable = $table.dataTable(dataTableOptions);
// hideStatusClosed Extension
if ($table.hasClass('hideStatusClosed')) {
// Contains Closed Jobs?
var $tbody = $table.children('tbody');
var $closedJobs = $tbody.children('tr[data-status="Closed"]');
if ($closedJobs.length > 0) {
var wrapper = $(this).closest('.dataTables_wrapper');
var wrapperContext = wrapper;
if (wrapper.parent('.jobTable').length > 0)
wrapperContext = wrapper.parent();
var wrapperPrev = wrapperContext.prev();
if (wrapperPrev.length > 0 && (wrapperPrev.is('h1') || wrapperPrev.is('h2') || wrapperPrev.is('h3'))) {
wrapperPrev.data('dataTable_originalContent', wrapperPrev.html()).text('Active ' + wrapperPrev.text());
} else {
wrapperPrev = null;
}
var allClosedContainer = wrapperContext.find('div.allClosed_container');
if (allClosedContainer.length > 0) {
$table.hide();
wrapper.find('.dataTables_filter').hide();
} else {
$('<a class="dataTables_showStatusClosed button small" href="#">').text('Show Closed Jobs (' + $closedJobs.length + ')').appendTo(wrapperContext);
}
wrapperContext.on('click', 'a.dataTables_showStatusClosed', function () {
$table.show();
wrapper.find('.dataTables_filter').show();
$table.removeClass('hideStatusClosed');
allClosedContainer.remove();
$(this).remove();
if (wrapperPrev)
wrapperPrev.html(wrapperPrev.data('dataTable_originalContent'));
scrollCheck.apply($table[0]);
return false;
});
}
}
dataTables.push(this);
});
$('table.deviceTable').each(function () {
var $table = $(this);
var dataTableOptionsPagination = ($table.find('tr').length > 20);
var dataTableOptions = {
"bPaginate": dataTableOptionsPagination,
"sPaginationType": "full_numbers",
"bLengthChange": dataTableOptionsPagination,
"iDisplayLength": 20,
"bFilter": true,
"bSort": true,
"bInfo": false,
"bAutoWidth": false,
"aaSorting": [],
"oLanguage": {
"sSearch": "Filter:"
}
};
$table.dataTable(dataTableOptions);
dataTables.push(this);
});
$('table.userTable').each(function () {
var $table = $(this);
var dataTableOptionsPagination = ($table.find('tr').length > 20);
var dataTableOptions = {
"bPaginate": dataTableOptionsPagination,
"sPaginationType": "full_numbers",
"bLengthChange": dataTableOptionsPagination,
"iDisplayLength": 20,
"bFilter": true,
"bSort": true,
"bInfo": false,
"bAutoWidth": false,
"aaSorting": [],
"oLanguage": {
"sSearch": "Filter:"
}
};
$table.dataTable(dataTableOptions);
dataTables.push(this);
});
function scrollCheck() {
var wrapper = $(this).closest('.dataTables_wrapper');
if (wrapper.length > 0) {
window.setTimeout(function () {
var $window = $(window);
var wrapperHeight = wrapper.height();
var wrapperOffset = wrapper.offset();
var windowScrollTop = $window.scrollTop();
var windowHeight = $window.height();
var wrapperTopNotShown = windowScrollTop - wrapperOffset.top;
if (wrapperTopNotShown > 0) {
$('html').animate({ scrollTop: wrapperOffset.top }, 125);
} else {
var wrapperBottomNotShown = ((windowScrollTop + windowHeight) - (wrapperHeight + wrapperOffset.top)) * -1;
if (wrapperBottomNotShown > 0) {
if (wrapperHeight > windowHeight)
$('html').animate({ scrollTop: wrapperOffset.top }, 125);
else
$('html').animate({ scrollTop: windowScrollTop + wrapperBottomNotShown }, 125);
}
}
}, 1);
}
}
//$(dataTables).bind('page', scrollCheck);
//$(dataTables).bind('filter', scrollCheck);
//$(dataTables).bind('sort', scrollCheck);
});
})(window, document, $);