=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment-controller.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment-controller.js 2014-10-01 09:56:40 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment-controller.js 2014-10-03 08:25:10 +0000 @@ -10,6 +10,7 @@ AttributesFactory, CurrentSelection, TEIService, + TEFormService, EnrollmentService, TranslationService, ModalService, @@ -122,7 +123,22 @@ $scope.broadCastSelections('mainDashboard'); } $scope.showEnrollmentDiv = !$scope.showEnrollmentDiv; - }; + + if($scope.showEnrollmentDiv){ + + $scope.selectedProgram.hasCustomForm = false; + $scope.registrationForm = ''; + TEFormService.getByProgram($scope.selectedProgram.id).then(function(teForm){ + if(angular.isObject(teForm)){ + $scope.selectedProgram.hasCustomForm = true; + $scope.registrationForm = teForm; + } + $scope.selectedProgram.displayCustomForm = $scope.selectedProgram.hasCustomForm ? true:false; + + console.log('The program is: ', $scope.selectedProgram); + }); + } + }; $scope.showReScheduling = function(){ $scope.showReSchedulingDiv = !$scope.showReSchedulingDiv; === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment.html' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment.html 2014-10-01 09:56:40 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/enrollment/enrollment.html 2014-10-03 08:25:10 +0000 @@ -107,54 +107,75 @@
+ + +
+
+ + {{'required'| translate}} +
+
+ + {{'required'| translate}} +
+
+ + {{'required'| translate}} +
+
+
+ +
+
+
+ +
+
+
+ {{'required'| translate}} +
+
+ + {{'required'| translate}} +
+
+ + {{'required'| translate}} +
+
+
+
{{attribute.name}} - -
-
- - {{'required'| translate}} -
-
- - {{'required'| translate}} -
-
- - {{'required'| translate}} -
-
- - {{'required'| translate}} -
-
- - {{'required'| translate}} -
-
- - {{'required'| translate}} -
-
-
-
+
=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/registration.html' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/registration.html 2014-09-18 14:07:34 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/registration.html 2014-10-03 08:25:10 +0000 @@ -41,16 +41,46 @@ {{'required'| translate}} - +
- + + ng-required="attribute.mandatory"/> +
+
+
+ +
+
+
+ +
+
+
+
{{'required'| translate}}
=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/i18n/en.json' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/i18n/en.json 2014-10-02 10:25:39 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/i18n/en.json 2014-10-03 08:25:10 +0000 @@ -121,13 +121,13 @@ "registration_and_data_entry": "Registration and Data Entry", "program_summary_report": "Program Summary Report", "program_summary": "Program Summary", - "program_summary_description": "Generate a summary report for a particular program, organisation unit and time frame. The report presents a list of tracked entity instances and the services they got from the selected program.", + "program_summary_description": "Generate a summary report for a particular program, organisation unit and time frame. The report presents a list of tracked entity instances with the option to drilldown and see actual values", "program_statistics": "Program Statistics", - "program_statistics_description": "Generate a statistics report for a particular program. The report provides for example an overview of dropouts or completions in a given time fram at a particular organisatoin unit.", + "program_statistics_description": "Generate a statistics report for a particular program. The report provides for example an overview of dropouts or completion rates in a given time frame at a particular organisation unit.", "upcoming_events": "Upcoming Events", - "upcoming_events_description": "Generate a report that lists tracked entity instances and their upcoming events that require attention. The events displayed are those that are scheduled in due time.", + "upcoming_events_description": "Generate a tabular report showing tracked entity instances and their upcoming events for a selected program and time. Searching, sorting and show/hide operations are possible on the columns.", "overdue_events": "Overdue Events", - "overdue_events_description": "Generate a report of overdue events for a selected program and organisation unit. The report displays list of tracked entity instances and their events that are not conducted on scheduled due dates.", + "overdue_events_description": "Generate a list of events for a selected program. The report displays list of tracked entity instances and their events that are not conducted on time. Filtering and searching is also possible.", "upcoming_event": "Upcoming event", "legend": "Legend", "event_color_legend": "What do the colors mean?", === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/services.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/services.js 2014-10-01 11:13:12 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/services.js 2014-10-03 08:25:10 +0000 @@ -9,7 +9,7 @@ var store = new dhis2.storage.Store({ name: "dhis2tc", adapters: [dhis2.storage.IndexedDBAdapter, dhis2.storage.DomSessionStorageAdapter, dhis2.storage.InMemoryAdapter], - objectStores: ['trackerCapturePrograms', 'programStages', 'trackedEntities','attributes','optionSets'] + objectStores: ['trackerCapturePrograms', 'programStages', 'trackedEntities', 'trackedEntityForms', 'attributes','optionSets'] }); return{ currentStore: store @@ -251,7 +251,7 @@ }; }) -/* Service for getting tracked entity instances */ +/* Service for getting tracked entity */ .factory('TEService', function(StorageService, $q, $rootScope) { return { @@ -283,6 +283,25 @@ }; }) +/* Service for getting tracked entity Form */ +.factory('TEFormService', function(StorageService, $q, $rootScope) { + + return { + getByProgram: function(programUid){ + var def = $q.defer(); + + StorageService.currentStore.open().done(function(){ + StorageService.currentStore.get('trackedEntityForms', programUid).done(function(te){ + $rootScope.$apply(function(){ + def.resolve(te); + }); + }); + }); + return def.promise; + } + }; +}) + /* Service for getting tracked entity instances */ .factory('TEIService', function($http, $q, AttributesFactory, DateUtils) { === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/tracker-capture.js' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/tracker-capture.js 2014-10-02 10:25:39 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/tracker-capture.js 2014-10-03 08:25:10 +0000 @@ -23,7 +23,7 @@ dhis2.tc.store = new dhis2.storage.Store({ name: TC_STORE_NAME, adapters: [dhis2.storage.IndexedDBAdapter, dhis2.storage.DomSessionStorageAdapter, dhis2.storage.InMemoryAdapter], - objectStores: ['trackerCapturePrograms', 'programStages', 'trackedEntities', 'attributes', 'relationshipTypes', 'optionSets'] + objectStores: ['trackerCapturePrograms', 'programStages', 'trackedEntities', 'trackedEntityForms', 'attributes', 'relationshipTypes', 'optionSets'] }); (function($) { @@ -66,7 +66,9 @@ promise = promise.then( getMetaPrograms ); promise = promise.then( getPrograms ); promise = promise.then( getProgramStages ); - promise = promise.then( getOptionSetsForPrograms ); + promise = promise.then( getOptionSetsForPrograms ); + promise = promise.then( getMetaTrackedEntityForms ); + promise = promise.then( getTrackedEntityForms ); promise.done(function() { selection.responseReceived(); }); @@ -525,6 +527,102 @@ }; } + +function getMetaTrackedEntityForms() +{ + var def = $.Deferred(); + + $.ajax({ + url: '../api/trackedEntityForms.json', + type: 'GET', + data:'paging=false&fields=id,program[id]' + }).done( function(response) { + var trackedEntityForms = []; + _.each( _.values( response.trackedEntityForms ), function ( trackedEntityForm ) { + if( trackedEntityForm && + trackedEntityForm.id && + trackedEntityForm.program && + trackedEntityForm.program.id ) { + + trackedEntityForms.push( trackedEntityForm ); + } + + }); + + def.resolve( trackedEntityForms ); + }); + + return def.promise(); + +} + +function getTrackedEntityForms( trackedEntityForms ) +{ + if( !trackedEntityForms ){ + return; + } + + var mainDef = $.Deferred(); + var mainPromise = mainDef.promise(); + + var def = $.Deferred(); + var promise = def.promise(); + + var builder = $.Deferred(); + var build = builder.promise(); + + _.each( _.values( trackedEntityForms ), function ( trackedEntityForm ) { + build = build.then(function() { + var d = $.Deferred(); + var p = d.promise(); + dhis2.tc.store.get('trackedEntityForms', trackedEntityForm.program.id).done(function(obj) { + if(!obj) { + promise = promise.then( getTrackedEntityForm( trackedEntityForm.id ) ); + } + d.resolve(); + }); + + return p; + }); + }); + + build.done(function() { + def.resolve(); + + promise = promise.done( function () { + mainDef.resolve(); + } ); + }); + + builder.resolve(); + + return mainPromise; +} + +function getTrackedEntityForm( id ) +{ + return function() { + return $.ajax( { + url: '../api/trackedEntityForms.json', + type: 'GET', + data: 'paging=false&filter=id:eq:' + id +'&fields=id,program[id,name],dataEntryForm[name,htmlCode]' + }).done( function( response ){ + + _.each( _.values( response.trackedEntityForms ), function ( trackedEntityForm ) { + + if( trackedEntityForm && + trackedEntityForm.id && + trackedEntityForm.program && + trackedEntityForm.program.id ) { + + trackedEntityForm.id = trackedEntityForm.program.id; + dhis2.tc.store.set( 'trackedEntityForms', trackedEntityForm ); + } + }); + }); + }; +} + function uploadLocalData() { if (!dhis2.tc.storageManager.hasLocalData()) === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/styles/style.css' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/styles/style.css 2014-10-01 11:13:12 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/styles/style.css 2014-10-03 08:25:10 +0000 @@ -784,7 +784,7 @@ } .report-type-container{ - padding: 10px; + padding: 20px; } .validation-error { === modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/views/report-types.html' --- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/views/report-types.html 2014-09-01 13:04:19 +0000 +++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/views/report-types.html 2014-10-03 08:25:10 +0000 @@ -8,7 +8,7 @@

{{'tracker_reports'| translate}}

-
+

{{'program_summary'| translate}}

{{'program_summary_description'| translate}}