dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #27282
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 13554: Data entry, migrated history chart to web api
------------------------------------------------------------
revno: 13554
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2014-01-03 10:14:06 +0100
message:
Data entry, migrated history chart to web api
removed:
dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetHistoryChartAction.java
modified:
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/ChartController.java
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/struts.xml
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/javascript/history.js
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== 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 <mortenoh@xxxxxxxxx>
* @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 @@
<property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
</bean>
- <bean id="org.hisp.dhis.de.action.GetHistoryChartAction" class="org.hisp.dhis.de.action.GetHistoryChartAction"
- scope="prototype">
- <property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
- <property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
- <property name="chartService" ref="org.hisp.dhis.chart.ChartService" />
- <property name="organisationUnitService" ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
- </bean>
-
</beans>
=== 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 @@
<result name="input" type="velocity">/dhis-web-dataentry/validationResult.vm</result>
</action>
- <action name="getHistoryChart" class="org.hisp.dhis.de.action.GetHistoryChartAction">
- <result name="success" type="chart"></result>
- </action>
-
</package>
</struts>
=== 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 @@
<div class="historyHeader">$encoder.htmlEncode( $i18n.getString( "history_not_valid" ) )</div>
#else
<div class="historyHeader">$encoder.htmlEncode( $i18n.getString( "dataelement_history" ) )</div>
- <img id="historyChart" src="getHistoryChart.action?dataElementId=${dataElementHistory.dataElement.uid}&categoryOptionComboId=${dataElementHistory.optionCombo.uid}&organisationUnitId=${dataElementHistory.organisationUnit.uid}&periodId=${periodId}"/>
+ <img id="historyChart"
+ src="../api/charts/history/data.png?de=${dataElementHistory.dataElement.uid}&co=${dataElementHistory.optionCombo.uid}&ou=${dataElementHistory.organisationUnit.uid}&pe=${periodId}"/>
#end
</td>
</tr>
=== 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 );
}