Files
Disco/Disco.Web/ClientSource/Scripts/Modules/Disco-DataTableHelpers.js
T
Gary Sharp 7eb17a91c9 Removed minify source maps
These files have no route in mvc, so only cause 404 errors in browser
dev tools.
2015-02-02 20:58:47 +11: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, $);