- {{trackedEntity.name || 'entity' | translate}} {{profileWidget.title| translate}}
+ {{profileWidget.title| translate}}
| {{'edit'| translate}}
=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/relationship/relationship-controller.js'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/relationship/relationship-controller.js 2014-07-07 11:46:45 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/relationship/relationship-controller.js 2014-07-13 13:08:50 +0000
@@ -30,7 +30,7 @@
var modalInstance = $modal.open({
templateUrl: 'components/relationship/add-relationship.html',
controller: 'AddRelationshipController',
- windowClass: 'relationship-modal-window',
+ windowClass: 'modal-full-window',
resolve: {
relationshipTypes: function () {
return $scope.relationshipTypes;
=== added file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/event-details.html'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/components/report/event-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/event-details.html 2014-07-13 13:08:50 +0000
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ {{currentEvent.programName}} | {{currentEvent.name}} | {{currentEvent.orgUnitName}} | {{currentEvent.eventDate}}
+
+
+
+
+
+
+
+
+ {{'notes' | translate}}
+ |
+
+
+
+ {{note.value}}
+ {{'created_by' | translate}}: {{note.storedBy}}
+ {{'date' | translate}}: {{note.storedDate}}
+ |
+
+
+
+
+
\ 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 @@
-
-
-
-
-
-
- {{currentEvent.programName}} | {{currentEvent.name}} | {{currentEvent.orgUnitName}} | {{currentEvent.eventDate}}
-
-
-
-
-
-
-
-
- {{'notes' | translate}}
- |
-
-
-
-
- {{note.value}}
-
-
- |
-
-
-
-
-
-
\ 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 @@
+
+
+
+
+
{{selectedProgram.trackedEntity.name}} {{'_details'| translate}}
+
+
+
+ {{attribute.displayName}}
+ |
+
+ {{attribute.value}}
+ |
+
+
+
+
+
+
{{'enrollment'| translate}} {{'_details'| translate}}
+
+ {{selectedProgram.dateOfEnrollmentDescription}}: {{enrollment.dateOfEnrollment}}
+
+
+ {{selectedProgram.dateOfIncidentDescription}}: {{enrollment.dateOfIncident}}
+
+
+ {{'status'| translate}}: {{enrollment.status}}
+
+
+
+
{{'notes'| translate}}
+
+
+
+
+ {{note.value}}
+ ({{note.storedBy}}, {{note.storedDate}})
+
+ |
+
+
+
+
+
+
{{'visits'| translate}}
+
+ {{'name'| translate}}: {{dhis2Event.name}}
+
+
+ {{'org_unit'| translate}}: {{dhis2Event.orgUnitName}}
+
+
+ {{'due_date'| translate}}: {{dhis2Event.dueDate}}
+
+
+ {{'visit'| translate}} {{'_date'| translate}}: {{dhis2Event.eventDate}}
+
+
+ {{'status'| translate}}: {{dhis2Event.status}}
+
+
+
+
+
+
+ {{'data_element'| translate}}
+ |
+
+ {{'value'| translate}}
+ |
+
+ {{'provided_elsewhere'| translate}}
+ |
+
+
+
+ {{prStDe.dataElement.formName ? prStDe.dataElement.formName : prStDe.dataElement.name}}
+ |
+
+ {{dhis2Event[prStDe.dataElement.id].value}}
+ |
+
+ {{dhis2Event[prStDe.dataElement.id].providedElsewhere ? 'provided_elsewhere' : '' | translate}}
+ |
+
+
+
+
+
+
{{'notes'| translate}}
+
+
+
+
+ {{note.value}}
+ ({{note.storedBy}}, {{note.storedDate}})
+
+ |
+
+
+
+
+
+
+
+
+
\ 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}}
+
+
+
\ 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 = '