diff --git a/webapp/web/css/menupage/menupage.css b/webapp/web/css/menupage/menupage.css index 894c0b9d3..faa379d2b 100644 --- a/webapp/web/css/menupage/menupage.css +++ b/webapp/web/css/menupage/menupage.css @@ -248,40 +248,43 @@ li.individual h1.thumb { #individuals-in-class span.org { display: block; } -nav.pagination { +p.no-individuals { + margin: 1em 2em; +} +.pagination { margin: .3em 0 0 1.4em; } -nav.pagination h3 { +.pagination h3 { display: inline; margin: 0 .3em 0 0; padding: 0; font-size: 1.1em; color: #666; } -nav.pagination ul { +.pagination ul { display: inline; } -nav.pagination li { +.pagination li { display: inline-block; margin: 0; border: none; } -nav.pagination li.selected { +.pagination li.selected { padding: 0 0.4em; line-height: 1.5; color: #333; background: #ddd; } -nav.pagination li a { +.pagination li a { padding: 0 0.4em; border: none; } -nav.pagination li a:hover { +.pagination li a:hover { color: #fff; background: #333; border: none; } -nav.pagination .round { +.pagination .round { -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; diff --git a/webapp/web/js/menupage/browseByVClass.js b/webapp/web/js/menupage/browseByVClass.js index c9b693393..03ce3f2c9 100644 --- a/webapp/web/js/menupage/browseByVClass.js +++ b/webapp/web/js/menupage/browseByVClass.js @@ -21,8 +21,6 @@ var browseByVClass = { this.browseVClassLinks = $('#browse-classes li a'); this.alphaIndex = $('#alpha-browse-individuals'); this.alphaIndexLinks = $('#alpha-browse-individuals li a'); - this.paginationNav = $('nav.pagination'); - this.paginationLinks = $('nav.pagination li a'); this.individualsInVClass = $('#individuals-in-class ul'); this.individualsContainer = $('#individuals-in-class'); }, @@ -56,7 +54,7 @@ var browseByVClass = { // Listener for page switching -- separate from the rest because it needs to be callable paginationListener: function() { - $('nav.pagination li a').click(function() { + $('.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); @@ -87,60 +85,91 @@ var browseByVClass = { scroll = true; } - // First wipe currently displayed class heading, individuals, and existing pagination - $('h3.selected-class').remove(); - this.individualsInVClass.empty(); - $('nav.pagination').remove(); + // Scroll to #menupage-intro page unless told otherwise + if ( scroll != false ) { + // only scroll back up if we're past the top of the #browse-by section + scrollPosition = browseByVClass.getPageScroll(); + browseByOffset = $('#browse-by').offset(); + if ( scrollPosition[1] > browseByOffset.top) { + $.scrollTo('#menupage-intro', 500); + } + } $.getJSON(url, function(results) { - // Check to see if we're dealing with pagination - if ( results.pages.length ) { - pages = results.pages; - browseByVClass.pagination(pages, page); - } + individualList = ""; - selectedClassHeading = '

'+ results.vclass.name +'

'; - browseByVClass.individualsContainer.prepend(selectedClassHeading); - - $.each(results.individuals, function(i, item) { - label = results.individuals[i].label; - moniker = results.individuals[i].moniker; - vclassName = results.individuals[i].vclassName; - uri = results.individuals[i].URI; - profileUrl = results.individuals[i].profileUrl; - if ( results.individuals[i].thumbUrl ) { - image = browseByVClass.baseUrl + results.individuals[i].thumbUrl; + // Catch exceptions when empty individuals result set is returned + // This is very likely to happen now since we don't have individual counts for each letter and always allow the result set to be filtered by any letter + if ( results.individuals.length == 0 ) { + browseByVClass.emptyResultSet(results.vclass, alpha) + } else { + $.each(results.individuals, function(i, item) { + label = results.individuals[i].label; + moniker = results.individuals[i].moniker; + vclassName = results.individuals[i].vclassName; + uri = results.individuals[i].URI; + profileUrl = results.individuals[i].profileUrl; + if ( results.individuals[i].thumbUrl ) { + image = browseByVClass.baseUrl + results.individuals[i].thumbUrl; + } + // Build the content of each list item, piecing together each component + listItem = '
  • '; + if ( typeof results.individuals[i].thumbUrl !== "undefined" ) { + listItem += ''+ label +'

    '; + } else { + listItem += '

    '; + } + listItem += ''+ label +'

    '; + // Include the moniker only if it's not empty and not equal to the VClass name + if ( moniker != vclassName && moniker != "" ) { + listItem += ''+ moniker +''; + } + listItem += '
  • '; + // browseByVClass.individualsInVClass.append(listItem); + individualList += listItem; + }) + + // Remove existing content + browseByVClass.wipeSlate(); + + // And then add the new content + browseByVClass.individualsInVClass.append(individualList); + + // Check to see if we're dealing with pagination + if ( results.pages.length ) { + pages = results.pages; + browseByVClass.pagination(pages, page); } - // Build the content of each list item, piecing together each component - listItem = '
  • '; - if ( typeof results.individuals[i].thumbUrl !== "undefined" ) { - listItem += ''+ label +'

    '; - } else { - listItem += '

    '; - } - listItem += ''+ label +'

    '; - // Include the moniker only if it's not empty and not equal to the VClass name - if ( moniker != vclassName && moniker != "" ) { - listItem += ''+ moniker +''; - } - listItem += '
  • '; - browseByVClass.individualsInVClass.append(listItem); - }) - - // Set selected class, alpha and page - browseByVClass.selectedVClass(results.vclass.URI); - browseByVClass.selectedAlpha(alpha); - - // Scroll to #menupage-intro page unless told otherwise - if ( scroll != false ) { - $.scrollTo('#menupage-intro', 500); + + selectedClassHeading = '

    '+ results.vclass.name +'

    '; + browseByVClass.individualsContainer.prepend(selectedClassHeading); + + // Set selected class, alpha and page + browseByVClass.selectedVClass(results.vclass.URI); + browseByVClass.selectedAlpha(alpha); } }); }, + // getPageScroll() by quirksmode.org + getPageScroll: function() { + var xScroll, yScroll; + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && document.documentElement.scrollTop) { + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + return new Array(xScroll,yScroll) + }, + // Print out the pagination nav if called pagination: function(pages, page) { - pagination = '