=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java 2013-11-07 11:52:20 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java 2014-01-03 09:14:06 +0000 @@ -28,6 +28,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import static org.hisp.dhis.api.utils.ContextUtils.DATE_PATTERN; import static org.hisp.dhis.common.DimensionalObjectUtils.getUniqueDimensions; import static org.hisp.dhis.common.DimensionalObjectUtils.toDimension; @@ -43,15 +44,19 @@ import org.hisp.dhis.chart.Chart; import org.hisp.dhis.chart.ChartService; import org.hisp.dhis.common.DimensionService; +import org.hisp.dhis.dataelement.DataElement; +import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; +import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.dxf2.utils.JacksonUtils; import org.hisp.dhis.i18n.I18nFormat; import org.hisp.dhis.i18n.I18nManager; -import org.hisp.dhis.i18n.I18nManagerException; import org.hisp.dhis.indicator.Indicator; import org.hisp.dhis.indicator.IndicatorService; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.period.Period; +import org.hisp.dhis.period.PeriodType; import org.hisp.dhis.system.util.CodecUtils; import org.hisp.dhis.user.UserService; import org.jfree.chart.ChartUtilities; @@ -66,8 +71,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseStatus; -import static org.hisp.dhis.api.utils.ContextUtils.DATE_PATTERN; - /** * @author Morten Olav Hansen * @author Lars Helge Overland @@ -86,6 +89,12 @@ private UserService userService; @Autowired + private DataElementService dataElementService; + + @Autowired + private DataElementCategoryService categoryService; + + @Autowired private IndicatorService indicatorService; @Autowired @@ -166,7 +175,7 @@ @RequestParam( value = "ou", required = false ) String ou, @RequestParam( value = "width", defaultValue = "800", required = false ) int width, @RequestParam( value = "height", defaultValue = "500", required = false ) int height, - HttpServletResponse response ) throws IOException, I18nManagerException + HttpServletResponse response ) throws IOException { Chart chart = chartService.getChartNoAcl( uid ); @@ -195,7 +204,7 @@ @RequestParam( value = "width", defaultValue = "800", required = false ) int width, @RequestParam( value = "height", defaultValue = "500", required = false ) int height, @RequestParam( value = "skipTitle", required = false ) boolean skipTitle, - HttpServletResponse response ) throws Exception + HttpServletResponse response ) throws IOException { Indicator indicator = indicatorService.getIndicator( indicatorUid ); OrganisationUnit unit = organisationUnitService.getOrganisationUnit( organisationUnitUid ); @@ -216,6 +225,55 @@ ChartUtilities.writeChartAsPNG( response.getOutputStream(), chart, width, height ); } + @RequestMapping( value = { "/history/data", "/history/data.png" }, method = RequestMethod.GET ) + public void getHistoryChart( + @RequestParam String de, + @RequestParam String co, + @RequestParam String pe, + @RequestParam String ou, + @RequestParam( defaultValue = "525", required = false ) int width, + @RequestParam( defaultValue = "300", required = false ) int height, + HttpServletResponse response ) throws IOException + { + DataElement dataElement = dataElementService.getDataElement( de ); + + if ( dataElement == null ) + { + ContextUtils.conflictResponse( response, "Data element does not exist: " + de ); + return; + } + + DataElementCategoryOptionCombo categoryOptionCombo = categoryService.getDataElementCategoryOptionCombo( co ); + + if ( categoryOptionCombo == null ) + { + ContextUtils.conflictResponse( response, "Category option combo does not exist: " + co ); + return; + } + + Period period = PeriodType.getPeriodFromIsoString( pe ); + + if ( period == null ) + { + ContextUtils.conflictResponse( response, "Period does not exist: " + pe ); + return; + } + + OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit( ou ); + + if ( organisationUnit == null ) + { + ContextUtils.conflictResponse( response, "Organisation unit does not exist: " + ou ); + return; + } + + contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_PNG, CacheStrategy.RESPECT_SYSTEM_SETTING, "chart.png", false ); + + JFreeChart chart = chartService.getJFreeChartHistory( dataElement, categoryOptionCombo, period, organisationUnit, 13, i18nManager.getI18nFormat() ); + + ChartUtilities.writeChartAsPNG( response.getOutputStream(), chart, width, height ); + } + //-------------------------------------------------------------------------- // Hooks //-------------------------------------------------------------------------- === removed file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetHistoryChartAction.java' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetHistoryChartAction.java 2013-12-14 14:47:45 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetHistoryChartAction.java 1970-01-01 00:00:00 +0000 @@ -1,165 +0,0 @@ -package org.hisp.dhis.de.action; - -/* - * Copyright (c) 2004-2013, University of Oslo - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * Neither the name of the HISP project nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -import com.opensymphony.xwork2.Action; -import org.hisp.dhis.chart.ChartService; -import org.hisp.dhis.dataelement.DataElement; -import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; -import org.hisp.dhis.dataelement.DataElementCategoryService; -import org.hisp.dhis.dataelement.DataElementService; -import org.hisp.dhis.i18n.I18nFormat; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.organisationunit.OrganisationUnitService; -import org.hisp.dhis.period.Period; -import org.hisp.dhis.period.PeriodType; -import org.jfree.chart.JFreeChart; - -/** - * @author Lars Helge Overland - */ -public class GetHistoryChartAction - implements Action -{ - private static final int HISTORY_LENGTH = 13; - - // ------------------------------------------------------------------------- - // Dependencies - // ------------------------------------------------------------------------- - - private ChartService chartService; - - public void setChartService( ChartService chartService ) - { - this.chartService = chartService; - } - - private DataElementService dataElementService; - - public void setDataElementService( DataElementService dataElementService ) - { - this.dataElementService = dataElementService; - } - - private DataElementCategoryService categoryService; - - public void setCategoryService( DataElementCategoryService categoryService ) - { - this.categoryService = categoryService; - } - - private OrganisationUnitService organisationUnitService; - - public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) - { - this.organisationUnitService = organisationUnitService; - } - - private I18nFormat format; - - public void setFormat( I18nFormat format ) - { - this.format = format; - } - - // ------------------------------------------------------------------------- - // Input - // ------------------------------------------------------------------------- - - private String dataElementId; - - public void setDataElementId( String dataElementId ) - { - this.dataElementId = dataElementId; - } - - private String categoryOptionComboId; - - public void setCategoryOptionComboId( String categoryOptionComboId ) - { - this.categoryOptionComboId = categoryOptionComboId; - } - - private String periodId; - - public void setPeriodId( String periodId ) - { - this.periodId = periodId; - } - - private String organisationUnitId; - - public void setOrganisationUnitId( String organisationUnitId ) - { - this.organisationUnitId = organisationUnitId; - } - - // ------------------------------------------------------------------------- - // Output - // ------------------------------------------------------------------------- - - private JFreeChart chart; - - public JFreeChart getChart() - { - return chart; - } - - private int width = 525; - - public int getWidth() - { - return width; - } - - private int height = 300; - - public int getHeight() - { - return height; - } - - // ------------------------------------------------------------------------- - // Action implementation - // ------------------------------------------------------------------------- - - public String execute() - { - DataElement dataElement = dataElementService.getDataElement( dataElementId ); - DataElementCategoryOptionCombo categoryOptionCombo = categoryService.getDataElementCategoryOptionCombo( categoryOptionComboId ); - - Period period = PeriodType.getPeriodFromIsoString( periodId ); - - OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit( organisationUnitId ); - - chart = chartService.getJFreeChartHistory( dataElement, categoryOptionCombo, period, organisationUnit, HISTORY_LENGTH, format ); - - return SUCCESS; - } -} === modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml 2014-01-03 08:57:36 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml 2014-01-03 09:14:06 +0000 @@ -85,12 +85,4 @@ - - - - - - - === modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/struts.xml 2013-12-25 15:01:48 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/struts.xml 2014-01-03 09:14:06 +0000 @@ -76,9 +76,5 @@ /dhis-web-dataentry/validationResult.vm - - - - === modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/history.vm' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/history.vm 2013-12-14 14:50:17 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/history.vm 2014-01-03 09:14:06 +0000 @@ -78,7 +78,8 @@
$encoder.htmlEncode( $i18n.getString( "history_not_valid" ) )
#else
$encoder.htmlEncode( $i18n.getString( "dataelement_history" ) )
- + #end === modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/history.js' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/history.js 2013-12-21 18:46:53 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/webapp/dhis-web-dataentry/javascript/history.js 2014-01-03 09:14:06 +0000 @@ -160,9 +160,9 @@ { var periodId = $( '#selectedPeriodId' ).val(); - var source = 'getHistoryChart.action?dataElementId=' + currentDataElementId + '&categoryOptionComboId=' - + currentOptionComboId + '&periodId=' + periodId + - '&organisationUnitId=' + dhis2.de.currentOrganisationUnitId + '&r=' + Math.random(); + var source = '../api/charts/history/data.png?de=' + currentDataElementId + '&co=' + + currentOptionComboId + '&pe=' + periodId + + '&ou=' + dhis2.de.currentOrganisationUnitId + '&r=' + Math.random(); $( '#historyChart' ).attr( 'src', source ); }