From f9faa680f27b621bd687cedabbae0474466d189e Mon Sep 17 00:00:00 2001 From: nac26 Date: Wed, 26 Jan 2011 14:32:26 +0000 Subject: [PATCH] NIHVIVO-1073 Pagination for browsing individuals --- webapp/web/js/menupage/browseByVClass.js | 108 ++++++++++++++++++----- 1 file changed, 85 insertions(+), 23 deletions(-) diff --git a/webapp/web/js/menupage/browseByVClass.js b/webapp/web/js/menupage/browseByVClass.js index a8bd786c9..74e3acfff 100644 --- a/webapp/web/js/menupage/browseByVClass.js +++ b/webapp/web/js/menupage/browseByVClass.js @@ -15,39 +15,57 @@ var browseByVClass = { // Create references to frequently used elements for convenience initObjects: function() { - this.vgraphVClasses = $('#vgraph-childClasses'); - this.vgraphVClassLinks = $('#vgraph-childClasses li a'); - this.browseVClasses = $('#browse-childClasses'); - this.browseVClassLinks = $('#browse-childClasses li a'); - this.selectedBrowseVClass = $('#browse-childClasses li a.selected'); - this.alphaIndex = $('#alpha-browse-childClass'); - this.alphaIndexLinks = $('#alpha-browse-childClass li a'); - this.selectedAlphaIndex = $('#alpha-browse-childClass li a.selected'); - this.individualsInVClass = $('#individuals-in-childClass ul'); + this.vgraphVClasses = $('#vgraph-classes'); + this.vgraphVClassLinks = $('#vgraph-classes li a'); + this.browseVClasses = $('#browse-classes'); + this.browseVClassLinks = $('#browse-classes li a'); + this.selectedBrowseVClass = $('#browse-classes li a.selected'); + this.alphaIndex = $('#alpha-browse-individuals'); + this.alphaIndexLinks = $('#alpha-browse-individuals li a'); + this.selectedAlphaIndex = $('#alpha-browse-individuals li a.selected'); + this.paginationNav = $('nav.pagination'); + this.paginationLinks = $('nav.pagination li a'); + this.individualsInVClass = $('#individuals-in-class ul'); + this.individualsContainer = $('#individuals-in-class'); }, // Event listeners. Called on page load bindEventListeners: function() { // Listeners for vClass switching this.vgraphVClassLinks.click(function() { - uri = $(this).attr("data-uri"); + uri = $(this).attr('data-uri'); browseByVClass.getIndividuals(uri); }); this.browseVClassLinks.click(function() { - uri = $(this).attr("data-uri"); + uri = $(this).attr('data-uri'); browseByVClass.getIndividuals(uri); return false; - }) + }); // Listener for alpha switching this.alphaIndexLinks.click(function() { - uri = $('#browse-childClasses li a.selected').attr("data-uri"); - alpha = $(this).attr("data-alpha"); + uri = $('#browse-classes li a.selected').attr('data-uri'); + alpha = $(this).attr('data-alpha'); // alpha = $(this).text().substring(0, 1); browseByVClass.getIndividuals(uri, alpha); return false; - }) + }); + + // Call the pagination listener + this.paginationListener(); + }, + + paginationListener: function() { + // Listener for page switching + // separate from the rest because it needs to be callable + $('nav.pagination li a').click(function() { + uri = $('#browse-classes li a.selected').attr('data-uri'); + alpha = $('#alpha-browse-individuals li a.selected').attr('data-alpha'); + page = $(this).attr('class').substring(4,5); + browseByVClass.getIndividuals(uri, alpha, page); + return false; + }); }, // Load individuals for default class as specified by menupage template @@ -57,16 +75,54 @@ var browseByVClass = { } }, - getIndividuals: function(vclassUri, alpha) { + getIndividuals: function(vclassUri, alpha, page) { url = this.dataServiceUrl + encodeURIComponent(vclassUri); if ( alpha && alpha != "all") { - url = url + '&alpha=' + alpha; + url += '&alpha=' + alpha; + } + if ( page ) { + url += '&page=' + page; + } else { + page = 1; } - // First wipe currently displayed individuals + // First wipe currently displayed individuals and existing pagination this.individualsInVClass.empty(); + $('nav.pagination').remove(); $.getJSON(url, function(results) { + // Check to see if we're dealing with pagination + if ( results.pages.length ) { + pages = results.pages; + + pagination = '