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 localMapBuilt = false;
|
||||
var researchAreas = { "type": "FeatureCollection", "features": []};
|
||||
var geoResearcherCount = "0";
|
||||
|
||||
$.extend(this, urlsBase);
|
||||
$.extend(this, i18nStrings);
|
||||
$.extend(this, geoResearcherCount);
|
||||
|
||||
getGeoFocusResearcherCount();
|
||||
getGeoJsonForMaps();
|
||||
|
||||
$('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) {
|
||||
|
||||
var researcherCount = this.geoResearcherCount;
|
||||
var areaCount = 0;
|
||||
var text = "";
|
||||
if ( area == "global" ) {
|
||||
|
@ -391,7 +409,7 @@ $(document).ready(function(){
|
|||
if ( areaCount == 1 && text == " states.") {
|
||||
text = " " + i18nStrings.stateString;
|
||||
}
|
||||
if ( researcherCount == 1 ) {
|
||||
if ( geoResearcherCount == 1 ) {
|
||||
researcherText = " " + i18nStrings.researcherString + " " + i18nStrings.inString;
|
||||
}
|
||||
else {
|
||||
|
@ -399,7 +417,7 @@ $(document).ready(function(){
|
|||
}
|
||||
|
||||
$('div#researcherTotal').html("<font style='font-size:1.05em;color:#167093'>"
|
||||
+ researcherCount
|
||||
+ geoResearcherCount
|
||||
+ "</font> " + researcherText + " <font style='font-size:1.05em;color:#167093'>"
|
||||
+ areaCount + "</font>" + text);
|
||||
}
|
||||
|
|
|
@ -204,17 +204,3 @@ var urlsBase = "${urls.base}";
|
|||
-->
|
||||
</section>
|
||||
</#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:query """
|
||||
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#>
|
||||
|
||||
SELECT DISTINCT ?theURI (str(?label) as ?name)
|
||||
WHERE
|
||||
{
|
||||
?theURI rdf:type vivo:AcademicDepartment .
|
||||
?theURI a vivo:AcademicDepartment .
|
||||
?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;
|
||||
}
|
||||
}
|
|
@ -1,42 +1,46 @@
|
|||
/* $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 javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
||||
|
||||
/**
|
||||
* Handle the AJAX functions that are specific to the "new" home page sections, at
|
||||
* this point just the mapping of geographic locations.
|
||||
*/
|
||||
public class HomePageAjaxController extends VitroAjaxController {
|
||||
private static final Log log = LogFactory
|
||||
.getLog(HomePageAjaxController.class);
|
||||
|
||||
private static final String PARAMETER_ACTION = "action";
|
||||
|
||||
@Override
|
||||
protected void doRequest(VitroRequest vreq, HttpServletResponse resp)
|
||||
throws ServletException, IOException {
|
||||
try {
|
||||
String function = vreq.getParameter(PARAMETER_ACTION);
|
||||
if ("getGeoFocusLocations".equals(function)) {
|
||||
new GeoFocusMapLocations(this, vreq, resp).processRequest();
|
||||
} else {
|
||||
resp.getWriter().write("[]");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e, e);
|
||||
resp.getWriter().write("[]");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/* $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 javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
||||
|
||||
/**
|
||||
* Handle the AJAX functions that are specific to the "new" home page sections, at
|
||||
* this point just the mapping of geographic locations.
|
||||
*/
|
||||
public class HomePageAjaxController extends VitroAjaxController {
|
||||
private static final Log log = LogFactory
|
||||
.getLog(HomePageAjaxController.class);
|
||||
|
||||
private static final String PARAMETER_ACTION = "action";
|
||||
|
||||
@Override
|
||||
protected void doRequest(VitroRequest vreq, HttpServletResponse resp)
|
||||
throws ServletException, IOException {
|
||||
try {
|
||||
String function = vreq.getParameter(PARAMETER_ACTION);
|
||||
if ("getGeoFocusLocations".equals(function)) {
|
||||
new GeoFocusMapLocations(this, vreq, resp).processRequest();
|
||||
}
|
||||
else if ("getGeoFocusResearcherCount".equals(function)) {
|
||||
new GeoFocusResearcherCount(this, vreq, resp).processRequest();
|
||||
}
|
||||
else {
|
||||
resp.getWriter().write("[]");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e, e);
|
||||
resp.getWriter().write("[]");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -110,6 +110,5 @@
|
|||
$('input.search-homepage').attr("value","${i18n().limit_search} \u2192");
|
||||
}
|
||||
</script>
|
||||
<@lh.getGeoResearcherCount/>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Reference in a new issue