1. Made changes so that in temporal vis, the pagination navs for the datatable are hidden if there is only one page worth of elements or no pages at all. (see http://issues.library.cornell.edu/browse/NIHVIVO-2191)

This commit is contained in:
cdtank 2011-03-03 21:59:05 +00:00
parent 8a45a8a3a1
commit d00685eee0
3 changed files with 173 additions and 178 deletions

View file

@ -147,14 +147,14 @@ function performEntityCheckboxClickedRedrawActions() {
* values from the json file and
* dynamically generate checkboxes
*/
function loadData(jsonData) {
function loadData(jsonData, dataTableParams) {
$.each(jsonData, function (index, val) {
setOfLabels.push(val.label);
labelToEntityRecord[val.label] = val;
});
prepareTableForDataTablePagination(jsonData);
prepareTableForDataTablePagination(jsonData, dataTableParams);
setEntityLevel(getEntityVisMode(jsonData));
entityCheckboxOperatedOnEventListener();
@ -247,6 +247,12 @@ temporalGraphProcessor = {
initiateTemporalGraphRenderProcess: function(givenGraphContainer, jsonData) {
this.dataTableParams = {
searchBarParentContainerDIVClass : "searchbar",
paginationContainerDIVClass : "paginatedtabs"
};
/*
* initial display of the grid when the page loads
* */
@ -255,7 +261,7 @@ temporalGraphProcessor = {
/*
* render the temporal graph per the sent content.
* */
loadData(jsonData);
loadData(jsonData, this.dataTableParams);
/*
* This will make sure that top 3 entities are selected by default when the page loads.

View file

@ -3,6 +3,7 @@
.filterInfo {
float:left;
margin-top: 15px;
margin-bottom: 10px;
}
.filterInfo div {

View file

@ -4,8 +4,8 @@
$.fn.dataTableExt.oPagination.gmail_style = {
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
{
"fnInit": function (oSettings, nPaging, fnCallbackDraw) {
//var nInfo = document.createElement( 'div' );
var nFirst = document.createElement('span');
var nPrevious = document.createElement('span');
@ -37,41 +37,38 @@ $.fn.dataTableExt.oPagination.gmail_style = {
nPaging.appendChild(nLast);
$(nFirst).click(function () {
if ( oSettings.oApi._fnPageChange( oSettings, "first" ) )
{
if (oSettings.oApi._fnPageChange(oSettings, "first")) {
fnCallbackDraw(oSettings);
}
});
$(nPrevious).click(function () {
if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) )
{
if (oSettings.oApi._fnPageChange(oSettings, "previous")) {
fnCallbackDraw(oSettings);
}
});
$(nNext).click(function () {
if ( oSettings.oApi._fnPageChange( oSettings, "next" ) )
{
if (oSettings.oApi._fnPageChange(oSettings, "next")) {
fnCallbackDraw(oSettings);
}
});
$(nLast).click(function () {
if ( oSettings.oApi._fnPageChange( oSettings, "last" ) )
{
if (oSettings.oApi._fnPageChange(oSettings, "last")) {
fnCallbackDraw(oSettings);
}
});
/* Take the brutal approach to cancelling text selection */
$('span', nPaging)
.bind( 'mousedown', function () { return false; } )
.bind( 'selectstart', function () { return false; } );
$('span', nPaging).bind('mousedown', function () {
return false;
}).bind('selectstart', function () {
return false;
});
/* ID the first elements only */
if ( oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined" )
{
if (oSettings.sTableId !== '' && typeof oSettings.aanFeatures.p == "undefined") {
nPaging.setAttribute('id', oSettings.sTableId + '_paginate');
nFirst.setAttribute('id', oSettings.sTableId + '_first');
nPrevious.setAttribute('id', oSettings.sTableId + '_previous');
@ -88,10 +85,8 @@ $.fn.dataTableExt.oPagination.gmail_style = {
* Inputs: object:oSettings - dataTables settings object
* function:fnCallbackDraw - draw function to call on page change
*/
"fnUpdate": function ( oSettings, fnCallbackDraw )
{
if ( !oSettings.aanFeatures.p )
{
"fnUpdate": function (oSettings, fnCallbackDraw) {
if (!oSettings.aanFeatures.p) {
return;
}
@ -102,28 +97,25 @@ $.fn.dataTableExt.oPagination.gmail_style = {
var iStartButton, iEndButton, i, iLen;
var oClasses = oSettings.oClasses;
// console.log(iPageCount,
// iPageCountHalf,
// iPages,
// iCurrentPage,
// oClasses);
/* Pages calculation */
if (iPages < iPageCount)
{
if (iPages < iPageCount) {
iStartButton = 1;
iEndButton = iPages;
}
else
{
if (iCurrentPage <= iPageCountHalf)
{
} else {
if (iCurrentPage <= iPageCountHalf) {
iStartButton = 1;
iEndButton = iPageCount;
}
else
{
if (iCurrentPage >= (iPages - iPageCountHalf))
{
} else {
if (iCurrentPage >= (iPages - iPageCountHalf)) {
iStartButton = iPages - iPageCount + 1;
iEndButton = iPages;
}
else
{
} else {
iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
iEndButton = iStartButton + iPageCount - 1;
}
@ -133,51 +125,49 @@ $.fn.dataTableExt.oPagination.gmail_style = {
/* Loop over each instance of the pager */
var an = oSettings.aanFeatures.p;
var anButtons, anStatic, nPaginateList;
var fnClick = function() {
/* Use the information in the element to jump to the required page */
var fnClick = function () { /* Use the information in the element to jump to the required page */
var iTarget = (this.innerHTML * 1) - 1;
oSettings._iDisplayStart = iTarget * oSettings._iDisplayLength;
fnCallbackDraw(oSettings);
return false;
};
var fnFalse = function () { return false; };
var fnFalse = function () {
return false;
};
for ( i=0, iLen=an.length ; i<iLen ; i++ )
{
if ( an[i].childNodes.length === 0 )
{
for (i = 0, iLen = an.length; i < iLen; i++) {
if (an[i].childNodes.length === 0) {
continue;
}
/* Update the 'premanent botton's classes */
anButtons = an[i].getElementsByTagName('span');
anStatic = [
anButtons[0], anButtons[1],
anButtons[anButtons.length-2], anButtons[anButtons.length-1]
];
anButtons[0], anButtons[1], anButtons[anButtons.length - 2], anButtons[anButtons.length - 1]];
$(anStatic).removeClass(oClasses.sPageButton + " " + oClasses.sPageButtonActive + " " + oClasses.sPageButtonStaticDisabled);
if ( iCurrentPage == 1 )
{
if (iCurrentPage == 1) {
anStatic[0].className += " " + oClasses.sPageButtonStaticDisabled;
anStatic[1].className += " " + oClasses.sPageButtonStaticDisabled;
}
else
{
} else {
anStatic[0].className += " " + oClasses.sPageButton;
anStatic[1].className += " " + oClasses.sPageButton;
}
if ( iPages === 0 || iCurrentPage == iPages || oSettings._iDisplayLength == -1 )
{
if (iPages === 0 || iCurrentPage == iPages || oSettings._iDisplayLength == -1) {
anStatic[2].className += " " + oClasses.sPageButtonStaticDisabled;
anStatic[3].className += " " + oClasses.sPageButtonStaticDisabled;
}
else
{
} else {
anStatic[2].className += " " + oClasses.sPageButton;
anStatic[3].className += " " + oClasses.sPageButton;
}
}
if (iPages <= 1) {
$("." + temporalGraphProcessor.dataTableParams.paginationContainerDIVClass).hide();
} else {
$("." + temporalGraphProcessor.dataTableParams.paginationContainerDIVClass).show();
}
}
};
@ -946,7 +936,7 @@ function removeCheckBoxFromGlobalSet(checkbox){
* used by jquery.dataTables. The JsonObject
* returned is used to populate the pagination table.
*/
function prepareTableForDataTablePagination(jsonData){
function prepareTableForDataTablePagination(jsonData, dataTableParams){
resetStopWordCount();
var checkboxCount = 0;
@ -1017,10 +1007,8 @@ function prepareTableForDataTablePagination(jsonData){
table.append(tbody);
tableDiv.append(table);
var searchBarParentContainerDIVClass = "searchbar";
var entityListTable = $('#datatable').dataTable({
"sDom": '<"' + searchBarParentContainerDIVClass + '"f><"filterInfo"i><"paginatedtabs"p><"table-separator"><"datatablewrapper"t>',
"sDom": '<"' + dataTableParams.searchBarParentContainerDIVClass + '"f><"filterInfo"i><"' + dataTableParams.paginationContainerDIVClass + '"p><"table-separator"><"datatablewrapper"t>',
"aaSorting": [
[2, "desc"], [1,'asc']
],
@ -1045,7 +1033,7 @@ function prepareTableForDataTablePagination(jsonData){
});
var searchInputBox = $("." + searchBarParentContainerDIVClass).find("input[type=text]");
var searchInputBox = $("." + dataTableParams.searchBarParentContainerDIVClass).find("input[type=text]");
searchInputBox.after("<span id='reset-search' title='Clear Search query'>X</span>");