From 46557fd21ee223f97e57bd57f413cad0e9c5998d Mon Sep 17 00:00:00 2001 From: cdtank Date: Fri, 18 Jun 2010 21:16:16 +0000 Subject: [PATCH 01/40] Creating a branch of the "vitro" codebase for the IU Visualization team. From 01adeb7d188df6d5a1a3ca268d315e76ddca2eab Mon Sep 17 00:00:00 2001 From: cdtank Date: Fri, 18 Jun 2010 21:18:02 +0000 Subject: [PATCH 02/40] From d4fe92441cf7aea74bcf03e10fc62dbdad85fe73 Mon Sep 17 00:00:00 2001 From: cdtank Date: Sat, 19 Jun 2010 01:07:19 +0000 Subject: [PATCH 03/40] 1. Testing the svn commit privileges. 2. Adding a notification at the top of each page re: this web portal being a research instance. --- webapp/web/templates/page/basicPage.jsp | 1 + webapp/web/themes/default/css/screen.css | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/webapp/web/templates/page/basicPage.jsp b/webapp/web/templates/page/basicPage.jsp index 08e5cb14f..8bf79959f 100644 --- a/webapp/web/templates/page/basicPage.jsp +++ b/webapp/web/templates/page/basicPage.jsp @@ -61,6 +61,7 @@
+
This is a research instance. Not the official IU VIVO instance.
+ + + + <%-- Links --%> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Publications per year
YearPublications
20044
20052
11
Unknown1
+ +Download data as .csv file. + + + + + + + + + + + + + + + + + + + + + + + + + + +
Co - Authorhips
NamePublications
20044
20052
11
Unknown1
+ + + +
- From d87ffcc3be4238e787f574bd7fb936bd1f87abd2 Mon Sep 17 00:00:00 2001 From: cdtank Date: Wed, 30 Jun 2010 20:53:54 +0000 Subject: [PATCH 17/40] 1. Made changes to the sparkline logic to display last 10 years of activity (at the minimum). 2. Made changes to alter the text next to the sparklines to include the range of years considered. --- .../VisualizationCodeGenerator.java | 46 +++++++++++++++---- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java index 7c198b817..27aa45652 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java @@ -119,14 +119,30 @@ public class VisualizationCodeGenerator { if (yearToPublicationCount.size() > 0) { try { minPublishedYear = Integer.parseInt(Collections.min(publishedYears)); + System.out.println("min pub year - " + minPublishedYear); } catch (NoSuchElementException e1) { log.debug("vis: " + e1.getMessage() + " error occurred for " + yearToPublicationCount.toString()); } catch (NumberFormatException e2) { log.debug("vis: " + e2.getMessage() + " error occurred for " + yearToPublicationCount.toString()); } - numOfYearsToBeRendered = currentYear - minPublishedYear + 1; } + int minPubYearConsidered = 0; + + /* + * There might be a case that the author has made his first publication within the + * last 10 years but we want to make sure that the sparkline is representative of + * at least the last 10 years, so we will set the minPubYearConsidered to + * "currentYear - 10" which is also given by "shortSparkMinYear". + * */ + if (minPublishedYear > shortSparkMinYear) { + minPubYearConsidered = shortSparkMinYear; + } else { + minPubYearConsidered = minPublishedYear; + } + + numOfYearsToBeRendered = currentYear - minPubYearConsidered + 1; + visualizationCode.append("\n"); visualizationCode.append(" - ---%> - ${requestScope.visContentCode} ${requestScope.visContextCode} diff --git a/webapp/web/templates/visualization/co_authorship.jsp b/webapp/web/templates/visualization/co_authorship.jsp index 5b2b8dd8d..c6f432d4d 100644 --- a/webapp/web/templates/visualization/co_authorship.jsp +++ b/webapp/web/templates/visualization/co_authorship.jsp @@ -79,9 +79,9 @@ var contextPath = "${contextPath}"; cursor:pointer; height:36px; margin-left:24%; - margin-top:-18%; + /*margin-top:-18%;*/ position:absolute; - width:380px; + width:471px; } diff --git a/webapp/web/templates/visualization/person_level.jsp b/webapp/web/templates/visualization/person_level.jsp new file mode 100644 index 000000000..c6f432d4d --- /dev/null +++ b/webapp/web/templates/visualization/person_level.jsp @@ -0,0 +1,277 @@ +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Co-Authorship Visualization + + + + + + + + + + + + + + + + + + + +
+ + +<%-- Label --%> +
+
+ +
+
+ +<%-- Moniker--%> +
+
+
+ +
+
+
+ +<%-- Image --%> +
+
+
+
+
+
+ +<%-- Sparkline --%> +
+
+
+ + ${requestScope.egoURIParam} + +
+
+
+ + +
+

+
+ + + + +
+

+
+
+
+
+
+ + + +
+ +Download co-authorship newtwork as .graphml file. + +
+ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Publications per year
YearPublications
20044
20052
11
Unknown1
+ +Download data as .csv file. + + + + + + + + + + + + + + + + + + + + + + + + + + +
Co - Authorhips
NamePublications
20044
20052
11
Unknown1
+ + + + +
+ + + + diff --git a/webapp/web/templates/visualization/publication_count.jsp b/webapp/web/templates/visualization/publication_count.jsp index 31590fc3c..e347b0ad5 100644 --- a/webapp/web/templates/visualization/publication_count.jsp +++ b/webapp/web/templates/visualization/publication_count.jsp @@ -1,3 +1,5 @@ +<%@ page import="edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer" %> + <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> From 64ff99a22296588f53e6caeda50b74ef3fe61ddd Mon Sep 17 00:00:00 2001 From: cdtank Date: Thu, 1 Jul 2010 16:45:02 +0000 Subject: [PATCH 19/40] 1. Created a draft person level vis (integration of sparkline & co-authorship vis) 2. Modified the person pub count to use a single VO to give access to jsp to various contents of sparkline. 3. Modified test bed to include link to Person Level vis. --- .../VisualizationRequestHandler.java | 89 +++++++++++-------- .../VisualizationCodeGenerator.java | 4 +- .../VisualizationRequestHandler.java | 18 ++-- .../visualization/ajax_vis_content.jsp | 7 +- .../visualization/dummy_vis_client.jsp | 12 ++- .../templates/visualization/person_level.jsp | 20 ++--- .../visualization/publication_count.jsp | 8 +- 7 files changed, 86 insertions(+), 72 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java index e8ae09512..0d03af9c0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java @@ -2,6 +2,8 @@ package edu.cornell.mannlib.vitro.webapp.visualization.personlevel; import java.io.IOException; import java.io.PrintWriter; +import java.util.List; +import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; @@ -21,6 +23,8 @@ import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.CoAuthorshipG import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.QueryHandler; import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisVOContainer; import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException; +import edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisualizationCodeGenerator; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; public class VisualizationRequestHandler { @@ -53,18 +57,25 @@ public class VisualizationRequestHandler { String visContainer = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE); - QueryHandler queryManager = - new QueryHandler(egoURIParam, + edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.QueryHandler coAuthorshipQueryManager = + new edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.QueryHandler(egoURIParam, resultFormatParam, rdfResultFormatParam, dataSource, - + log); + + edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.QueryHandler sparklineQueryManager = + new edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.QueryHandler(egoURIParam, + resultFormatParam, + rdfResultFormatParam, + dataSource, log); try { - VisVOContainer authorNodesAndEdges = queryManager.getVisualizationJavaValueObjects(); - + edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisVOContainer coAuthorshipVO = + coAuthorshipQueryManager.getVisualizationJavaValueObjects(); + /* * In order to avoid unneeded computations we have pushed this "if" condition up. * This case arises when the render mode is data. In that case we dont want to generate @@ -77,49 +88,46 @@ public class VisualizationRequestHandler { * When just the graphML file is required - based on which actual visualization will * be rendered. * */ - prepareVisualizationQueryDataResponse(authorNodesAndEdges); + prepareVisualizationQueryDataResponse(coAuthorshipVO); return; } - + + List authorDocuments = sparklineQueryManager.getVisualizationJavaValueObjects(); + + /* + * Create a map from the year to number of publications. Use the BiboDocument's + * parsedPublicationYear to populate the data. + * */ + Map yearToPublicationCount = sparklineQueryManager + .getYearToPublicationCount(authorDocuments); + + /* * Computations required to generate HTML for the sparklines & related context. * */ - /* - * This is required because when deciding the range of years over which the vis - * was rendered we dont want to be influenced by the "DEFAULT_PUBLICATION_YEAR". - * */ -// publishedYearsForCollege.remove(VOConstants.DEFAULT_PUBLICATION_YEAR); + edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer sparklineVO = + new edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer(); - /* - VisualizationCodeGenerator visualizationCodeGenerator = - new VisualizationCodeGenerator(yearToPublicationCount, log); - - String visContentCode = visualizationCodeGenerator - .getMainVisualizationCode(authorDocuments, - publishedYears, - visMode, - visContainer); - - String visContextCode = visualizationCodeGenerator - .getVisualizationContextCode(vitroRequest.getRequestURI(), - collegeURIParam, - visMode); - */ - - /* - * This is side-effecting because the response of this method is just to redirect to - * a page with visualization on it. - * */ + edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisualizationCodeGenerator visualizationCodeGenerator = + new edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisualizationCodeGenerator( + vitroRequest.getRequestURI(), + egoURIParam, + VisualizationCodeGenerator.FULL_SPARKLINE_MODE_URL_HANDLE, + visContainer, + authorDocuments, + yearToPublicationCount, + sparklineVO, + log); + RequestDispatcher requestDispatcher = null; - prepareVisualizationQueryStandaloneResponse(egoURIParam, request, response, vitroRequest); + prepareVisualizationQueryStandaloneResponse(egoURIParam, sparklineVO, request, response, vitroRequest); -// requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP); - requestDispatcher = request.getRequestDispatcher("/templates/page/blankPage.jsp"); + requestDispatcher = request.getRequestDispatcher("/templates/page/blankPage.jsp"); try { requestDispatcher.forward(request, response); @@ -170,10 +178,12 @@ public class VisualizationRequestHandler { } } - private void prepareVisualizationQueryStandaloneResponse(String egoURIParam, - HttpServletRequest request, - HttpServletResponse response, - VitroRequest vreq) { + private void prepareVisualizationQueryStandaloneResponse( + String egoURIParam, + edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer sparklineVO, + HttpServletRequest request, + HttpServletResponse response, + VitroRequest vreq) { Portal portal = vreq.getPortal(); @@ -181,6 +191,7 @@ public class VisualizationRequestHandler { // request.setAttribute("visContextCode", visContextCode); request.setAttribute("egoURIParam", egoURIParam); + request.setAttribute("sparklineVO", sparklineVO); request.setAttribute("bodyJsp", "/templates/visualization/person_level.jsp"); request.setAttribute("portalBean", portal); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java index 0a11abaa4..b1ca32939 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java @@ -33,9 +33,9 @@ public class VisualizationCodeGenerator { private static final String defaultVisContainerDivID = "vis_container"; - private static final String SHORT_SPARKLINE_MODE_URL_HANDLE = "short"; + public static final String SHORT_SPARKLINE_MODE_URL_HANDLE = "short"; - private static final String FULL_SPARKLINE_MODE_URL_HANDLE = "full"; + public static final String FULL_SPARKLINE_MODE_URL_HANDLE = "full"; private Map yearToPublicationCount; diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java index dd62f9d88..e778bace6 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java @@ -123,10 +123,6 @@ public class VisualizationRequestHandler { log); - String visContentCode = valueObjectContainer.getSparklineContent(); - - String visContextCode = valueObjectContainer.getSparklineContext(); - System.out.println("ft url - " + valueObjectContainer.getFullTimelineNetworkLink()); System.out.println("dnld fl - " + valueObjectContainer.getDownloadDataLink()); System.out.println("table - " + valueObjectContainer.getTable()); @@ -143,12 +139,12 @@ public class VisualizationRequestHandler { if (VisualizationFrameworkConstants.DYNAMIC_RENDER_MODE_URL_VALUE.equalsIgnoreCase(renderMode)) { prepareVisualizationQueryDynamicResponse(request, response, vitroRequest, - visContentCode, visContextCode); + valueObjectContainer); requestDispatcher = request.getRequestDispatcher("/templates/page/blankPage.jsp"); } else { prepareVisualizationQueryStandaloneResponse(request, response, vitroRequest, - visContentCode, visContextCode, valueObjectContainer); + valueObjectContainer); requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP); } @@ -294,12 +290,10 @@ public class VisualizationRequestHandler { private void prepareVisualizationQueryStandaloneResponse(HttpServletRequest request, HttpServletResponse response, VitroRequest vreq, - String visContentCode, String visContextCode, VisVOContainer valueObjectContainer) { + VisVOContainer valueObjectContainer) { Portal portal = vreq.getPortal(); - request.setAttribute("visContentCode", visContentCode); - request.setAttribute("visContextCode", visContextCode); request.setAttribute("sparklineVO", valueObjectContainer); request.setAttribute("bodyJsp", "/templates/visualization/publication_count.jsp"); @@ -310,13 +304,11 @@ public class VisualizationRequestHandler { } private void prepareVisualizationQueryDynamicResponse(HttpServletRequest request, - HttpServletResponse response, VitroRequest vreq, - String visContentCode, String visContextCode) { + HttpServletResponse response, VitroRequest vreq, VisVOContainer valueObjectContainer) { Portal portal = vreq.getPortal(); - request.setAttribute("visContentCode", visContentCode); - request.setAttribute("visContextCode", visContextCode); + request.setAttribute("sparklineVO", valueObjectContainer); request.setAttribute("portalBean", portal); request.setAttribute("bodyJsp", "/templates/visualization/ajax_vis_content.jsp"); diff --git a/webapp/web/templates/visualization/ajax_vis_content.jsp b/webapp/web/templates/visualization/ajax_vis_content.jsp index cbd4097a9..4e24a109c 100644 --- a/webapp/web/templates/visualization/ajax_vis_content.jsp +++ b/webapp/web/templates/visualization/ajax_vis_content.jsp @@ -1,3 +1,6 @@ -${requestScope.visContentCode} +<%@ page import="edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer" %> -${requestScope.visContextCode} + + +${sparkline.sparklineContent} +${sparkline.sparklineContext} \ No newline at end of file diff --git a/webapp/web/templates/visualization/dummy_vis_client.jsp b/webapp/web/templates/visualization/dummy_vis_client.jsp index 65f4a98fe..e846f6293 100644 --- a/webapp/web/templates/visualization/dummy_vis_client.jsp +++ b/webapp/web/templates/visualization/dummy_vis_client.jsp @@ -211,6 +211,13 @@
+ + + + + + + \n"); + + + visualizationCode.append(" - - - - - - - - - - - - - - - - - -
- - -<%-- Label --%> +
<%-- Label --%>
-
- -
+
-<%-- Moniker--%> +<%-- Moniker--%>
-
-
- -
-
+
+
+
- -<%-- Image --%> -
-
-
-
-
-
-<%-- Sparkline --%> +<%-- Image --%>
-
-
- - ${sparkline.sparklineContent} - -
-
-
+
+
+
+
+ +<%-- Sparkline --%> +
+
+
${sparkline.sparklineContent}
+
+
+ -

+ - - -
+



@@ -150,32 +68,36 @@ renderCoAuthorshipVisualization();

- +
-Download co-authorship newtwork as .graphml file. - + +
@@ -183,64 +105,60 @@ Download co-authorship newtwork as - - - - - - - - - - - - - - - - - - - - - - - - - -
Publications per year
YearPublications
20044
20052
11
Unknown1
+ + +
- - - + \ No newline at end of file diff --git a/webapp/web/templates/visualization/person_level_inject_head.jsp b/webapp/web/templates/visualization/person_level_inject_head.jsp new file mode 100644 index 000000000..ac1373dca --- /dev/null +++ b/webapp/web/templates/visualization/person_level_inject_head.jsp @@ -0,0 +1,56 @@ +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From a8d6b13c3dc261f8f68c8eece667079173c14cf3 Mon Sep 17 00:00:00 2001 From: cdtank Date: Fri, 2 Jul 2010 01:06:46 +0000 Subject: [PATCH 21/40] 1. Made changes to style of the person level elements. 2. Made changes as to how the URI for "download data" & "view full timeline n/w" were generated. --- .../VisualizationCodeGenerator.java | 72 ++++-- .../VisualizationRequestHandler.java | 2 +- .../VisualizationRequestHandler.java | 29 +++ .../visualization/personlevel/person_level.js | 61 +---- .../visualization/ajax_vis_content.jsp | 1 + .../templates/visualization/person_level.jsp | 237 ++++++++---------- .../person_level_inject_head.jsp | 107 ++++---- 7 files changed, 250 insertions(+), 259 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java index 4faa8af80..c09837f28 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java @@ -43,7 +43,7 @@ public class VisualizationCodeGenerator { private VisVOContainer valueObjectContainer; - public VisualizationCodeGenerator(String requestURI, + public VisualizationCodeGenerator(String contextPath, String individualURIParam, String visMode, String visContainer, @@ -56,7 +56,7 @@ public class VisualizationCodeGenerator { this.valueObjectContainer = valueObjectContainer; this.log = log; - generateVisualizationCode(requestURI, + generateVisualizationCode(contextPath, individualURIParam, visMode, visContainer, @@ -65,7 +65,7 @@ public class VisualizationCodeGenerator { } - private void generateVisualizationCode(String requestURI, + private void generateVisualizationCode(String contextPath, String individualURIParam, String visMode, String visContainer, @@ -76,7 +76,7 @@ public class VisualizationCodeGenerator { visContainer)); - valueObjectContainer.setSparklineContext(getVisualizationContextCode(requestURI, + valueObjectContainer.setSparklineContext(getVisualizationContextCode(contextPath, individualURIParam, visMode)); @@ -144,7 +144,7 @@ public class VisualizationCodeGenerator { numOfYearsToBeRendered = currentYear - minPubYearConsidered + 1; visualizationCode.append(" + +
+ + <%-- Label --%> + + + <%-- Moniker--%> + + + <%-- Image --%> + + + <%-- Sparkline --%> + ${sparkline.sparklineContent} +
-<%-- Moniker--%> -
-
-
-
-
- -<%-- Image --%> -
-
-
-
-
- -<%-- Sparkline --%> -
-
-
${sparkline.sparklineContent}
-
-
-

-
- - -
-

-
-
-
-
-
- - - -
- - +
+
+ +
+ +
+ +
+





+ +
+ +
 
+ +
+
+
  Works
+
  Co-author(s)
+ + + + +

+ + +
+ +
+ + + -
+ +
+
+ +
-
- -
-
-

${sparkline.table} - - - -

-
-
-

-
+
+

+ ${sparkline.table} + + + +

+
+ +
+

+
- - - - - - - - - - - - - - +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 34b06281e5479be0c01ab742c67786408bce5089 Mon Sep 17 00:00:00 2001 From: cdtank Date: Fri, 2 Jul 2010 01:26:45 +0000 Subject: [PATCH 22/40] 1. minor modification to the styling & change in a url parameter. --- webapp/web/js/visualization/personlevel/person_level.js | 2 +- webapp/web/templates/visualization/person_level.jsp | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/webapp/web/js/visualization/personlevel/person_level.js b/webapp/web/js/visualization/personlevel/person_level.js index 56e9a7ebe..8310aef47 100644 --- a/webapp/web/js/visualization/personlevel/person_level.js +++ b/webapp/web/js/visualization/personlevel/person_level.js @@ -13,7 +13,7 @@ function getWellFormedURLs(given_uri, type) { finalURL = $.ajax({ url: contextPath + "/admin/visQuery", - data: ({vis: "utilities", vis_mode: "COAUTHORSHIP_URL", uri: given_uri}), + data: ({vis: "utilities", vis_mode: "PERSON_LEVEL_URL", uri: given_uri}), dataType: "text", async: false, success:function(data){ diff --git a/webapp/web/templates/visualization/person_level.jsp b/webapp/web/templates/visualization/person_level.jsp index 7b098e7be..2bca39bd6 100644 --- a/webapp/web/templates/visualization/person_level.jsp +++ b/webapp/web/templates/visualization/person_level.jsp @@ -27,7 +27,8 @@
From 264b9ef2130da66ceef8e5ae09670884a8f267e1 Mon Sep 17 00:00:00 2001 From: cdtank Date: Fri, 2 Jul 2010 01:54:00 +0000 Subject: [PATCH 23/40] 1. minor modification to the styling --- webapp/web/templates/visualization/person_level.jsp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/webapp/web/templates/visualization/person_level.jsp b/webapp/web/templates/visualization/person_level.jsp index 2bca39bd6..bee69e677 100644 --- a/webapp/web/templates/visualization/person_level.jsp +++ b/webapp/web/templates/visualization/person_level.jsp @@ -122,12 +122,6 @@
- - - - - -
@@ -145,6 +139,12 @@
+ +
+ + + + -
-





+
@@ -116,8 +124,8 @@
- - + +
From 55cb5cf88b5f68cc9add0b8202eaf62f6d76f0a6 Mon Sep 17 00:00:00 2001 From: cdtank Date: Tue, 6 Jul 2010 23:55:30 +0000 Subject: [PATCH 25/40] 1. Made minor changes as to how the csv were rendered. 2. Made change in the dummy vis client to link to a unique coauthors csv file. --- .../VisualizationRequestHandler.java | 21 ++++++++----------- .../visualization/dummy_vis_client.jsp | 8 +++++++ 2 files changed, 17 insertions(+), 12 deletions(-) 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 fb64bfb4f..15153b804 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 @@ -223,23 +223,20 @@ public class VisualizationRequestHandler { private void generateCsvFileBuffer(Map> yearToCoauthors, PrintWriter printWriter) { - CSVWriter csvWriter = new SimpleWriter(printWriter); +// CSVWriter csvWriter = new SimpleWriter(printWriter); - try { - csvWriter.append(new String[]{"Year", "Number of Authors", "Authors"}); + printWriter.append("\"Year\", \"Number of Co-Authors\", \"Co-Author(s)\"\n"); for (Entry> currentEntry : yearToCoauthors.entrySet()) { - csvWriter.append(new Object[]{currentEntry.getKey(), - currentEntry.getValue().size(), - getCoauthorsString(currentEntry.getValue())}); + printWriter.append("\"" + currentEntry.getKey() + "\"," + + "\"" + currentEntry.getValue().size() + "\"," + + "\"" + getCoauthorsString(currentEntry.getValue()) + "\"\n" + ); + + } - - } catch (IOException e) { - e.printStackTrace(); - } - printWriter.flush(); } @@ -249,7 +246,7 @@ public class VisualizationRequestHandler { StringBuilder coAuthorsMerged = new StringBuilder(); for (Node currCoAuthor : coAuthors) { - coAuthorsMerged.append(currCoAuthor.getNodeName() + ", "); + coAuthorsMerged.append(currCoAuthor.getNodeName() + " | "); } return coAuthorsMerged.toString(); diff --git a/webapp/web/templates/visualization/dummy_vis_client.jsp b/webapp/web/templates/visualization/dummy_vis_client.jsp index e846f6293..a04048c9a 100644 --- a/webapp/web/templates/visualization/dummy_vis_client.jsp +++ b/webapp/web/templates/visualization/dummy_vis_client.jsp @@ -211,6 +211,13 @@
+ + + + + + + @@ -312,6 +319,7 @@ $(document).ready(function() { vis link for coauthorship -> "Erb, Hollis Nancy"   Data   Person Level +  Unique Coauthors CSV Data
vis link for coauthorship -> "Not Working" {"Crane, Brian"}  Data
From 6381316b6237488359f4cf4a631bd18ea75ac03a Mon Sep 17 00:00:00 2001 From: cdtank Date: Wed, 7 Jul 2010 20:48:30 +0000 Subject: [PATCH 26/40] 1. Made changes so that all the sparkline content can be cut up & put into tables. This way we can control the alignment of multiple sparklines on the same page. 2. changed the separator for the coauthors csv to ";" --- .../VisualizationRequestHandler.java | 2 +- .../VisualizationCodeGenerator.java | 68 ++++++++++++++----- 2 files changed, 53 insertions(+), 17 deletions(-) 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 15153b804..d976e395a 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 @@ -246,7 +246,7 @@ public class VisualizationRequestHandler { StringBuilder coAuthorsMerged = new StringBuilder(); for (Node currCoAuthor : coAuthors) { - coAuthorsMerged.append(currCoAuthor.getNodeName() + " | "); + coAuthorsMerged.append(currCoAuthor.getNodeName() + "; "); } return coAuthorsMerged.toString(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java index 223a632d3..37ed7763b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java @@ -145,17 +145,19 @@ public class VisualizationCodeGenerator { " border-spacing: 0;" + " vertical-align: inherit;" + "}" + + "td.sparkline_number { text-align:right; padding-right:10px; }" + + "td.sparkline_text {text-align:left;}" + /*"#sparkline_data_table {" + "width: auto;" + "}" + "#sparkline_data_table tfoot {" + "color: red;" + "font-size:0.9em;" + - "}" +*/ + "}" + ".sparkline_text {" + "margin-left:72px;" + "position:absolute;" + - "}" + + "}" +*/ ".sparkline_range {" + "color:#7BA69E;" + "font-size:0.9em;" + @@ -163,11 +165,15 @@ public class VisualizationCodeGenerator { "}" + "\n"); - +// .sparkline {display:inline; margin:0; padding:0; width:600px } + + + +// td.sparkline-img {margin:0; padding:0; } visualizationCode.append("\n"; } From fce96cde92585acb14f29105b581d5faf0dd0451 Mon Sep 17 00:00:00 2001 From: cdtank Date: Thu, 8 Jul 2010 14:54:58 +0000 Subject: [PATCH 27/40] --- .../personpubcount/VisualizationCodeGenerator.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java index 37ed7763b..1990d02cf 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java @@ -174,6 +174,7 @@ public class VisualizationCodeGenerator { visualizationCode.append("\n"; } - private String getVisualizationContextCode(String contextPath, String individualURI, String visMode) { + private String getVisualizationContextCode(String visMode) { String visualizationContextCode = ""; if (SHORT_SPARKLINE_MODE_URL_HANDLE.equalsIgnoreCase(visMode)) { - visualizationContextCode = generateShortVisContext(contextPath, individualURI); + visualizationContextCode = generateShortVisContext(); } else { - visualizationContextCode = generateFullVisContext(contextPath, individualURI); + visualizationContextCode = generateFullVisContext(); } @@ -455,8 +473,7 @@ public class VisualizationCodeGenerator { return visualizationContextCode; } - private String generateFullVisContext(String contextPath, - String individualURI) { + private String generateFullVisContext() { StringBuilder divContextCode = new StringBuilder(); @@ -466,18 +483,8 @@ public class VisualizationCodeGenerator { if (yearToPublicationCount.size() > 0) { - String downloadURL = contextPath - + "/admin/visQuery" - + "?" + VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE - + "=" + URLEncoder.encode(individualURI, - VisualizationController.URL_ENCODING_SCHEME).toString() - + "&" + VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE - + "=" + URLEncoder.encode(VisualizationController - .PERSON_PUBLICATION_COUNT_VIS_URL_VALUE, - VisualizationController.URL_ENCODING_SCHEME).toString() - + "&" + VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE - + "=" + URLEncoder.encode(VisualizationFrameworkConstants.DATA_RENDER_MODE_URL_VALUE, - VisualizationController.URL_ENCODING_SCHEME).toString(); + String downloadURL = getCSVDownloadURL(); + downloadFileCode = "Download data as .csv file.
"; valueObjectContainer.setDownloadDataLink(downloadURL); @@ -499,10 +506,35 @@ public class VisualizationCodeGenerator { return divContextCode.toString(); } + + private String getCSVDownloadURL() + throws UnsupportedEncodingException { + + if (yearToPublicationCount.size() > 0) { + + + String downloadURL = contextPath + + "/admin/visQuery" + + "?" + VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE + + "=" + URLEncoder.encode(individualURIParam, + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE + + "=" + URLEncoder.encode(VisualizationController + .PERSON_PUBLICATION_COUNT_VIS_URL_VALUE, + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE + + "=" + URLEncoder.encode(VisualizationFrameworkConstants.DATA_RENDER_MODE_URL_VALUE, + VisualizationController.URL_ENCODING_SCHEME).toString(); + + return downloadURL; + } else { + return "#"; + } + + } - private String generateShortVisContext(String contextPath, - String individualURI) { + private String generateShortVisContext() { StringBuilder divContextCode = new StringBuilder(); @@ -529,7 +561,7 @@ public class VisualizationCodeGenerator { + "/admin/visQuery" + "?" + VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE - + "=" + URLEncoder.encode(individualURI, + + "=" + URLEncoder.encode(individualURIParam, VisualizationController.URL_ENCODING_SCHEME).toString() + "&" + VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE @@ -587,7 +619,6 @@ public class VisualizationCodeGenerator { } dataTable.append("\n" + - "" + // "" + // "*DNA - Data not available" + // "\n" + diff --git a/webapp/web/templates/visualization/person_level.jsp b/webapp/web/templates/visualization/person_level.jsp index 216f89944..6b7d99161 100644 --- a/webapp/web/templates/visualization/person_level.jsp +++ b/webapp/web/templates/visualization/person_level.jsp @@ -26,6 +26,33 @@ \n"); + +// .sparkline {display:inline; margin:0; padding:0; width:600px } + + + +// td.sparkline-img {margin:0; padding:0; } + + + visualizationCode.append("\n"; + } + + private String getVisualizationContextCode(String visMode) { + + String visualizationContextCode = ""; + if (SHORT_SPARKLINE_MODE_URL_HANDLE.equalsIgnoreCase(visMode)) { + visualizationContextCode = generateShortVisContext(); + } else { + visualizationContextCode = generateFullVisContext(); + } + + + + + + +// System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); + log.debug(visualizationContextCode); +// System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); + + return visualizationContextCode; + } + + private String generateFullVisContext() { + + StringBuilder divContextCode = new StringBuilder(); + + try { + + String downloadFileCode; + if (yearToUniqueCoauthorsCount.size() > 0) { + + + String downloadURL = getCSVDownloadURL(); + + downloadFileCode = "Download data as .csv file.
"; + + valueObjectContainer.setDownloadDataLink(downloadURL); + } else { + downloadFileCode = "No data available to export.
"; + } + + String tableCode = generateDataTable(); + + divContextCode.append("

" + tableCode + + downloadFileCode + "

"); + + valueObjectContainer.setTable(tableCode); + + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + return divContextCode.toString(); + + } + + private String getCSVDownloadURL() + throws UnsupportedEncodingException { + + if (yearToUniqueCoauthorsCount.size() > 0) { + + + String downloadURL = contextPath +// + "/admin/visQuery" + + "?" + VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE + + "=" + URLEncoder.encode(individualURIParam, + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE + + "=" + URLEncoder.encode(VisualizationController + .COAUTHORSHIP_VIS_URL_VALUE, + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE + + "=" + URLEncoder.encode("sparkline", + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE + + "=" + URLEncoder.encode(VisualizationFrameworkConstants.DATA_RENDER_MODE_URL_VALUE, + VisualizationController.URL_ENCODING_SCHEME).toString(); + + System.out.println(" ----- >>>> " + contextPath + " XX " + individualURIParam + " XX " + downloadURL); + + return downloadURL; + } else { + return "#"; + } + + } + + + private String generateShortVisContext() { + + StringBuilder divContextCode = new StringBuilder(); + + try { + + String fullTimelineLink; + if (yearToUniqueCoauthorsCount.size() > 0) { +// String fullTimelineNetworkURL = uri.toString() + "?" + +// VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE + +// "=" + URLEncoder.encode(individualURI, +// VisualizationController.URL_ENCODING_SCHEME).toString() + +// "&" + +// "vis" + +// "=" + URLEncoder.encode(VisualizationController +// .PERSON_PUBLICATION_COUNT_VIS_URL_VALUE, +// VisualizationController.URL_ENCODING_SCHEME).toString() + +// "&" + +// VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE + +// "=" + URLEncoder.encode(VisualizationFrameworkConstants.STANDALONE_RENDER_MODE_URL_VALUE, +// VisualizationController.URL_ENCODING_SCHEME).toString(); + + + String fullTimelineNetworkURL = contextPath + + "/admin/visQuery" + + "?" + + VisualizationFrameworkConstants.INDIVIDUAL_URI_URL_HANDLE + + "=" + URLEncoder.encode(individualURIParam, + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + + VisualizationFrameworkConstants.VIS_TYPE_URL_HANDLE + + "=" + URLEncoder.encode("person_level", + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + + VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE + + "=" + URLEncoder.encode("ego_sparkline", + VisualizationController.URL_ENCODING_SCHEME).toString() + + "&" + + VisualizationFrameworkConstants.RENDER_MODE_URL_HANDLE + + "=" + URLEncoder.encode(VisualizationFrameworkConstants.STANDALONE_RENDER_MODE_URL_VALUE, + VisualizationController.URL_ENCODING_SCHEME).toString(); + + System.out.println("context parth full n/w " + contextPath); + + fullTimelineLink = "View full timeline and co-author network
"; + + valueObjectContainer.setFullTimelineNetworkLink(fullTimelineNetworkURL); + + } else { + + fullTimelineLink = "No data available to render full timeline.
"; + + } + + divContextCode.append("

" + fullTimelineLink + "

"); + + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + return divContextCode.toString(); + + } + + + private String generateDataTable() { + + StringBuilder dataTable = new StringBuilder(); + + dataTable.append("" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""); + + for (Entry currentEntry : yearToUniqueCoauthorsCount.entrySet()) { + dataTable.append("" + + "" + + "" + + ""); + } + + dataTable.append("\n" + +// "" + +// "" + +// "\n" + + "
Unique Co-Authors per year
YearCount
" + currentEntry.getKey() + "" + currentEntry.getValue() + "
*DNA - Data not available
\n"); + + + return dataTable.toString(); + } + + + + +} 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 d976e395a..6baeb65e8 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 @@ -194,12 +194,24 @@ public class VisualizationRequestHandler { private void prepareVisualizationQuerySparklineDataResponse(VisVOContainer authorNodesAndEdges) { + String outputFileName = ""; + Map> yearToCoauthors = new TreeMap>(); - Map> yearToCoauthors = getCoAuthorsStats(authorNodesAndEdges); + if (authorNodesAndEdges.getNodes() == null || authorNodesAndEdges.getNodes().size() < 1 ) { + + outputFileName = "no-coauthorship-net" + ".graphml"; + + } else { + + outputFileName = UtilityFunctions.slugify(authorNodesAndEdges.getEgoNode().getNodeName()) + + "-coauthors" + ".csv"; + + yearToCoauthors = getCoAuthorsStats(authorNodesAndEdges); + + } + + - String outputFileName = UtilityFunctions.slugify(authorNodesAndEdges.getEgoNode().getNodeName()) - + "-coauthors" + ".csv"; - response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java index a7026c2a3..673c6a5c8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personlevel/VisualizationRequestHandler.java @@ -2,8 +2,12 @@ package edu.cornell.mannlib.vitro.webapp.visualization.personlevel; import java.io.IOException; import java.io.PrintWriter; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.Map.Entry; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; @@ -17,14 +21,14 @@ import com.hp.hpl.jena.query.DataSource; import edu.cornell.mannlib.vitro.webapp.beans.Portal; import edu.cornell.mannlib.vitro.webapp.controller.Controllers; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationController; import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants; import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.CoAuthorshipGraphMLWriter; -import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.QueryHandler; import edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisVOContainer; import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException; import edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisualizationCodeGenerator; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Node; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SparklineVOContainer; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; public class VisualizationRequestHandler { @@ -55,7 +59,8 @@ public class VisualizationRequestHandler { String visMode = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_MODE_URL_HANDLE); - String visContainer = vitroRequest.getParameter(VisualizationFrameworkConstants.VIS_CONTAINER_URL_HANDLE); + String egoPubSparklineVisContainerID = "ego_pub_sparkline"; + String uniqueCoauthorsSparklineVisContainerID = "unique_coauthors_sparkline"; edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.QueryHandler coAuthorshipQueryManager = new edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.QueryHandler(egoURIParam, @@ -64,7 +69,7 @@ public class VisualizationRequestHandler { dataSource, log); - edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.QueryHandler sparklineQueryManager = + edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.QueryHandler publicationQueryManager = new edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.QueryHandler(egoURIParam, resultFormatParam, rdfResultFormatParam, @@ -75,7 +80,7 @@ public class VisualizationRequestHandler { edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisVOContainer coAuthorshipVO = coAuthorshipQueryManager.getVisualizationJavaValueObjects(); - + /* * In order to avoid unneeded computations we have pushed this "if" condition up. * This case arises when the render mode is data. In that case we dont want to generate @@ -94,38 +99,57 @@ public class VisualizationRequestHandler { } - List authorDocuments = sparklineQueryManager.getVisualizationJavaValueObjects(); + List authorDocuments = publicationQueryManager.getVisualizationJavaValueObjects(); /* * Create a map from the year to number of publications. Use the BiboDocument's * parsedPublicationYear to populate the data. * */ - Map yearToPublicationCount = sparklineQueryManager + Map yearToPublicationCount = publicationQueryManager .getYearToPublicationCount(authorDocuments); + Map yearToUniqueCoauthorCount = getUniqueCoauthorsCountPerYear(coAuthorshipVO); + /* * Computations required to generate HTML for the sparklines & related context. * */ - edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer sparklineVO = - new edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer(); + SparklineVOContainer publicationSparklineVO = new SparklineVOContainer(); + SparklineVOContainer uniqueCoauthorsSparklineVO = new SparklineVOContainer(); - edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisualizationCodeGenerator visualizationCodeGenerator = + edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisualizationCodeGenerator personPubCountVisCodeGenerator = new edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisualizationCodeGenerator( vitroRequest.getRequestURI(), egoURIParam, VisualizationCodeGenerator.FULL_SPARKLINE_MODE_URL_HANDLE, - visContainer, + egoPubSparklineVisContainerID, authorDocuments, yearToPublicationCount, - sparklineVO, - log); + publicationSparklineVO, + log); + + edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisualizationCodeGenerator uniqueCoauthorsVisCodeGenerator = + new edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisualizationCodeGenerator( + vitroRequest.getRequestURI(), + egoURIParam, + VisualizationCodeGenerator.FULL_SPARKLINE_MODE_URL_HANDLE, + uniqueCoauthorsSparklineVisContainerID, + yearToUniqueCoauthorCount, + uniqueCoauthorsSparklineVO, + log); RequestDispatcher requestDispatcher = null; - prepareVisualizationQueryStandaloneResponse(egoURIParam, sparklineVO, request, response, vitroRequest); + prepareVisualizationQueryStandaloneResponse(egoURIParam, + publicationSparklineVO, + uniqueCoauthorsSparklineVO, + egoPubSparklineVisContainerID, + uniqueCoauthorsSparklineVisContainerID, + request, + response, + vitroRequest); // requestDispatcher = request.getRequestDispatcher("/templates/page/blankPage.jsp"); requestDispatcher = request.getRequestDispatcher(Controllers.BASIC_JSP); @@ -151,10 +175,74 @@ public class VisualizationRequestHandler { } + private Map getUniqueCoauthorsCountPerYear( + edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisVOContainer coAuthorshipVO) { + Map yearToUniqueCoauthorCount = new TreeMap(); + + Map> yearToUniqueCoauthors = getUniqueCoAuthorsPerYear(coAuthorshipVO); + + for (Entry> currentEntry : yearToUniqueCoauthors.entrySet()) { + + yearToUniqueCoauthorCount.put(currentEntry.getKey(), currentEntry.getValue().size()); + + } + return yearToUniqueCoauthorCount; + } + + private Map> getUniqueCoAuthorsPerYear(edu.cornell.mannlib.vitro.webapp.visualization.coauthorship.VisVOContainer authorNodesAndEdges) { + + Map> yearToCoAuthors = new TreeMap>(); + + Node egoNode = authorNodesAndEdges.getEgoNode(); + + for (Node currNode : authorNodesAndEdges.getNodes()) { + + /* + * We have already printed the Ego Node info. + * */ + if (currNode != egoNode) { + + for (String year : currNode.getYearToPublicationCount().keySet()) { + + Set coAuthorNodes; + + if (yearToCoAuthors.containsKey(year)) { + + coAuthorNodes = yearToCoAuthors.get(year); + coAuthorNodes.add(currNode); + + } else { + + coAuthorNodes = new HashSet(); + coAuthorNodes.add(currNode); + yearToCoAuthors.put(year, coAuthorNodes); + } + + } + + } + } + + + return yearToCoAuthors; + } + private void prepareVisualizationQueryDataResponse(VisVOContainer coAuthorsipVO) { - String outputFileName = UtilityFunctions.slugify(coAuthorsipVO.getEgoNode().getNodeName()) - + "-coauthor-net" + ".graphml"; + String outputFileName = ""; + + if (coAuthorsipVO.getNodes() == null || coAuthorsipVO.getNodes().size() < 1) { + + outputFileName = "no-coauthorship-net" + ".graphml"; + + } else { + + outputFileName = UtilityFunctions.slugify(coAuthorsipVO.getEgoNode().getNodeName()) + + "-coauthor-net" + ".graphml"; + + } + + response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + outputFileName); @@ -167,7 +255,6 @@ public class VisualizationRequestHandler { * We are side-effecting responseWriter since we are directly manipulating the response * object of the servlet. * */ - CoAuthorshipGraphMLWriter coAuthorShipGraphMLWriter = new CoAuthorshipGraphMLWriter(coAuthorsipVO); responseWriter.append(coAuthorShipGraphMLWriter.getCoAuthorshipGraphMLContent()); @@ -181,15 +268,20 @@ public class VisualizationRequestHandler { private void prepareVisualizationQueryStandaloneResponse( String egoURIParam, - edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer sparklineVO, - HttpServletRequest request, + SparklineVOContainer egoPubSparklineVO, + SparklineVOContainer uniqueCoauthorsSparklineVO, String egoPubSparklineVisContainer, String uniqueCoauthorsSparklineVisContainer, HttpServletRequest request, HttpServletResponse response, VitroRequest vreq) { Portal portal = vreq.getPortal(); request.setAttribute("egoURIParam", egoURIParam); - request.setAttribute("sparklineVO", sparklineVO); + + request.setAttribute("egoPubSparklineVO", egoPubSparklineVO); + request.setAttribute("uniqueCoauthorsSparklineVO", uniqueCoauthorsSparklineVO); + + request.setAttribute("egoPubSparklineContainerID", egoPubSparklineVisContainer); + request.setAttribute("uniqueCoauthorsSparklineVisContainerID", uniqueCoauthorsSparklineVisContainer); request.setAttribute("title", "Person Level Visualization"); request.setAttribute("portalBean", portal); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java index 9d7fe327e..64cc397f9 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationCodeGenerator.java @@ -18,6 +18,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationCo import edu.cornell.mannlib.vitro.webapp.controller.visualization.VisualizationFrameworkConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SparklineVOContainer; public class VisualizationCodeGenerator { @@ -31,7 +32,7 @@ public class VisualizationCodeGenerator { private static final String visualizationStyleClass = "sparkline_style"; - private static final String defaultVisContainerDivID = "vis_container"; + private static final String defaultVisContainerDivID = "pub_count_vis_container"; public static final String SHORT_SPARKLINE_MODE_URL_HANDLE = "short"; @@ -41,7 +42,7 @@ public class VisualizationCodeGenerator { private Log log; - private VisVOContainer valueObjectContainer; + private SparklineVOContainer valueObjectContainer; private String contextPath; @@ -53,7 +54,7 @@ public class VisualizationCodeGenerator { String visContainer, List authorDocuments, Map yearToPublicationCount, - VisVOContainer valueObjectContainer, + SparklineVOContainer valueObjectContainer, Log log) { this.contextPath = contextPath; @@ -179,7 +180,7 @@ public class VisualizationCodeGenerator { visualizationCode.append("\n"; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java index 9931f34b5..ee1f056a8 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisualizationRequestHandler.java @@ -34,6 +34,7 @@ import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants; import edu.cornell.mannlib.vitro.webapp.visualization.exceptions.MalformedQueryParametersException; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.BiboDocument; import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.Individual; +import edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SparklineVOContainer; import edu.cornell.mannlib.vitro.webapp.visualization.visutils.UtilityFunctions; public class VisualizationRequestHandler { @@ -110,7 +111,7 @@ public class VisualizationRequestHandler { * Computations required to generate HTML for the sparklines & related context. * */ - VisVOContainer valueObjectContainer = new VisVOContainer(); + SparklineVOContainer valueObjectContainer = new SparklineVOContainer(); VisualizationCodeGenerator visualizationCodeGenerator = new VisualizationCodeGenerator(vitroRequest.getContextPath(), @@ -290,7 +291,7 @@ public class VisualizationRequestHandler { private void prepareVisualizationQueryStandaloneResponse(HttpServletRequest request, HttpServletResponse response, VitroRequest vreq, - VisVOContainer valueObjectContainer) { + SparklineVOContainer valueObjectContainer) { Portal portal = vreq.getPortal(); @@ -304,7 +305,7 @@ public class VisualizationRequestHandler { } private void prepareVisualizationQueryDynamicResponse(HttpServletRequest request, - HttpServletResponse response, VitroRequest vreq, VisVOContainer valueObjectContainer) { + HttpServletResponse response, VitroRequest vreq, SparklineVOContainer valueObjectContainer) { Portal portal = vreq.getPortal(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisVOContainer.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/SparklineVOContainer.java similarity index 92% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisVOContainer.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/SparklineVOContainer.java index 254ab5eed..f664c53f7 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/personpubcount/VisVOContainer.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/visualization/valueobjects/SparklineVOContainer.java @@ -1,6 +1,6 @@ -package edu.cornell.mannlib.vitro.webapp.visualization.personpubcount; +package edu.cornell.mannlib.vitro.webapp.visualization.valueobjects; -public class VisVOContainer { +public class SparklineVOContainer { /* * For now sparklineNumPublicationsText & sparklinePublicationRangeText is left diff --git a/webapp/web/templates/visualization/ajax_vis_content.jsp b/webapp/web/templates/visualization/ajax_vis_content.jsp index a04feace8..fff87e618 100644 --- a/webapp/web/templates/visualization/ajax_vis_content.jsp +++ b/webapp/web/templates/visualization/ajax_vis_content.jsp @@ -1,4 +1,4 @@ -<%@ page import="edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer" %> +<%@ page import="edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SparklineVOContainer" %> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> diff --git a/webapp/web/templates/visualization/person_level.jsp b/webapp/web/templates/visualization/person_level.jsp index 294ce64d4..3c94f1e10 100644 --- a/webapp/web/templates/visualization/person_level.jsp +++ b/webapp/web/templates/visualization/person_level.jsp @@ -1,4 +1,4 @@ -<%@ page import="edu.cornell.mannlib.vitro.webapp.visualization.personpubcount.VisVOContainer"%> +<%@ page import="edu.cornell.mannlib.vitro.webapp.visualization.valueobjects.SparklineVOContainer"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> @@ -7,7 +7,11 @@ - + + + + + @@ -37,6 +41,11 @@ font-weight: bold; } +.neutral_author_name { + color: black; + font-weight: bold; +} + .author_moniker { color: #9C9C9C; } @@ -114,12 +123,15 @@ <%-- Sparkline --%>

General Statistics

-
- ${sparkline.sparklineContent} +
+ ${egoPubSparkline.sparklineContent}
+
+ ${uniqueCoauthorsSparkline.sparklineContent} +
-

Ego-Centric Co-Author Network (.GraphML File)

+

Co-Author Network (.GraphML File)

@@ -129,7 +141,7 @@

-
+
\ No newline at end of file From 835cf78a2bd7a099f0462000ef71fa6c20c4e8b8 Mon Sep 17 00:00:00 2001 From: cdtank Date: Fri, 9 Jul 2010 02:01:22 +0000 Subject: [PATCH 35/40] 1. Made minor style change for short sparkline. 2. Added more conditions & appropriate text for edge cases like 0 co-authorships. --- .../entity/sparklineVisualization.jsp | 2 +- .../templates/visualization/person_level.jsp | 60 +++++++++---------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/webapp/web/templates/entity/sparklineVisualization.jsp b/webapp/web/templates/entity/sparklineVisualization.jsp index dfefabedb..f32b460fc 100644 --- a/webapp/web/templates/entity/sparklineVisualization.jsp +++ b/webapp/web/templates/entity/sparklineVisualization.jsp @@ -81,7 +81,7 @@ margin-left:24%; margin-top:-2%; position:absolute; - width:380px; + /*width:380px;*/ } diff --git a/webapp/web/templates/visualization/person_level.jsp b/webapp/web/templates/visualization/person_level.jsp index ace26c805..ede5e0ae4 100644 --- a/webapp/web/templates/visualization/person_level.jsp +++ b/webapp/web/templates/visualization/person_level.jsp @@ -162,7 +162,12 @@ - Currently there are no multi-author papers for this author in the VIVO database. + + + + + + Currently there are no ${authorsText} papers for this author in the VIVO database. @@ -208,53 +213,48 @@ -
+ -

Tables

- -
-

- ${egoPubSparkline.table} -

-
+
+ +

Tables

- -
-

+

+ ${egoPubSparkline.table} +

+ + - +
+

+
+ +
+ +
+
- -
- - -