=== modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartDataElementAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartDataElementAction.java 2011-01-07 05:45:11 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartDataElementAction.java 2011-01-11 08:04:51 +0000 @@ -467,7 +467,7 @@ selectedValues = new ArrayList();//for DrillDown ( for NBIT) selectedStatus = new ArrayList(); - selectedDrillDownData = new ArrayList();//drillDown for periodWise + selectedDrillDownData = new ArrayList();//drillDown for periodWise to OrgChildWise and OrgChildWise to periodWise // DataElement dElement = new DataElement(); === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartIndicatorAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartIndicatorAction.java 2010-12-29 07:47:36 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateChartIndicatorAction.java 2011-01-11 08:04:51 +0000 @@ -320,6 +320,18 @@ { return denumDataElements; } + private List selectedDrillDownData; + + public List getSelectedDrillDownData() + { + return selectedDrillDownData; + } + + + private String drillDownPeriodStartDate; + private String drillDownPeriodEndDate; + private String drillDownPeriodNames; + private String aggChecked; // ------------------------------------------------------------------------- // Action Implementation // ------------------------------------------------------------------------- @@ -346,7 +358,22 @@ /* * double d = 4.57767; System.out.println(Math.round(d)); */ - + + selectedDrillDownData = new ArrayList();//drillDown for periodWise to OrgChildWise and OrgChildWise to periodWise + + + aggChecked = ""; + + if( aggDataCB != null ) + { + aggChecked = "1"; + } + else + { + aggChecked = "0"; + } + + // int flag = 0; // selOUList = new ArrayList(); selStartPeriodList = new ArrayList(); @@ -371,7 +398,11 @@ String startD = ""; String endD = ""; - + + drillDownPeriodStartDate = ""; + drillDownPeriodEndDate = ""; + drillDownPeriodNames = ""; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "MMM-yyyy" ); periodNames = new ArrayList(); @@ -380,6 +411,7 @@ if ( periodTypeLB.equalsIgnoreCase( WeeklyPeriodType.NAME ) ) { // System.out.println( " Inside weekly" ); + int periodCount = 0; for ( String periodStr : periodLB ) { String startWeekDate = periodStr.split( "To" )[0] ; //for start week @@ -388,15 +420,30 @@ startD = startWeekDate.trim(); endD = endWeekDate.trim(); + // for DrillDown Period String + if( periodCount == periodLB.size()-1 ) + { + drillDownPeriodStartDate += startD; + drillDownPeriodEndDate += endD; + drillDownPeriodNames += periodStr; + } + else + { + drillDownPeriodStartDate += startD + ";"; + drillDownPeriodEndDate += endD + ";"; + drillDownPeriodNames += periodStr + ";"; + } + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); periodNames.add( periodStr ); + periodCount++; //System.out.println( startD + " : " + endD ); } } else - { + { int periodCount = 0; for ( String year : yearLB ) { // int selYear = Integer.parseInt( year.split( "-" )[0] ); @@ -407,6 +454,21 @@ startD = "" + selYear + "-01-01"; endD = "" + selYear + "-12-31"; + + // for DrillDown Period String + if( periodCount == yearLB.size()-1 ) + { + drillDownPeriodStartDate += startD; + drillDownPeriodEndDate += endD; + drillDownPeriodNames += selYear; + } + else + { + drillDownPeriodStartDate += startD + ";"; + drillDownPeriodEndDate += endD + ";"; + drillDownPeriodNames += selYear + ";"; + } + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); @@ -436,6 +498,10 @@ endD = "" + selYear + "-" + monthOrder[period] + "-" + ( monthDays[period] + 1 ); } + drillDownPeriodStartDate += startD + ";"; + drillDownPeriodEndDate += endD + ";"; + drillDownPeriodNames += simpleDateFormat.format( format.parseDate( startD ) ) + ";"; + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); periodNames.add( simpleDateFormat.format( format.parseDate( startD ) ) ); @@ -449,25 +515,44 @@ startD = "" + selYear + "-01-01"; endD = "" + selYear + "-03-31"; periodNames.add( selYear + "-Q1" ); + drillDownPeriodNames += selYear + "-Q1" + ";"; } else if ( period == 1 ) { startD = "" + selYear + "-04-01"; endD = "" + selYear + "-06-30"; periodNames.add( selYear + "-Q2" ); + drillDownPeriodNames += selYear + "-Q2" + ";"; } else if ( period == 2 ) { startD = "" + selYear + "-07-01"; endD = "" + selYear + "-09-30"; periodNames.add( selYear + "-Q3" ); + drillDownPeriodNames += selYear + "-Q3" + ";"; } else { startD = "" + selYear + "-10-01"; endD = "" + selYear + "-12-31"; periodNames.add( (selYear) + "-Q4" ); - } + drillDownPeriodNames += selYear + "-Q4" + ";"; + } + + + // for DrillDown Period String + if( periodCount == periodLB.size()-1 ) + { + drillDownPeriodStartDate += startD; + drillDownPeriodEndDate += endD; + } + else + { + drillDownPeriodStartDate += startD + ";"; + drillDownPeriodEndDate += endD + ";"; + } + + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); //System.out.println( "Start Date : " + startD + " , End Date : " + endD ); @@ -480,13 +565,19 @@ startD = "" + selYear + "-01-01"; endD = "" + selYear + "-06-30"; periodNames.add( selYear + "-HY1" ); + drillDownPeriodNames += selYear + "-HY1" + ";"; } else { startD = "" + selYear + "-07-01"; endD = "" + selYear + "-12-31"; periodNames.add( selYear + "-HY2" ); + drillDownPeriodNames += selYear + "-HY2" + ";"; } + + drillDownPeriodStartDate += startD + ";"; + drillDownPeriodEndDate += endD + ";"; + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); } @@ -512,6 +603,20 @@ endD = selYear + "-" + month + "-" + date; } + // for DrillDown Period String + if( periodCount == periodLB.size()-1 ) + { + drillDownPeriodStartDate += startD; + drillDownPeriodEndDate += endD; + drillDownPeriodNames += startD; + } + else + { + drillDownPeriodStartDate += startD + ";"; + drillDownPeriodEndDate += endD + ";"; + drillDownPeriodNames += startD + ";"; + } + selStartPeriodList.add( format.parseDate( startD ) ); selEndPeriodList.add( format.parseDate( endD ) ); @@ -520,7 +625,7 @@ } System.out.println( startD + " : " + endD ); } - + periodCount++; } } // Indicator Information @@ -560,8 +665,16 @@ System.out.println( "Inside PeriodWise Chart Data and group not selected" ); //System.out.println( "\n\nsize of OrgUnit List : " + selOUList.size() + " , size of Indicator List : " + indicatorList.size() ); System.out.println( "Chart Generation Start Time is : \t" + new Date() ); - indicatorChartResult = generateChartDataPeriodWise( selStartPeriodList, selEndPeriodList, periodNames, - indicatorList, selOUList.iterator().next() ); + indicatorChartResult = generateChartDataPeriodWise( selStartPeriodList, selEndPeriodList, periodNames, indicatorList, selOUList.iterator().next() ); + + + for( String drillDown : selectedDrillDownData ) + { + System.out.println( "drill Down value is :" + drillDown ); + System.out.println( "---------"); + } + + // dataElementChartResult.getSeries() } else if ( categoryLB.equalsIgnoreCase( CHILDREN ) && ougGroupSetCB == null ) @@ -610,8 +723,7 @@ selOUGroupMemberList.retainAll( orgUnitChildList ); - indicatorChartResult = generateChartDataOrgGroupPeriodWise( selStartPeriodList, selEndPeriodList, - periodNames, indicatorList, selOUGroupMemberList ); + indicatorChartResult = generateChartDataOrgGroupPeriodWise( selStartPeriodList, selEndPeriodList, periodNames, indicatorList, selOUGroupMemberList ); } @@ -643,8 +755,7 @@ selOUGroupMemberList.retainAll( orgUnitChildList ); - indicatorChartResult = generateChartDataSelectedOrgUnitWise( selStartPeriodList, selEndPeriodList, - periodNames, indicatorList, selOUGroupMemberList ); + indicatorChartResult = generateChartDataSelectedOrgUnitWise( selStartPeriodList, selEndPeriodList, periodNames, indicatorList, selOUGroupMemberList ); } @@ -703,9 +814,7 @@ // Methods for getting Chart Data only Period Wise start // ------------------------------------------------------------------------- - public IndicatorChartResult generateChartDataPeriodWise( List selStartPeriodList, - List selEndPeriodList, List periodNames, List indicatorList, OrganisationUnit orgUnit ) - throws Exception + public IndicatorChartResult generateChartDataPeriodWise( List selStartPeriodList, List selEndPeriodList, List periodNames, List indicatorList, OrganisationUnit orgUnit )throws Exception { IndicatorChartResult indicatorChartResult; @@ -717,10 +826,8 @@ Double[][] numDataArray = new Double[indicatorList.size()][selStartPeriodList.size()]; Double[][] denumDataArray = new Double[indicatorList.size()][selStartPeriodList.size()]; - // Map> numData = new HashMap>(); - // Map> denumData = new HashMap>(); + // Map> numData = new HashMap>(); + // Map> denumData = new HashMap>(); String chartTitle = "OrganisationUnit : " + orgUnit.getShortName(); String xAxis_Title = "Time Line"; @@ -742,36 +849,37 @@ for ( Date startDate : selStartPeriodList ) { Date endDate = selEndPeriodList.get( periodCount ); + String drillDownPeriodName = periodNames.get( periodCount ); categories[periodCount] = periodNames.get( periodCount ); + + String tempStartDate = format.formatDate( startDate ); + String tempEndDate = format.formatDate( endDate ); Double aggIndicatorValue = 0.0; Double aggIndicatorNumValue = 0.0; Double aggIndicatorDenumValue = 0.0; + String drillDownData = orgUnit.getId() + ":" + "0" + ":" + indicator.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); + if ( aggDataCB != null ) { - aggIndicatorValue = aggregationService.getAggregatedIndicatorValue( indicator, startDate, endDate, - orgUnit ); - - aggIndicatorNumValue = aggregationService.getAggregatedNumeratorValue( indicator, startDate, - endDate, orgUnit ); - aggIndicatorDenumValue = aggregationService.getAggregatedDenominatorValue( indicator, startDate, - endDate, orgUnit ); - - if ( aggIndicatorValue == null ) - aggIndicatorValue = 0.0; + aggIndicatorValue = aggregationService.getAggregatedIndicatorValue( indicator, startDate, endDate, orgUnit ); + + aggIndicatorNumValue = aggregationService.getAggregatedNumeratorValue( indicator, startDate, endDate, orgUnit ); + aggIndicatorDenumValue = aggregationService.getAggregatedDenominatorValue( indicator, startDate, endDate, orgUnit ); + + if ( aggIndicatorValue == null ) aggIndicatorValue = 0.0; } else { - aggIndicatorValue = dashBoardService.getIndividualIndicatorValue( indicator, orgUnit, startDate, - endDate ); + aggIndicatorValue = dashBoardService.getIndividualIndicatorValue( indicator, orgUnit, startDate, endDate ); // System.out.println( " \nIndicator Numerator value : " + indicator.getNumerator() // + ", Start Date :- " + startDate + ", End Date :- " + endDate + ", Org Unit :- " + orgUnit ); - String tempStr = reportService.getIndividualResultDataValue( indicator.getNumerator(), startDate, - endDate, orgUnit, "" ); + String tempStr = reportService.getIndividualResultDataValue( indicator.getNumerator(), startDate, endDate, orgUnit, "" ); // System.out.println( " \nIndicatorNumerator valu is " + tempStr ); try @@ -783,8 +891,7 @@ aggIndicatorNumValue = 0.0; } - tempStr = reportService.getIndividualResultDataValue( indicator.getDenominator(), startDate, - endDate, orgUnit, "" ); + tempStr = reportService.getIndividualResultDataValue( indicator.getDenominator(), startDate, endDate, orgUnit, "" ); try { @@ -864,6 +971,9 @@ { categories[childCount] = orgChild.getName(); + + String drillDownData = orgChild.getId() + ":" + "0" + ":" + indicator.getId() + ":"+ periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); Double aggIndicatorValue = 0.0; Double aggIndicatorNumValue = 0.0; @@ -1005,6 +1115,8 @@ for ( OrganisationUnit orgUnit : selOUList ) { categories[orgUnitCount] = orgUnit.getName(); + String drillDownData = orgUnit.getId() + ":" + "0" + ":" + indicator.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); Double aggIndicatorValue = 0.0; Double aggIndicatorNumValue = 0.0; @@ -1137,8 +1249,7 @@ Double[][] denumDataArray = new Double[indicatorList.size()][selStartPeriodList.size()]; Double[][] data = new Double[indicatorList.size()][selStartPeriodList.size()]; - String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName() + "(" + selOrgUnitGroup.getName() - + ")"; + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName() + "( Group - " + selOrgUnitGroup.getName() + " )"; String xAxis_Title = "Time Line"; String yAxis_Title = "Value"; @@ -1161,7 +1272,15 @@ { Date endDate = selEndPeriodList.get( periodCount ); categories[periodCount] = periodNames.get( periodCount ); - + + String tempStartDate = format.formatDate( startDate ); + String tempEndDate = format.formatDate( endDate ); + String drillDownPeriodName = periodNames.get( periodCount ); + + + String drillDownData = selectedOrgUnit.getId() + ":"+ selOrgUnitGroup.getId() + ":" + indicator.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + aggChecked; + //selectedDrillDownData + selectedDrillDownData.add( drillDownData ); int orgGroupCount = 0; for ( OrganisationUnit orgUnit : selOUGroupMemberList ) @@ -1313,6 +1432,9 @@ Double aggIndicatorDenumValue = 0.0; categories[orgGroupCount] = orgUnitGroup.getName(); + + String drillDownData = selectedOrgUnit.getId() + ":" + orgUnitGroup.getId() + ":" + indicator.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + aggChecked; + selectedDrillDownData.add( drillDownData ); if ( serviceCount == 0 ) { === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartDataElementResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartDataElementResultAction.java 2011-01-07 05:45:11 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartDataElementResultAction.java 2011-01-11 08:04:51 +0000 @@ -230,7 +230,7 @@ //private String drillDownPeriodStartDate; //private String drillDownPeriodEndDate; - private String drillDownPeriodNames; + //private String drillDownPeriodNames; // ------------------------------------------------------------------------- // Action implements @@ -281,7 +281,7 @@ //drillDownPeriodStartDate = values[5]; //drillDownPeriodEndDate = values[6]; - drillDownPeriodNames = values[7]; + //drillDownPeriodNames = values[7]; startDateArray = values[5].split( ";" ); //String startDateArray[] = startDateString.split(";"); @@ -328,10 +328,11 @@ int periodCount = 0; for( Date startDate : selStartPeriodList ) { + String drillDownPeriodName = periodNames.get( periodCount ); Date endDate = selEndPeriodList.get( periodCount ); String tempStartDate = format.formatDate( startDate ); String tempEndDate = format.formatDate( endDate ); - String drillDownData = selectedOrgUnit.getId() + ":" + "0" + ":" + dataElement.getId() + ":"+ categoryCombo.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodNames + ":" + deSelection + ":" + aggDataCB; + String drillDownData = selectedOrgUnit.getId() + ":" + "0" + ":" + dataElement.getId() + ":"+ categoryCombo.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + deSelection + ":" + aggDataCB; selectedDrillDownData.add( drillDownData ); periodCount++; } @@ -344,10 +345,11 @@ int periodCount = 0; for( Date startdate : selStartPeriodList ) { + String drillDownPeriodName = periodNames.get( periodCount ); Date endDate = selEndPeriodList.get( periodCount ); String tempStartDate = format.formatDate( startdate ); String tempEndDate = format.formatDate( endDate ); - String drillDownData = selectedOrgUnit.getId() + ":" + "0" + ":" + dataElement.getId() + ":"+ categoryCombo.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodNames + ":" + deSelection + ":" + aggDataCB; + String drillDownData = selectedOrgUnit.getId() + ":" + "0" + ":" + dataElement.getId() + ":"+ categoryCombo.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + deSelection + ":" + aggDataCB; selectedDrillDownData.add( drillDownData ); periodCount++; } @@ -358,11 +360,11 @@ //if( orgUnitGroup != 0 && categoryLB.equalsIgnoreCase( SELECTED ) ) { //System.out.println( "Inside the method when orgUnit view by selected and group checked" ); - dataElementChartResult = dashBoardService.generateChartDataWithGroupToPeriodWise( selStartPeriodList, selEndPeriodList, periodNames ,periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, selectedOrgUnitGroup ,aggDataCB ); + dataElementChartResult = dashBoardService.generateDataElementChartDataWithGroupToPeriodWise( selStartPeriodList, selEndPeriodList, periodNames ,periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, selectedOrgUnitGroup ,aggDataCB ); } else { - dataElementChartResult = dashBoardService.generateChartDataWithPeriodWise( selStartPeriodList, selEndPeriodList,periodNames, periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, aggDataCB ); + dataElementChartResult = dashBoardService.generateDataElementChartDataWithPeriodWise( selStartPeriodList, selEndPeriodList,periodNames, periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, aggDataCB ); } ActionContext ctx = ActionContext.getContext(); === added file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartIndicatorResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartIndicatorResultAction.java 1970-01-01 00:00:00 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownOrgUnitToPeriodChartIndicatorResultAction.java 2011-01-11 08:04:51 +0000 @@ -0,0 +1,368 @@ +/* + * Copyright (c) 2004-2010, 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. + */ +package org.hisp.dhis.dataanalyser.ga.action.charts; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.amplecode.quick.StatementManager; +import org.apache.struts2.ServletActionContext; +import org.apache.velocity.tools.generic.ListTool; +import org.hisp.dhis.dataanalyser.util.DashBoardService; +import org.hisp.dhis.dataanalyser.util.IndicatorChartResult; +import org.hisp.dhis.i18n.I18nFormat; +import org.hisp.dhis.indicator.Indicator; +import org.hisp.dhis.indicator.IndicatorService; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import org.hisp.dhis.organisationunit.OrganisationUnitService; + +import com.opensymphony.xwork2.Action; +import com.opensymphony.xwork2.ActionContext; + +/** + * @author Mithilesh Kumar Thakur + * + * @version GenerateDrillDownOrgUnitToPeriodChartIndicatorResultAction.java Jan 8, 2011 5:49:39 PM + */ +public class GenerateDrillDownOrgUnitToPeriodChartIndicatorResultAction implements Action +{ + private final String PERIODWISE = "period"; + + //private final String CHILDREN = "children"; + + // private final String OPTIONCOMBO = "optioncombo"; + //private final String SELECTED = "random"; + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private StatementManager statementManager; + + public void setStatementManager( StatementManager statementManager ) + { + this.statementManager = statementManager; + } + + private DashBoardService dashBoardService; + + public void setDashBoardService( DashBoardService dashBoardService ) + { + this.dashBoardService = dashBoardService; + } + + private IndicatorService indicatorService; + + public void setIndicatorService( IndicatorService indicatorService ) + { + this.indicatorService = indicatorService; + } + + private OrganisationUnitService organisationUnitService; + + public OrganisationUnitService getOrganisationUnitService() + { + return organisationUnitService; + } + + public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) + { + this.organisationUnitService = organisationUnitService; + } + + private OrganisationUnitGroupService organisationUnitGroupService; + + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) + { + this.organisationUnitGroupService = organisationUnitGroupService; + } + + // ------------------------------------------------------------------------- + // Input/output + // ------------------------------------------------------------------------- + + private String categoryLB; + + public void setCategoryLB( String categoryLB ) + { + this.categoryLB = categoryLB; + } + + public String getCategoryLB() + { + return categoryLB; + } + + /* + private String ougGroupSetCB; + + + public void setOugGroupSetCB( String ougGroupSetCB ) + { + this.ougGroupSetCB = ougGroupSetCB; + } + */ + private I18nFormat format; + + public void setFormat( I18nFormat format ) + { + this.format = format; + } + + private String selDrillDownData; + + public void setSelDrillDownData( String selDrillDownData ) + { + this.selDrillDownData = selDrillDownData; + } + + public String[] values; + + ListTool listTool; + + public ListTool getListTool() + { + return listTool; + } + + private IndicatorChartResult indicatorChartResult; + + public IndicatorChartResult getIndicatorChartResult() + { + return indicatorChartResult; + } + + private OrganisationUnit selectedOrgUnit; + + private OrganisationUnitGroup selectedOrgUnitGroup; + + private HttpSession session; + + public HttpSession getSession() + { + return session; + } + + private List selStartPeriodList; + + private List selEndPeriodList; + + private Indicator indicator; + + private String selectedButton; + + public String getSelectedButton() + { + return selectedButton; + } + + public void setSelectedButton( String selectedButton ) + { + this.selectedButton = selectedButton; + } + /* + private String aggDataCB; + + public void setAggDataCB( String aggDataCB ) + { + this.aggDataCB = aggDataCB; + } + + public String getAggDataCB() + { + return aggDataCB; + } + */ + public String[] startDateArray; + public String[] endDateArray; + public String[] priodNameArray; + + private List periodNames; + + private List selectedDrillDownData; + + public List getSelectedDrillDownData() + { + return selectedDrillDownData; + } + + //private String drillDownPeriodStartDate; + //private String drillDownPeriodEndDate; + // private String drillDownPeriodNames; + + // ------------------------------------------------------------------------- + // Action implements + // ------------------------------------------------------------------------- + + public String execute()throws Exception + { + System.out.println( "Inside Generate DrillDown OrgUnit To Period Indicator Chart Result Action " ); + + statementManager.initialise(); + + selectedDrillDownData = new ArrayList();//drillDown for periodWise + listTool = new ListTool(); + + values = selDrillDownData.split( ":" ); + + int orgunit =Integer.parseInt( values[0] ); + int orgUnitGroup = Integer.parseInt( values[1]); + //System.out.println( " Group Id is " + orgUnitGroup ); + if ( orgUnitGroup != 0 ) + { + selectedOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( orgUnitGroup ); + System.out.println( " Group Name is " + selectedOrgUnitGroup.getName() ); + } + + selectedOrgUnit = organisationUnitService.getOrganisationUnit( orgunit ); + + int indicatorId = Integer.parseInt( values[2] ); + indicator = indicatorService.getIndicator( indicatorId ); + List indicatorList = new ArrayList(); + indicatorList.add( indicator ); + + String periodTypeLB = values[3]; + + selStartPeriodList = new ArrayList(); + selEndPeriodList = new ArrayList(); + periodNames = new ArrayList(); + + // drillDownPeriodStartDate = values[5]; + //drillDownPeriodEndDate = values[6]; + // drillDownPeriodNames = values[6]; + + startDateArray = values[4].split( ";" ); + //String startDateArray[] = startDateString.split(";"); + + for ( int i = 0 ; i < startDateArray.length ; i++ ) + { + String startD = startDateArray[i]; + selStartPeriodList.add( format.parseDate( startD ) ); + //System.out.println( "Start date " + startD ); + } + + //String endDateString = values[6]; + endDateArray = values[5].split( ";" ); + + for ( int i = 0 ; i < endDateArray.length ; i++ ) + { + String startD = endDateArray[i]; + selEndPeriodList.add( format.parseDate( startD ) ); + //System.out.println( "End date " + startD ); + } + // selStartPeriodList.add( format.parseDate( startD ) ); + //selEndPeriodList.add( format.parseDate( endD ) ); + + priodNameArray = values[6].split( ";" ); + + for ( int i = 0 ; i < priodNameArray.length ; i++ ) + { + String startD = priodNameArray[i]; + periodNames.add( startD ); + } + String aggDataCB = values[7]; + + //String drillDownData = orgUnit.getId() + ":"+ dataElement.getId() + ":"+ decoc.getId() + ":" + periodType + ":" + tempStartDate + ":" + tempEndDate + ":" + deSelection + ":" + aggDataCB; + + System.out.println( selStartPeriodList + ":" + selEndPeriodList + ":" + periodNames + ":" + periodTypeLB + ":" + indicatorList+ ":" + selectedOrgUnit + ":" + aggDataCB ); + // System.out.println( selStartPeriodList.size() + ":" + selEndPeriodList.size() ); + System.out.println( "Chart Generation Start Time is for drillDown: \t" + new Date() ); + + if( orgUnitGroup == 0 && ( categoryLB.equalsIgnoreCase( PERIODWISE )) ) + { + int periodCount = 0; + for( Date startDate : selStartPeriodList ) + { + + String drillDownPeriodName = periodNames.get( periodCount ); + Date endDate = selEndPeriodList.get( periodCount ); + String tempStartDate = format.formatDate( startDate ); + String tempEndDate = format.formatDate( endDate ); + String drillDownData = selectedOrgUnit.getId() + ":" + "0" + ":" + indicator.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + aggDataCB; + selectedDrillDownData.add( drillDownData ); + periodCount++; + } + //System.out.println( "hhhiiiiiiiiiiiiii-------------hhhhhhhhhh" ); + + } + + if( orgUnitGroup != 0 && ( categoryLB.equalsIgnoreCase( PERIODWISE )) ) + { + int periodCount = 0; + for( Date startdate : selStartPeriodList ) + { + String drillDownPeriodName = periodNames.get( periodCount ); + Date endDate = selEndPeriodList.get( periodCount ); + String tempStartDate = format.formatDate( startdate ); + String tempEndDate = format.formatDate( endDate ); + String drillDownData = selectedOrgUnit.getId() + ":" + "0" + ":" + indicator.getId() + ":" + periodTypeLB + ":" + tempStartDate + ":" + tempEndDate + ":" + drillDownPeriodName + ":" + aggDataCB; + selectedDrillDownData.add( drillDownData ); + periodCount++; + } + } + + + if( orgUnitGroup != 0 ) + //if( orgUnitGroup != 0 && categoryLB.equalsIgnoreCase( SELECTED ) ) + { + //System.out.println( "Inside the method when orgUnit view by selected and group checked" ); + + indicatorChartResult = dashBoardService.generateIndicatorChartDataWithGroupToPeriodWise( selStartPeriodList, selEndPeriodList, periodNames ,periodTypeLB, indicatorList, selectedOrgUnit, selectedOrgUnitGroup ,aggDataCB ); + } + else + { + indicatorChartResult = dashBoardService.generateIndicatorChartDataWithPeriodWise( selStartPeriodList, selEndPeriodList,periodNames, periodTypeLB, indicatorList, selectedOrgUnit, aggDataCB ); + } + + ActionContext ctx = ActionContext.getContext(); + HttpServletRequest req = (HttpServletRequest) ctx.get( ServletActionContext.HTTP_REQUEST ); + + session = req.getSession(); + + session.setAttribute( "data1", indicatorChartResult.getData() ); + session.setAttribute( "numDataArray", indicatorChartResult.getNumDataArray() ); + session.setAttribute( "denumDataArray", indicatorChartResult.getDenumDataArray() ); + session.setAttribute( "series1", indicatorChartResult.getSeries() ); + session.setAttribute( "categories1", indicatorChartResult.getCategories() ); + session.setAttribute( "chartTitle", indicatorChartResult.getChartTitle() ); + session.setAttribute( "xAxisTitle", indicatorChartResult.getXAxis_Title() ); + session.setAttribute( "yAxisTitle", indicatorChartResult.getYAxis_Title() ); + + statementManager.destroy(); + System.out.println( "Chart Generation End Time is : \t" + new Date() ); + return SUCCESS; + } + + +} + + === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartDataElementResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartDataElementResultAction.java 2011-01-07 05:45:11 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartDataElementResultAction.java 2011-01-11 08:04:51 +0000 @@ -63,7 +63,7 @@ private final String CHILDREN = "children"; - private final String SELECTED = "random"; + private final String SELECTED = "random"; //private final String OPTIONCOMBO = "optioncombo"; // ------------------------------------------------------------------------- @@ -365,11 +365,11 @@ */ if ( orgUnitGroup != 0 ) { - dataElementChartResult = dashBoardService.generateChartDataWithGroupMemberWise( selStartPeriodList, selEndPeriodList, periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, selectedOrgUnitGroup ,aggDataCB ); + dataElementChartResult = dashBoardService.generateDataElementChartDataWithGroupMemberWise( selStartPeriodList, selEndPeriodList, periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, selectedOrgUnitGroup ,aggDataCB ); } else { - dataElementChartResult = dashBoardService.generateChartDataWithChildrenWise( selStartPeriodList, selEndPeriodList, periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, aggDataCB ); + dataElementChartResult = dashBoardService.generateDataElementChartDataWithChildrenWise( selStartPeriodList, selEndPeriodList, periodTypeLB, dataElementList, deSelection, selectedOptionComboList, selectedOrgUnit, aggDataCB ); } ActionContext ctx = ActionContext.getContext(); === added file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartIndicatorResultAction.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartIndicatorResultAction.java 1970-01-01 00:00:00 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/ga/action/charts/GenerateDrillDownPeriodToOrgChildChartIndicatorResultAction.java 2011-01-11 08:04:51 +0000 @@ -0,0 +1,383 @@ +/* + * Copyright (c) 2004-2010, 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. + */ +package org.hisp.dhis.dataanalyser.ga.action.charts; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.amplecode.quick.StatementManager; +import org.apache.struts2.ServletActionContext; +import org.apache.velocity.tools.generic.ListTool; +import org.hisp.dhis.dataanalyser.util.DashBoardService; +import org.hisp.dhis.dataanalyser.util.IndicatorChartResult; +import org.hisp.dhis.i18n.I18nFormat; +import org.hisp.dhis.indicator.Indicator; +import org.hisp.dhis.indicator.IndicatorService; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import org.hisp.dhis.organisationunit.OrganisationUnitService; + +import com.opensymphony.xwork2.Action; +import com.opensymphony.xwork2.ActionContext; + +/** + * @author Mithilesh Kumar Thakur + * + * @version GenerateDrillDownPeriodToOrgChildChartIndicatorResultAction.java Jan 7, 2011 3:00:03 PM + */ +public class GenerateDrillDownPeriodToOrgChildChartIndicatorResultAction implements Action +{ + // private final String PERIODWISE = "period"; + + private final String CHILDREN = "children"; + + private final String SELECTED = "random"; + + //private final String OPTIONCOMBO = "optioncombo"; + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private StatementManager statementManager; + + public void setStatementManager( StatementManager statementManager ) + { + this.statementManager = statementManager; + } + + private DashBoardService dashBoardService; + + public void setDashBoardService( DashBoardService dashBoardService ) + { + this.dashBoardService = dashBoardService; + } + + private IndicatorService indicatorService; + + public void setIndicatorService( IndicatorService indicatorService ) + { + this.indicatorService = indicatorService; + } + + private OrganisationUnitService organisationUnitService; + + public OrganisationUnitService getOrganisationUnitService() + { + return organisationUnitService; + } + + public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) + { + this.organisationUnitService = organisationUnitService; + } + + private OrganisationUnitGroupService organisationUnitGroupService; + + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) + { + this.organisationUnitGroupService = organisationUnitGroupService; + } + + // ------------------------------------------------------------------------- + // Input/output + // ------------------------------------------------------------------------- + + + private I18nFormat format; + + public void setFormat( I18nFormat format ) + { + this.format = format; + } + + private String selDrillDownData; + + public void setSelDrillDownData( String selDrillDownData ) + { + this.selDrillDownData = selDrillDownData; + } + + public String[] values; + + ListTool listTool; + + public ListTool getListTool() + { + return listTool; + } + + private IndicatorChartResult indicatorChartResult; + + public IndicatorChartResult getIndicatorChartResult() + { + return indicatorChartResult; + } + + private OrganisationUnit selectedOrgUnit; + + private OrganisationUnitGroup selectedOrgUnitGroup; + + private Indicator indicator; + + //private DataElementCategoryOptionCombo categoryCombo; + + private HttpSession session; + + public HttpSession getSession() + { + return session; + } + + private List selStartPeriodList; + + private List selEndPeriodList; + + private String selectedButton; + + public String getSelectedButton() + { + return selectedButton; + } + + public void setSelectedButton( String selectedButton ) + { + this.selectedButton = selectedButton; + } + + public String[] startDateArray; + public String[] endDateArray; + public String[] priodNameArray; + + private List periodNames; + + private String categoryLB; + + public void setCategoryLB( String categoryLB ) + { + this.categoryLB = categoryLB; + } + + public String getCategoryLB() + { + return categoryLB; + } + private List selectedDrillDownData; + + public List getSelectedDrillDownData() + { + return selectedDrillDownData; + } + + // private String drillDownPeriodStartDate; + // private String drillDownPeriodEndDate; + + //private String drillDownPeriodNames; + + /* + private String aggDataCB; + + public void setAggDataCB( String aggDataCB ) + { + this.aggDataCB = aggDataCB; + } + + public String getAggDataCB() + { + return aggDataCB; + } + */ + + private String drillDownPeriodStartDate; + private String drillDownPeriodEndDate; + private String drillDownPeriodNames; + + // ------------------------------------------------------------------------- + // Action implements + // ------------------------------------------------------------------------- + + public String execute()throws Exception + { + + statementManager.initialise(); + + selectedDrillDownData = new ArrayList();//drillDown for periodWise to OrgChild wise indicator Data + + listTool = new ListTool(); + + values = selDrillDownData.split( ":" ); + + int orgunit =Integer.parseInt( values[0] ); + int orgUnitGroup = Integer.parseInt( values[1]); + //System.out.println( " Group Id is " + orgUnitGroup ); + + if ( orgUnitGroup != 0 ) + { + selectedOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( orgUnitGroup ); + //System.out.println( " Group Name is " + selectedOrgUnitGroup.getName() ); + } + + selectedOrgUnit = organisationUnitService.getOrganisationUnit( orgunit ); + + int indicatorId = Integer.parseInt( values[2] ); + indicator = indicatorService.getIndicator( indicatorId ); + List indicatorList = new ArrayList(); + indicatorList.add( indicator ); + + + + String periodTypeLB = values[3]; + // String startD = values[5]; + //String endD = values[6]; + + selStartPeriodList = new ArrayList(); + selEndPeriodList = new ArrayList(); + periodNames = new ArrayList(); + + drillDownPeriodStartDate = values[4]; + drillDownPeriodEndDate = values[5]; + drillDownPeriodNames = values[6]; + + + + startDateArray = values[4].split( ";" ); + //String startDateArray[] = startDateString.split(";"); + + for ( int i = 0 ; i < startDateArray.length ; i++ ) + { + String startD = startDateArray[i]; + selStartPeriodList.add( format.parseDate( startD ) ); + // System.out.println( "Start date " + startD ); + } + + //String endDateString = values[6]; + endDateArray = values[5].split( ";" ); + + for ( int i = 0 ; i < endDateArray.length ; i++ ) + { + String startD = endDateArray[i]; + selEndPeriodList.add( format.parseDate( startD ) ); + // System.out.println( "End date " + startD ); + } + // selStartPeriodList.add( format.parseDate( startD ) ); + //selEndPeriodList.add( format.parseDate( endD ) ); + + priodNameArray = values[6].split( ";" ); + + for ( int i = 0 ; i < priodNameArray.length ; i++ ) + { + String periodName = priodNameArray[i]; + periodNames.add( periodName ); + } + // selStartPeriodList.add( format.parseDate( startD ) ); + //selEndPeriodList.add( format.parseDate( endD ) ); + + + String aggDataCB = values[7]; + + //String drillDownData = orgUnit.getId() + ":"+ dataElement.getId() + ":"+ decoc.getId() + ":" + periodType + ":" + tempStartDate + ":" + tempEndDate + ":" + deSelection + ":" + aggDataCB; + + System.out.println( selStartPeriodList + ":" + selEndPeriodList + ":" + periodTypeLB + ":" + indicatorList+ ":" + selectedOrgUnit + ":" + aggDataCB ); + System.out.println( "Chart Generation Start Time is for drillDown: \t" + new Date() ); + + + if( orgUnitGroup == 0 && ( categoryLB.equalsIgnoreCase( CHILDREN ) || ( categoryLB.equalsIgnoreCase( SELECTED )) )) + { + List childOrgUnitList = new ArrayList(); + childOrgUnitList = new ArrayList( selectedOrgUnit.getChildren()); + + for( OrganisationUnit orgChild : childOrgUnitList ) + { + String drillDownData = orgChild.getId() + ":" + "0" + ":" + indicator.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + aggDataCB; + selectedDrillDownData.add( drillDownData ); + } + } + + if ( orgUnitGroup != 0 && ( categoryLB.equalsIgnoreCase( CHILDREN ) || ( categoryLB.equalsIgnoreCase( SELECTED )) )) + { + // List childOrgUnitList = new ArrayList(); + //childOrgUnitList = new ArrayList( selectedOrgUnit.getChildren()); + + List selectedOUGroupMemberList = new ArrayList( selectedOrgUnitGroup.getMembers() ); + + List childOrgUnitList = new ArrayList(); + childOrgUnitList = new ArrayList( organisationUnitService.getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); + + selectedOUGroupMemberList.retainAll( childOrgUnitList ); + + for( OrganisationUnit orgChild : selectedOUGroupMemberList ) + { + String drillDownData = orgChild.getId() + ":" + selectedOrgUnitGroup.getId() + ":" + indicator.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + aggDataCB; + selectedDrillDownData.add( drillDownData ); + } + + } +/* + if ( orgUnitGroup != 0 && categoryLB.equals( SELECTED ) ) + { + String drillDownData = selectedOrgUnit.getId() + ":" + selectedOrgUnitGroup.getId() + ":" + dataElement.getId() + ":"+ categoryCombo.getId() + ":" + periodTypeLB + ":" + drillDownPeriodStartDate + ":" + drillDownPeriodEndDate + ":" + drillDownPeriodNames + ":" + deSelection + ":" + aggDataCB; + selectedDrillDownData.add( drillDownData ); + + } + +*/ + if ( orgUnitGroup != 0 ) + { + indicatorChartResult = dashBoardService.generateIndicatorChartDataWithGroupMemberWise( selStartPeriodList, selEndPeriodList, periodTypeLB, indicatorList, selectedOrgUnit, selectedOrgUnitGroup ,aggDataCB ); + } + else + { + indicatorChartResult = dashBoardService.generateIndicatorChartDataWithChildrenWise( selStartPeriodList, selEndPeriodList, periodTypeLB, indicatorList,selectedOrgUnit, aggDataCB ); + } + + ActionContext ctx = ActionContext.getContext(); + HttpServletRequest req = (HttpServletRequest) ctx.get( ServletActionContext.HTTP_REQUEST ); + + session = req.getSession(); + + session.setAttribute( "data1", indicatorChartResult.getData() ); + session.setAttribute( "numDataArray", indicatorChartResult.getNumDataArray() ); + session.setAttribute( "denumDataArray", indicatorChartResult.getDenumDataArray() ); + session.setAttribute( "series1", indicatorChartResult.getSeries() ); + session.setAttribute( "categories1", indicatorChartResult.getCategories() ); + session.setAttribute( "chartTitle", indicatorChartResult.getChartTitle() ); + session.setAttribute( "xAxisTitle", indicatorChartResult.getXAxis_Title() ); + session.setAttribute( "yAxisTitle", indicatorChartResult.getYAxis_Title() ); + + statementManager.destroy(); + System.out.println( "Chart Generation End Time is : \t" + new Date() ); + return SUCCESS; + } + + +} + + === modified file 'local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/DashBoardService.java' --- local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/DashBoardService.java 2011-01-07 05:45:11 +0000 +++ local/in/dhis-web-dashboard/src/main/java/org/hisp/dhis/dataanalyser/util/DashBoardService.java 2011-01-11 08:04:51 +0000 @@ -768,7 +768,7 @@ // ------------------------------------------------------------------------- - public DataElementChartResult generateChartDataWithChildrenWise( List selStartPeriodList,List selEndPeriodList,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , String aggDataCB ) throws Exception + public DataElementChartResult generateDataElementChartDataWithChildrenWise( List selStartPeriodList,List selEndPeriodList,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , String aggDataCB ) throws Exception { System.out.println( "inside Dashboard Service generateChartDataWithChildrenWise " ); @@ -902,7 +902,7 @@ // ------------------------------------------------------------------------- - public DataElementChartResult generateChartDataWithGroupMemberWise( List selStartPeriodList,List selEndPeriodList,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , OrganisationUnitGroup selectedOrgUnitGroup , String aggDataCB ) throws Exception + public DataElementChartResult generateDataElementChartDataWithGroupMemberWise( List selStartPeriodList,List selEndPeriodList,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , OrganisationUnitGroup selectedOrgUnitGroup , String aggDataCB ) throws Exception { System.out.println( "inside Dashboard Service generateChartDataWithGroupMemberWise " ); @@ -1040,7 +1040,7 @@ // ------------------------------------------------------------------------- - public DataElementChartResult generateChartDataWithPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , String aggDataCB ) throws Exception + public DataElementChartResult generateDataElementChartDataWithPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , String aggDataCB ) throws Exception { DataElementChartResult dataElementChartResult; @@ -1158,7 +1158,7 @@ // Methods for getting Chart Data OrgGroup Period Wise start // ------------------------------------------------------------------------- - public DataElementChartResult generateChartDataWithGroupToPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , OrganisationUnitGroup selectedOrgUnitGroup , String aggDataCB ) throws Exception + public DataElementChartResult generateDataElementChartDataWithGroupToPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,String periodTypeLB ,List dataElementList, String deSelection, List decocList, OrganisationUnit selectedOrgUnit , OrganisationUnitGroup selectedOrgUnitGroup , String aggDataCB ) throws Exception { DataElementChartResult dataElementChartResult; @@ -1172,7 +1172,7 @@ String[] series = new String[dataElementList.size()]; String[] categories = new String[selStartPeriodList.size()]; Double[][] data = new Double[dataElementList.size()][selStartPeriodList.size()]; - String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName()+ "(" + selectedOrgUnitGroup.getName() + ")"; + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName()+ "( Group - " + selectedOrgUnitGroup.getName() + " )"; String xAxis_Title = "Time Line"; String yAxis_Title = "Value"; @@ -1264,8 +1264,573 @@ return dataElementChartResult; } + // ------------------------------------------------------------------------- // Methods for getting Chart Data OrgGroup Period Wise end // ------------------------------------------------------------------------- + + // -------------------------------------------------------- + // for Indicators DrillDown Supportive method ndicator Wise + //--------------------------------------------------------- + + // ------------------------------------------------------------------------- + // Methods for getting Chart Data With Children Wise start ( this method is called when view by -> periodWise and group not selected ) --ndicator Wise + // ------------------------------------------------------------------------- + + + public IndicatorChartResult generateIndicatorChartDataWithChildrenWise( List selStartPeriodList,List selEndPeriodList, String periodTypeLB, List indicatorList, OrganisationUnit selectedOrgUnit , String aggDataCB ) throws Exception + { + System.out.println( "inside Dashboard Service generate Chart Data With Children Wise " ); + + IndicatorChartResult indicatorChartResult; + + List childOrgUnitList = new ArrayList(); + childOrgUnitList = new ArrayList( selectedOrgUnit.getChildren()); + + String[] series = new String[indicatorList.size()]; + String[] categories = new String[childOrgUnitList.size()]; + + Double[][] numDataArray = new Double[indicatorList.size()][childOrgUnitList.size()]; + Double[][] denumDataArray = new Double[indicatorList.size()][childOrgUnitList.size()]; + Double[][] data = new Double[indicatorList.size()][childOrgUnitList.size()]; + + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName(); + + String xAxis_Title = "Facilities"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + + for ( Indicator indicator : indicatorList ) + { + series[serviceCount] = indicator.getName(); + //yseriesList.add( indicator ); + + //numeratorDEList.add( indicator.getNumeratorDescription() ); + // denominatorDEList.add( indicator.getDenominatorDescription() ); + + int childCount = 0; + for ( OrganisationUnit orgChild : childOrgUnitList ) + { + + categories[childCount] = orgChild.getName(); + + Double aggIndicatorValue = 0.0; + Double aggIndicatorNumValue = 0.0; + Double aggIndicatorDenumValue = 0.0; + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + + // if ( aggDataCB != null ) + // { + int aggChecked = Integer.parseInt( aggDataCB ); + + if( aggChecked == 1 ) + { + Double tempAggIndicatorNumValue = aggregationService.getAggregatedNumeratorValue( indicator, startDate, endDate, orgChild ); + Double tempAggIndicatorDenumValue = aggregationService.getAggregatedDenominatorValue( indicator, startDate, endDate, orgChild ); + + if ( tempAggIndicatorNumValue != null ) + { + aggIndicatorNumValue += tempAggIndicatorNumValue; + + } + if ( tempAggIndicatorDenumValue != null ) + { + aggIndicatorDenumValue += tempAggIndicatorDenumValue; + + } + + } + else + { + Double tempAggIndicatorNumValue = 0.0; + String tempStr = reportservice.getIndividualResultDataValue( indicator.getNumerator(), startDate, endDate, orgChild, "" ); + try + { + tempAggIndicatorNumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + tempAggIndicatorNumValue = 0.0; + } + aggIndicatorNumValue += tempAggIndicatorNumValue; + + Double tempAggIndicatorDenumValue = 0.0; + + tempStr = reportservice.getIndividualResultDataValue( indicator.getDenominator(), startDate, endDate, orgChild, "" ); + try + { + tempAggIndicatorDenumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + tempAggIndicatorDenumValue = 0.0; + } + aggIndicatorDenumValue += tempAggIndicatorDenumValue; + + } + + periodCount++; + } + try + { + // aggIndicatorValue = ( aggIndicatorNumValue / + // aggIndicatorDenumValue )* + // indicator.getIndicatorType().getFactor(); + if ( aggIndicatorDenumValue == 0 ) + { + aggIndicatorValue = 0.0; + } + else + { + aggIndicatorValue = (aggIndicatorNumValue / aggIndicatorDenumValue) * indicator.getIndicatorType().getFactor(); + } + } + catch ( Exception e ) + { + aggIndicatorValue = 0.0; + } + // rounding indicator value ,Numenetor,denumenetor + data[serviceCount][childCount] = aggIndicatorValue; + data[serviceCount][childCount] = Math.round( data[serviceCount][childCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + numDataArray[serviceCount][childCount] = aggIndicatorNumValue; + numDataArray[serviceCount][childCount] = Math.round( numDataArray[serviceCount][childCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + denumDataArray[serviceCount][childCount] = aggIndicatorDenumValue; + denumDataArray[serviceCount][childCount] = Math.round( denumDataArray[serviceCount][childCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + // data[serviceCount][childCount] = aggDataValue; + childCount++; + } + + serviceCount++; + } + + indicatorChartResult = new IndicatorChartResult( series, categories, data, numDataArray, denumDataArray,chartTitle, xAxis_Title, yAxis_Title ); + return indicatorChartResult; + } + + // ------------------------------------------------------------------------- + // Methods for getting Chart Data With Children Wise start ( this method is called when view by -> periodWise and group not selected ) End --ndicator Wise + // ------------------------------------------------------------------------- + + // ------------------------------------------------------------------------- + // Methods for getting Chart Data With groupMember Wise start ( this method is called when view by -> periodWise and group selected ) --- indicator Wise + // ------------------------------------------------------------------------- + + + public IndicatorChartResult generateIndicatorChartDataWithGroupMemberWise( List selStartPeriodList,List selEndPeriodList,String periodTypeLB ,List indicatorList, OrganisationUnit selectedOrgUnit , OrganisationUnitGroup selectedOrgUnitGroup , String aggDataCB ) throws Exception + { + System.out.println( " inside Dashboard Service generate Indicator Chart Data With Group Member Wise " ); + + IndicatorChartResult indicatorChartResult; + + //OrganisationUnitGroup selOrgUnitGroup = organisationUnitGroupService.getOrganisationUnitGroup( selectedOrgUnitGroup ); + + List selectedOUGroupMemberList = new ArrayList( selectedOrgUnitGroup.getMembers() ); + + List childOrgUnitList = new ArrayList(); + childOrgUnitList = new ArrayList( organisationUnitService.getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); + + selectedOUGroupMemberList.retainAll( childOrgUnitList ); + + + String[] series = new String[indicatorList.size()]; + String[] categories = new String[selectedOUGroupMemberList.size()]; + + Double[][] numDataArray = new Double[indicatorList.size()][selectedOUGroupMemberList.size()]; + Double[][] denumDataArray = new Double[indicatorList.size()][selectedOUGroupMemberList.size()]; + Double[][] data = new Double[indicatorList.size()][selectedOUGroupMemberList.size()]; + //String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName(); + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName()+ "( Group - " + selectedOrgUnitGroup.getName() + ")"; + + // String chartTitle = "OrganisationUnit : " + orgUnit.getShortName(); + String xAxis_Title = "Facilities"; + String yAxis_Title = "Value"; + + //System.out.println("size of children : " +childOrgUnitList.size() + ", Size og GroupMember : " + selectedOUGroupMemberList.size()+ ", size of CommomGroupMember : " + selectedOUGroupMemberList.size()); + + int serviceCount = 0; + + for ( Indicator indicator : indicatorList ) + { + series[serviceCount] = indicator.getName(); + + int childCount = 0; + for ( OrganisationUnit orgChild : selectedOUGroupMemberList ) + { + + categories[childCount] = orgChild.getName(); + + Double aggIndicatorValue = 0.0; + Double aggIndicatorNumValue = 0.0; + Double aggIndicatorDenumValue = 0.0; + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + + int aggChecked = Integer.parseInt( aggDataCB ); + + if( aggChecked == 1 ) + { + + Double tempAggIndicatorNumValue = aggregationService.getAggregatedNumeratorValue( indicator, + startDate, endDate, orgChild ); + Double tempAggIndicatorDenumValue = aggregationService.getAggregatedDenominatorValue( + indicator, startDate, endDate, orgChild ); + + if ( tempAggIndicatorNumValue != null ) + { + aggIndicatorNumValue += tempAggIndicatorNumValue; + + } + if ( tempAggIndicatorDenumValue != null ) + { + aggIndicatorDenumValue += tempAggIndicatorDenumValue; + + } + + } + else + { + Double tempAggIndicatorNumValue = 0.0; + String tempStr = reportservice.getIndividualResultDataValue( indicator.getNumerator(), + startDate, endDate, orgChild, "" ); + try + { + tempAggIndicatorNumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + tempAggIndicatorNumValue = 0.0; + } + aggIndicatorNumValue += tempAggIndicatorNumValue; + + Double tempAggIndicatorDenumValue = 0.0; + + tempStr = reportservice.getIndividualResultDataValue( indicator.getDenominator(), startDate, + endDate, orgChild, "" ); + try + { + tempAggIndicatorDenumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + tempAggIndicatorDenumValue = 0.0; + } + aggIndicatorDenumValue += tempAggIndicatorDenumValue; + + } + + periodCount++; + } + try + { + // aggIndicatorValue = ( aggIndicatorNumValue / + // aggIndicatorDenumValue )* + // indicator.getIndicatorType().getFactor(); + if ( aggIndicatorDenumValue == 0 ) + { + aggIndicatorValue = 0.0; + } + else + { + aggIndicatorValue = (aggIndicatorNumValue / aggIndicatorDenumValue) + * indicator.getIndicatorType().getFactor(); + } + } + catch ( Exception e ) + { + aggIndicatorValue = 0.0; + } + // rounding indicator value ,Numenetor,denumenetor + data[serviceCount][childCount] = aggIndicatorValue; + data[serviceCount][childCount] = Math.round( data[serviceCount][childCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + numDataArray[serviceCount][childCount] = aggIndicatorNumValue; + numDataArray[serviceCount][childCount] = Math.round( numDataArray[serviceCount][childCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + denumDataArray[serviceCount][childCount] = aggIndicatorDenumValue; + denumDataArray[serviceCount][childCount] = Math.round( denumDataArray[serviceCount][childCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + // data[serviceCount][childCount] = aggDataValue; + childCount++; + } + + serviceCount++; + } + + indicatorChartResult = new IndicatorChartResult( series, categories, data, numDataArray, denumDataArray,chartTitle, xAxis_Title, yAxis_Title ); + return indicatorChartResult; + } + // ------------------------------------------------------------------------- + // Methods for getting Chart Data With groupMember Wise start ( this method is called when view by -> periodWise and group selected ) --- indicator Wise + // ------ end + + // ------------------------------------------------------------------------- + // for Indicator + // Methods for getting Chart Data only Period Wise start ( this method is called when view by ->Selected + children and Group not selected,and view by -> children and group selected ) + // ------------------------------------------------------------------------- + + + public IndicatorChartResult generateIndicatorChartDataWithPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,String periodTypeLB ,List indicatorList, OrganisationUnit selectedOrgUnit , String aggDataCB ) throws Exception + { + System.out.println( "inside Dashboard Service generate Chart Data With Period Wise " ); + + IndicatorChartResult indicatorChartResult; + + String[] series = new String[indicatorList.size()]; + String[] categories = new String[selStartPeriodList.size()]; + Double[][] data = new Double[indicatorList.size()][selStartPeriodList.size()]; + + Double[][] numDataArray = new Double[indicatorList.size()][selStartPeriodList.size()]; + Double[][] denumDataArray = new Double[indicatorList.size()][selStartPeriodList.size()]; + + // Map> numData = new HashMap>(); + // Map> denumData = new HashMap>(); + + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName(); + String xAxis_Title = "Time Line"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + for ( Indicator indicator : indicatorList ) + { + series[serviceCount] = indicator.getName(); + + // List numeratorValueList = new ArrayList(); + // List denumeratorValueList = new ArrayList(); + + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + // String drillDownPeriodName = periodNames.get( periodCount ); + + categories[periodCount] = periodNames.get( periodCount ); + + Double aggIndicatorValue = 0.0; + Double aggIndicatorNumValue = 0.0; + Double aggIndicatorDenumValue = 0.0; + + int aggChecked = Integer.parseInt( aggDataCB ); + + if( aggChecked == 1 ) + { + aggIndicatorValue = aggregationService.getAggregatedIndicatorValue( indicator, startDate, endDate, selectedOrgUnit ); + + aggIndicatorNumValue = aggregationService.getAggregatedNumeratorValue( indicator, startDate, endDate, selectedOrgUnit ); + aggIndicatorDenumValue = aggregationService.getAggregatedDenominatorValue( indicator, startDate, endDate, selectedOrgUnit ); + + if ( aggIndicatorValue == null ) aggIndicatorValue = 0.0; + + } + else + { + aggIndicatorValue = getIndividualIndicatorValue( indicator, selectedOrgUnit, startDate, endDate ); + + // System.out.println( " \nIndicator Numerator value : " + indicator.getNumerator() + // + ", Start Date :- " + startDate + ", End Date :- " + endDate + ", Org Unit :- " + orgUnit ); + + String tempStr = reportservice.getIndividualResultDataValue( indicator.getNumerator(), startDate, endDate, selectedOrgUnit, "" ); + // System.out.println( " \nIndicatorNumerator valu is " + tempStr ); + + try + { + aggIndicatorNumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + aggIndicatorNumValue = 0.0; + } + + tempStr = reportservice.getIndividualResultDataValue( indicator.getDenominator(), startDate, endDate, selectedOrgUnit, "" ); + + try + { + aggIndicatorDenumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + aggIndicatorDenumValue = 0.0; + } + + } + // rounding indicator value ,Numenetor,denumenetor + data[serviceCount][periodCount] = aggIndicatorValue; + data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + numDataArray[serviceCount][periodCount] = aggIndicatorNumValue; + numDataArray[serviceCount][periodCount] = Math.round( numDataArray[serviceCount][periodCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + denumDataArray[serviceCount][periodCount] = aggIndicatorDenumValue; + denumDataArray[serviceCount][periodCount] = Math.round( denumDataArray[serviceCount][periodCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + // numeratorValueList.add( aggIndicatorNumValue ); + // denumeratorValueList.add( aggIndicatorDenumValue ); + + periodCount++; + } + + // numData.put( serviceCount, numeratorValueList ); + // denumData.put( serviceCount, denumeratorValueList ); + + serviceCount++; + } + + indicatorChartResult = new IndicatorChartResult( series, categories, data, numDataArray, denumDataArray,chartTitle, xAxis_Title, yAxis_Title ); + return indicatorChartResult; + + } + + // ------------------------------------------------------------------------- + // Methods for getting Chart Data only Period Wise end + // ------------------------------------------------------------------------- + + // ------------------------------------------------------------------------- + // Methods for getting Chart Data OrgGroup Period Wise start - IndicatorWise + // ------------------------------------------------------------------------- + + public IndicatorChartResult generateIndicatorChartDataWithGroupToPeriodWise( List selStartPeriodList,List selEndPeriodList,List periodNames,String periodTypeLB ,List indicatorList, OrganisationUnit selectedOrgUnit , OrganisationUnitGroup selectedOrgUnitGroup , String aggDataCB ) + throws Exception + { + IndicatorChartResult indicatorChartResult; + + List selectedOUGroupMemberList = new ArrayList( selectedOrgUnitGroup.getMembers() ); + + List childOrgUnitList = new ArrayList(); + childOrgUnitList = new ArrayList( organisationUnitService.getOrganisationUnitWithChildren( selectedOrgUnit.getId() ) ); + + selectedOUGroupMemberList.retainAll( childOrgUnitList ); + + String[] series = new String[indicatorList.size()]; + String[] categories = new String[selStartPeriodList.size()]; + + Double[][] numDataArray = new Double[indicatorList.size()][selStartPeriodList.size()]; + Double[][] denumDataArray = new Double[indicatorList.size()][selStartPeriodList.size()]; + Double[][] data = new Double[indicatorList.size()][selStartPeriodList.size()]; + + String chartTitle = "OrganisationUnit : " + selectedOrgUnit.getShortName() + "( Group - " + selectedOrgUnitGroup.getName() + " )"; + String xAxis_Title = "Time Line"; + String yAxis_Title = "Value"; + + int serviceCount = 0; + + for ( Indicator indicator : indicatorList ) + { + series[serviceCount] = indicator.getName(); + + Double aggIndicatorValue = 0.0; + Double aggIndicatorNumValue = 0.0; + Double aggIndicatorDenumValue = 0.0; + + int periodCount = 0; + for ( Date startDate : selStartPeriodList ) + { + Date endDate = selEndPeriodList.get( periodCount ); + categories[periodCount] = periodNames.get( periodCount ); + + int orgGroupCount = 0; + + for ( OrganisationUnit orgUnit : selectedOUGroupMemberList ) + { + int aggChecked = Integer.parseInt( aggDataCB ); + + if( aggChecked == 1 ) + { + Double tempAggIndicatorNumValue = aggregationService.getAggregatedNumeratorValue( indicator, startDate, endDate, orgUnit ); + Double tempAggIndicatorDenumValue = aggregationService.getAggregatedDenominatorValue( indicator, startDate, endDate, orgUnit ); + + if ( tempAggIndicatorNumValue != null ) + { + aggIndicatorNumValue += tempAggIndicatorNumValue; + + } + if ( tempAggIndicatorDenumValue != null ) + { + aggIndicatorDenumValue += tempAggIndicatorDenumValue; + + } + } + else + { + Double tempAggIndicatorNumValue = 0.0; + + String tempStr = reportservice.getIndividualResultDataValue( indicator.getNumerator(), startDate, endDate, orgUnit, "" ); + try + { + tempAggIndicatorNumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + tempAggIndicatorNumValue = 0.0; + } + aggIndicatorNumValue += tempAggIndicatorNumValue; + + Double tempAggIndicatorDenumValue = 0.0; + + // tempStr = + // reportService.getIndividualResultIndicatorValue( + // indicator.getDenominator(), startDate, endDate, + // orgUnit ); + tempStr = reportservice.getIndividualResultDataValue( indicator.getDenominator(), startDate, endDate, orgUnit, "" ); + try + { + tempAggIndicatorDenumValue = Double.parseDouble( tempStr ); + } + catch ( Exception e ) + { + tempAggIndicatorDenumValue = 0.0; + } + aggIndicatorDenumValue += tempAggIndicatorDenumValue; + + } + orgGroupCount++; + } + + try + { + // aggIndicatorValue = ( aggIndicatorNumValue / + // aggIndicatorDenumValue )* + // indicator.getIndicatorType().getFactor(); + if ( aggIndicatorDenumValue == 0 ) + { + aggIndicatorValue = 0.0; + } + else + { + aggIndicatorValue = (aggIndicatorNumValue / aggIndicatorDenumValue) + * indicator.getIndicatorType().getFactor(); + } + } + catch ( Exception e ) + { + aggIndicatorValue = 0.0; + } + // rounding indicator value ,Numenetor,denumenetor + data[serviceCount][periodCount] = aggIndicatorValue; + data[serviceCount][periodCount] = Math.round( data[serviceCount][periodCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + numDataArray[serviceCount][periodCount] = aggIndicatorNumValue; + numDataArray[serviceCount][periodCount] = Math.round( numDataArray[serviceCount][periodCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + denumDataArray[serviceCount][periodCount] = aggIndicatorDenumValue; + denumDataArray[serviceCount][periodCount] = Math.round( denumDataArray[serviceCount][periodCount] * Math.pow( 10, 1 ) )/ Math.pow( 10, 1 ); + + periodCount++; + } + + serviceCount++; + } + + indicatorChartResult = new IndicatorChartResult( series, categories, data, numDataArray, denumDataArray, chartTitle, xAxis_Title, yAxis_Title ); + return indicatorChartResult; + + } + + + } // class end === modified file 'local/in/dhis-web-dashboard/src/main/resources/META-INF/dhis/beans.xml' --- local/in/dhis-web-dashboard/src/main/resources/META-INF/dhis/beans.xml 2011-01-07 05:45:11 +0000 +++ local/in/dhis-web-dashboard/src/main/resources/META-INF/dhis/beans.xml 2011-01-11 08:04:51 +0000 @@ -83,7 +83,7 @@ - + @@ -97,7 +97,7 @@ - + @@ -174,7 +174,31 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + === modified file 'local/in/dhis-web-dashboard/src/main/resources/struts.xml' --- local/in/dhis-web-dashboard/src/main/resources/struts.xml 2011-01-07 05:45:11 +0000 +++ local/in/dhis-web-dashboard/src/main/resources/struts.xml 2011-01-11 08:04:51 +0000 @@ -67,7 +67,7 @@ 1024 - + /popup.vm /dhis-web-dashboard/graphicalAnalysisDataElementResult.vm @@ -75,7 +75,7 @@ css/StylesForTags.css - + /popup.vm /dhis-web-dashboard/graphicalAnalysisDataElementResult.vm @@ -128,8 +128,24 @@ filename="${fileName}" 1024 + + + + /popup.vm + /dhis-web-dashboard/graphicalAnalysisIndicatorResult.vm + ../dhis-web-commons/ouwt/ouwt.js,../dhis-web-commons/lists/lists.js,javascript/ga.js,javascript/hashtable.js,javascript/gadataelement.js + css/StylesForTags.css + + + + + + /popup.vm + /dhis-web-dashboard/graphicalAnalysisIndicatorResult.vm + ../dhis-web-commons/ouwt/ouwt.js,../dhis-web-commons/lists/lists.js,javascript/ga.js,javascript/hashtable.js,javascript/gadataelement.js + css/StylesForTags.css + - === modified file 'local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/graphicalAnalysisIndicatorResult.vm' --- local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/graphicalAnalysisIndicatorResult.vm 2010-12-29 07:47:36 +0000 +++ local/in/dhis-web-dashboard/src/main/webapp/dhis-web-dashboard/graphicalAnalysisIndicatorResult.vm 2011-01-11 08:04:51 +0000 @@ -4,7 +4,100 @@ { evt.target.href = "drillDownResult.action?selectedValues="+selVal; } - + + // method called when view by period and group not check or group checked + function drillDownPeriodToOrgChildResult(evt, selDrillDownData ) + { + //var aggDataCB = '$aggDataCB'; + + // alert( " First method " ); + //alert( " Period To OrgUnit View by period and Group checked or not checked " ); + var selectedButton = '$selectedButton'; + + var viewBy = 'children'; + + // alert( viewBy + ":" + selectedButton ); + + //alert( selDrillDownData ); + + var arugDetails = selDrillDownData.split(":"); + var orgUnitId = arugDetails[0]; + var orgUnitGroupId = arugDetails[1]; + var indicatorId = arugDetails[2]; + + var periodTypeName = arugDetails[3]; + var startDate = arugDetails[4]; + var endDate = arugDetails[5]; + var drillDownPeriodName = arugDetails[6]; + var aggDataCB = arugDetails[7]; + //alert( aggDataCB ); + + // alert( orgUnitId + "," + orgUnitGroupId + "," + indicatorId + "," + periodTypeName + "," + startDate + "," + endDate + "," + drillDownPeriodName + "," + aggDataCB ); + + evt.target.href = "generateDrillDownPeriodToOrgChildChartIndicator.action?selDrillDownData="+selDrillDownData + "&selectedButton=" + selectedButton + "&categoryLB=" + viewBy + "&aggDataCB=" + aggDataCB; + } + + // method called when view by children or random and Group not check , and view by children and Group checked + function drillDownOrgUnitToPeriodResult(evt, selDrillDownData ) + { + var selectedButton = '$selectedButton'; + //alert( " OrgUnit To Period view by children or selected and Group not checked / view by children and Group checked " ); + + //alert( " Second method " ); + var viewBy = 'period'; + + //alert( viewBy + ":" + selectedButton ); + + //alert( selDrillDownData ); + + var arugDetails = selDrillDownData.split(":"); + var orgUnitId = arugDetails[0]; + var orgUnitGroupId = arugDetails[1]; + var indicatorId = arugDetails[2]; + + var periodTypeName = arugDetails[3]; + var startDate = arugDetails[4]; + var endDate = arugDetails[5]; + var drillDownPeriodName = arugDetails[6]; + var aggDataCB = arugDetails[7]; + //alert( aggDataCB ); + + // alert( orgUnitId + "," + orgUnitGroupId + "," + indicatorId + "," + periodTypeName + "," + startDate + "," + endDate + "," + drillDownPeriodName + "," + aggDataCB ); + + evt.target.href = "generatedrillDownOugUnitToPeriodChartIndicator.action?selDrillDownData="+selDrillDownData + "&selectedButton=" + selectedButton + "&categoryLB=" + viewBy + "&aggDataCB=" + aggDataCB; + } + + // method called when view by selected and Group checked + function drillDownOrgUnitGroupToPeriodResult(evt, selDrillDownData ) + { + + var selectedButton = '$selectedButton'; + //alert( " OrgUnitGroup To Period view by selected and Group checked " ); + //alert( " Third method " ); + var viewBy = 'period'; + + //alert( viewBy + ":" + selectedButton ); + + //alert( selDrillDownData ); + + var arugDetails = selDrillDownData.split(":"); + var orgUnitId = arugDetails[0]; + var orgUnitGroupId = arugDetails[1]; + var indicatorId = arugDetails[2]; + + var periodTypeName = arugDetails[3]; + var startDate = arugDetails[4]; + var endDate = arugDetails[5]; + var drillDownPeriodName = arugDetails[6]; + var aggDataCB = arugDetails[7]; + //alert( aggDataCB ); + + //alert( orgUnitId + "," + orgUnitGroupId + "," + indicatorId + "," + periodTypeName + "," + startDate + "," + endDate + "," + drillDownPeriodName + "," + aggDataCB ); + evt.target.href = "generatedrillDownOugUnitToPeriodChartIndicator.action?selDrillDownData="+selDrillDownData + "&selectedButton=" + selectedButton + "&categoryLB=" + viewBy + "&aggDataCB=" + aggDataCB; + } + + + // Chart Display Option change start function chartTypeOptionChange(evt) @@ -172,6 +265,7 @@ #end #set($count1 = 0) + #set( $count4 = 0 ) #foreach($onedataList in $indicatorChartResult.data ) @@ -179,9 +273,11 @@ #set( $denumValCimpleteResult = $indicatorChartResult.denumDataArray ) #set( $numValList = $listTool.get($numValCimpleteResult, $count1) ) #set( $denumValList = $listTool.get($denumValCimpleteResult, $count1) ) - #set( $count2 = 0 ) + #set( $count2 = 0 ) + - $yseriesList.get($count1).name + + $listTool.get( $indicatorChartResult.series, $count1 ) Num #foreach($data in $onedataList) $listTool.get($numValList, $count2) @@ -190,39 +286,68 @@ - Den - #set( $count2 = 0 ) - #foreach($data in $onedataList) - $listTool.get($denumValList, $count2) - #set( $count2 = $count2 + 1 ) - #end - - - - Val - #set( $count2 = 0 ) - #foreach($data in $onedataList) - $data - #set( $count2 = $count2 + 1 ) - #end - - - #set( $count1 = $count1 + 1 ) - - #end + Den + #set( $count2 = 0 ) + #foreach($data in $onedataList) + $listTool.get($denumValList, $count2) + #set( $count2 = $count2 + 1 ) + #end + + + + Val + + #if( $categoryLB.equals( "period" ) && !$ougGroupSetCB ) + #foreach($data in $onedataList) + $data + #set( $count4 = $count4 + 1 ) + #end + #elseif( $categoryLB.equals( "period" ) && $ougGroupSetCB ) + #foreach($data in $onedataList) + $data + #set( $count4 = $count4 + 1 ) + #end + #elseif( ( $categoryLB.equals( "children" ) || $categoryLB.equals( "random" )) && !$ougGroupSetCB ) + #foreach($data in $onedataList) + $data + #set( $count4 = $count4 + 1 ) + #end + #elseif( $categoryLB.equals( "children" ) && $ougGroupSetCB ) + #foreach($data in $onedataList) + $data + #set( $count4 = $count4 + 1 ) + #end + #elseif( $categoryLB.equals( "random" ) && $ougGroupSetCB ) + #foreach($data in $onedataList) + $data + #set( $count4 = $count4 + 1 ) + #end + + #else + #set( $count2 = 0 ) + #foreach($data in $onedataList) + $data + #set( $count2 = $count2 + 1 ) + #end + #end + + + #set( $count1 = $count1 + 1 ) + #end #if($selectedButton.equals("ViewSummary")) -

+

#else -
+

#end +#if( $!yseriesList && $yseriesList.size() != 0 ) @@ -245,7 +370,7 @@ #set($count1 = $count1 + 1) #end
- +#end