=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GetProgramStageSectionsAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GetProgramStageSectionsAction.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GetProgramStageSectionsAction.java 2013-08-28 06:43:27 +0000 @@ -59,9 +59,9 @@ // Input/output // ------------------------------------------------------------------------- - private Integer programStageId; + private String programStageId; - public void setProgramStageId( Integer programStageId ) + public void setProgramStageId( String programStageId ) { this.programStageId = programStageId; } === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadDataElementsAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadDataElementsAction.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadDataElementsAction.java 2013-08-28 06:43:27 +0000 @@ -67,9 +67,9 @@ // Input/output // ------------------------------------------------------------------------- - private Integer programStageId; + private String programStageId; - public void setProgramStageId( Integer programStageId ) + public void setProgramStageId( String programStageId ) { this.programStageId = programStageId; } === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadPatientPropertiesAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadPatientPropertiesAction.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadPatientPropertiesAction.java 2013-08-28 06:43:27 +0000 @@ -62,7 +62,7 @@ // Input/Output // ------------------------------------------------------------------------- - private Integer programId; + private String programId; private Collection identifierTypes = new HashSet(); @@ -87,7 +87,7 @@ this.attributeService = attributeService; } - public void setProgramId( Integer programId ) + public void setProgramId( String programId ) { this.programId = programId; } === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadProgramStagesAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadProgramStagesAction.java 2013-08-23 16:05:01 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/LoadProgramStagesAction.java 2013-08-28 06:43:27 +0000 @@ -58,9 +58,9 @@ // Input/output // ------------------------------------------------------------------------- - private Integer programId; + private String programId; - public void setProgramId( Integer programId ) + public void setProgramId( String programId ) { this.programId = programId; } === 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-08-21 03:03:52 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/app.js 2013-08-28 06:43:27 +0000 @@ -17,7 +17,7 @@ obj.system.program = []; for (var i = 0; i < r.programs.length; i++) { - obj.system.program.push({id: r.programs[i].id, name: r.programs[i].name, type: r.programs[i].type }); + obj.system.program.push({id: r.programs[i].id, name: r.programs[i].name, type: r.programs[i].type, localid: r.programs[i].localid}); } obj.system.orgunitGroup = []; @@ -48,12 +48,12 @@ path_images: 'images/', initialize: 'tabularInitialize.action', patientproperties_get: 'loadPatientProperties.action', - programstages_get: 'loadReportProgramStages.action', + programstages_get: '../api/programs/', programstagesections_get: 'loadProgramStageSections.action', dataelements_get: 'loadDataElements.action', organisationunitchildren_get: 'getOrganisationUnitChildren.action', organisationunit_getbygroup: 'getOrganisationUnitPathsByGroup.action', - generatetabularreport_get: 'generateTabularReport.action', + generatetabularreport_get: '../api/analytics/events/query/', casebasedfavorite_getall: 'getTabularReports.action', casebasedfavorite_get: 'getTabularReport.action', casebasedfavorite_rename: 'updateTabularReportName.action', @@ -358,7 +358,7 @@ var data = a.store.findExact('id', item); var name = a.store.getAt(data).data.name; var valueType = a.store.getAt(data).data.valueType; - array.push({id: item, uid:a.store.getAt(data).data.uid, name:name, compulsory: a.store.getAt(data).data.compulsory, valueType:valueType}); + array.push({id: item, localid:a.store.getAt(data).data.localid, name:name, valueType:valueType}); if(f!=undefined) { TR.util.multiselect.addFilterField( f, item, name, valueType ); @@ -376,14 +376,14 @@ { if( elements[i].style.display != 'none' ) { - var id = a.store.getAt(i).data.id; + var localid = a.store.getAt(i).data.localid; var name = a.store.getAt(i).data.name; var valueType = a.store.getAt(i).data.valueType; - array.push({id: id, uid:a.store.getAt(i).data.uid, name: name, compulsory: a.store.getAt(i).data.compulsory, valueType: valueType}); + array.push({id: a.store.getAt(i).data.id, localid:localid, name: name, valueType: valueType}); if(f!=undefined) { - TR.util.multiselect.addFilterField( f, id, name, valueType ); + TR.util.multiselect.addFilterField( f, localid, name, valueType ); } } } @@ -526,7 +526,7 @@ } else { - params.value = '='; + params.value = 'EQ'; } if(valueType == 'string' || valueType == 'list' || valueType == 'username' ){ @@ -535,35 +535,35 @@ { params.store = new Ext.data.ArrayStore({ fields: ['value','name'], - data: [ ['=','='],['in',TR.i18n.in] ] + data: [ ['EQ','='],['IN',TR.i18n.in] ] }); - params.value = 'in'; + params.value = 'IN'; } else { params.store = new Ext.data.ArrayStore({ fields: ['value','name'], - data: [ ['=','='],['like',TR.i18n.like],['in',TR.i18n.in] ] + data: [ ['EQ','='],['LIKE',TR.i18n.like],['IN',TR.i18n.in] ] }); - params.value = 'in'; + params.value = 'IN'; } } else if( valueType == 'trueOnly' || valueType == 'bool' ){ params.store = new Ext.data.ArrayStore({ fields: ['value','name'], - data: [ ['=','='] ] + data: [ ['EQ','='] ] }); } else { params.store = new Ext.data.ArrayStore({ fields: ['value','name'], - data: [ ['=','='], - ['>','>'], - ['>=','>='], - ['<','<'], - ['<=','<='], - ['!=','!=' ] ] + data: [ ['EQ','='], + ['GT','>'], + ['GE','>='], + ['LT','<'], + ['LE','<='], + ['NE','!=' ] ] }); } @@ -595,7 +595,7 @@ } else if( xtype == 'combobox' ) { - var deId = id.split('_')[1]; + var deId = id.split('_')[0]; var fixedId = id.substring(0, id.lastIndexOf('_') ); params.typeAhead = true; params.editable = true; @@ -678,24 +678,13 @@ params.displayField = 'o'; params.multiSelect = true; params.delimiter = ';'; - var index = TR.store.dataelement.selected.findExact('id', 'de_' + deId); - var deUid = ""; - if( index == -1 ) - { - index = TR.store.dataelement.available.findExact('id', 'de_' + deId); - deUid = TR.store.dataelement.available.getAt(index).data.uid; - } - else - { - deUid = TR.store.dataelement.selected.getAt(index).data.uid; - } params.store = Ext.create('Ext.data.Store', { fields: ['o'], data:[], proxy: { type: 'ajax', url: TR.conf.finals.ajax.path_commons + TR.conf.finals.ajax.suggested_dataelement_get, - extraParams:{id: deUid}, + extraParams:{id: deId}, reader: { type: 'json', root: 'options' @@ -914,7 +903,7 @@ addToStorage: function(s, records) { s.each( function(r) { if (!s.storage[r.data.id]) { - s.storage[r.data.id] = {id: r.data.id, name: TR.util.string.getEncodedString(r.data.name), parent: s.parent, compulsory: r.data.compulsory, valueType: r.data.valueType}; + s.storage[r.data.id] = {id: r.data.id, name: TR.util.string.getEncodedString(r.data.name), parent: s.parent, valueType: r.data.valueType}; } }); if (records) { @@ -1127,7 +1116,7 @@ Ext.getCmp('programCombobox').setValue( f.programId ); TR.store.programStage.removeAll(); - TR.store.programStage.add({'id': f.programStageId, 'name': f.programStageName}); + TR.store.programStage.add({'id': f.programStageId, 'localid': f.programStageLocalid, 'name': f.programStageName}); Ext.getCmp('startDate').setValue( f.startDate ); Ext.getCmp('endDate').setValue( f.endDate ); Ext.getCmp('facilityLBCombobox').setValue( f.facilityLB ); @@ -1193,7 +1182,6 @@ } Ext.getCmp('programStageCombobox').setValue( f.programStageId ); - // Data element Ext.getCmp('filterPanel').removeAll(); @@ -1203,10 +1191,9 @@ if (f.dataElements) { for (var i = 0; i < f.dataElements.length; i++) { var name = TR.util.string.getEncodedString(f.dataElements[i].name); - var compulsory = f.dataElements[i].compulsory; var valueType = f.dataElements[i].valueType; - var uid = f.dataElements[i].uid; - TR.store.dataelement.selected.add({id: f.dataElements[i].id, name: name, compulsory: compulsory, valueType: valueType, uid:uid}); + var localid = f.dataElements[i].localid; + TR.store.dataelement.selected.add({id: f.dataElements[i].id, name: name, valueType: valueType, localid:localid}); TR.util.multiselect.addFilterField( 'filterPanel', f.dataElements[i].id, name, valueType, f.dataElements[i].filter ); } @@ -1248,7 +1235,7 @@ p.name = TR.cmp.aggregateFavorite.name.getValue(); if (isupdate) { - p.uid = TR.store.aggregateFavorite.getAt(TR.store.aggregateFavorite.findExact('name', p.name)).data.id; + p.id = TR.store.aggregateFavorite.getAt(TR.store.aggregateFavorite.findExact('name', p.name)).data.id; } Ext.Ajax.request({ @@ -1345,7 +1332,7 @@ // Program-Stage TR.store.programStage.removeAll(); - TR.store.programStage.add({'id': f.programStageId, 'name': f.programStageName}); + TR.store.programStage.add({'id': f.programStageId, 'localid': f.programStageLocalid, 'name': f.programStageName}); Ext.getCmp('userOrgunit').setValue( f.userOrganisationUnit ); Ext.getCmp('userOrgunitChildren').setValue( f.userOrganisationUnitChildren ); @@ -1405,7 +1392,7 @@ TR.store.dataelement.selected.removeAll(); for (var i = 0; i < f.selectedDEs.length; i++) { var id = f.selectedDEs[i].id; - TR.cmp.params.dataelement.objects.push({id: id, name: TR.util.string.getEncodedString(f.selectedDEs[i].name), compulsory: f.selectedDEs[i].compulsory, valueType:f.selectedDEs[i].valueType }); + TR.cmp.params.dataelement.objects.push({id: id, name: TR.util.string.getEncodedString(f.selectedDEs[i].name), valueType:f.selectedDEs[i].valueType }); // Add filter field TR.util.multiselect.addFilterField( 'filterPanel', id, f.selectedDEs[i].name, f.selectedDEs[i].valueType ); @@ -1485,7 +1472,9 @@ var storeProgramStage = TR.store.programStage; storeProgramStage.parent = f.programStageId; storeProgramStage.isLoadFromFavorite = true; - storeProgramStage.load({params: {programId: f.programId}}); + + var url = storeProgramStage.getProxy().url + f.programId + ".json?viewClass=export"; + storeProgramStage.load({url:url}); Ext.getCmp('programStageCombobox').setValue( f.programStageId ); TR.exe.execute(); @@ -1514,7 +1503,7 @@ TR.store = { program: Ext.create('Ext.data.Store', { - fields: ['id', 'name', 'type'], + fields: ['id', 'name', 'type', 'localid'], data:TR.init.system.program }), orgunitGroup: Ext.create('Ext.data.Store', { @@ -1581,7 +1570,7 @@ var programStageId = TR.store.programStage.data.items[0].raw.id; Ext.getCmp('programStageCombobox').disable(); - Ext.getCmp('programStageCombobox').setValue( programStageId ); + Ext.getCmp('programStageCombobox').setValue( TR.store.programStage.data.items[0].raw.id ); // Load sections if any @@ -1622,7 +1611,7 @@ } }), programStageSection: Ext.create('Ext.data.Store', { - fields: ['id', 'name'], + fields: ['id', 'name', 'localid'], proxy: { type: 'ajax', url: TR.conf.finals.ajax.path_commons + TR.conf.finals.ajax.programstagesections_get, @@ -1656,7 +1645,7 @@ }), dataelement: { available: Ext.create('Ext.data.Store', { - fields: ['id', 'uid', 'name', 'compulsory', 'valueType'], + fields: ['id', 'name', 'valueType', 'localid'], proxy: { type: 'ajax', url: TR.conf.finals.ajax.path_commons + TR.conf.finals.ajax.dataelements_get, @@ -1699,7 +1688,7 @@ } }), selected: Ext.create('Ext.data.Store', { - fields: ['id', 'uid', 'name', 'compulsory', 'valueType'], + fields: ['id', 'name', 'valueType', 'localid'], data: [] }) }, @@ -1711,7 +1700,7 @@ }); }, caseBasedFavorite: Ext.create('Ext.data.Store', { - fields: ['id', 'uid', 'name', 'lastUpdated', 'access'], + fields: ['id', 'localid', 'name', 'lastUpdated', 'access'], proxy: { type: 'ajax', reader: { @@ -1768,7 +1757,7 @@ } }), aggregateFavorite: Ext.create('Ext.data.Store', { - fields: ['id', 'uid', 'name', 'lastUpdated', 'access'], + fields: ['id', 'localid', 'name', 'lastUpdated', 'access'], proxy: { type: 'ajax', reader: { @@ -1902,14 +1891,21 @@ caseBasedReport: { generate: function( type, isSorted ) { + // Validation + if( !TR.state.caseBasedReport.validation.objects() ) { return; } + // Get url + var programId = Ext.getCmp('programCombobox').getValue(); + var programStageId = TR.cmp.params.programStage.getValue(); var url = TR.conf.finals.ajax.path_root + TR.conf.finals.ajax.generatetabularreport_get; + // Export to XLS + if( type) { TR.state.caseBasedReport.getURLParams(); @@ -1926,46 +1922,45 @@ } var exportForm = document.getElementById('exportForm'); - exportForm.action = url + "?type=" + type + completedEvent + displayOrgunitCode; + exportForm.action = url + programId + ".xls?stage=" + programStageId + completedEvent + displayOrgunitCode; exportForm.submit(); } // Show report on grid else { + url += programId + ".json?stage=" + programStageId + "&viewClass=export"; TR.util.mask.showMask(TR.cmp.region.center, TR.i18n.loading); Ext.Ajax.request({ url: url, - method: "POST", + method: "GET", scope: this, params: this.getParams(isSorted), success: function(r) { var json = Ext.JSON.decode(r.responseText); - if(json.message!=""){ - TR.util.notification.error(TR.i18n.error, json.message); + + if( isSorted ){ + TR.store.datatable.loadData(TR.value.values,false); } else{ - if( isSorted ){ - TR.store.datatable.loadData(TR.value.values,false); - } - else{ - TR.state.total = json.total; - TR.state.totalRecords = json.totalRecords - TR.value.columns = json.columns; - TR.value.values = json.items; - // Get fields - var fields = []; - fields[0] = 'id'; - for( var index=1; index < TR.value.columns.length; index++ ) - { - fields[index] = 'col' + index; - } - TR.value.fields = fields; - - // Set data for grid - TR.store.getDataTableStore(); - TR.datatable.getDataTable(); - } - TR.datatable.setPagingToolbarStatus(); + TR.value.columns = json.headers; + TR.value.values = json.rows; + + // Get fields + var fields = []; + for( var index=0; index < TR.value.columns.length; index++ ) + { + fields[index] = 'col' + TR.value.columns[index].column; + } + TR.value.fields = fields; + + // Set data for grid + TR.store.getDataTableStore(); + TR.datatable.getDataTable(); + + if( json.rows.length>1 ) + { + Ext.getCmp('btnSortBy').enable(); + } } TR.util.mask.hideMask(); } @@ -1981,14 +1976,20 @@ p.level = Ext.getCmp('levelCombobox').getValue(); // orders - p.orderByOrgunitAsc = TR.state.orderByOrgunitAsc; - p.orderByExecutionDateByAsc= TR.state.orderByExecutionDateByAsc; + p.asc = TR.state.asc; + p.desc= TR.state.desc; p.programStageId = TR.cmp.params.programStage.getValue(); p.currentPage = TR.state.currentPage; // organisation unit - p.orgunitIds = TR.state.orgunitIds; + p.ou = ""; + for( var i in TR.state.orgunitIds){ + p.ou += TR.state.orgunitIds[i]; + if( i