diff --git a/productMods/js/visualization/entitycomparison/gui-event-manager.js b/productMods/js/visualization/entitycomparison/gui-event-manager.js index 388eff71..749dac63 100644 --- a/productMods/js/visualization/entitycomparison/gui-event-manager.js +++ b/productMods/js/visualization/entitycomparison/gui-event-manager.js @@ -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,15 +247,21 @@ temporalGraphProcessor = { initiateTemporalGraphRenderProcess: function(givenGraphContainer, jsonData) { + this.dataTableParams = { + searchBarParentContainerDIVClass : "searchbar", + paginationContainerDIVClass : "paginatedtabs" + }; + + /* * initial display of the grid when the page loads * */ init(givenGraphContainer); - + /* * 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. diff --git a/productMods/js/visualization/entitycomparison/jquery_plugins/datatable/demo_table.css b/productMods/js/visualization/entitycomparison/jquery_plugins/datatable/demo_table.css index 88fa30a2..51d1fec7 100644 --- a/productMods/js/visualization/entitycomparison/jquery_plugins/datatable/demo_table.css +++ b/productMods/js/visualization/entitycomparison/jquery_plugins/datatable/demo_table.css @@ -3,6 +3,7 @@ .filterInfo { float:left; margin-top: 15px; + margin-bottom: 10px; } .filterInfo div { diff --git a/productMods/js/visualization/entitycomparison/util.js b/productMods/js/visualization/entitycomparison/util.js index 3d40f4c7..c504e801 100644 --- a/productMods/js/visualization/entitycomparison/util.js +++ b/productMods/js/visualization/entitycomparison/util.js @@ -2,184 +2,174 @@ (function ($) { -$.fn.dataTableExt.oPagination.gmail_style = { + $.fn.dataTableExt.oPagination.gmail_style = { - "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) - { - //var nInfo = document.createElement( 'div' ); - var nFirst = document.createElement( 'span' ); - var nPrevious = document.createElement( 'span' ); - var nNext = document.createElement( 'span' ); - var nLast = document.createElement( 'span' ); - - /* + + "fnInit": function (oSettings, nPaging, fnCallbackDraw) { + //var nInfo = document.createElement( 'div' ); + var nFirst = document.createElement('span'); + var nPrevious = document.createElement('span'); + var nNext = document.createElement('span'); + var nLast = document.createElement('span'); + +/* nFirst.innerHTML = oSettings.oLanguage.oPaginate.sFirst; nPrevious.innerHTML = oSettings.oLanguage.oPaginate.sPrevious; nNext.innerHTML = oSettings.oLanguage.oPaginate.sNext; nLast.innerHTML = oSettings.oLanguage.oPaginate.sLast; */ - - nFirst.innerHTML = "« First"; - nPrevious.innerHTML = " Prev"; - nNext.innerHTML = "Next"; - nLast.innerHTML = "Last»"; - - var oClasses = oSettings.oClasses; - nFirst.className = oClasses.sPageButton+" "+oClasses.sPageFirst; - nPrevious.className = oClasses.sPageButton+" "+oClasses.sPagePrevious; - nNext.className= oClasses.sPageButton+" "+oClasses.sPageNext; - nLast.className = oClasses.sPageButton+" "+oClasses.sPageLast; - - //nPaging.appendChild( nInfo ); - nPaging.appendChild( nFirst ); - nPaging.appendChild( nPrevious ); - nPaging.appendChild( nNext ); - nPaging.appendChild( nLast ); - - $(nFirst).click( function () { - if ( oSettings.oApi._fnPageChange( oSettings, "first" ) ) - { - fnCallbackDraw( oSettings ); - } - } ); - - $(nPrevious).click( function() { - if ( oSettings.oApi._fnPageChange( oSettings, "previous" ) ) - { - fnCallbackDraw( oSettings ); - } - } ); - - $(nNext).click( function() { - if ( oSettings.oApi._fnPageChange( oSettings, "next" ) ) - { - fnCallbackDraw( oSettings ); - } - } ); - - $(nLast).click( function() { - 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; } ); - - /* ID the first elements only */ - 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' ); - //nInfo.setAttribute( 'id', 'infoContainer' ); - nNext.setAttribute( 'id', oSettings.sTableId+'_next' ); - nLast.setAttribute( 'id', oSettings.sTableId+'_last' ); - } - }, - - /* + + nFirst.innerHTML = "« First"; + nPrevious.innerHTML = " Prev"; + nNext.innerHTML = "Next"; + nLast.innerHTML = "Last»"; + + var oClasses = oSettings.oClasses; + nFirst.className = oClasses.sPageButton + " " + oClasses.sPageFirst; + nPrevious.className = oClasses.sPageButton + " " + oClasses.sPagePrevious; + nNext.className = oClasses.sPageButton + " " + oClasses.sPageNext; + nLast.className = oClasses.sPageButton + " " + oClasses.sPageLast; + + //nPaging.appendChild( nInfo ); + nPaging.appendChild(nFirst); + nPaging.appendChild(nPrevious); + nPaging.appendChild(nNext); + nPaging.appendChild(nLast); + + $(nFirst).click(function () { + if (oSettings.oApi._fnPageChange(oSettings, "first")) { + fnCallbackDraw(oSettings); + } + }); + + $(nPrevious).click(function () { + if (oSettings.oApi._fnPageChange(oSettings, "previous")) { + fnCallbackDraw(oSettings); + } + }); + + $(nNext).click(function () { + if (oSettings.oApi._fnPageChange(oSettings, "next")) { + fnCallbackDraw(oSettings); + } + }); + + $(nLast).click(function () { + 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; + }); + + /* ID the first elements only */ + 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'); + //nInfo.setAttribute( 'id', 'infoContainer' ); + nNext.setAttribute('id', oSettings.sTableId + '_next'); + nLast.setAttribute('id', oSettings.sTableId + '_last'); + } + }, + +/* * Function: oPagination.full_numbers.fnUpdate * Purpose: Update the list of page buttons shows * Returns: - * Inputs: object:oSettings - dataTables settings object * function:fnCallbackDraw - draw function to call on page change */ - "fnUpdate": function ( oSettings, fnCallbackDraw ) - { - if ( !oSettings.aanFeatures.p ) - { - return; - } - - var iPageCount = 5; - var iPageCountHalf = Math.floor(iPageCount / 2); - var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength); - var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1; - var iStartButton, iEndButton, i, iLen; - var oClasses = oSettings.oClasses; - - /* Pages calculation */ - if (iPages < iPageCount) - { - iStartButton = 1; - iEndButton = iPages; - } - else - { - if (iCurrentPage <= iPageCountHalf) - { - iStartButton = 1; - iEndButton = iPageCount; - } - else - { - if (iCurrentPage >= (iPages - iPageCountHalf)) - { - iStartButton = iPages - iPageCount + 1; - iEndButton = iPages; - } - else - { - iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1; - iEndButton = iStartButton + iPageCount - 1; - } - } - } - - /* 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 iTarget = (this.innerHTML * 1) - 1; - oSettings._iDisplayStart = iTarget * oSettings._iDisplayLength; - fnCallbackDraw( oSettings ); - return false; - }; - var fnFalse = function () { return false; }; - - for ( i=0, iLen=an.length ; i= (iPages - iPageCountHalf)) { + iStartButton = iPages - iPageCount + 1; + iEndButton = iPages; + } else { + iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1; + iEndButton = iStartButton + iPageCount - 1; + } + } + } + + /* 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 iTarget = (this.innerHTML * 1) - 1; + oSettings._iDisplayStart = iTarget * oSettings._iDisplayLength; + fnCallbackDraw(oSettings); + return false; + }; + var fnFalse = function () { + return false; + }; + + 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]]; + $(anStatic).removeClass(oClasses.sPageButton + " " + oClasses.sPageButtonActive + " " + oClasses.sPageButtonStaticDisabled); + if (iCurrentPage == 1) { + anStatic[0].className += " " + oClasses.sPageButtonStaticDisabled; + anStatic[1].className += " " + oClasses.sPageButtonStaticDisabled; + } else { + anStatic[0].className += " " + oClasses.sPageButton; + anStatic[1].className += " " + oClasses.sPageButton; + } + + if (iPages === 0 || iCurrentPage == iPages || oSettings._iDisplayLength == -1) { + anStatic[2].className += " " + oClasses.sPageButtonStaticDisabled; + anStatic[3].className += " " + oClasses.sPageButtonStaticDisabled; + } else { + anStatic[2].className += " " + oClasses.sPageButton; + anStatic[3].className += " " + oClasses.sPageButton; + } + } + + + if (iPages <= 1) { + $("." + temporalGraphProcessor.dataTableParams.paginationContainerDIVClass).hide(); + } else { + $("." + temporalGraphProcessor.dataTableParams.paginationContainerDIVClass).show(); + } + } + }; $.fn.ellipsis = function () { return this.each(function () { @@ -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; @@ -968,9 +958,9 @@ function prepareTableForDataTablePagination(jsonData){ entityLabelTH.html('Entity Name'); var publicationCountTH = $(''); - if($("select.comparisonValues option:selected").text() === "by Publications"){ + if ($("select.comparisonValues option:selected").text() === "by Publications") { publicationCountTH.html('Publication Count'); - }else{ + } else { publicationCountTH.html('Grant Count'); } @@ -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("X");