← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 10225: Sort fixed periods chronologically; only allow to select multiple values in filter fields with op...

 

------------------------------------------------------------
revno: 10225
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2013-03-14 22:42:22 +0700
message:
   Sort fixed periods chronologically; only allow to select multiple values in filter fields with operator IN in tabular report.
modified:
  dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateAggregateReportAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/app.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-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java'
--- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java	2013-03-14 13:30:46 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java	2013-03-14 15:42:22 +0000
@@ -674,7 +674,7 @@
             sql = getAggregateReportSQL8( programStage, orgunitIds, facilityLB, filterSQL, deGroupBy, periods
                 .iterator().next(), aggregateType, limit, useCompletedEvents, format );
         }
-
+System.out.println("\n\n " + sql );        
         if ( !sql.isEmpty() )
         {
             SqlRowSet rowSet = jdbcTemplate.queryForRowSet( sql );
@@ -1289,11 +1289,11 @@
                 sql += "     psi_1.executiondate >= '" + startDate + "' AND ";
                 sql += "     psi_1.executiondate <= '" + endDate + "' ";
                 sql += filterSQL + " LIMIT 1 )  as " + aggregateType + ") ";
-                sql += " UNION ";
+                sql += " UNION ALL ";
             }
         }
 
-        sql = sql.substring( 0, sql.length() - 6 );
+        sql = sql.substring( 0, sql.length() - 10 );
         if ( limit != null )
         {
             sql += " LIMIT " + limit;
@@ -1466,11 +1466,11 @@
                 }
                 sql += "GROUP BY dataelementid ";
 
-                sql += ") UNION ";
+                sql += ") UNION ALL ";
 
             }
 
-            sql = sql.substring( 0, sql.length() - 6 );
+            sql = sql.substring( 0, sql.length() - 10 );
 
             if ( limit != null )
             {
@@ -1543,10 +1543,10 @@
             }
             sql += "GROUP BY dataelementid ";
 
-            sql += ") UNION ";
+            sql += ") UNION ALL ";
         }
 
-        sql = sql.substring( 0, sql.length() - 6 );
+        sql = sql.substring( 0, sql.length() - 10 );
         if ( limit != null )
         {
             sql += " LIMIT " + limit;
@@ -1823,12 +1823,12 @@
                 sql += ") as \"" + periodName + "\",";
             }
             sql = sql.substring( 0, sql.length() - 1 );
-            sql += " ) UNION ";
+            sql += " ) UNION ALL ";
         }
 
         if ( !sql.isEmpty() )
         {
-            sql = sql.substring( 0, sql.length() - 6 );
+            sql = sql.substring( 0, sql.length() - 10 );
             if ( periods.size() == 1 )
             {
                 sql += "ORDER BY  \"" + firstPeriodName + "\" desc ";
@@ -2163,7 +2163,7 @@
                     {
                         if ( rowSet.getMetaData().getColumnType( j + 2 ) != Types.VARCHAR )
                         {
-                            total += (Double) columnValues.get( i ).get( j );
+                            total += (Long) columnValues.get( i ).get( j );
                         }
                     }
                     if ( total == (int) total )

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateAggregateReportAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateAggregateReportAction.java	2013-02-22 04:49:30 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateAggregateReportAction.java	2013-03-14 15:42:22 +0000
@@ -29,6 +29,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -43,6 +44,7 @@
 import org.hisp.dhis.period.PeriodService;
 import org.hisp.dhis.period.PeriodType;
 import org.hisp.dhis.period.RelativePeriods;
+import org.hisp.dhis.period.comparator.AscendingPeriodComparator;
 import org.hisp.dhis.program.ProgramStage;
 import org.hisp.dhis.program.ProgramStageInstanceService;
 import org.hisp.dhis.program.ProgramStageService;
@@ -294,14 +296,18 @@
         }
 
         // Fixed periods
+        List<Period> fixedPeriodList = new ArrayList<Period>(); 
         for ( String periodId : fixedPeriods )
         {
-            periods.add( PeriodType.getPeriodFromIsoString( periodId ) );
+            Period p = PeriodType.getPeriodFromIsoString( periodId );
+            fixedPeriodList.add( p );
         }
-
+        Collections.sort( fixedPeriodList, new AscendingPeriodComparator() );      
+        periods.addAll( fixedPeriodList );
+        
         // Relative periods
         periods.addAll( getRelativePeriod() );
-
+        
         // ---------------------------------------------------------------------
         // Generate report
         // ---------------------------------------------------------------------

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/app.js'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/app.js	2013-03-14 13:30:46 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/app.js	2013-03-14 15:42:22 +0000
@@ -476,6 +476,7 @@
 							fields: ['value','name'],
 							data: [ ['=','='],['in',TR.i18n.in] ]
 						});
+						params.value = 'in';
 					}
 					else
 					{
@@ -483,6 +484,7 @@
 							fields: ['value','name'],
 							data: [ ['=','='],['like',TR.i18n.like],['in',TR.i18n.in] ]
 						});
+						params.value = 'in';
 					}
 				}
 				else if( valueType == 'trueOnly' || valueType == 'bool' ){
@@ -504,6 +506,20 @@
 					});
 				}
 				
+				params.listeners={};
+				params.listeners.select = function(cb)  {
+					var opt = cb.getValue();
+					if(opt == 'in')
+					{
+						Ext.getCmp('filter_' + id).multiSelect = true;
+					}
+					else
+					{
+						Ext.getCmp('filter_' + id).clearValue();
+						Ext.getCmp('filter_' + id).multiSelect = false;
+					}
+				}
+				
 				return params;
 			},
 			createFilterField: function( valueType, id ){
@@ -533,8 +549,9 @@
 						params.editable = false;
 						if( fixedId=='fixedAttr_gender')
 						{
+							params.multiSelect = true;
+							params.delimiter = ';';
 							params.forceSelection = true;
-							params.multiSelect = true;
 							params.store = new Ext.data.ArrayStore({
 								fields: ['value', 'name'],
 								data: [['', TR.i18n.please_select], 
@@ -546,8 +563,9 @@
 						else if( fixedId=='fixedAttr_dobType')
 						{
 							params.forceSelection = true;
+							params.multiSelect = true;
+							params.delimiter = ';';
 							params.editable = false;
-							params.multiSelect = true;
 							params.store = new Ext.data.ArrayStore({
 								fields: ['value', 'name'],
 								data: [['', TR.i18n.please_select],
@@ -567,8 +585,7 @@
 							});
 						}
 					}
-					else if( valueType == 'trueOnly')
-					{
+					else if( valueType == 'trueOnly'){
 						params.queryMode = 'local';
 						params.valueField = 'value';
 						params.displayField = 'name';
@@ -583,6 +600,7 @@
 						params.valueField = 'u';
 						params.displayField = 'u';
 						params.multiSelect = true;
+						params.delimiter = ';';
 						params.store = Ext.create('Ext.data.Store', {
 							fields: ['u'],
 							data:[],