diff --git a/webapp/web/js/account/accountProxyCommon.js b/webapp/web/js/account/accountProxyCommon.js
index 62c0b12c9..309568d8f 100644
--- a/webapp/web/js/account/accountProxyCommon.js
+++ b/webapp/web/js/account/accountProxyCommon.js
@@ -29,19 +29,23 @@
function proxyInfoElement(template, uri, label, classLabel, imageUrl, existing) {
this.uri = uri;
+ this.label = label;
+ this.classLabel = classLabel;
+ this.imageUrl = imageUrl;
var existed = existing;
var removed = false;
- var content = template.replace(/%uri%/g, uri).replace(/%label%/g, label)
- .replace(/%classLabel%/g, classLabel).replace(/%imageUrl%/g,
- imageUrl);
-
this.toString = function() {
return "proxyInfoElement: " + content;
}
this.element = function() {
+ var content = template.replace(/%uri%/g, this.uri)
+ .replace(/%label%/g, this.label)
+ .replace(/%classLabel%/g, this.classLabel)
+ .replace(/%imageUrl%/g, this.imageUrl);
+
var element = $("
" + content + "
");
var removeLink = $("[templatePart='remove']", element).first();
var removeText = removeLink.text();
@@ -87,8 +91,8 @@ function proxyInfoElement(template, uri, label, classLabel, imageUrl, existing)
* that are already present in the list and so should be filtered out of
* the autocomplete response.
* addProxyInfo -- a function that we can call when an item is selected.
- * It will take the uri, label, classLabel, and imageUrl, build a
- * proxyInfoElement, and add it to the panel.
+ * It will take the selection info, build a proxyInfoElement, and add
+ * it to the panel.
* ----------------------------------------------------------------------------
* Before executing the AJAX request, the query from the parms map will be modified,
* replacing "%term%" with the current search term.
@@ -142,7 +146,7 @@ function proxyAutocomplete(parms, getProxyInfos, addProxyInfo) {
}
this.select = function(event, ui) {
- addProxyInfo(ui.item.uri, ui.item.label, ui.item.classLabel, ui.item.imageUrl);
+ addProxyInfo(ui.item);
event.preventDefault();
event.target.value = '';
}
diff --git a/webapp/web/js/account/accountProxyProxiesPanel.js b/webapp/web/js/account/accountProxyProxiesPanel.js
index 6ba9e0e8e..413c7c884 100644
--- a/webapp/web/js/account/accountProxyProxiesPanel.js
+++ b/webapp/web/js/account/accountProxyProxiesPanel.js
@@ -1,7 +1,12 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
function proxyProxiesPanel(p) {
- var query = "PREFIX fn: \n"
+ var sparqlQueryUrl = '../ajax/sparqlQuery';
+ var matchingProperty = "http://vivoweb.org/ontology/core#scopusId"
+ var urlContext = 'http://localhost:8080/vivo'
+
+ var query = ""
+ + "PREFIX fn: \n"
+ "PREFIX auth: \n"
+ "\n"
+ "SELECT DISTINCT ?uri ?label ?externalAuthId \n"
@@ -16,6 +21,30 @@ function proxyProxiesPanel(p) {
+ "ORDER BY ASC(?lastName) ASC(?firstName) \n"
+ "LIMIT 25 \n";
+ var moreInfoQuery = ""
+ + "PREFIX rdfs: \n"
+ + "PREFIX vitro: \n"
+ + "PREFIX p.1: \n"
+ + " \n"
+ + "SELECT ?uri ?classLabel ?imageUrl \n"
+ + "WHERE \n"
+ + "{ \n"
+ + " ?uri <%matchingProperty%> '%externalAuthId%'. \n"
+ + " \n"
+ + " OPTIONAL { \n"
+ + " ?uri vitro:mostSpecificType ?type. \n"
+ + " ?type rdfs:label ?classLabel \n"
+ + " } \n"
+ + " \n"
+ + " OPTIONAL { \n"
+ + " ?uri p.1:mainImage ?imageUri. \n"
+ + " ?imageUri p.1:thumbnailImage ?thumbUri. \n"
+ + " ?thumbUri p.1:downloadLocation ?thumbstreamUri. \n"
+ + " ?thumbstreamUri p.1:directDownloadUrl ?imageUrl. \n"
+ + " } \n"
+ + "} \n"
+ + "LIMIT 1 \n";
+
var self = this;
this.disableFormInUnsupportedBrowsers = function() {
@@ -63,6 +92,29 @@ function proxyProxiesPanel(p) {
if (this.disableFormInUnsupportedBrowsers()) {
return;
}
+
+ this.getAdditionalInfo = function(info, externalAuthId) {
+ $.ajax({
+ url: sparqlQueryUrl,
+ dataType: 'json',
+ data: {
+ query: moreInfoQuery.replace("%matchingProperty%", matchingProperty).replace("%externalAuthId%", externalAuthId)
+ },
+ complete: function(xhr, status) {
+ var results = $.parseJSON(xhr.responseText);
+ var parsed = sparqlUtils.parseSparqlResults(results);
+ if (parsed.length > 0) {
+ if ("classLabel" in parsed[0]) {
+ info.classLabel = parsed[0].classLabel;
+ }
+ if ("imageUrl" in parsed[0]) {
+ info.imageUrl = urlContext + parsed[0].imageUrl;
+ }
+ self.displayProxyData();
+ }
+ }
+ });
+ }
this.panel = p;
this.proxyDataDiv = $("div[name='proxyData']", this.panel).first();
@@ -76,8 +128,10 @@ function proxyProxiesPanel(p) {
return self.proxyData;
}
- this.addProxyInfo = function(uri, label, junk1, junk2) {
- self.proxyData.unshift(new proxyInfoElement(self.templateHtml, uri, label, "", "", false));
+ this.addProxyInfo = function(selection) {
+ var info = new proxyInfoElement(self.templateHtml, selection.uri, selection.label, "", "", false)
+ self.proxyData.unshift(info);
+ self.getAdditionalInfo(info, selection.externalAuthId)
self.displayProxyData();
}
@@ -85,7 +139,7 @@ function proxyProxiesPanel(p) {
var parms = {
query: query,
model: "userAccounts",
- url: '../ajax/sparqlQuery'
+ url: sparqlQueryUrl
};
this.addAutoCompleteField.autocomplete(new proxyAutocomplete(parms, this.getProxyInfos, this.addProxyInfo));
}