=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientreport/TabularReportColumn.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientreport/TabularReportColumn.java 2012-10-16 04:05:28 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patientreport/TabularReportColumn.java 2013-03-14 13:30:46 +0000 @@ -18,6 +18,8 @@ private String query; private String name; + + private boolean dateType = false; // ------------------------------------------------------------------------- // Constructor @@ -133,4 +135,14 @@ { this.name = name; } + + public boolean isDateType() + { + return dateType; + } + + public void setDateType( boolean dateType ) + { + this.dateType = dateType; + } } === 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 05:03:19 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2013-03-14 13:30:46 +0000 @@ -674,7 +674,7 @@ sql = getAggregateReportSQL8( programStage, orgunitIds, facilityLB, filterSQL, deGroupBy, periods .iterator().next(), aggregateType, limit, useCompletedEvents, format ); } - + if ( !sql.isEmpty() ) { SqlRowSet rowSet = jdbcTemplate.queryForRowSet( sql ); @@ -875,7 +875,14 @@ if ( column.hasQuery() ) { - where += operator + "lower(" + column.getIdentifier() + ") " + column.getQuery() + " "; + if ( column.isDateType() ) + { + where += operator + column.getIdentifier() + " " + column.getQuery() + " "; + } + else + { + where += operator + "lower(" + column.getIdentifier() + ") " + column.getQuery() + " "; + } operator = "and "; } } @@ -890,7 +897,15 @@ if ( column.hasQuery() ) { - where += operator + "lower(identifier_" + column.getIdentifier() + ") " + column.getQuery() + " "; + if ( column.isDateType() ) + { + where += operator + "identifier_" + column.getIdentifier() + " " + column.getQuery() + " "; + } + else + { + where += operator + "lower(identifier_" + column.getIdentifier() + ") " + column.getQuery() + + " "; + } operator = "and "; } } @@ -905,7 +920,15 @@ if ( column.hasQuery() ) { - where += operator + "lower(attribute_" + column.getIdentifier() + ") " + column.getQuery() + " "; + if ( column.isDateType() ) + { + where += operator + "attribute_" + column.getIdentifier() + " " + column.getQuery() + " "; + } + else + { + where += operator + "lower(attribute_" + column.getIdentifier() + ") " + column.getQuery() + + " "; + } operator = "and "; } } @@ -939,7 +962,14 @@ if ( column.hasQuery() ) { - where += operator + "lower(element_" + column.getIdentifier() + ") " + column.getQuery() + " "; + if ( column.isDateType() ) + { + where += operator + "element_" + column.getIdentifier() + " " + column.getQuery() + " "; + } + else + { + where += operator + "lower(element_" + column.getIdentifier() + ") " + column.getQuery() + " "; + } operator = "and "; } } @@ -990,7 +1020,7 @@ sql += where; // filters sql = sql.substring( 0, sql.length() - 1 ) + " "; // Remove last comma sql += (min != null && max != null) ? statementBuilder.limitRecord( min, max ) : ""; - + return sql; } === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java 2013-03-10 04:31:31 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java 2013-03-14 13:30:46 +0000 @@ -471,6 +471,10 @@ if ( PREFIX_FIXED_ATTRIBUTE.equals( prefix ) ) { column.setName( values[1] ); + if ( column.getIdentifier().equals( "birthDate" ) || column.getIdentifier().equals( "deathdate" ) ) + { + column.setDateType( true ); + } accessPrivateInfo = true; } else if ( PREFIX_IDENTIFIER_TYPE.equals( prefix ) ) @@ -490,6 +494,10 @@ mapSuggestedValues.put( index, getSuggestedAttributeValues( attribute ) ); column.setName( attribute.getName() ); + if ( attribute.getValueType().equals( PatientAttribute.TYPE_DATE ) ) + { + column.setDateType( true ); + } accessPrivateInfo = true; } else if ( PREFIX_DATA_ELEMENT.equals( prefix ) ) @@ -506,7 +514,10 @@ .getType(); valueTypes.add( valueType ); mapSuggestedValues.put( index, getSuggestedDataElementValues( dataElement ) ); - + if ( dataElement.getType().equals( DataElement.VALUE_TYPE_DATE ) ) + { + column.setDateType( true ); + } column.setName( dataElement.getFormNameFallback() ); } === 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 05:03:19 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/app.js 2013-03-14 13:30:46 +0000 @@ -469,10 +469,21 @@ params.value = '='; if(valueType == 'string' || valueType == 'list' || valueType == 'username' ){ - params.store = new Ext.data.ArrayStore({ - fields: ['value','name'], - data: [ ['=','='],['like',TR.i18n.like],['in',TR.i18n.in] ] - }); + var fixedId = id.substring(0, id.lastIndexOf('_') ); + if( fixedId=='fixedAttr_gender' || fixedId=='fixedAttr_dobType') + { + params.store = new Ext.data.ArrayStore({ + fields: ['value','name'], + data: [ ['=','='],['in',TR.i18n.in] ] + }); + } + else + { + params.store = new Ext.data.ArrayStore({ + fields: ['value','name'], + data: [ ['=','='],['like',TR.i18n.like],['in',TR.i18n.in] ] + }); + } } else if( valueType == 'trueOnly' || valueType == 'bool' ){ params.store = new Ext.data.ArrayStore({ @@ -513,7 +524,7 @@ var deId = id.split('_')[1]; var fixedId = id.substring(0, id.lastIndexOf('_') ); params.typeAhead = true; - params.forceSelection = true; + params.editable = true; if( valueType == 'bool' || fixedId=='fixedAttr_gender' || fixedId=='fixedAttr_dobType') { params.queryMode = 'local'; @@ -522,9 +533,11 @@ params.editable = false; if( fixedId=='fixedAttr_gender') { + params.forceSelection = true; + params.multiSelect = true; params.store = new Ext.data.ArrayStore({ fields: ['value', 'name'], - data: [['', TR.i18n.filter_value], + data: [['', TR.i18n.please_select], ['M', TR.i18n.male], ['F', TR.i18n.female], ['T', TR.i18n.transgender]] @@ -532,9 +545,12 @@ } else if( fixedId=='fixedAttr_dobType') { + params.forceSelection = true; + params.editable = false; + params.multiSelect = true; params.store = new Ext.data.ArrayStore({ fields: ['value', 'name'], - data: [['', TR.i18n.filter_value], + data: [['', TR.i18n.please_select], ['V', TR.i18n.verified], ['D', TR.i18n.declared], ['A', TR.i18n.approximated]] @@ -542,9 +558,10 @@ } else if (valueType == 'bool') { + params.forceSelection = true; params.store = new Ext.data.ArrayStore({ fields: ['value', 'name'], - data: [['', TR.i18n.filter_value], + data: [['', TR.i18n.please_select], ['true', TR.i18n.yes], ['false', TR.i18n.no]] }); @@ -558,13 +575,14 @@ params.editable = false; params.store = new Ext.data.ArrayStore({ fields: ['value', 'name'], - data: [['', TR.i18n.filter_value],['true', TR.i18n.yes]] + data: [['', TR.i18n.please_select],['true', TR.i18n.yes]] }); } else if(valueType=='username'){ params.queryMode = 'remote'; params.valueField = 'u'; params.displayField = 'u'; + params.multiSelect = true; params.store = Ext.create('Ext.data.Store', { fields: ['u'], data:[], @@ -1720,6 +1738,7 @@ { p.useCompletedEvents = Ext.getCmp('completedEventsOpt').getValue(); } + // Get searching values p.searchingValues = []; @@ -1734,11 +1753,20 @@ for(var idx=0;idx