=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/report-controller.js' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/report-controller.js 2014-07-08 08:30:39 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/report-controller.js 2014-07-08 16:14:36 +0000 @@ -4,33 +4,78 @@ storage, DateUtils, EventUtils, + TEIService, + TEIGridService, TranslationService, + AttributesFactory, DHIS2EventFactory) { TranslationService.translate(); $scope.ouModes = [{name: 'SELECTED'}, {name: 'CHILDREN'}, {name: 'DESCENDANTS'}, {name: 'ACCESSIBLE'}]; $scope.selectedOuMode = $scope.ouModes[0]; - - - - - - $scope.getEvents = function(){ - - $scope.dhis2Events = ''; - $scope.dataExists = false; - DHIS2EventFactory.getEventsByProgram($scope.selectedEntity.trackedEntityInstance, $scope.selectedOrgUnit.id, $scope.selectedProgram.id).then(function(data){ - $scope.dhis2Events = data; - if(!angular.isUndefined($scope.dhis2Events) ){ - for(var i=0; i<$scope.dhis2Events.length && !$scope.dataExists; i++){ - if(!angular.isUndefined($scope.dhis2Events[i].dataValues)){ - $scope.dataExists = true; - } - } + $scope.report = {}; + + $scope.generateReport = function(){ + + $scope.dataReady = false; + + //check for form validity + $scope.outerForm.submitted = true; + if( $scope.outerForm.$invalid || !$scope.selectedProgram){ + return false; + } + + $scope.programStages = []; + angular.forEach($scope.selectedProgram.programStages, function(stage){ + $scope.programStages[stage.id] = stage; + }); + + AttributesFactory.getByProgram($scope.selectedProgram).then(function(atts){ + $scope.gridColumns = TEIGridService.generateGridColumns(atts, $scope.selectedOuMode.name); + }); + + //fetch TEIs for the selected program and orgunit/mode + TEIService.search($scope.selectedOrgUnit.id, + $scope.selectedOuMode.name, + null, + 'program=' + $scope.selectedProgram.id, + null, + $scope.pager, + false).then(function(data){ + if(data.rows){ + $scope.teiCount = data.rows.length; + $scope.dataReady = true; } - }); + + + //process tei grid + $scope.teiList = TEIGridService.format(data); + + DHIS2EventFactory.getByOrgUnitAndProgram($scope.selectedOrgUnit.id, $scope.selectedOuMode.name, $scope.selectedProgram.id).then(function(eventList){ + $scope.dhis2Events = []; + angular.forEach(eventList, function(ev){ + if(ev.trackedEntityInstance){ + ev.name = $scope.programStages[ev.programStage].name; + ev.statusColor = EventUtils.getEventStatusColor(ev); + ev.eventDate = DateUtils.format(ev.eventDate); + + if($scope.dhis2Events[ev.trackedEntityInstance]){ + $scope.dhis2Events[ev.trackedEntityInstance].push(ev); + } + else{ + $scope.dhis2Events[ev.trackedEntityInstance] = [ev]; + } + ev = EventUtils.setEventOrgUnitName(ev); + } + }); + }); + }); }; + + $scope.showEventDetails = function(dhis2Event){ + console.log('I will show details of...: ', dhis2Event); + }; }) //conroller for tei report === modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/report.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/report.html 2014-07-08 08:30:39 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/report.html 2014-07-08 16:14:36 +0000 @@ -17,19 +17,21 @@
- +
- + + {{'required'| translate}} - + + {{'required'| translate}}
- +
@@ -39,4 +41,54 @@
{{'please_select_program_report'| translate}}
+
+
+
+
+ {{'no'| translate}} {{selectedProgram.trackedEntity.name|| 'records' | translate}} {{'found'| translate}} +
+
+
+
+ {{'no'| translate}} {{selectedProgram.trackedEntity.name|| 'records' | translate}} {{'found'| translate}} +
+
+
+ + +
+ + + + + + + + + + + +
{{selectedProgram.trackedEntity.name}}{{'registered_data' | translate}}
+ + {{gridColumn.name}}: {{tei[gridColumn.id]}}
+
+
+
{{'no_visit_made' | translate}}
+
+
{{ev.orgUnitName}}
+
+ {{ev.name}}
+ {{ev.eventDate}} +
+ +
+
+
+ +
+
+
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json 2014-07-08 08:30:39 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json 2014-07-08 16:14:36 +0000 @@ -91,6 +91,9 @@ "search_from_existing": "Search from existing", "dataentry": "Data Entry", "report": "Report", + "registered_data": "Registered data", + "no_data_registerd": "No data registered", + "no_visit_made": "No visit made", "current_selections": "Current selections", "org_unit": "Organisation unit", "SELECTED": "Selected", @@ -98,7 +101,7 @@ "DESCENDANTS": "All children", "ACCESSIBLE": "All accessible", "data_element": "Data element", - "value": "Value", + "value": "Value", "provided_elsewhere": "Provided elsewhere", "expand": "Expand", "collapse": "Collapse", === modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2014-07-08 08:30:39 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2014-07-08 16:14:36 +0000 @@ -208,7 +208,8 @@ $scope.queryUrl, $scope.programUrl, $scope.attributeUrl.url, - $scope.pager).then(function(data){ + $scope.pager, + true).then(function(data){ //$scope.trackedEntityList = data; if(data.rows){ $scope.teiCount = data.rows.length; === modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/services.js' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/services.js 2014-07-07 15:04:56 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/services.js 2014-07-08 16:14:36 +0000 @@ -313,10 +313,7 @@ }); return promise; }, - search: function(ouId, ouMode, queryUrl, programUrl, attributeUrl, pager) { - - var pgSize = pager ? pager.pageSize : 50; - var pg = pager ? pager.page : 1; + search: function(ouId, ouMode, queryUrl, programUrl, attributeUrl, pager, paging) { var url = '../api/trackedEntityInstances.json?ou=' + ouId + '&ouMode='+ ouMode; @@ -330,7 +327,16 @@ url = url + '&' + attributeUrl; } - promise = $http.get( url + '&pageSize=' + pgSize + '&page=' + pg ).then(function(response){ + if(paging){ + var pgSize = pager ? pager.pageSize : 50; + var pg = pager ? pager.page : 1; + url = url + '&pageSize=' + pgSize + '&page=' + pg; + } + else{ + url = url + '&paging=false'; + } + + promise = $http.get( url ).then(function(response){ return response.data; }); return promise; @@ -459,6 +465,12 @@ }); return promise; }, + getByOrgUnitAndProgram: function(orgUnit, ouMode, program){ + var promise = $http.get( '../api/events.json?' + '&orgUnit=' + orgUnit + '&ouMode='+ ouMode + '&program=' + program + '&paging=false').then(function(response){ + return response.data.events; + }); + return promise; + }, get: function(eventUid){ var promise = $http.get('../api/events/' + eventUid + '.json').then(function(response){ return response.data; @@ -835,7 +847,7 @@ }) -.service('TEIGridService', function(OrgUnitService, DateUtils, $filter){ +.service('TEIGridService', function(OrgUnitService, DateUtils){ return { format: function(grid){ @@ -884,7 +896,76 @@ }); }); return {headers: attributes, rows: entityList, pager: grid.metaData.pager}; - } + }, + formatForReport: function(grid){ + if(!grid || !grid.rows){ + return; + } + + //grid.headers[0-4] = Instance, Created, Last updated, Org unit, Tracked entity + //grid.headers[5..] = Attribute, Attribute,.... + var attributes = []; + var entityList = []; + for(var i=5; i
- {{'no'| translate}} {{selectedProgram.trackedEntity.name|| 'records' | translate}} {{'found'| translate}} + {{'no'| translate}} {{selectedProgram.trackedEntity.name || 'records' | translate}} {{'found'| translate}}
- {{'no'| translate}} {{selectedProgram.trackedEntity.name|| 'records' | translate}} {{'found'| translate}} + {{'no'| translate}} {{selectedProgram.trackedEntity.name || 'records' | translate}} {{'found'| translate}}