/* $This file is distributed under the terms of the license in /doc/license.txt$ */ var browseClassGroups = { // Initial page setup onLoad: function() { this.mergeFromTemplate(); this.initObjects(); this.bindEventListeners(); }, // Add variables from browse template mergeFromTemplate: function() { $.extend(this, browseData); $.extend(this, i18nStrings); }, // Create references to frequently used elements for convenience initObjects: function() { this.vClassesInClassGroup = $('ul#classes-in-classgroup'); this.browseClassGroupLinks = $('#browse-classgroups li a'); this.browseClasses = $('#browse-classes'); }, // Event listeners. Called on page load bindEventListeners: function() { // Listener for classGroup switching this.browseClassGroupLinks.click(function() { uri = $(this).attr("data-uri"); individualCount = $(this).attr("data-count"); browseClassGroups.getVClasses(uri, individualCount); return false; }); // Call the bar chart highlighter listener this.chartHighlighterListener(); }, // Listener for bar chart highlighting -- separate from the rest because it needs to be callable chartHighlighterListener: function() { // This essentially replicates the native Raphael hover behavior (see chart.hover below) // but allows us to trigger it via jQuery from the list of classes adjacent to the chart $('ul#classes-in-classgroup li a').hover(function() { var classIndex = $('ul#classes-in-classgroup li a').index(this); $('#visual-graph svg path').eq(classIndex).attr('fill', '#ccc'); return false; }, function() { var classIndex = $('ul#classes-in-classgroup li a').index(this); $('#visual-graph svg path').eq(classIndex).attr('fill', '#999'); }) }, // Load classes and chart for default class group as defined by template defaultClassGroup: function() { if ( this.defaultBrowseClassGroupURI != "false" ) { this.getVClasses(this.defaultBrowseClassGroupUri, this.defaultBrowseClassGroupCount); } }, // Where all the magic happens -- gonna fetch me some classes getVClasses: function(classgroupUri, classGroupIndivCount) { url = this.dataServiceUrl + encodeURIComponent(classgroupUri); // First wipe currently displayed classes, browse all link, and bar chart this.vClassesInClassGroup.empty(); $('a.browse-superclass').remove(); $('#visual-graph').empty(); var values = [], labels = [], uris = [], classList = [], populatedClasses = 0; potentialSuperClasses = []; $.getJSON(url, function(results) { $.each(results.classes, function(i, item) { name = results.classes[i].name; uri = results.classes[i].URI; indivCount = results.classes[i].entityCount; indexUrl = browseClassGroups.baseUrl +'/individuallist?vclassId='+ encodeURIComponent(uri); // Only add to the arrays and render classes when they aren't empty if ( indivCount > 0 ) { // if the class individual count is equal to the class group individual count, this could be a super class if ( indivCount == classGroupIndivCount ) { potentialSuperClasses.push(populatedClasses); } values.push(parseInt(indivCount, 10)); labels.push(name); uris.push(uri); // Build the content of each list item, piecing together each component listItem = '