VIVO-485 convert datagetter to ajax call
This commit is contained in:
parent
50d788adb4
commit
6fd299301c
6 changed files with 152 additions and 83 deletions
|
@ -6,11 +6,12 @@ $(document).ready(function(){
|
||||||
var countryMapBuilt = false;
|
var countryMapBuilt = false;
|
||||||
var localMapBuilt = false;
|
var localMapBuilt = false;
|
||||||
var researchAreas = { "type": "FeatureCollection", "features": []};
|
var researchAreas = { "type": "FeatureCollection", "features": []};
|
||||||
|
var geoResearcherCount = "0";
|
||||||
|
|
||||||
$.extend(this, urlsBase);
|
$.extend(this, urlsBase);
|
||||||
$.extend(this, i18nStrings);
|
$.extend(this, i18nStrings);
|
||||||
$.extend(this, geoResearcherCount);
|
|
||||||
|
|
||||||
|
getGeoFocusResearcherCount();
|
||||||
getGeoJsonForMaps();
|
getGeoJsonForMaps();
|
||||||
|
|
||||||
$('a#globalLink').click(function() {
|
$('a#globalLink').click(function() {
|
||||||
|
@ -367,9 +368,26 @@ $(document).ready(function(){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getGeoFocusResearcherCount() {
|
||||||
|
$.ajax({
|
||||||
|
url: urlsBase + "/homePageAjax",
|
||||||
|
dataType: "json",
|
||||||
|
data: {
|
||||||
|
action: "getGeoFocusResearcherCount",
|
||||||
|
},
|
||||||
|
complete: function(xhr, status) {
|
||||||
|
|
||||||
|
var results = $.parseJSON(xhr.responseText);
|
||||||
|
// there will only ever be one key/value pair
|
||||||
|
if ( results != null ) {
|
||||||
|
geoResearcherCount = results.count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function getResearcherCount(area) {
|
function getResearcherCount(area) {
|
||||||
|
|
||||||
var researcherCount = this.geoResearcherCount;
|
|
||||||
var areaCount = 0;
|
var areaCount = 0;
|
||||||
var text = "";
|
var text = "";
|
||||||
if ( area == "global" ) {
|
if ( area == "global" ) {
|
||||||
|
@ -391,7 +409,7 @@ $(document).ready(function(){
|
||||||
if ( areaCount == 1 && text == " states.") {
|
if ( areaCount == 1 && text == " states.") {
|
||||||
text = " " + i18nStrings.stateString;
|
text = " " + i18nStrings.stateString;
|
||||||
}
|
}
|
||||||
if ( researcherCount == 1 ) {
|
if ( geoResearcherCount == 1 ) {
|
||||||
researcherText = " " + i18nStrings.researcherString + " " + i18nStrings.inString;
|
researcherText = " " + i18nStrings.researcherString + " " + i18nStrings.inString;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -399,7 +417,7 @@ $(document).ready(function(){
|
||||||
}
|
}
|
||||||
|
|
||||||
$('div#researcherTotal').html("<font style='font-size:1.05em;color:#167093'>"
|
$('div#researcherTotal').html("<font style='font-size:1.05em;color:#167093'>"
|
||||||
+ researcherCount
|
+ geoResearcherCount
|
||||||
+ "</font> " + researcherText + " <font style='font-size:1.05em;color:#167093'>"
|
+ "</font> " + researcherText + " <font style='font-size:1.05em;color:#167093'>"
|
||||||
+ areaCount + "</font>" + text);
|
+ areaCount + "</font>" + text);
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,17 +204,3 @@ var urlsBase = "${urls.base}";
|
||||||
-->
|
-->
|
||||||
</section>
|
</section>
|
||||||
</#macro>
|
</#macro>
|
||||||
|
|
||||||
<#-- retrieves a count, the number of researchers with a geographic focus, -->
|
|
||||||
<#-- and saves it as a js variable to be used by the homePageMaps.js file -->
|
|
||||||
<#macro getGeoResearcherCount>
|
|
||||||
<script>
|
|
||||||
|
|
||||||
<#if researcherCountDG?has_content>
|
|
||||||
<#assign theCount = researcherCountDG[0].count />
|
|
||||||
<#else>
|
|
||||||
<#assign theCount = 0 />
|
|
||||||
</#if>
|
|
||||||
var geoResearcherCount = ${theCount};
|
|
||||||
</script>
|
|
||||||
</#macro>
|
|
||||||
|
|
|
@ -17,35 +17,14 @@ display:academicDeptsDataGetter
|
||||||
display:saveToVar "academicDeptDG" ;
|
display:saveToVar "academicDeptDG" ;
|
||||||
display:query """
|
display:query """
|
||||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
|
||||||
PREFIX vivo: <http://vivoweb.org/ontology/core#>
|
PREFIX vivo: <http://vivoweb.org/ontology/core#>
|
||||||
|
|
||||||
SELECT DISTINCT ?theURI (str(?label) as ?name)
|
SELECT DISTINCT ?theURI (str(?label) as ?name)
|
||||||
WHERE
|
WHERE
|
||||||
{
|
{
|
||||||
?theURI rdf:type vivo:AcademicDepartment .
|
?theURI a vivo:AcademicDepartment .
|
||||||
?theURI rdfs:label ?label
|
?theURI rdfs:label ?label
|
||||||
}
|
}
|
||||||
|
|
||||||
""" .
|
""" .
|
||||||
|
|
||||||
<freemarker:lib-home-page.ftl> display:hasDataGetter display:researcherCountDataGetter .
|
|
||||||
|
|
||||||
display:researcherCountDataGetter
|
|
||||||
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter> ;
|
|
||||||
display:saveToVar "researcherCountDG" ;
|
|
||||||
display:query """
|
|
||||||
PREFIX geo: <http://aims.fao.org/aos/geopolitical.owl#>
|
|
||||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
|
||||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
|
||||||
PREFIX core: <http://vivoweb.org/ontology/core#>
|
|
||||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
|
||||||
PREFIX vivoc: <http://vivo.library.cornell.edu/ns/0.1#>
|
|
||||||
|
|
||||||
SELECT DISTINCT (COUNT(DISTINCT ?person) AS ?count)
|
|
||||||
WHERE {
|
|
||||||
?person rdf:type foaf:Person .
|
|
||||||
?person core:geographicFocus ?focus
|
|
||||||
}
|
|
||||||
|
|
||||||
""" .
|
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.controller.ajax;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.lang.Integer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
import com.hp.hpl.jena.query.QuerySolution;
|
||||||
|
import com.hp.hpl.jena.query.ResultSet;
|
||||||
|
import com.hp.hpl.jena.rdf.model.RDFNode;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.QueryUtils;
|
||||||
|
|
||||||
|
public class GeoFocusResearcherCount extends AbstractAjaxResponder {
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(GeoFocusResearcherCount.class.getName());
|
||||||
|
private List<Map<String,String>> geoFocusCount;
|
||||||
|
private static String GEO_FOCUS_COUNT_QUERY = ""
|
||||||
|
+ "PREFIX core: <http://vivoweb.org/ontology/core#> \n"
|
||||||
|
+ "PREFIX foaf: <http://xmlns.com/foaf/0.1/> \n"
|
||||||
|
+ "SELECT DISTINCT (COUNT(DISTINCT ?person) AS ?count) \n"
|
||||||
|
+ "WHERE { \n"
|
||||||
|
+ " ?person a foaf:Person . \n"
|
||||||
|
+ " ?person core:geographicFocus ?focus \n"
|
||||||
|
+ "}" ;
|
||||||
|
|
||||||
|
public GeoFocusResearcherCount(HttpServlet parent, VitroRequest vreq,
|
||||||
|
HttpServletResponse resp) {
|
||||||
|
super(parent, vreq, resp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String prepareResponse() throws IOException, JSONException {
|
||||||
|
try {
|
||||||
|
geoFocusCount = getGeoFocusCount(vreq);
|
||||||
|
|
||||||
|
String response = "{ ";
|
||||||
|
|
||||||
|
for (Map<String, String> map: geoFocusCount) {
|
||||||
|
String theCount = map.get("count");
|
||||||
|
response += "\"count\": \"" + theCount + "\"";
|
||||||
|
}
|
||||||
|
response += " }";
|
||||||
|
log.debug(response);
|
||||||
|
return response;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed geographic focus count", e);
|
||||||
|
return EMPTY_RESPONSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Map<String,String>> getGeoFocusCount(VitroRequest vreq) {
|
||||||
|
|
||||||
|
String queryStr = GEO_FOCUS_COUNT_QUERY;
|
||||||
|
log.debug("queryStr = " + queryStr);
|
||||||
|
List<Map<String,String>> count = new ArrayList<Map<String,String>>();
|
||||||
|
try {
|
||||||
|
ResultSet results = QueryUtils.getQueryResults(queryStr, vreq);
|
||||||
|
while (results.hasNext()) {
|
||||||
|
QuerySolution soln = results.nextSolution();
|
||||||
|
count.add(QueryUtils.querySolutionToStringValueMap(soln));
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,7 +30,11 @@ public class HomePageAjaxController extends VitroAjaxController {
|
||||||
String function = vreq.getParameter(PARAMETER_ACTION);
|
String function = vreq.getParameter(PARAMETER_ACTION);
|
||||||
if ("getGeoFocusLocations".equals(function)) {
|
if ("getGeoFocusLocations".equals(function)) {
|
||||||
new GeoFocusMapLocations(this, vreq, resp).processRequest();
|
new GeoFocusMapLocations(this, vreq, resp).processRequest();
|
||||||
} else {
|
}
|
||||||
|
else if ("getGeoFocusResearcherCount".equals(function)) {
|
||||||
|
new GeoFocusResearcherCount(this, vreq, resp).processRequest();
|
||||||
|
}
|
||||||
|
else {
|
||||||
resp.getWriter().write("[]");
|
resp.getWriter().write("[]");
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
@ -110,6 +110,5 @@
|
||||||
$('input.search-homepage').attr("value","${i18n().limit_search} \u2192");
|
$('input.search-homepage').attr("value","${i18n().limit_search} \u2192");
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<@lh.getGeoResearcherCount/>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
Add table
Reference in a new issue