diff --git a/productMods/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl b/productMods/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl index 170c739b..868e05f6 100644 --- a/productMods/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl +++ b/productMods/templates/freemarker/visualization/coauthorship/coAuthorshipSparklineContent.ftl @@ -187,9 +187,11 @@ if (totalPubs !== totalPublicationCount) { sparksText += ' (' + totalPublicationCount + ' total)'; } + + if (totalPublicationCount) { + sparksText += '
(.CSV File) '; + } - sparksText += '
(.CSV File) '; - if (!onlyUnknownYearPublications) { diff --git a/productMods/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl b/productMods/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl index 032a9a4e..dfdb7d17 100644 --- a/productMods/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl +++ b/productMods/templates/freemarker/visualization/copi/coInvestigationSparklineContent.ftl @@ -189,7 +189,10 @@ sparksText += ' (' + totalGrantCount + ' total)'; } - sparksText += '
(.CSV File) '; + if (totalGrantCount) { + sparksText += '
(.CSV File) '; + } + if (!onlyUnknownYearGrants) { diff --git a/productMods/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl b/productMods/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl index 8eabd918..b71230ad 100644 --- a/productMods/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl +++ b/productMods/templates/freemarker/visualization/grant/personGrantSparklineContent.ftl @@ -188,10 +188,11 @@ if (totalGrants !== totalGrantCount) { sparksText += ' (' + totalGrantCount + ' total)'; } - + + if (totalGrantCount) { + sparksText += '
(.CSV File) '; + } - sparksText += '
(.CSV File) '; - if (!onlyUnknownYearGrants) { diff --git a/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl b/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl index 01f413ed..e5303fca 100644 --- a/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl +++ b/productMods/templates/freemarker/visualization/publication/personPublicationSparklineContent.ftl @@ -189,8 +189,11 @@ if (totalPubs !== totalPublicationCount) { sparksText += ' (' + totalPublicationCount + ' total)'; } - - sparksText += '
(.CSV File) '; + + if (totalPublicationCount) { + sparksText += '
(.CSV File) '; + } + if (!onlyUnknownYearPublications) { diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java index df04ace4..3abf27fa 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coauthorship/CoAuthorshipVisCodeGenerator.java @@ -11,21 +11,18 @@ import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; -import java.util.Map.Entry; import org.apache.commons.logging.Log; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap; import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Node; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SparklineData; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.YearToEntityCountDataElement; +import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions; -@SuppressWarnings("serial") public class CoAuthorshipVisCodeGenerator { /* @@ -37,22 +34,13 @@ public class CoAuthorshipVisCodeGenerator { * spanning the career of the person & last 10 years at the minimum, in case if * the person started his career in the last 10 yeras. * */ - private static final Map VIS_DIV_NAMES = new HashMap() { { - - put("SHORT_SPARK", "unique_coauthors_short_sparkline_vis"); - put("FULL_SPARK", "unique_coauthors_full_sparkline_vis"); - - } }; - - private static final String VISUALIZATION_STYLE_CLASS = "sparkline_style"; - private static final String DEFAULT_VISCONTAINER_DIV_ID = "unique_coauthors_vis_container"; private Map> yearToUniqueCoauthors; private Log log; - private SparklineData sparklineData; + private SparklineData sparklineParameterVO; private String individualURI; @@ -65,36 +53,22 @@ public class CoAuthorshipVisCodeGenerator { this.individualURI = individualURI; this.yearToUniqueCoauthors = yearToUniqueCoauthors; - this.sparklineData = new SparklineData(); this.log = log; - generateVisualizationCode(visMode, visContainer); + this.sparklineParameterVO = setupSparklineParameters(visMode, visContainer); } /** - * This method is used to generate the visualization code (HMTL, CSS & JavaScript). - * There 2 parts to it - 1. Actual Content Code & 2. Context Code. - * 1. Actual Content code in this case is the sparkline image, text related to - * data and the wrapping tables. This is generated via call to google vis API through - * JavaScript. - * 2. Context code is generally optional but contains code pertaining to tabulated - * data & links to download files etc. + * This method is used to setup parameters for the sparkline value object. These parameters + * will be used in the template to construct the actual html/javascript code. * @param visMode * @param visContainer */ - private void generateVisualizationCode(String visMode, - String visContainer) { - - sparklineData.setSparklineContent(getMainVisualizationCode(visMode, - visContainer)); - - sparklineData.setSparklineContext(getVisualizationContextCode(visMode)); - - } - - private String getMainVisualizationCode(String visMode, + private SparklineData setupSparklineParameters(String visMode, String providedVisContainerID) { + + SparklineData sparklineData = new SparklineData(); int numOfYearsToBeRendered = 0; int currentYear = Calendar.getInstance().get(Calendar.YEAR); @@ -118,8 +92,6 @@ public class CoAuthorshipVisCodeGenerator { String visContainerID = null; - StringBuilder visualizationCode = new StringBuilder(); - if (yearToUniqueCoauthors.size() > 0) { try { minPublishedYear = Integer.parseInt(Collections.min(publishedYears)); @@ -150,30 +122,6 @@ public class CoAuthorshipVisCodeGenerator { sparklineData.setNumOfYearsToBeRendered(numOfYearsToBeRendered); - visualizationCode.append("\n"); - - visualizationCode.append("\n"; - } - - private String getVisualizationContextCode(String visMode) { - - String visualizationContextCode = ""; - if (VisualizationFrameworkConstants.SHORT_SPARKLINE_VIS_MODE.equalsIgnoreCase(visMode)) { - visualizationContextCode = generateShortVisContext(); - } else { - visualizationContextCode = generateFullVisContext(); - } - - log.debug(visualizationContextCode); - - return visualizationContextCode; - } - - private String generateFullVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String csvDownloadURLHref = ""; - if (yearToUniqueCoauthors.size() > 0) { - if (getCSVDownloadURL() != null) { - - csvDownloadURLHref = "Download data as .csv file.
"; - sparklineData.setDownloadDataLink(getCSVDownloadURL()); - - } else { - csvDownloadURLHref = ""; - } - - } else { - csvDownloadURLHref = "No data available to export.
"; - } - - String tableCode = generateDataTable(); - - divContextCode.append("

" + tableCode + csvDownloadURLHref + "

"); - - sparklineData.setTable(tableCode); - - - Map yearToUniqueCoauthorsCount = new HashMap(); - for (Map.Entry> currentYear : yearToUniqueCoauthors.entrySet()) { - yearToUniqueCoauthorsCount.put(currentYear.getKey(), currentYear.getValue().size()); - } - - sparklineData.setYearToActivityCount(yearToUniqueCoauthorsCount); - - return divContextCode.toString(); - } - - private String getCSVDownloadURL(){ - - if (yearToUniqueCoauthors.size() > 0) { - - ParamMap CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, - VisualizationFrameworkConstants.COAUTHORSHIP_VIS, - VisualizationFrameworkConstants.VIS_MODE_KEY, - VisualizationFrameworkConstants.COAUTHORS_COUNT_PER_YEAR_VIS_MODE); - - return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX, - CSVDownloadURLParams); - - } else { - return null; - } - } - - private String generateShortVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String fullTimelineLink; - if (yearToUniqueCoauthors.size() > 0) { - - ParamMap fullTimelineNetworkURLParams = new ParamMap( - VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, + sparklineData.setFullTimelineNetworkLink(UtilityFunctions.getCollaboratorshipNetworkLink(individualURI, VisualizationFrameworkConstants.PERSON_LEVEL_VIS, - VisualizationFrameworkConstants.VIS_MODE_KEY, - VisualizationFrameworkConstants.COAUTHOR_VIS_MODE); - - String fullTimelineNetworkURL = UrlBuilder.getUrl( - VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX, - fullTimelineNetworkURLParams); - - fullTimelineLink = "View full timeline and co-author network."; + VisualizationFrameworkConstants.COAUTHOR_VIS_MODE)); - sparklineData.setFullTimelineNetworkLink(fullTimelineNetworkURL); + sparklineData.setDownloadDataLink(UtilityFunctions + .getCSVDownloadURL( + individualURI, + VisualizationFrameworkConstants.COAUTHORSHIP_VIS, + VisualizationFrameworkConstants.COAUTHORS_COUNT_PER_YEAR_VIS_MODE)); - } else { - fullTimelineLink = "No data available to render full timeline.
"; + Map yearToUniqueCoauthorsCount = new HashMap(); + + for (Map.Entry> currentYearToCoAuthors : yearToUniqueCoauthors.entrySet()) { + yearToUniqueCoauthorsCount.put(currentYearToCoAuthors.getKey(), + currentYearToCoAuthors.getValue().size()); + } + + sparklineData.setYearToActivityCount(yearToUniqueCoauthorsCount); } - divContextCode.append("

" + fullTimelineLink + "

"); - - return divContextCode.toString(); - } - - - private String generateDataTable() { - - StringBuilder dataTable = new StringBuilder(); - - dataTable.append("" - + "" - + "" - + "" - + "" - + "" - + "" - + "" - + ""); - - for (Entry> currentEntry : yearToUniqueCoauthors.entrySet()) { - dataTable.append("" - + "" - + "" - + ""); - } - - dataTable.append("\n
Unique Co-Authors per year
YearCount
" + currentEntry.getKey() + "" + currentEntry.getValue().size() + "
\n"); - - return dataTable.toString(); - } - - public SparklineData getValueObjectContainer() { return sparklineData; } -} + + public SparklineData getValueObjectContainer() { + return this.sparklineParameterVO; + } +} \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java index bc88321c..6a5867d5 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/coprincipalinvestigator/CoPIVisCodeGenerator.java @@ -9,20 +9,18 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.NoSuchElementException; import java.util.Set; import org.apache.commons.logging.Log; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap; import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPINode; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SparklineData; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.YearToEntityCountDataElement; +import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions; /** * This class contains code for rendering sparklines and displaying tables for @@ -30,7 +28,6 @@ import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Ye * @author bkoniden * Deepak Konidena */ -@SuppressWarnings("serial") public class CoPIVisCodeGenerator { /* @@ -42,22 +39,13 @@ public class CoPIVisCodeGenerator { * spanning the career of the person & last 10 years at the minimum, in case if * the person started his career in the last 10 years. * */ - private static final Map VIS_DIV_NAMES = new HashMap() { { - - put("SHORT_SPARK", "unique_copis_short_sparkline_vis"); - put("FULL_SPARK", "unique_copis_full_sparkline_vis"); - - } }; - - private static final String VISUALIZATION_STYLE_CLASS = "sparkline_style"; - private static final String DEFAULT_VISCONTAINER_DIV_ID = "unique_coinvestigators_vis_container"; private Map> yearToUniqueCoPIs; private Log log; - private SparklineData sparklineData; + private SparklineData sparklineParameterVO; private String individualURI; @@ -70,37 +58,23 @@ public class CoPIVisCodeGenerator { this.individualURI = individualURI; this.yearToUniqueCoPIs = yearToUniqueCoPIs; - this.sparklineData = new SparklineData(); - + this.log = log; - generateVisualizationCode(visMode, visContainer); + this.sparklineParameterVO = setupSparklineParameters(visMode, visContainer); } /** - * This method is used to generate the visualization code (HMTL, CSS & - * JavaScript). There 2 parts to it - 1. Actual Content Code & 2. Context - * Code. 1. Actual Content code in this case is the sparkline image, text - * related to data and the wrapping tables. This is generated via call to - * google vis API through JavaScript. 2. Context code is generally optional - * but contains code pertaining to tabulated data & links to download files - * etc. - * + * This method is used to setup parameters for the sparkline value object. These parameters + * will be used in the template to construct the actual html/javascript code. * @param visMode * @param visContainer */ - private void generateVisualizationCode(String visMode, String visContainer) { + private SparklineData setupSparklineParameters(String visMode, + String providedVisContainerID) { - sparklineData.setSparklineContent(getMainVisualizationCode(visMode, - visContainer)); - - sparklineData.setSparklineContext(getVisualizationContextCode(visMode)); - - } - - private String getMainVisualizationCode(String visMode, - String providedVisContainerID) { + SparklineData sparklineData = new SparklineData(); int numOfYearsToBeRendered = 0; int currentYear = Calendar.getInstance().get(Calendar.YEAR); @@ -126,8 +100,6 @@ public class CoPIVisCodeGenerator { String visContainerID = null; - StringBuilder visualizationCode = new StringBuilder(); - if (yearToUniqueCoPIs.size() > 0) { try { minGrantYear = Integer.parseInt(Collections @@ -160,24 +132,6 @@ public class CoPIVisCodeGenerator { sparklineData.setNumOfYearsToBeRendered(numOfYearsToBeRendered); - visualizationCode.append("\n"); - - visualizationCode - .append("\n"; - } - - private String getVisualizationContextCode(String visMode) { - - String visualizationContextCode = ""; - if (VisualizationFrameworkConstants.SHORT_SPARKLINE_VIS_MODE.equalsIgnoreCase(visMode)) { - visualizationContextCode = generateShortVisContext(); - } else { - visualizationContextCode = generateFullVisContext(); - } - - log.debug(visualizationContextCode); - - return visualizationContextCode; - } - - private String generateFullVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String csvDownloadURLHref = ""; if (yearToUniqueCoPIs.size() > 0) { - if (getCSVDownloadURL() != null) { - - csvDownloadURLHref = "Download data as .csv file.
"; - sparklineData.setDownloadDataLink(getCSVDownloadURL()); - - } else { - csvDownloadURLHref = ""; - } - - } else { - csvDownloadURLHref = "No data available to export.
"; - } - - String tableCode = generateDataTable(); - - divContextCode.append("

" + tableCode + csvDownloadURLHref + "

"); - - sparklineData.setTable(tableCode); - - Map yearToUniqueCoPIsCount = new HashMap(); - for (Map.Entry> currentYear : yearToUniqueCoPIs.entrySet()) { - yearToUniqueCoPIsCount.put(currentYear.getKey(), currentYear.getValue().size()); - } - - sparklineData.setYearToActivityCount(yearToUniqueCoPIsCount); - - return divContextCode.toString(); - } - - private String getCSVDownloadURL() { - - if (yearToUniqueCoPIs.size() > 0) { - - ParamMap CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, - VisualizationFrameworkConstants.CO_PI_VIS, - VisualizationFrameworkConstants.VIS_MODE_KEY, - VisualizationFrameworkConstants.COPIS_COUNT_PER_YEAR_VIS_MODE); - - return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX, - CSVDownloadURLParams); - - } else { - return null; - } - } - private String generateShortVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String fullTimelineLink; - if (yearToUniqueCoPIs.size() > 0) { - - ParamMap fullTimelineNetworkURLParams = new ParamMap( - VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, + sparklineData.setFullTimelineNetworkLink(UtilityFunctions.getCollaboratorshipNetworkLink(individualURI, VisualizationFrameworkConstants.PERSON_LEVEL_VIS, - VisualizationFrameworkConstants.VIS_MODE_KEY, - VisualizationFrameworkConstants.COPI_VIS_MODE); + VisualizationFrameworkConstants.COPI_VIS_MODE)); + + sparklineData.setDownloadDataLink(UtilityFunctions + .getCSVDownloadURL( + individualURI, + VisualizationFrameworkConstants.CO_PI_VIS, + VisualizationFrameworkConstants.COPIS_COUNT_PER_YEAR_VIS_MODE)); + + Map yearToUniqueCoPIsCount = new HashMap(); + for (Map.Entry> currentYearToUniqueCoPIsCount : yearToUniqueCoPIs.entrySet()) { + yearToUniqueCoPIsCount.put(currentYearToUniqueCoPIsCount.getKey(), + currentYearToUniqueCoPIsCount.getValue().size()); + } - String fullTimelineNetworkURL = UrlBuilder.getUrl( - VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX, - fullTimelineNetworkURLParams); + sparklineData.setYearToActivityCount(yearToUniqueCoPIsCount); - fullTimelineLink = "View full timeline and co-pi network."; - - sparklineData.setFullTimelineNetworkLink(fullTimelineNetworkURL); - - } else { - fullTimelineLink = "No data available to render full timeline.
"; } - - divContextCode.append("

" + fullTimelineLink + "

"); - - return divContextCode.toString(); - } - - private String generateDataTable() { - - StringBuilder dataTable = new StringBuilder(); - - dataTable.append("" - + "" - + "" - + "" - + "" - + "" - + "" - + "" - + ""); - - for (Entry> currentEntry : yearToUniqueCoPIs.entrySet()) { - dataTable.append("" - + "" - + "" - + ""); - } - - dataTable.append("\n
Unique Co-PIs per year
YearCount
" + currentEntry.getKey() + "" + currentEntry.getValue().size() + "
\n"); - - return dataTable.toString(); - } - - public SparklineData getValueObjectContainer() { + return sparklineData; } + + public SparklineData getValueObjectContainer() { + return this.sparklineParameterVO; + } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java index 77a0bc44..9736b5a8 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/persongrantcount/PersonGrantCountVisCodeGenerator.java @@ -5,27 +5,23 @@ package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.persongrantcou import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.NoSuchElementException; import java.util.Set; import org.apache.commons.logging.Log; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap; import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SparklineData; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.YearToEntityCountDataElement; +import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions; -@SuppressWarnings("serial") public class PersonGrantCountVisCodeGenerator { /* @@ -38,22 +34,13 @@ public class PersonGrantCountVisCodeGenerator { * the person started his career in the last 10 yeras. * */ - private static final Map VIS_DIV_NAMES = new HashMap() { { - - put("SHORT_SPARK", "grant_count_short_sparkline_vis"); - put("FULL_SPARK", "grant_count_full_sparkline_vis"); - - } }; - - private static final String VISUALIZATION_STYLE_CLASS = "sparkline_style"; - private static final String DEFAULT_VIS_CONTAINER_DIV_ID = "grant_count_vis_container"; private Map yearToGrantCount; private Log log; - private SparklineData sparklineData; + private SparklineData sparklineParameterVO; private String individualURI; @@ -65,43 +52,28 @@ public class PersonGrantCountVisCodeGenerator { this.individualURI = individualURIParam; this.yearToGrantCount = yearToGrantCount; - this.sparklineData = new SparklineData(); - - sparklineData.setYearToActivityCount(yearToGrantCount); - + this.log = log; + + this.sparklineParameterVO = setupSparklineParameters(visMode, visContainer, piGrants); - generateVisualizationCode(visMode, visContainer, piGrants); } /** - * This method is used to generate the visualization code (HMTL, CSS & JavaScript). - * There 2 parts to it - 1. Actual Content Code & 2. Context Code. - * 1. Actual Content code in this case is the sparkline image, text related to - * data and the wrapping tables. This is generated via call to google vis API through - * JavaScript. - * 2. Context code is generally optional but contains code pertaining to tabulated - * data & links to download files etc. + * This method is used to setup parameters for the sparkline value object. These parameters + * will be used in the template to construct the actual html/javascript code. * @param visMode * @param visContainer - * @param piGrants + * @param authorDocuments + * @return */ - private void generateVisualizationCode(String visMode, - String visContainer, + private SparklineData setupSparklineParameters(String visMode, + String providedVisContainerID, Set piGrants) { - sparklineData.setSparklineContent(getMainVisualizationCode(piGrants, - visMode, - visContainer)); - - - sparklineData.setSparklineContext(getVisualizationContextCode(visMode)); - - } - - private String getMainVisualizationCode(Set piGrants, - String visMode, String providedVisContainerID) { - + SparklineData sparklineData = new SparklineData(); + sparklineData.setYearToActivityCount(yearToGrantCount); + int numOfYearsToBeRendered = 0; int currentYear = Calendar.getInstance().get(Calendar.YEAR); int shortSparkMinYear = currentYear @@ -112,8 +84,7 @@ public class PersonGrantCountVisCodeGenerator { * the vis was rendered we dont want to be influenced by the * "DEFAULT_GRANT_YEAR". */ - Set grantYears = new HashSet(yearToGrantCount - .keySet()); + Set grantYears = new HashSet(yearToGrantCount.keySet()); grantYears.remove(VOConstants.DEFAULT_GRANT_YEAR); /* @@ -126,8 +97,6 @@ public class PersonGrantCountVisCodeGenerator { String visContainerID = null; - StringBuilder visualizationCode = new StringBuilder(); - if (yearToGrantCount.size() > 0) { try { minGrantYear = Integer.parseInt(Collections @@ -160,26 +129,6 @@ public class PersonGrantCountVisCodeGenerator { sparklineData.setNumOfYearsToBeRendered(numOfYearsToBeRendered); - visualizationCode.append("\n"); - - visualizationCode.append("\n"; - } - - - private String getVisualizationContextCode(String visMode) { - - String visualizationContextCode = ""; - if (VisualizationFrameworkConstants.SHORT_SPARKLINE_VIS_MODE.equalsIgnoreCase(visMode)) { - visualizationContextCode = generateShortVisContext(); - } else { - visualizationContextCode = generateFullVisContext(); } - log.debug(visualizationContextCode); - - return visualizationContextCode; - } - - private String generateFullVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String csvDownloadURLHref = ""; - if (yearToGrantCount.size() > 0) { - if (getCSVDownloadURL() != null) { - - csvDownloadURLHref = "Download data as .csv file.
"; - sparklineData.setDownloadDataLink(getCSVDownloadURL()); - - } else { - csvDownloadURLHref = ""; - } - } else { - csvDownloadURLHref = "No data available to export.
"; + sparklineData.setFullTimelineNetworkLink(UtilityFunctions.getCollaboratorshipNetworkLink(individualURI, + VisualizationFrameworkConstants.PERSON_LEVEL_VIS, + VisualizationFrameworkConstants.COPI_VIS_MODE)); + + sparklineData.setDownloadDataLink(UtilityFunctions + .getCSVDownloadURL( + individualURI, + VisualizationFrameworkConstants.PERSON_GRANT_COUNT_VIS, + "")); + } - String tableCode = generateDataTable(); - - divContextCode.append("

" + tableCode + csvDownloadURLHref + "

"); - - sparklineData.setTable(tableCode); - - return divContextCode.toString(); - } - - - private String getCSVDownloadURL() { - - if (yearToGrantCount.size() > 0) { - - ParamMap CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, - VisualizationFrameworkConstants.PERSON_GRANT_COUNT_VIS); - - return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX, - CSVDownloadURLParams); - - } else { - return null; - } - } - - - private String generateShortVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String fullTimelineLink; - if (yearToGrantCount.size() > 0) { - - // add another parameter for vis_mode - ParamMap fullTimelineNetworkURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, - VisualizationFrameworkConstants.PERSON_LEVEL_VIS); - - String fullTimelineNetworkURL = UrlBuilder.getUrl( - VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX, - fullTimelineNetworkURLParams); - - fullTimelineLink = "View all VIVO " - + "grants and corresponding co-pi network."; - - sparklineData.setFullTimelineNetworkLink(fullTimelineNetworkURL); - - - - } else { - fullTimelineLink = "No data available to render full timeline.
"; - } - - divContextCode.append("" + fullTimelineLink + ""); - return divContextCode.toString(); - } - - private String generateDataTable() { - - String csvDownloadURLHref = ""; - - if (getCSVDownloadURL() != null) { - csvDownloadURLHref = "(.CSV File)"; - } else { - csvDownloadURLHref = ""; - } - - StringBuilder dataTable = new StringBuilder(); - - dataTable.append("" - + "" - + "" - + "" - + "" - + "" - + "" - + "" - + ""); - - for (Entry currentEntry : yearToGrantCount.entrySet()) { - dataTable.append("" - + "" - + "" - + ""); - } - - dataTable.append("\n
Grants per year " + csvDownloadURLHref + "
YearGrants
" + currentEntry.getKey() + "" + currentEntry.getValue() + "
\n"); - - return dataTable.toString(); + return sparklineData; } public SparklineData getValueObjectContainer() { - return sparklineData; + return this.sparklineParameterVO; } -} +} \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java index 86699cd0..f8019d34 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/personpubcount/PersonPublicationCountVisCodeGenerator.java @@ -5,27 +5,23 @@ package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.personpubcount import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; -import java.util.Map.Entry; import org.apache.commons.logging.Log; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap; import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VOConstants; import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.SparklineData; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.YearToEntityCountDataElement; +import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils.UtilityFunctions; -@SuppressWarnings("serial") public class PersonPublicationCountVisCodeGenerator { /* @@ -37,24 +33,16 @@ public class PersonPublicationCountVisCodeGenerator { * spanning the career of the person & last 10 years at the minimum, in case if * the person started his career in the last 10 yeras. * */ - private static final Map VIS_DIV_NAMES = new HashMap() { { - put("SHORT_SPARK", "pub_count_short_sparkline_vis"); - put("FULL_SPARK", "pub_count_full_sparkline_vis"); - - } }; - - private static final String VISUALIZATION_STYLE_CLASS = "sparkline_style"; - private static final String DEFAULT_VIS_CONTAINER_DIV_ID = "pub_count_vis_container"; private Map yearToPublicationCount; private Log log; - private SparklineData sparklineData; - private String individualURI; + + private SparklineData sparklineParameterVO; public PersonPublicationCountVisCodeGenerator(String individualURIParam, String visMode, @@ -66,44 +54,28 @@ public class PersonPublicationCountVisCodeGenerator { this.individualURI = individualURIParam; this.yearToPublicationCount = yearToPublicationCount; - this.sparklineData = new SparklineData(); - - sparklineData.setYearToActivityCount(yearToPublicationCount); - - + this.log = log; - generateVisualizationCode(visMode, visContainer, authorDocuments); + this.sparklineParameterVO = setupSparklineParameters(visMode, visContainer, authorDocuments); + } /** - * This method is used to generate the visualization code (HMTL, CSS & JavaScript). - * There 2 parts to it - 1. Actual Content Code & 2. Context Code. - * 1. Actual Content code in this case is the sparkline image, text related to - * data and the wrapping tables. This is generated via call to google vis API through - * JavaScript. - * 2. Context code is generally optional but contains code pertaining to tabulated - * data & links to download files etc. + * This method is used to setup parameters for the sparkline value object. These parameters + * will be used in the template to construct the actual html/javascript code. * @param visMode * @param visContainer * @param authorDocuments + * @return */ - private void generateVisualizationCode(String visMode, - String visContainer, - Set authorDocuments) { + private SparklineData setupSparklineParameters(String visMode, + String providedVisContainerID, + Set authorDocuments) { + + SparklineData sparklineData = new SparklineData(); + sparklineData.setYearToActivityCount(yearToPublicationCount); - sparklineData.setSparklineContent(getMainVisualizationCode(authorDocuments, - visMode, - visContainer)); - - - sparklineData.setSparklineContext(getVisualizationContextCode(visMode)); - - } - - private String getMainVisualizationCode(Set authorDocuments, - String visMode, - String providedVisContainerID) { int numOfYearsToBeRendered = 0; int currentYear = Calendar.getInstance().get(Calendar.YEAR); @@ -127,8 +99,6 @@ public class PersonPublicationCountVisCodeGenerator { String visContainerID = null; - StringBuilder visualizationCode = new StringBuilder(); - if (yearToPublicationCount.size() > 0) { try { minPublishedYear = Integer.parseInt(Collections.min(publishedYears)); @@ -159,37 +129,6 @@ public class PersonPublicationCountVisCodeGenerator { sparklineData.setNumOfYearsToBeRendered(numOfYearsToBeRendered); - visualizationCode.append("\n"); - - visualizationCode.append("\n"; + return sparklineData; } - private String getVisualizationContextCode(String visMode) { - - String visualizationContextCode = ""; - if (VisualizationFrameworkConstants.SHORT_SPARKLINE_VIS_MODE.equalsIgnoreCase(visMode)) { - visualizationContextCode = generateShortVisContext(); - } else { - visualizationContextCode = generateFullVisContext(); - } - - log.debug(visualizationContextCode); - - return visualizationContextCode; - } - - private String generateFullVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String csvDownloadURLHref = ""; - - if (yearToPublicationCount.size() > 0) { - - if (getCSVDownloadURL() != null) { - - csvDownloadURLHref = "Download data as .csv file.
"; - sparklineData.setDownloadDataLink(getCSVDownloadURL()); - - } else { - csvDownloadURLHref = ""; - } - } else { - csvDownloadURLHref = "No data available to export.
"; - } - - String tableCode = generateDataTable(); - - divContextCode.append("

" + tableCode + csvDownloadURLHref + "

"); - - sparklineData.setTable(tableCode); - - return divContextCode.toString(); - } - - private String getCSVDownloadURL() { - - if (yearToPublicationCount.size() > 0) { - - ParamMap CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, - VisualizationFrameworkConstants.PERSON_PUBLICATION_COUNT_VIS); - - return UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX, - CSVDownloadURLParams); - - } else { - return null; - } - } - - private String generateShortVisContext() { - - StringBuilder divContextCode = new StringBuilder(); - - String fullTimelineLink; - if (yearToPublicationCount.size() > 0) { - - ParamMap fullTimelineNetworkURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, - individualURI, - VisualizationFrameworkConstants.VIS_TYPE_KEY, - VisualizationFrameworkConstants.PERSON_LEVEL_VIS); - - String fullTimelineNetworkURL = UrlBuilder.getUrl( - VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX, - fullTimelineNetworkURLParams); - - - fullTimelineLink = "View all VIVO " - + "publications and corresponding co-author network."; - - sparklineData.setFullTimelineNetworkLink(fullTimelineNetworkURL); - - } else { - fullTimelineLink = "No data available to render full timeline.
"; - } - - divContextCode.append("" + fullTimelineLink + ""); - return divContextCode.toString(); - } - - private String generateDataTable() { - - String csvDownloadURLHref = ""; - - if (getCSVDownloadURL() != null) { - csvDownloadURLHref = "(.CSV File)"; - } else { - csvDownloadURLHref = ""; - } - - StringBuilder dataTable = new StringBuilder(); - - dataTable.append("" - + "" - + "" - + "" - + "" - + "" - + "" - + "" - + ""); - - for (Entry currentEntry : yearToPublicationCount.entrySet()) { - dataTable.append("" - + "" - + "" - + ""); - } - - dataTable.append("\n
Publications per year " + csvDownloadURLHref + "
YearPublications
" + currentEntry.getKey() + "" + currentEntry.getValue() + "
\n"); - - return dataTable.toString(); - } - public SparklineData getValueObjectContainer() { - return sparklineData; + return this.sparklineParameterVO; } -} +} \ No newline at end of file diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/valueobjects/SparklineData.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/valueobjects/SparklineData.java index 0ca5b5a3..905a42bd 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/valueobjects/SparklineData.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/valueobjects/SparklineData.java @@ -7,14 +7,6 @@ import java.util.Map; public class SparklineData { - /* - * For now sparklineNumPublicationsText & sparklinePublicationRangeText is left - * as empty but later on we would want to leverage the granularity that this - * provides. - * */ - private String sparklineNumPublicationsText = ""; - private String sparklinePublicationRangeText = ""; - private Integer earliestYearConsidered; private Integer earliestRenderedPublicationYear; private Integer latestRenderedPublicationYear; @@ -25,17 +17,12 @@ public class SparklineData { private Integer unknownYearPublications; private Integer unknownYearGrants; - private Map yearToActivityCount; - private String table = ""; - private String downloadDataLink = ""; private String fullTimelineNetworkLink = ""; private String visContainerDivID = "pub_count_vis_container"; - private String sparklineContent; - private String sparklineContext; private boolean isShortVisMode = true; @@ -43,23 +30,6 @@ public class SparklineData { private int numOfYearsToBeRendered; - public String getSparklineNumPublicationsText() { - return sparklineNumPublicationsText; - } - - public void setSparklineNumPublicationsText(String sparklineNumPublicationsText) { - this.sparklineNumPublicationsText = sparklineNumPublicationsText; - } - - public String getSparklinePublicationRangeText() { - return sparklinePublicationRangeText; - } - - public void setSparklinePublicationRangeText( - String sparklinePublicationRangeText) { - this.sparklinePublicationRangeText = sparklinePublicationRangeText; - } - public Integer getEarliestRenderedGrantYear() { return earliestRenderedGrantYear; } @@ -151,14 +121,6 @@ public class SparklineData { return renderedSparks; } - public String getTable() { - return table; - } - - public void setTable(String table) { - this.table = table; - } - public String getDownloadDataLink() { return downloadDataLink; } @@ -183,14 +145,6 @@ public class SparklineData { return visContainerDivID; } - public String getSparklineContent() { - return sparklineContent; - } - - public void setSparklineContent(String shortSparklineContent) { - this.sparklineContent = shortSparklineContent; - } - public void setShortVisMode(boolean isShortVisMode) { this.isShortVisMode = isShortVisMode; } @@ -199,11 +153,4 @@ public class SparklineData { return isShortVisMode; } - public String getSparklineContext() { - return sparklineContext; - } - - public void setSparklineContext(String shortSparklineContext) { - this.sparklineContext = shortSparklineContext; - } } diff --git a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java index 87b45674..dd52e479 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java +++ b/src/edu/cornell/mannlib/vitro/webapp/visualization/freemarker/visutils/UtilityFunctions.java @@ -3,10 +3,8 @@ package edu.cornell.mannlib.vitro.webapp.visualization.freemarker.visutils; import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; -import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; @@ -20,11 +18,12 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormatter; -import org.joda.time.format.ISODateTimeFormat; 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.freemarker.UrlBuilder; +import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.ParamMap; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.visualization.freemarker.VisualizationFrameworkConstants; @@ -33,8 +32,8 @@ import edu.cornell.mannlib.vitro.webapp.visualization.constants.VisConstants; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.BiboDocument; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoAuthorshipData; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPIData; -import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.CoPINode; +import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Grant; import edu.cornell.mannlib.vitro.webapp.visualization.freemarker.valueobjects.Node; public class UtilityFunctions { @@ -276,5 +275,50 @@ public class UtilityFunctions { * */ return null; } + + public static String getCSVDownloadURL(String individualURI, String visType, String visMode) { + + ParamMap CSVDownloadURLParams = null; + + if (StringUtils.isBlank(visMode)) { + + CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, + individualURI, + VisualizationFrameworkConstants.VIS_TYPE_KEY, + visType); + + } else { + + CSVDownloadURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, + individualURI, + VisualizationFrameworkConstants.VIS_TYPE_KEY, + visType, + VisualizationFrameworkConstants.VIS_MODE_KEY, + visMode); + + } + + String csvDownloadLink = UrlBuilder.getUrl(VisualizationFrameworkConstants.DATA_VISUALIZATION_SERVICE_URL_PREFIX, + CSVDownloadURLParams); + + return csvDownloadLink != null ? csvDownloadLink : "" ; + + } + + public static String getCollaboratorshipNetworkLink(String individualURI, String visType, String visMode) { + + ParamMap collaboratorshipNetworkURLParams = new ParamMap(VisualizationFrameworkConstants.INDIVIDUAL_URI_KEY, + individualURI, + VisualizationFrameworkConstants.VIS_TYPE_KEY, + visType, + VisualizationFrameworkConstants.VIS_MODE_KEY, + visMode); + + String collaboratorshipNetworkURL = UrlBuilder.getUrl( + VisualizationFrameworkConstants.FREEMARKERIZED_VISUALIZATION_URL_PREFIX, + collaboratorshipNetworkURLParams); + + return collaboratorshipNetworkURL != null ? collaboratorshipNetworkURL : "" ; + } }