2011-06-24 17:05:34 +00:00
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
// This file extends and proxies the default behavior defined in vitro/webapp/web/js/menupage/browseByVClass.js
// Saving the original getIndividuals function from browseByVClass
var getPersonIndividuals = browseByVClass . getIndividuals ;
browseByVClass . getIndividuals = function ( vclassUri , alpha , page , scroll ) {
url = encodeURIComponent ( vclassUri ) ;
var restrictClasses = $ ( '#restrictClasses' ) . val ( ) ;
if ( restrictClasses . length > 0 ) {
if ( restrictClasses . indexOf ( "," ) != - 1 ) {
var restrictClassesArray = restrictClasses . split ( "," ) ;
var restrictUris = restrictClassesArray . join ( "&vclassId=" ) ;
url += "&vclassId=" + restrictUris ;
}
else {
//does this need to be uri encoded? - assuming already url encoded
url += "&vclassId=" + restrictClasses ;
}
}
url = this . dataServiceUrl + url ;
//Get restriction classes from url
if ( alpha && alpha != "all" ) {
url = url + '&alpha=' + alpha ;
}
if ( page ) {
url += '&page=' + page ;
} else {
page = 1 ;
}
if ( typeof scroll === "undefined" ) {
scroll = true ;
}
// 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 ) {
2011-07-06 21:56:02 +00:00
var individualList = "" ;
2011-06-24 17:05:34 +00:00
// 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 ) {
2011-07-06 21:56:02 +00:00
var individual ,
label ,
firstName ,
lastName ,
fullName ,
vclassName ,
preferredTitle ,
uri ,
profileUrl ,
image ,
listItem ;
individual = results . individuals [ i ] ;
label = individual . label ;
firstName = individual . firstName ;
lastName = individual . lastName ;
2011-06-24 17:05:34 +00:00
if ( firstName && lastName ) {
fullName = firstName + ' ' + lastName ;
} else {
fullName = label ;
}
2011-07-06 21:56:02 +00:00
var vclassName = individual . vclassName ;
if ( individual . preferredTitle ) {
preferredTitle = individual . preferredTitle ;
2011-06-24 17:05:34 +00:00
}
2011-07-06 21:56:02 +00:00
uri = individual . URI ;
profileUrl = individual . profileUrl ;
if ( ! individual . thumbUrl ) {
2011-06-24 17:05:34 +00:00
image = browseByVClass . baseUrl + '/images/placeholders/person.thumbnail.jpg' ;
} else {
2011-07-06 21:56:02 +00:00
image = browseByVClass . baseUrl + individual . thumbUrl ;
2011-06-24 17:05:34 +00:00
}
// Build the content of each list item, piecing together each component
listItem = '<li class="vcard individual foaf-person" role="listitem" role="navigation">' ;
listItem += '<img src="' + image + '" width="90" alt="' + fullName + '" />' ;
listItem += '<h1 class="fn thumb"><a href="' + profileUrl + '" title="View the profile page for ' + fullName + '">' + fullName + '</a></h1>' ;
// Include the calculated preferred title (see above) only if it's not empty
2011-07-06 21:56:02 +00:00
if ( preferredTitle ) {
2011-06-24 17:05:34 +00:00
listItem += '<span class="title">' + preferredTitle + '</span>' ;
2011-07-06 21:56:02 +00:00
}
2011-06-24 17:05:34 +00:00
listItem += '</li>' ;
// 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 ) ;
}
2011-06-28 19:54:23 +00:00
2011-06-24 17:05:34 +00:00
if ( results . vclass ) {
2011-06-28 19:54:23 +00:00
$ ( 'h3.selected-class' ) . text ( results . vclass . name ) ;
// set selected class, alpha and page
browseByVClass . selectedVClass ( results . vclass . URI ) ;
2011-06-24 17:05:34 +00:00
}
browseByVClass . selectedAlpha ( alpha ) ;
}
} ) ;
} ;