=== removed file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/report-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/report-controller.js 2014-08-26 16:39:26 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/report-controller.js 1970-01-01 00:00:00 +0000 @@ -1,389 +0,0 @@ -trackerCapture.controller('ReportController', - function($scope, - $modal, - DateUtils, - EventUtils, - TEIService, - TEIGridService, - TranslationService, - AttributesFactory, - ProgramFactory, - DHIS2EventFactory, - storage) { - - TranslationService.translate(); - - $scope.today = DateUtils.format(moment()); - - $scope.ouModes = [{name: 'SELECTED'}, {name: 'CHILDREN'}, {name: 'DESCENDANTS'}, {name: 'ACCESSIBLE'}]; - $scope.selectedOuMode = $scope.ouModes[0]; - $scope.report = {}; - - //watch for selection of org unit from tree - $scope.$watch('selectedOrgUnit', function() { - if( angular.isObject($scope.selectedOrgUnit)){ - storage.set('SELECTED_OU', $scope.selectedOrgUnit); - $scope.loadPrograms($scope.selectedOrgUnit); - } - }); - - //load programs associated with the selected org unit. - $scope.loadPrograms = function(orgUnit) { - - $scope.selectedOrgUnit = orgUnit; - - if (angular.isObject($scope.selectedOrgUnit)) { - - ProgramFactory.getAll().then(function(programs){ - $scope.programs = []; - angular.forEach(programs, function(program){ - if(program.organisationUnits.hasOwnProperty($scope.selectedOrgUnit.id)){ - $scope.programs.push(program); - } - }); - - if($scope.programs.length === 0){ - $scope.selectedProgram = null; - } - else{ - if($scope.selectedProgram){ - angular.forEach($scope.programs, function(program){ - if(program.id === $scope.selectedProgram.id){ - $scope.selectedProgram = program; - } - }); - } - else{ - if($scope.programs.length === 1){ - $scope.selectedProgram = $scope.programs[0]; - } - } - } - }); - } - }; - - //watch for selection of org unit from tree - $scope.$watch('selectedProgram', function() { - if( angular.isObject($scope.selectedProgram)){ - $scope.dataReady = false; - } - }); - - $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.programName = $scope.selectedProgram.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, selectedTei){ - - var modalInstance = $modal.open({ - templateUrl: 'components/report/event-details.html', - controller: 'EventDetailsController', - resolve: { - dhis2Event: function () { - return dhis2Event; - }, - gridColumns: function(){ - return $scope.gridColumns; - }, - selectedTei: function(){ - return selectedTei; - }, - entityName: function(){ - return $scope.selectedProgram.trackedEntity.name; - }, - reportMode: function(){ - return 'PROGRAM'; - } - } - }); - - modalInstance.result.then({ - }); - }; - -}) - -//Controller for event details -.controller('EventDetailsController', - function($scope, - $modalInstance, - orderByFilter, - ProgramStageFactory, - dhis2Event, - selectedTei, - gridColumns, - entityName, - reportMode){ - - $scope.selectedTei = selectedTei; - $scope.gridColumns = gridColumns; - $scope.entityName = entityName; - $scope.reportMode = reportMode; - $scope.currentEvent = dhis2Event; - $scope.currentEvent.providedElsewhere = []; - - if(!angular.isUndefined( $scope.currentEvent.notes)){ - $scope.currentEvent.notes = orderByFilter($scope.currentEvent.notes, '-storedDate'); - angular.forEach($scope.currentEvent.notes, function(note){ - note.storedDate = moment(note.storedDate).format('YYYY-MM-DD @ hh:mm A'); - }); - } - - ProgramStageFactory.get($scope.currentEvent.programStage).then(function(stage){ - $scope.currentStage = stage; - - $scope.allowProvidedElsewhereExists = false; - angular.forEach($scope.currentStage.programStageDataElements, function(prStDe){ - $scope.currentStage.programStageDataElements[prStDe.dataElement.id] = prStDe.dataElement; - if(prStDe.allowProvidedElsewhere){ - $scope.allowProvidedElsewhereExists = true; - $scope.currentEvent.providedElsewhere[prStDe.dataElement.id] = ''; - } - }); - angular.forEach($scope.currentEvent.dataValues, function(dataValue){ - var val = dataValue.value; - if(val){ - var de = $scope.currentStage.programStageDataElements[dataValue.dataElement]; - if( de && de.type === 'int' && val){ - val = parseInt(val); - dataValue.value = val; - } - $scope.currentEvent[dataValue.dataElement] = val; - } - }); - }); - - $scope.close = function () { - $modalInstance.close(); - }; -}) - - -//conroller for tei report -.controller('TeiReportController', - function($scope, - $filter, - CurrentSelection, - storage, - DateUtils, - EventUtils, - TEIService, - TranslationService, - ProgramFactory, - ProgramStageFactory, - EnrollmentService, - DHIS2EventFactory) { - - TranslationService.translate(); - $scope.showProgramReportDetailsDiv = false; - $scope.programs = []; - $scope.programNames = []; - $scope.programStageNames = []; - ProgramFactory.getAll().then(function(programs){ - $scope.programs = programs; - angular.forEach($scope.programs, function(pr){ - delete pr.organisationUnits; - $scope.programNames[pr.id] = {id: pr.id, name: pr.name}; - angular.forEach(pr.programStages, function(stage){ - $scope.programStageNames[stage.id] = {id: stage.id, name: stage.name}; - }); - }); - }); - - $scope.$on('dashboardWidgets', function(event, args) { - $scope.showProgramReportDetailsDiv = false; - var selections = CurrentSelection.get(); - $scope.selectedOrgUnit = storage.get('SELECTED_OU'); - $scope.selectedTei = selections.tei; - $scope.selectedEntity = selections.te; - $scope.selectedProgram = selections.pr; - $scope.selectedEnrollment = selections.enrollment; - - if($scope.selectedTei){ - $scope.getEvents(); - } - }); - - $scope.getEvents = function(){ - - $scope.dataFetched = false; - $scope.dataExists = false; - var programId = null, orgUnitId = null; - - if($scope.selectedProgram){ - programId = $scope.selectedProgram.id; - } - - $scope.report = []; - angular.forEach($scope.programs, function(pr){ - $scope.report[pr.id] = {}; - }); - - DHIS2EventFactory.getEventsByProgram($scope.selectedTei.trackedEntityInstance, orgUnitId, programId).then(function(eventList){ - angular.forEach(eventList, function(ev){ - if(ev.program){ - ev.visited = true; - ev.dueDate = DateUtils.format(ev.dueDate); - ev.sortingDate = ev.dueDate; - ev.name = $scope.programStageNames[ev.programStage].name; - ev.programName = $scope.programNames[ev.program].name; - if(angular.isUndefined($scope.report[ev.program].enrollments)){ - $scope.report[ev.program] = {enrollments: {}}; - } - ev.statusColor = EventUtils.getEventStatusColor(ev); - - if(ev.eventDate){ - ev.eventDate = DateUtils.format(ev.eventDate); - ev.sortingDate = ev.eventDate; - } - else{ - ev.visited = false; - } - - if(ev.enrollment){ - if($scope.report[ev.program].enrollments[ev.enrollment]){ - $scope.report[ev.program].enrollments[ev.enrollment].push(ev); - } - else{ - $scope.report[ev.program].enrollments[ev.enrollment]= [ev]; - } - } - ev = EventUtils.setEventOrgUnitName(ev); - } - }); - - if(eventList){ - $scope.dataExists = true; - } - $scope.dataFetched = true; - }); - }; - - $scope.showProgramReportDetails = function(pr){ - - $scope.showProgramReportDetailsDiv = !$scope.showProgramReportDetailsDiv; - $scope.selectedProgram = pr; - $scope.selectedReport = $scope.report[pr.id]; - - //today as report date - $scope.today = moment(); - $scope.today = Date.parse($scope.today); - $scope.today = $filter('date')($scope.today, 'yyyy-MM-dd'); - - //process tei attributes, this is to have consistent display so that the tei - //contains program attributes whether it has value or not - TEIService.processAttributes($scope.selectedTei, $scope.selectedProgram, null).then(function(tei){ - $scope.tei = tei; - }); - - //get program stage for the selected program - //they are needed assign data element names for event data values - $scope.programStages = []; - $scope.allowProvidedElsewhereExists = []; - angular.forEach($scope.selectedProgram.programStages, function(st){ - ProgramStageFactory.get(st.id).then(function(stage){ - $scope.programStages[stage.id] = stage; - var providedElsewhereExists = false; - for(var i=0; i - - -
- -
-
    -
-
- - - - -
- -
-

{{'program_summary_report' | translate}}

-
-
-
- - - - - - - - - -
- {{'program' | translate}} - - -
{{'org_unit'| translate}} -
-
-
- -
-
-
-
-
- - - - - -
- - {{'required'| translate}} (yyyy-mm-dd) - - - {{'required'| translate}} (yyyy-mm-dd) -
-
-
- -
-
-
-
-
-
{{'no_program_exists_report'| translate}}
-
-
-
-
-
{{'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}}{{selectedProgram.name}} {{'visit' | translate}}
- - {{gridColumn.name}}: {{tei[gridColumn.id]}}
-
-
-
{{'no_visit_made' | translate}}
-
-
{{ev.orgUnitName}}
-
- {{ev.name}}
- {{ev.eventDate}}
- {{'no_data' | translate}} -
-
- {{ev.name}}
- {{ev.eventDate}}
- {{'data_exists' | translate}} -
- -
-
-
- -
-
-
-
=== added file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/summary-report-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/summary-report-controller.js 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/summary-report-controller.js 2014-08-27 11:18:35 +0000 @@ -0,0 +1,389 @@ +trackerCapture.controller('SummaryReportController', + function($scope, + $modal, + DateUtils, + EventUtils, + TEIService, + TEIGridService, + TranslationService, + AttributesFactory, + ProgramFactory, + DHIS2EventFactory, + storage) { + + TranslationService.translate(); + + $scope.today = DateUtils.format(moment()); + + $scope.ouModes = [{name: 'SELECTED'}, {name: 'CHILDREN'}, {name: 'DESCENDANTS'}, {name: 'ACCESSIBLE'}]; + $scope.selectedOuMode = $scope.ouModes[0]; + $scope.report = {}; + + //watch for selection of org unit from tree + $scope.$watch('selectedOrgUnit', function() { + if( angular.isObject($scope.selectedOrgUnit)){ + storage.set('SELECTED_OU', $scope.selectedOrgUnit); + $scope.loadPrograms($scope.selectedOrgUnit); + } + }); + + //load programs associated with the selected org unit. + $scope.loadPrograms = function(orgUnit) { + + $scope.selectedOrgUnit = orgUnit; + + if (angular.isObject($scope.selectedOrgUnit)) { + + ProgramFactory.getAll().then(function(programs){ + $scope.programs = []; + angular.forEach(programs, function(program){ + if(program.organisationUnits.hasOwnProperty($scope.selectedOrgUnit.id)){ + $scope.programs.push(program); + } + }); + + if($scope.programs.length === 0){ + $scope.selectedProgram = null; + } + else{ + if($scope.selectedProgram){ + angular.forEach($scope.programs, function(program){ + if(program.id === $scope.selectedProgram.id){ + $scope.selectedProgram = program; + } + }); + } + else{ + if($scope.programs.length === 1){ + $scope.selectedProgram = $scope.programs[0]; + } + } + } + }); + } + }; + + //watch for selection of org unit from tree + $scope.$watch('selectedProgram', function() { + if( angular.isObject($scope.selectedProgram)){ + $scope.dataReady = false; + } + }); + + $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.programName = $scope.selectedProgram.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, selectedTei){ + + var modalInstance = $modal.open({ + templateUrl: 'components/report/event-details.html', + controller: 'EventDetailsController', + resolve: { + dhis2Event: function () { + return dhis2Event; + }, + gridColumns: function(){ + return $scope.gridColumns; + }, + selectedTei: function(){ + return selectedTei; + }, + entityName: function(){ + return $scope.selectedProgram.trackedEntity.name; + }, + reportMode: function(){ + return 'PROGRAM'; + } + } + }); + + modalInstance.result.then({ + }); + }; + +}) + +//Controller for event details +.controller('EventDetailsController', + function($scope, + $modalInstance, + orderByFilter, + ProgramStageFactory, + dhis2Event, + selectedTei, + gridColumns, + entityName, + reportMode){ + + $scope.selectedTei = selectedTei; + $scope.gridColumns = gridColumns; + $scope.entityName = entityName; + $scope.reportMode = reportMode; + $scope.currentEvent = dhis2Event; + $scope.currentEvent.providedElsewhere = []; + + if(!angular.isUndefined( $scope.currentEvent.notes)){ + $scope.currentEvent.notes = orderByFilter($scope.currentEvent.notes, '-storedDate'); + angular.forEach($scope.currentEvent.notes, function(note){ + note.storedDate = moment(note.storedDate).format('YYYY-MM-DD @ hh:mm A'); + }); + } + + ProgramStageFactory.get($scope.currentEvent.programStage).then(function(stage){ + $scope.currentStage = stage; + + $scope.allowProvidedElsewhereExists = false; + angular.forEach($scope.currentStage.programStageDataElements, function(prStDe){ + $scope.currentStage.programStageDataElements[prStDe.dataElement.id] = prStDe.dataElement; + if(prStDe.allowProvidedElsewhere){ + $scope.allowProvidedElsewhereExists = true; + $scope.currentEvent.providedElsewhere[prStDe.dataElement.id] = ''; + } + }); + angular.forEach($scope.currentEvent.dataValues, function(dataValue){ + var val = dataValue.value; + if(val){ + var de = $scope.currentStage.programStageDataElements[dataValue.dataElement]; + if( de && de.type === 'int' && val){ + val = parseInt(val); + dataValue.value = val; + } + $scope.currentEvent[dataValue.dataElement] = val; + } + }); + }); + + $scope.close = function () { + $modalInstance.close(); + }; +}) + + +//conroller for tei report +.controller('TeiReportController', + function($scope, + $filter, + CurrentSelection, + storage, + DateUtils, + EventUtils, + TEIService, + TranslationService, + ProgramFactory, + ProgramStageFactory, + EnrollmentService, + DHIS2EventFactory) { + + TranslationService.translate(); + $scope.showProgramReportDetailsDiv = false; + $scope.programs = []; + $scope.programNames = []; + $scope.programStageNames = []; + ProgramFactory.getAll().then(function(programs){ + $scope.programs = programs; + angular.forEach($scope.programs, function(pr){ + delete pr.organisationUnits; + $scope.programNames[pr.id] = {id: pr.id, name: pr.name}; + angular.forEach(pr.programStages, function(stage){ + $scope.programStageNames[stage.id] = {id: stage.id, name: stage.name}; + }); + }); + }); + + $scope.$on('dashboardWidgets', function(event, args) { + $scope.showProgramReportDetailsDiv = false; + var selections = CurrentSelection.get(); + $scope.selectedOrgUnit = storage.get('SELECTED_OU'); + $scope.selectedTei = selections.tei; + $scope.selectedEntity = selections.te; + $scope.selectedProgram = selections.pr; + $scope.selectedEnrollment = selections.enrollment; + + if($scope.selectedTei){ + $scope.getEvents(); + } + }); + + $scope.getEvents = function(){ + + $scope.dataFetched = false; + $scope.dataExists = false; + var programId = null, orgUnitId = null; + + if($scope.selectedProgram){ + programId = $scope.selectedProgram.id; + } + + $scope.report = []; + angular.forEach($scope.programs, function(pr){ + $scope.report[pr.id] = {}; + }); + + DHIS2EventFactory.getEventsByProgram($scope.selectedTei.trackedEntityInstance, orgUnitId, programId).then(function(eventList){ + angular.forEach(eventList, function(ev){ + if(ev.program){ + ev.visited = true; + ev.dueDate = DateUtils.format(ev.dueDate); + ev.sortingDate = ev.dueDate; + ev.name = $scope.programStageNames[ev.programStage].name; + ev.programName = $scope.programNames[ev.program].name; + if(angular.isUndefined($scope.report[ev.program].enrollments)){ + $scope.report[ev.program] = {enrollments: {}}; + } + ev.statusColor = EventUtils.getEventStatusColor(ev); + + if(ev.eventDate){ + ev.eventDate = DateUtils.format(ev.eventDate); + ev.sortingDate = ev.eventDate; + } + else{ + ev.visited = false; + } + + if(ev.enrollment){ + if($scope.report[ev.program].enrollments[ev.enrollment]){ + $scope.report[ev.program].enrollments[ev.enrollment].push(ev); + } + else{ + $scope.report[ev.program].enrollments[ev.enrollment]= [ev]; + } + } + ev = EventUtils.setEventOrgUnitName(ev); + } + }); + + if(eventList){ + $scope.dataExists = true; + } + $scope.dataFetched = true; + }); + }; + + $scope.showProgramReportDetails = function(pr){ + + $scope.showProgramReportDetailsDiv = !$scope.showProgramReportDetailsDiv; + $scope.selectedProgram = pr; + $scope.selectedReport = $scope.report[pr.id]; + + //today as report date + $scope.today = moment(); + $scope.today = Date.parse($scope.today); + $scope.today = $filter('date')($scope.today, 'yyyy-MM-dd'); + + //process tei attributes, this is to have consistent display so that the tei + //contains program attributes whether it has value or not + TEIService.processAttributes($scope.selectedTei, $scope.selectedProgram, null).then(function(tei){ + $scope.tei = tei; + }); + + //get program stage for the selected program + //they are needed assign data element names for event data values + $scope.programStages = []; + $scope.allowProvidedElsewhereExists = []; + angular.forEach($scope.selectedProgram.programStages, function(st){ + ProgramStageFactory.get(st.id).then(function(stage){ + $scope.programStages[stage.id] = stage; + var providedElsewhereExists = false; + for(var i=0; i + + + + +
+

{{'program_summary_report' | translate}}

+
+
+
+ + + + + + + + + +
+ {{'program' | translate}} + + +
{{'org_unit'| translate}} +
+
+
+ +
+
+
+
+
+ + + + + +
+ + {{'required'| translate}} (yyyy-mm-dd) + + + {{'required'| translate}} (yyyy-mm-dd) +
+
+
+ +
+
+
+
+
+
{{'no_program_exists_report'| translate}}
+
+
+
+
+
{{'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}}{{selectedProgram.name}} {{'visit' | translate}}
+ + {{gridColumn.name}}: {{tei[gridColumn.id]}}
+
+
+
{{'no_visit_made' | translate}}
+
+
{{ev.orgUnitName}}
+
+ {{ev.name}}
+ {{ev.eventDate}}
+ {{'no_data' | translate}} +
+
+ {{ev.name}}
+ {{ev.eventDate}}
+ {{'data_exists' | translate}} +
+ +
+
+
+ +
+
+
+
=== added file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/tei-report-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/tei-report-controller.js 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/report/tei-report-controller.js 2014-08-27 11:18:35 +0000 @@ -0,0 +1,172 @@ +//conroller for tei report +trackerCapture.controller('TeiReportController', + function($scope, + $filter, + CurrentSelection, + storage, + DateUtils, + EventUtils, + TEIService, + TranslationService, + ProgramFactory, + ProgramStageFactory, + EnrollmentService, + DHIS2EventFactory) { + + TranslationService.translate(); + $scope.showProgramReportDetailsDiv = false; + $scope.programs = []; + $scope.programNames = []; + $scope.programStageNames = []; + ProgramFactory.getAll().then(function(programs){ + $scope.programs = programs; + angular.forEach($scope.programs, function(pr){ + delete pr.organisationUnits; + $scope.programNames[pr.id] = {id: pr.id, name: pr.name}; + angular.forEach(pr.programStages, function(stage){ + $scope.programStageNames[stage.id] = {id: stage.id, name: stage.name}; + }); + }); + }); + + $scope.$on('dashboardWidgets', function(event, args) { + $scope.showProgramReportDetailsDiv = false; + var selections = CurrentSelection.get(); + $scope.selectedOrgUnit = storage.get('SELECTED_OU'); + $scope.selectedTei = selections.tei; + $scope.selectedEntity = selections.te; + $scope.selectedProgram = selections.pr; + $scope.selectedEnrollment = selections.enrollment; + + if($scope.selectedTei){ + $scope.getEvents(); + } + }); + + $scope.getEvents = function(){ + + $scope.dataFetched = false; + $scope.dataExists = false; + var programId = null, orgUnitId = null; + + if($scope.selectedProgram){ + programId = $scope.selectedProgram.id; + } + + $scope.report = []; + angular.forEach($scope.programs, function(pr){ + $scope.report[pr.id] = {}; + }); + + DHIS2EventFactory.getEventsByProgram($scope.selectedTei.trackedEntityInstance, orgUnitId, programId).then(function(eventList){ + angular.forEach(eventList, function(ev){ + if(ev.program){ + ev.visited = true; + ev.dueDate = DateUtils.format(ev.dueDate); + ev.sortingDate = ev.dueDate; + ev.name = $scope.programStageNames[ev.programStage].name; + ev.programName = $scope.programNames[ev.program].name; + if(angular.isUndefined($scope.report[ev.program].enrollments)){ + $scope.report[ev.program] = {enrollments: {}}; + } + ev.statusColor = EventUtils.getEventStatusColor(ev); + + if(ev.eventDate){ + ev.eventDate = DateUtils.format(ev.eventDate); + ev.sortingDate = ev.eventDate; + } + else{ + ev.visited = false; + } + + if(ev.enrollment){ + if($scope.report[ev.program].enrollments[ev.enrollment]){ + $scope.report[ev.program].enrollments[ev.enrollment].push(ev); + } + else{ + $scope.report[ev.program].enrollments[ev.enrollment]= [ev]; + } + } + ev = EventUtils.setEventOrgUnitName(ev); + } + }); + + if(eventList){ + $scope.dataExists = true; + } + $scope.dataFetched = true; + }); + }; + + $scope.showProgramReportDetails = function(pr){ + + $scope.showProgramReportDetailsDiv = !$scope.showProgramReportDetailsDiv; + $scope.selectedProgram = pr; + $scope.selectedReport = $scope.report[pr.id]; + + //today as report date + $scope.today = moment(); + $scope.today = Date.parse($scope.today); + $scope.today = $filter('date')($scope.today, 'yyyy-MM-dd'); + + //process tei attributes, this is to have consistent display so that the tei + //contains program attributes whether it has value or not + TEIService.processAttributes($scope.selectedTei, $scope.selectedProgram, null).then(function(tei){ + $scope.tei = tei; + }); + + //get program stage for the selected program + //they are needed assign data element names for event data values + $scope.programStages = []; + $scope.allowProvidedElsewhereExists = []; + angular.forEach($scope.selectedProgram.programStages, function(st){ + ProgramStageFactory.get(st.id).then(function(stage){ + $scope.programStages[stage.id] = stage; + var providedElsewhereExists = false; + for(var i=0; i - @@ -65,13 +64,18 @@ + + + + + - + === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/app.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/app.js 2014-08-27 10:38:27 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/app.js 2014-08-27 11:18:35 +0000 @@ -28,9 +28,9 @@ }).when('/dashboard',{ templateUrl:'components/dashboard/dashboard.html', controller: 'DashboardController' - }).when('/report',{ - templateUrl:'components/report/report.html', - controller: 'ReportController' + }).when('/summary-report',{ + templateUrl:'components/report/summary-report.html', + controller: 'SummaryReportController' }).when('/reports',{ templateUrl:'components/report/reports.html', controller: 'ReportTypesController' === added file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/column-display-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/column-display-controller.js 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/column-display-controller.js 2014-08-27 11:18:35 +0000 @@ -0,0 +1,24 @@ +//Controller for column show/hide +trackerCapture.controller('ColumnDisplayController', + function($scope, + $modalInstance, + hiddenGridColumns, + gridColumns){ + + $scope.gridColumns = gridColumns; + $scope.hiddenGridColumns = hiddenGridColumns; + + $scope.close = function () { + $modalInstance.close($scope.gridColumns); + }; + + $scope.showHideColumns = function(gridColumn){ + + if(gridColumn.show){ + $scope.hiddenGridColumns--; + } + else{ + $scope.hiddenGridColumns++; + } + }; +}); \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2014-08-27 10:38:27 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js 2014-08-27 11:18:35 +0000 @@ -355,80 +355,4 @@ $scope.getHelpContent = function(){ console.log('I will get help content'); }; -}) - -//Controller for column show/hide -.controller('ColumnDisplayController', - function($scope, - $modalInstance, - hiddenGridColumns, - gridColumns){ - - $scope.gridColumns = gridColumns; - $scope.hiddenGridColumns = hiddenGridColumns; - - $scope.close = function () { - $modalInstance.close($scope.gridColumns); - }; - - $scope.showHideColumns = function(gridColumn){ - - if(gridColumn.show){ - $scope.hiddenGridColumns--; - } - else{ - $scope.hiddenGridColumns++; - } - }; -}) - -//Controller for the header section -.controller('LeftBarMenuController', - function($scope, - $location, - TranslationService) { - - TranslationService.translate(); - - $scope.showHome = function(){ - $location.path('/').search(); - }; - - $scope.showReportTypes = function(){ - $location.path('/reports').search(); - }; -}) - -//Controller for the header section -.controller('ReportTypesController', - function($scope, - $location, - TranslationService) { - - TranslationService.translate(); - - $scope.showSummaryReport = function(){ - $location.path('/report').search(); - }; - - $scope.showOverDueEvents = function(){ - $location.path('/report').search(); - }; - - $scope.showUpcomingEvents = function(){ - $location.path('/report').search(); - }; -}) - -//Controller for the header section -.controller('HeaderController', - function($scope, - DHIS2URL, - TranslationService) { - - TranslationService.translate(); - - $scope.home = function(){ - window.location = DHIS2URL; - }; }); \ No newline at end of file === added file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/header-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/header-controller.js 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/header-controller.js 2014-08-27 11:18:35 +0000 @@ -0,0 +1,12 @@ +//Controller for the header section +trackerCapture.controller('HeaderController', + function($scope, + DHIS2URL, + TranslationService) { + + TranslationService.translate(); + + $scope.home = function(){ + window.location = DHIS2URL; + }; +}); \ No newline at end of file === added file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/leftbar-menu-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/leftbar-menu-controller.js 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/leftbar-menu-controller.js 2014-08-27 11:18:35 +0000 @@ -0,0 +1,16 @@ +//Controller for column show/hide +trackerCapture.controller('LeftBarMenuController', + function($scope, + $location, + TranslationService) { + + TranslationService.translate(); + + $scope.showHome = function(){ + $location.path('/').search(); + }; + + $scope.showReportTypes = function(){ + $location.path('/reports').search(); + }; +}); \ No newline at end of file === added file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/report-types-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/report-types-controller.js 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/report-types-controller.js 2014-08-27 11:18:35 +0000 @@ -0,0 +1,20 @@ +//Controller for the header section +trackerCapture.controller('ReportTypesController', + function($scope, + $location, + TranslationService) { + + TranslationService.translate(); + + $scope.showSummaryReport = function(){ + $location.path('/summary-report').search(); + }; + + $scope.showOverDueEvents = function(){ + $location.path('/report').search(); + }; + + $scope.showUpcomingEvents = function(){ + $location.path('/report').search(); + }; +}); \ No newline at end of file