=== modified file 'dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/controllers.js' --- dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/controllers.js 2014-07-06 12:46:18 +0000 +++ dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/controllers.js 2014-07-13 13:08:50 +0000 @@ -479,7 +479,7 @@ updatedEvent.notes = [{value: $scope.note.value}]; if($scope.currentEvent.notes){ - $scope.currentEvent.notes.splice(0,0,{value: $scope.note.value, storedDate: today, storedBy: ''}); + $scope.currentEvent.notes.splice(0,0,{value: $scope.note.value, storedDate: today, storedBy: storedBy}); } else{ $scope.currentEvent.notes = [{value: $scope.note.value, storedDate: today, storedBy: storedBy}]; === modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dashboard/dashboard-controller.js' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dashboard/dashboard-controller.js 2014-07-07 15:04:56 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dashboard/dashboard-controller.js 2014-07-13 13:08:50 +0000 @@ -20,7 +20,7 @@ $rootScope.smallerDashboardWidgets = []; $rootScope.enrollmentWidget = {title: 'enrollment', view: "components/enrollment/enrollment.html", show: true, expand: true}; $rootScope.dataentryWidget = {title: 'dataentry', view: "components/dataentry/dataentry.html", show: true, expand: true}; - $rootScope.reportWidget = {title: 'report', view: "components/report/teiReport.html", show: true, expand: true}; + $rootScope.reportWidget = {title: 'report', view: "components/report/tei-report.html", show: true, expand: true}; $rootScope.selectedWidget = {title: 'current_selections', view: "components/selected/selected.html", show: false, expand: true}; $rootScope.profileWidget = {title: 'profile', view: "components/profile/profile.html", show: true, expand: true}; $rootScope.relationshipWidget = {title: 'relationships', view: "components/relationship/relationship.html", show: true, expand: true}; === added file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/custom-form.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/custom-form.html 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/custom-form.html 2014-07-13 13:08:50 +0000 @@ -0,0 +1,1 @@ + \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry-controller.js' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry-controller.js 2014-07-07 15:04:56 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry-controller.js 2014-07-13 13:08:50 +0000 @@ -14,6 +14,16 @@ TranslationService.translate(); + //Data entry form + $scope.dataEntryOuterForm = {}; + $scope.displayCustomForm = false; + $scope.currentElement = {}; + + var loginDetails = storage.get('LOGIN_DETAILS'); + var storedBy = ''; + if(loginDetails){ + storedBy = loginDetails.userCredentials.username; + } var today = moment(); today = Date.parse(today); today = $filter('date')(today, 'yyyy-MM-dd'); @@ -229,54 +239,65 @@ } }; - $scope.getDataEntryForm = function(){ - - DHIS2EventFactory.get($scope.currentEvent.event).then(function(data){ - $scope.currentEvent = data; - $scope.currentEvent.providedElsewhere = []; - - $scope.currentEvent.dueDate = DateUtils.format($scope.currentEvent.dueDate); - $scope.currentEvent.eventDate = DateUtils.format($scope.currentEvent.eventDate); - - 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('DD.MM.YYYY @ 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.currentEvent.dataValues = []; - $scope.currentEventOriginal = angular.copy($scope.currentEvent); - }); - }); - + $scope.switchDataEntryForm = function(){ + $scope.displayCustomForm = !$scope.displayCustomForm; + }; + + $scope.getDataEntryForm = function(){ + + $scope.currentEvent.providedElsewhere = []; + + $scope.currentEvent.dueDate = DateUtils.format($scope.currentEvent.dueDate); + $scope.currentEvent.eventDate = DateUtils.format($scope.currentEvent.eventDate); + + 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('DD.MM.YYYY @ hh:mm A'); + }); + } + + ProgramStageFactory.get($scope.currentEvent.programStage).then(function(stage){ + $scope.currentStage = stage; + + $scope.programStageDataElements = []; + angular.forEach($scope.currentStage.programStageDataElements, function(prStDe){ + $scope.programStageDataElements[prStDe.dataElement.id] = prStDe; + }); + + $scope.customForm = $scope.currentStage.dataEntryForm ? $scope.currentStage.dataEntryForm.htmlCode : null; + $scope.displayCustomForm = $scope.customForm ? true:false; + + $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.currentEvent.dataValues = []; + $scope.currentEventOriginal = angular.copy($scope.currentEvent); + }); }; $scope.saveDatavalue = function(prStDe){ + $scope.currentElement = {}; + //check for input validity $scope.dataEntryOuterForm.submitted = true; if( $scope.dataEntryOuterForm.$invalid ){ @@ -321,8 +342,7 @@ $scope.updateSuccess = false; if(!angular.isUndefined($scope.currentEvent.providedElsewhere[prStDe.dataElement.id])){ - - console.log('the event is: ',$scope.currentEvent.providedElsewhere[prStDe.dataElement.id]); + //currentEvent.providedElsewhere[prStDe.dataElement.id]; var value = $scope.currentEvent[prStDe.dataElement.id]; var ev = { event: $scope.currentEvent.event, @@ -387,10 +407,10 @@ var newNote = {value: $scope.note}; if(angular.isUndefined( $scope.currentEvent.notes) ){ - $scope.currentEvent.notes = [newNote]; + $scope.currentEvent.notes = [{value: $scope.note, storedDate: today, storedBy: storedBy}]; } else{ - $scope.currentEvent.notes.splice(0,0,newNote); + $scope.currentEvent.notes.splice(0,0,{value: $scope.note, storedDate: today, storedBy: storedBy}); } var e = {event: $scope.currentEvent.event, @@ -401,24 +421,32 @@ notes: [newNote] }; - console.log('the notes before update are: ', $scope.currentEvent); DHIS2EventFactory.updateForNote(e).then(function(data){ $scope.note = ''; }); } }; - $scope.getClass = function(id){ - if($scope.currentElement){ + $scope.getInputNotifcationClass = function(id, custom){ + if($scope.currentElement.id){ if($scope.currentElement.saved && ($scope.currentElement.id === id)){ + if(custom){ + return 'input-success'; + } return 'form-control input-success'; } if(!$scope.currentElement.saved && ($scope.currentElement.id === id)){ + if(custom){ + return 'input-error'; + } return 'form-control input-error'; } - } - return 'form-control'; - }; + } + if(custom){ + return ''; + } + return 'form-control'; + }; $scope.closeEventCreation = function(){ $scope.currentDummyEvent = null; === modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry.html 2014-07-08 08:30:39 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/dataentry.html 2014-07-13 13:08:50 +0000 @@ -86,84 +86,18 @@ -
-
- - - - - - - - - - - - - -
- {{'data_element'| translate}} - - {{'value'| translate}} - - {{'provided_elsewhere'| translate}} -
- {{prStDe.dataElement.formName ? prStDe.dataElement.formName : prStDe.dataElement.name}} - - -
-
- - {{'number_required'| translate}} -
-
- -
-
- - -
-
- -
-
-
-
-
- -
-
-
-
+

+
+ + +
+ +
+
+ +

@@ -176,23 +110,23 @@
- +
+ +
{{note.value}}
+
+ +
- -
{{note.value}}
-
- -
-
+

{{'complete'| translate}} === added file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/default-form.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/default-form.html 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/dataentry/default-form.html 2014-07-13 13:08:50 +0000 @@ -0,0 +1,85 @@ +
+ + + + + + + + + + + + + +
+ {{'data_element'| translate}} + + {{'value'| translate}} + + {{'provided_elsewhere'| translate}} +
+ {{prStDe.dataElement.formName ? prStDe.dataElement.formName : prStDe.dataElement.name}} + + +
+
+ + {{'number_required'| translate}} +
+
+ +
+
+ + +
+
+ +
+
+ + {{'required'| translate}} +
+
+
+
+
+ +
+
+
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment.html 2014-07-02 20:53:29 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment.html 2014-07-13 13:08:50 +0000 @@ -21,7 +21,7 @@ -
+

@@ -42,7 +42,6 @@
-
+
\ No newline at end of file === removed file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/eventDetails.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/eventDetails.html 2014-07-09 12:49:49 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/eventDetails.html 1970-01-01 00:00:00 +0000 @@ -1,83 +0,0 @@ - - - \ No newline at end of file === added file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/program-details.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/program-details.html 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/program-details.html 2014-07-13 13:08:50 +0000 @@ -0,0 +1,114 @@ + + + \ No newline at end of file === 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-10 13:17:04 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/report-controller.js 2014-07-13 13:08:50 +0000 @@ -76,7 +76,7 @@ $scope.showEventDetails = function(dhis2Event, selectedTei){ var modalInstance = $modal.open({ - templateUrl: 'components/report/eventDetails.html', + templateUrl: 'components/report/event-details.html', controller: 'EventDetailsController', resolve: { dhis2Event: function () { @@ -158,6 +158,7 @@ }; }) + //conroller for tei report .controller('TeiReportController', function($scope, @@ -175,17 +176,17 @@ $scope.programs = []; $scope.programNames = []; $scope.programStageNames = []; - ProgramFactory.getAll().then(function(programs){ - - angular.forEach(programs, function(pr){ - $scope.programs.push({id: pr.id, name: pr.name}); + 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] = stage; + angular.forEach(pr.programStages, function(stage){ + $scope.programStageNames[stage.id] = {id: stage.id, name: stage.name}; }); }); }); - + $scope.$on('dashboard', function(event, args) { var selections = CurrentSelection.get(); $scope.selectedOrgUnit = storage.get('SELECTED_OU'); @@ -193,7 +194,7 @@ $scope.selectedEntity = selections.te; $scope.selectedProgram = selections.pr; $scope.selectedEnrollment = selections.enrollment; - + if($scope.selectedTei){ $scope.getEvents(); } @@ -211,7 +212,7 @@ $scope.report = []; angular.forEach($scope.programs, function(pr){ - $scope.report[pr.id] = {events: []}; + $scope.report[pr.id] = {}; }); DHIS2EventFactory.getEventsByProgram($scope.selectedTei.trackedEntityInstance, orgUnitId, programId).then(function(eventList){ @@ -220,12 +221,25 @@ if(ev.program){ 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); ev.eventDate = DateUtils.format(ev.eventDate); - $scope.report[ev.program].events.push(ev); + ev.dueDate = DateUtils.format(ev.dueDate); + + 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; } @@ -233,17 +247,20 @@ }); }; - $scope.showEventDetails = function(dhis2Event){ + + + $scope.showProgramReportDetails = function(pr){ var modalInstance = $modal.open({ - templateUrl: 'components/report/eventDetails.html', - controller: 'EventDetailsController', + templateUrl: 'components/report/program-details.html', + controller: 'ProgramDetailsController', + windowClass: 'modal-full-window', resolve: { - dhis2Event: function () { - return dhis2Event; + program: function () { + return pr; }, - gridColumns: function(){ - return $scope.gridColumns; + report: function(){ + return $scope.report[pr.id]; }, selectedTei: function(){ return $scope.selectedTei; @@ -259,9 +276,89 @@ modalInstance.result.then({ }); + }; +}) + +//Controller for program details +.controller('ProgramDetailsController', + function($scope, + $modalInstance, + $filter, + ProgramStageFactory, + TEIService, + EnrollmentService, + DateUtils, + program, + report, + selectedTei, + entityName, + reportMode){ + + $scope.selectedTei = selectedTei; + $scope.entityName = entityName; + $scope.reportMode = reportMode; + $scope.selectedProgram = program; + $scope.report = report; + + //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 that the tei + //contains program attributes whether is has value or not + TEIService.processAttributes($scope.selectedTei, $scope.selectedProgram, null).then(function(tei){ + $scope.selectedTei = 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 {{selectedProgram.trackedEntity.name}} - {{selectedProgram.name}} {{'record' | translate}} + {{selectedProgram.name}} {{'visit' | translate}} @@ -70,27 +70,28 @@ {{gridColumn.name}}: {{tei[gridColumn.id]}}
- -
{{'no_visit_made' | translate}}
-
+ +
{{'no_visit_made' | translate}}
+
{{ev.orgUnitName}}
{{ev.name}}
- {{ev.eventDate}} + {{ev.eventDate}}
+ {{'no_data' | translate}}
{{ev.name}}
- {{ev.eventDate}} -
- - + {{ev.eventDate}}
+ {{'data_exists' | translate}} +
+
=== added file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/tei-report.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/tei-report.html 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/tei-report.html 2014-07-13 13:08:50 +0000 @@ -0,0 +1,24 @@ +
+
+ {{reportWidget.title| translate}} + + + + + + + +
+
+
{{'no_data_report'| translate}}
+
+ + + + +
+ {{pr.name}} +
+
+
+
\ No newline at end of file === removed file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/teiReport.html' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/teiReport.html 2014-07-10 13:17:04 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/teiReport.html 1970-01-01 00:00:00 +0000 @@ -1,44 +0,0 @@ -
-
- {{reportWidget.title| translate}} - - - - - - - -
-
-
{{'no_data_report'| translate}}
-
- - - - -
- {{pr.name}} - -
-
-
-
\ No newline at end of file === 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-10 13:17:04 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json 2014-07-13 13:08:50 +0000 @@ -27,6 +27,7 @@ "number_required": "Number required", "date_required": "Date required (yyyy-mm-dd)", "search": "Search", + "_search": "search", "advanced_search": "Advanced search", "search_for": "Search for", "type_here_for_simple_search": "Type your criteria here for simple search", @@ -60,10 +61,12 @@ "complete": "Complete", "incomplete": "Incomplete", "validate": "Validate", + "status": "Status", "details": "Details", - "program_details": "Program details", + "_details": "details", "created_by": "Registerd by", "date": "Date", + "_date": "date", "add_new": "Add new", "add_filter": "Add filter", "remove_filter": "Remove filter", @@ -90,11 +93,20 @@ "please_select_source": "Please select source", "register_new": "Register new", "search_from_existing": "Search from existing", + "name": "Name", "dataentry": "Data Entry", + "custom_form": "Custom form", + "default_form": "Default form", "report": "Report", + "_report": "report", "registered_data": "Registered data", - "no_data_registerd": "No data registered", + "no_data": "No data", + "data_exists": "Data exists", + "data_registerd": "No data registered", "no_visit_made": "No visit made", + "_visit": "visit", + "visit": "Visit", + "visits": "Visits", "current_selections": "Current selections", "org_unit": "Organisation unit", "SELECTED": "Selected", @@ -140,6 +152,7 @@ "no": "No", "records": "Records", "record": "Record", + "_record": "record", "found": "Found", "move_to_selected": "Move to selected", "move_all_to_selected": "Move all to selected", @@ -148,6 +161,7 @@ "registration": "Registration", "registration_date": "Registration date", "register": "Register", + "_register": "register", "registration_error": "Error in registration", "update_error": "Error in update", "event_creation_error": "Error in event creation", === modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/directives.js' --- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/directives.js 2014-07-02 20:53:29 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/directives.js 2014-07-13 13:08:50 +0000 @@ -78,6 +78,23 @@ }; }) +.directive('d2CustomForm', function($compile, $parse, CustomFormService) { + return{ + restrict: 'E', + link: function(scope, elm, attrs){ + + var customFormType = attrs.customFormType; + var customFormObject = $parse(attrs.customFormObject)(scope); + + if(customFormType === 'PROGRAM_STAGE'){ + var customForm = CustomFormService.getForProgramStage(customFormObject); + elm.html(customForm ? customForm : ''); + $compile(elm.contents())(scope); + } + } + }; +}) + .directive('d2PopOver', function($compile, $templateCache){ return { restrict: 'EA', === 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-08 19:07:43 +0000 +++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/services.js 2014-07-13 13:08:50 +0000 @@ -272,13 +272,12 @@ }) /* Service for getting tracked entity instances */ -.factory('TEIService', function($http, DateUtils) { - - var promise; +.factory('TEIService', function($http, $q, AttributesFactory, DateUtils) { + return { get: function(entityUid) { - promise = $http.get( '../api/trackedEntityInstances/' + entityUid ).then(function(response){ + var promise = $http.get( '../api/trackedEntityInstances/' + entityUid ).then(function(response){ var tei = response.data; angular.forEach(tei.attributes, function(attribute){ @@ -291,13 +290,12 @@ return tei; }); return promise; - }, - + }, getByOrgUnitAndProgram: function(orgUnitUid, programUid) { var url = '../api/trackedEntityInstances.json?ou=' + orgUnitUid + '&program=' + programUid; - promise = $http.get( url ).then(function(response){ + var promise = $http.get( url ).then(function(response){ //return EntityService.formatter(response.data); return response.data; }); @@ -307,7 +305,7 @@ var url = '../api/trackedEntityInstances.json?ou=' + orgUnitUid; - promise = $http.get( url ).then(function(response){ + var promise = $http.get( url ).then(function(response){ //return EntityService.formatter(response.data); return response.data; }); @@ -336,7 +334,7 @@ url = url + '&paging=false'; } - promise = $http.get( url ).then(function(response){ + var promise = $http.get( url ).then(function(response){ return response.data; }); return promise; @@ -357,12 +355,39 @@ return response.data; }); return promise; + }, + processAttributes: function(selectedTei, selectedProgram, selectedEnrollment){ + var def = $q.defer(); + if(selectedTei.attributes){ + if(selectedProgram && selectedEnrollment){ + //show attribute for selected program and enrollment + AttributesFactory.getByProgram(selectedProgram).then(function(atts){ + selectedTei.attributes = AttributesFactory.showRequiredAttributes(atts,selectedTei.attributes, true); + def.resolve(selectedTei); + }); + } + if(selectedProgram && !selectedEnrollment){ + //show attributes for selected program + AttributesFactory.getByProgram(selectedProgram).then(function(atts){ + selectedTei.attributes = AttributesFactory.showRequiredAttributes(atts,selectedTei.attributes, false); + def.resolve(selectedTei); + }); + } + if(!selectedProgram && !selectedEnrollment){ + //show attributes in no program + AttributesFactory.getWithoutProgram().then(function(atts){ + selectedTei.attributes = AttributesFactory.showRequiredAttributes(atts,selectedTei.attributes, false); + def.resolve(selectedTei); + }); + } + } + return def.promise; } }; }) /* Factory for getting tracked entity attributes */ -.factory('AttributesFactory', function($q, $rootScope, StorageService) { +.factory('AttributesFactory', function($q, $rootScope, StorageService, orderByFilter) { return { getAll: function(){ @@ -443,8 +468,38 @@ def.resolve(missingAttributes); }); return def.promise(); + }, + showRequiredAttributes: function(requiredAttributes, teiAttributes, fromEnrollment){ + + //first reset teiAttributes + for(var j=0; j/g, + match, + inputFields = []; + + while (match = inputRegex.exec(htmlCode)) { + inputFields.push(match[0]); + } + + for(var i=0; i'; + } + if(programStageDataElements[deId].dataElement.type == "string"){ + newInputField = ''; + } + if(programStageDataElements[deId].dataElement.type == "bool"){ + newInputField = ''; + } + if(programStageDataElements[deId].dataElement.type == "trueOnly"){ + newInputField = ''; + } + htmlCode = htmlCode.replace(inputField, newInputField); + } + } + + return htmlCode; + + } + + return null; + }, + getAttributesAsString: function(attributes){ + if(attributes){ + var attributesAsString = ''; + for(var prop in attributes){ + if(prop != 'value'){ + attributesAsString += prop + '="' + attributes[prop] + '" '; + } + } + return attributesAsString; + } + return null; + } + }; +}) + /* Modal service for user interaction */ .service('ModalService', ['$modal', function($modal) { - var modalDefaults = { - backdrop: true, - keyboard: true, - modalFade: true, - templateUrl: 'views/modal.html' - }; - - var modalOptions = { - closeButtonText: 'Close', - actionButtonText: 'OK', - headerText: 'Proceed?', - bodyText: 'Perform this action?' - }; - - this.showModal = function(customModalDefaults, customModalOptions) { - if (!customModalDefaults) - customModalDefaults = {}; - customModalDefaults.backdrop = 'static'; - return this.show(customModalDefaults, customModalOptions); - }; - - this.show = function(customModalDefaults, customModalOptions) { - //Create temp objects to work with since we're in a singleton service - var tempModalDefaults = {}; - var tempModalOptions = {}; - - //Map angular-ui modal custom defaults to modal defaults defined in service - angular.extend(tempModalDefaults, modalDefaults, customModalDefaults); - - //Map modal.html $scope custom properties to defaults defined in service - angular.extend(tempModalOptions, modalOptions, customModalOptions); - - if (!tempModalDefaults.controller) { - tempModalDefaults.controller = function($scope, $modalInstance) { - $scope.modalOptions = tempModalOptions; - $scope.modalOptions.ok = function(result) { - $modalInstance.close(result); - }; - $scope.modalOptions.close = function(result) { - $modalInstance.dismiss('cancel'); - }; - }; - } - - return $modal.open(tempModalDefaults).result; - }; - - }]) + var modalDefaults = { + backdrop: true, + keyboard: true, + modalFade: true, + templateUrl: 'views/modal.html' + }; + + var modalOptions = { + closeButtonText: 'Close', + actionButtonText: 'OK', + headerText: 'Proceed?', + bodyText: 'Perform this action?' + }; + + this.showModal = function(customModalDefaults, customModalOptions) { + if (!customModalDefaults) + customModalDefaults = {}; + customModalDefaults.backdrop = 'static'; + return this.show(customModalDefaults, customModalOptions); + }; + + this.show = function(customModalDefaults, customModalOptions) { + //Create temp objects to work with since we're in a singleton service + var tempModalDefaults = {}; + var tempModalOptions = {}; + + //Map angular-ui modal custom defaults to modal defaults defined in service + angular.extend(tempModalDefaults, modalDefaults, customModalDefaults); + + //Map modal.html $scope custom properties to defaults defined in service + angular.extend(tempModalOptions, modalOptions, customModalOptions); + + if (!tempModalDefaults.controller) { + tempModalDefaults.controller = function($scope, $modalInstance) { + $scope.modalOptions = tempModalOptions; + $scope.modalOptions.ok = function(result) { + $modalInstance.close(result); + }; + $scope.modalOptions.close = function(result) { + $modalInstance.dismiss('cancel'); + }; + }; + } + + return $modal.open(tempModalDefaults).result; + }; + +}]) /* Dialog service for user interaction */ .service('DialogService', ['$modal', function($modal) { @@ -897,54 +1070,6 @@ }); 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
- {{'search'| translate}} {{selectedProgram.trackedEntity.name}} + {{selectedProgram.trackedEntity.name}} {{'search'| translate}} - {{'register'| translate}} {{selectedProgram.trackedEntity.name}} + {{selectedProgram.trackedEntity.name}} {{'register'| translate}} {{selectedProgram.name}} {{'report'| translate}}