diff --git a/webapp/lib/gson-1.4.jar b/webapp/lib/gson-1.4.jar new file mode 100644 index 000000000..b9c33d039 Binary files /dev/null and b/webapp/lib/gson-1.4.jar differ diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/TestJava.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/TestJava.java index f16abce1e..99748cbd8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/TestJava.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/TestJava.java @@ -7,8 +7,10 @@ import java.util.Map; import java.util.Set; import java.util.TreeMap; +import com.google.gson.Gson; import com.hp.hpl.jena.iri.IRIFactory; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.GenericQueryMap; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Node; public class TestJava { @@ -46,10 +48,10 @@ public class TestJava { } Map yearToPublicationCount = new TreeMap(); -// yearToPublicationCount.put("2003", 5); -// yearToPublicationCount.put("2001", 5); -// yearToPublicationCount.put("2002", 5); -// yearToPublicationCount.put("2090", 7); + yearToPublicationCount.put("2003", 5); + yearToPublicationCount.put("2001", 5); + yearToPublicationCount.put("2002", 5); + yearToPublicationCount.put("2090", 7); yearToPublicationCount.put("Unknown", 6); Node egoNode; @@ -97,12 +99,32 @@ public class TestJava { } + GenericQueryMap stringToSetOfStrings = new GenericQueryMap(); + + stringToSetOfStrings.put("A", yearToPublicationCount.keySet()); + stringToSetOfStrings.put("B", yearToPublicationCount.keySet()); + stringToSetOfStrings.put("C", yearToPublicationCount.keySet()); + stringToSetOfStrings.put("imageOffset", keySet); + + Set what = new HashSet(); + + what.add("sup"); + + stringToSetOfStrings.put("imageOffset2", what); String emptyString = ""; System.out.println(emptyString.isEmpty()); - System.out.println(yearToPublicationCount); + System.out.println(stringToSetOfStrings); + + Gson gson = new Gson(); + String json = gson.toJson(stringToSetOfStrings); + + + System.out.println(json); + + // System.out.println(Collections.max(yearToPublicationCount.keySet())); // System.out.println(Collections.min(yearToPublicationCount.keySet())); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java index 1bc4d5bda..758112851 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/coauthorship/VisualizationRequestHandler.java @@ -49,11 +49,6 @@ public class VisualizationRequestHandler { String visContainer = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE); - System.out.println("******************************************************"); - System.out.println(VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE); - System.out.println(vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE)); - System.out.println(VisualizationFrameworkConstants.IMAGE_VIS_MODE_URL_VALUE); - QueryHandler queryManager = new QueryHandler(egoURIParam, resultFormatParam, diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationRequestHandler.java index 8f96ca3ec..f430727b3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationRequestHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/utilities/VisualizationRequestHandler.java @@ -14,6 +14,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; +import com.google.gson.Gson; import com.hp.hpl.jena.query.DataSource; import edu.cornell.mannlib.vitro.webapp.beans.Portal; @@ -51,6 +52,7 @@ public class VisualizationRequestHandler { String visMode = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE); + String profileInfoMode = "PROFILE_INFO"; String profileVisMode = "PROFILE_URL"; String coAuthorVisMode = "COAUTHORSHIP_URL"; String imageVisMode = "IMAGE_URL"; @@ -63,10 +65,50 @@ public class VisualizationRequestHandler { try { /* - * If the url being requested is about a standalone image, which is used when we want - * to render an image & other info for a co-author OR ego for that matter. + * If the info being requested is about a profile which includes the name, moniker + * & image url. * */ - if (imageVisMode.equalsIgnoreCase(visMode)) { + if (profileInfoMode.equalsIgnoreCase(visMode)) { + + + String filterRule = "?predicate = vitro:imageThumb || ?predicate = vitro:moniker || ?predicate = rdfs:label"; + GenericQueryHandler imageQueryHandler = new GenericQueryHandler(individualURIParam, + filterRule, + resultFormatParam, + rdfResultFormatParam, + dataSource, + log); + + try { + + GenericQueryMap profilePropertiesToValues = imageQueryHandler.getJavaValueObjects(); + + profilePropertiesToValues.addEntry("imageContextPath", request.getContextPath() + "/images/"); + + Gson profileInformation = new Gson(); + + prepareVisualizationQueryResponse(profileInformation.toJson(profilePropertiesToValues)); + + return; + + + } catch (MalformedQueryParametersException e) { + try { + handleMalformedParameters(e.getMessage()); + } catch (ServletException e1) { + log.error(e1.getStackTrace()); + } catch (IOException e1) { + log.error(e1.getStackTrace()); + } + return; + } + + + } else if (imageVisMode.equalsIgnoreCase(visMode)) { + /* + * If the url being requested is about a standalone image, which is used when we want + * to render an image & other info for a co-author OR ego for that matter. + * */ String filterRule = "?predicate = vitro:imageThumb"; @@ -82,9 +124,7 @@ public class VisualizationRequestHandler { GenericQueryMap imagePropertyToValues = imageQueryHandler.getJavaValueObjects(); String imagePath = ""; - /* - * If there is no imageThumb property we want to give the link to "No Image" snap. - * */ + if (imagePropertyToValues.size() > 0) { String vitroSparqlNamespace = QueryConstants.PREFIX_TO_NAMESPACE.get("vitro"); @@ -97,10 +137,8 @@ public class VisualizationRequestHandler { * expression power. * */ for (String providedImagePath : personImageThumbPaths) { - imagePath = "/images/" + providedImagePath; + imagePath = request.getContextPath() + "/images/" + providedImagePath; } - - } prepareVisualizationQueryResponse(imagePath); @@ -119,12 +157,11 @@ public class VisualizationRequestHandler { } - } - /* - * By default we will be generating profile url else some specific url like coAuthorShip vis - * url for that individual. - * */ - else if (coAuthorVisMode.equalsIgnoreCase(visMode)) { + } else if (coAuthorVisMode.equalsIgnoreCase(visMode)) { + /* + * By default we will be generating profile url else some specific url like coAuthorShip vis + * url for that individual. + * */ preparedURL += request.getContextPath() + "/admin/visQuery" diff --git a/webapp/web/images/people/erb_hollis_thumb.gif b/webapp/web/images/people/erb_hollis_thumb.gif new file mode 100644 index 000000000..0d6fb5b08 Binary files /dev/null and b/webapp/web/images/people/erb_hollis_thumb.gif differ diff --git a/webapp/web/js/visualization/coauthorship/co_authorship.js b/webapp/web/js/visualization/coauthorship/co_authorship.js new file mode 100644 index 000000000..e3f9b3ebe --- /dev/null +++ b/webapp/web/js/visualization/coauthorship/co_authorship.js @@ -0,0 +1,174 @@ +function getWellFormedURLs(given_uri, type) { + + // general best practice is to put javascript code inside document.ready + // but in this case when i do that the function does not get called + // properly. + // so removing it for now. + + // $(document).ready(function() { + + if (type == "coauthorship") { + + var finalURL = $.ajax({ + url: contextPath + "/admin/visQuery", + data: ({vis: "utilities", vis_mode: "COAUTHORSHIP_URL", uri: given_uri}), + dataType: "text", + async: false, + success:function(data){ + // console.log("COA - " + data); + } + }).responseText; + + return finalURL; + + + } else if (type == "profile") { + + var finalURL = $.ajax({ + url: contextPath + "/admin/visQuery", + data: ({vis: "utilities", vis_mode: "PROFILE_URL", uri: given_uri}), + dataType: "text", + async: false, + success:function(data){ + console.log("PROF - " + data); + } + }).responseText; + + return finalURL; + + } else if (type == "image") { + + var finalURL = $.ajax({ + url: contextPath + "/admin/visQuery", + data: ({vis: "utilities", vis_mode: "IMAGE_URL", uri: given_uri}), + dataType: "text", + async: false, + success:function(data){ + console.log("IMAGE - " + data); + } + }).responseText; + + return contextPath + finalURL; +// return finalURL; + + } + + // }); + +} + +$.fn.image = function(src, successFunc, failureFunc){ + return this.each(function(){ + var i = new Image(); + i.src = src; + i.onerror = failureFunc; + i.onload = successFunc; + + // console.dir(i); + // this.appendChild(i); + + return i; + }); +} + + +function nodeClickedJS(obj){ + + $("#newsLetter").attr("style","visibility:visible"); + $("#authorName").empty().append(obj[0]); + $("#works").empty().append(obj[1]); + + /* + * Here obj[7] points to the uri of that individual + */ + if(obj[7]){ + $("#profileUrl").attr("href", getWellFormedURLs(obj[7], "profile")); + $("#coAuthorshipVisUrl").attr("href", getWellFormedURLs(obj[7], "coauthorship")); + var imageLink = getWellFormedURLs(obj[7], "image"); + + } else{ + $("#profileUrl").attr("href","#"); + $("#coAuthorshipVisUrl").attr("href","#"); + } + + var imageContainer = $("#profileImage"); + imageContainer.image(imageLink, + function(){ + imageContainer.append(this); + }, + function(){ + /* + * For performing any action on failure to + * find the image. + */ + } + ); + + + $("#coAuthorName").empty().append(obj[name]); + + $("#coAuthors").empty().append(obj[5]); + $("#firstPublication").empty().append((obj[3])?obj[3]+" First Publication":""); + $("#lastPublication").empty().append((obj[4])?obj[4]+" Last Publication":""); + + // obj[7]:the url parameter for node + +} + +function renderVisualization() { + + //Version check for the Flash Player that has the ability to start Player + //Product Install (6.0r65) + var hasProductInstall = DetectFlashVer(6, 0, 65); + + //Version check based upon the values defined in globals + var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); + + if ( hasProductInstall && !hasRequestedVersion ) { + // DO NOT MODIFY THE FOLLOWING FOUR LINES + // Location visited after installation is complete if installation is + // required + var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn"; + var MMredirectURL = window.location; + document.title = document.title.slice(0, 47) + " - Flash Player Installation"; + var MMdoctitle = document.title; + + AC_FL_RunContent( + "src", "playerProductInstall", + "FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"", + "width", "600", + "height", "800", + "align", "middle", + "id", "CoAuthor", + "quality", "high", + "bgcolor", "#ffffff", + "name", "CoAuthor", + "allowScriptAccess","sameDomain", + "type", "application/x-shockwave-flash", + "pluginspage", "http://www.adobe.com/go/getflashplayer" + ); + } else if (hasRequestedVersion) { + // if we've detected an acceptable version + // embed the Flash Content SWF when all tests are passed + AC_FL_RunContent( + "src", swfLink, + "flashVars", "graphmlUrl=" + egoCoAuthorshipDataURL, + "width", "600", + "height", "800", + "align", "middle", + "id", "CoAuthor", + "quality", "high", + "bgcolor", "#ffffff", + "name", "CoAuthor", + "allowScriptAccess","sameDomain", + "type", "application/x-shockwave-flash", + "pluginspage", "http://www.adobe.com/go/getflashplayer" + ); + } else { // flash is too old or we can't detect the plugin + var alternateContent = 'Alternate HTML content should be placed here. ' + + 'This content requires the Adobe Flash Player. ' + + 'Get Flash'; + document.write(alternateContent); // insert non-flash content + } + +} \ No newline at end of file diff --git a/webapp/web/templates/visualization/co_authorship.jsp b/webapp/web/templates/visualization/co_authorship.jsp index 28b66e237..d6e036944 100644 --- a/webapp/web/templates/visualization/co_authorship.jsp +++ b/webapp/web/templates/visualization/co_authorship.jsp @@ -1,22 +1,32 @@ -<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> - - - + + + + + + + - - - - + + + + - - - - - + + + + + + @@ -29,6 +39,7 @@ + + + +
-

Co-Author Network

+

Co-Author Network

+ -
-
-
-
-
- -
-
-





- +
-
-
-
+

+
+
+
+
+
+ + + +
+
+
+