/* $This file is distributed under the terms of the license in /doc/license.txt$ */ var browseByVClass = { // Initial page setup onLoad: function() { this.mergeFromTemplate(); this.initObjects(); this.bindEventListeners(); }, // Add variables from menupage template mergeFromTemplate: function() { $.extend(this, menupageData); }, // Create references to frequently used elements for convenience initObjects: function() { 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'); browseByVClass.getIndividuals(uri); }); this.browseVClassLinks.click(function() { uri = $(this).attr('data-uri'); browseByVClass.getIndividuals(uri); return false; }); // Listener for alpha switching this.alphaIndexLinks.click(function() { 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 defaultVClass: function() { if ( this.defaultBrowseVClassURI != "false" ) { this.getIndividuals(this.defaultBrowseVClassUri); } }, getIndividuals: function(vclassUri, alpha, page) { url = this.dataServiceUrl + encodeURIComponent(vclassUri); if ( alpha && alpha != "all") { url += '&alpha=' + alpha; } if ( page ) { url += '&page=' + page; } else { page = 1; } // 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 = '