-
+
{{'empty_event_list'| translate}}
@@ -306,18 +312,16 @@
-
- |
+
-
+
{{dhis2Event[eventGridColumn.id]}}
@@ -400,12 +404,7 @@
- |
-
-
-
-
- |
+
@@ -417,13 +416,32 @@
-
-
-
=== 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-05-22 12:58:32 +0000
+++ dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/controllers.js 2014-06-02 10:50:49 +0000
@@ -11,7 +11,8 @@
Paginator,
TranslationService,
storage,
- DHIS2EventFactory,
+ DHIS2EventFactory,
+ DHIS2EventService,
ContextMenuSelectedItem,
ModalService,
DialogService) {
@@ -30,6 +31,8 @@
$scope.updateSuccess = false;
$scope.currentGridColumnId = '';
$scope.currentEventOrginialValue = '';
+ $scope.displayCustomForm = false;
+ $scope.currentElement = {id: '', update: false};
//watch for selection of org unit from tree
$scope.$watch('selectedOrgUnit', function(newObj, oldObj) {
@@ -52,6 +55,15 @@
$scope.selectedOrgUnit = orgUnit;
$scope.selectedProgram = null;
$scope.selectedProgramStage = null;
+
+ $scope.eventRegistration = false;
+ $scope.editGridColumns = false;
+ $scope.editingEventInFull = false;
+ $scope.editingEventInGrid = false;
+ $scope.updateSuccess = false;
+ $scope.currentGridColumnId = '';
+ $scope.currentEventOrginialValue = '';
+ $scope.displayCustomForm = false;
if (angular.isObject($scope.selectedOrgUnit)) {
@@ -72,8 +84,7 @@
if( !angular.isUndefined($scope.programs)){
if($scope.programs.length === 1){
$scope.selectedProgram = $scope.programs[0];
- $scope.pr = $scope.selectedProgram;
- $scope.loadEvents($scope.pr);
+ $scope.loadEvents();
}
}
}
@@ -81,7 +92,7 @@
};
//get events for the selected program (and org unit)
- $scope.loadEvents = function(program){
+ $scope.loadEvents = function(){
$scope.selectedProgramStage = null;
@@ -94,10 +105,13 @@
$scope.eventFetched = false;
- if( program ){
+ if( $scope.selectedProgram && $scope.selectedProgram.programStages[0].id){
//because this is single event, take the first program stage
- $scope.selectedProgramStage = storage.get(program.programStages[0].id);
+ $scope.selectedProgramStage = storage.get($scope.selectedProgram.programStages[0].id);
+
+ //$scope.customForm = CustomFormService.processCustomForm($scope.selectedProgramStage);
+ $scope.customForm = $scope.selectedProgramStage.dataEntryForm ? $scope.selectedProgramStage.dataEntryForm.htmlCode : null;
$scope.programStageDataElements = [];
$scope.eventGridColumns = [];
@@ -193,25 +207,24 @@
i--;
}
}
- }
-
+ }
$scope.eventFetched = true;
});
}
};
$scope.jumpToPage = function(){
- $scope.loadEvents($scope.selectedProgram, $scope.pager);
+ $scope.loadEvents();
};
$scope.resetPageSize = function(){
$scope.pager.page = 1;
- $scope.loadEvents($scope.selectedProgram, $scope.pager);
+ $scope.loadEvents();
};
$scope.getPage = function(page){
$scope.pager.page = page;
- $scope.loadEvents($scope.selectedProgram, $scope.pager);
+ $scope.loadEvents();
};
$scope.sortEventGrid = function(gridHeader){
@@ -281,13 +294,16 @@
$scope.eventRegistration = false;
$scope.editingEventInFull = false;
$scope.editingEventInGrid = false;
+ $scope.currentElement.updated = false;
$scope.outerForm.$valid = true;
$scope.currentEvent = {};
};
- $scope.showEventRegistration = function(){
+ $scope.showEventRegistration = function(){
+ $scope.displayCustomForm = $scope.customForm ? true:false;
+
$scope.eventRegistration = !$scope.eventRegistration;
$scope.currentEvent = $scope.newDhis2Event;
$scope.outerForm.submitted = false;
@@ -302,13 +318,18 @@
$scope.outerForm.$valid = true;
};
- $scope.showEditEventInFull = function(){
-
+ $scope.showEditEventInFull = function(){
+ $scope.displayCustomForm = $scope.customForm ? true:false;
+
$scope.currentEvent = ContextMenuSelectedItem.getSelectedItem();
$scope.currentEventOrginialValue = angular.copy($scope.currentEvent);
$scope.editingEventInFull = !$scope.editingEventInFull;
$scope.eventRegistration = false;
+ $scope.currentEvent.eventDate = moment($scope.currentEvent.eventDate, 'YYYY-MM-DD')._d;
+ $scope.currentEvent.eventDate = Date.parse($scope.currentEvent.eventDate);
+ $scope.currentEvent.eventDate = $filter('date')($scope.currentEvent.eventDate, 'yyyy-MM-dd');
+
angular.forEach($scope.selectedProgramStage.programStageDataElements, function(prStDe){
if(!$scope.currentEvent.hasOwnProperty(prStDe.dataElement.id)){
$scope.currentEvent[prStDe.dataElement.id] = '';
@@ -317,7 +338,11 @@
};
- $scope.addEvent = function(addingAnotherEvent){
+ $scope.switchDataEntryForm = function(){
+ $scope.displayCustomForm = !$scope.displayCustomForm;
+ };
+
+ $scope.addEvent = function(addingAnotherEvent){
//check for form validity
$scope.outerForm.submitted = true;
@@ -374,14 +399,14 @@
$scope.currentEvent = {};
$scope.outerForm.submitted = false;
}
- });
+ });
};
$scope.updateEvent = function(){
//check for form validity
- $scope.outerFormUpdate.submitted = true;
- if( $scope.outerFormUpdate.$invalid ){
+ $scope.outerForm.submitted = true;
+ if( $scope.outerForm.$invalid ){
return false;
}
@@ -417,7 +442,7 @@
}
$scope.currentEventOrginialValue = angular.copy($scope.currentEvent);
- $scope.outerFormUpdate.submitted = false;
+ $scope.outerForm.submitted = false;
$scope.editingEventInFull = false;
$scope.currentEvent = {};
});
@@ -451,7 +476,7 @@
if( newValue != oldValue ){
var updatedSingleValueEvent = {event: currentEvent.event, dataValues: [{value: newValue, dataElement: dataElement}]};
- var updatedFullValueEvent = reconstructEvent(currentEvent, $scope.selectedProgramStage.programStageDataElements);
+ var updatedFullValueEvent = DHIS2EventService.reconstructEvent(currentEvent, $scope.selectedProgramStage.programStageDataElements);
DHIS2EventFactory.updateForSingleValue(updatedSingleValueEvent, updatedFullValueEvent).then(function(data){
var continueLoop = true;
@@ -502,33 +527,6 @@
$scope.getHelpContent = function(){
};
-
- //for simplicity of grid display, events were changed from
- //event.datavalues = [{dataElement: dataElement, value: value}] to
- //event[dataElement] = value
- //now they are changed back for the purpose of storage.
- function reconstructEvent(event, programStageDataElements)
- {
- var e = {};
-
- e.event = event.event;
- e.status = event.status;
- e.program = event.program;
- e.programStage = event.programStage;
- e.orgUnit = event.orgUnit;
- e.eventDate = event.eventDate;
-
- var dvs = [];
- angular.forEach(programStageDataElements, function(prStDe){
- if(event.hasOwnProperty(prStDe.dataElement.id)){
- dvs.push({dataElement: prStDe.dataElement.id, value: event[prStDe.dataElement.id]});
- }
- });
-
- e.dataValues = dvs;
-
- return e;
- }
})
//Controller for the header section
=== modified file 'dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/directives.js'
--- dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/directives.js 2014-04-02 09:11:11 +0000
+++ dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/directives.js 2014-06-02 10:50:49 +0000
@@ -35,6 +35,23 @@
};
})
+.directive('dhisCustomForm', 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('dhisContextMenu', function(ContextMenuSelectedItem) {
return {
=== modified file 'dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/event-capture.js'
--- dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/event-capture.js 2014-05-29 13:50:01 +0000
+++ dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/event-capture.js 2014-06-02 10:50:49 +0000
@@ -263,7 +263,7 @@
{
return function() {
return $.ajax( {
- url: '../api/programStages.json?filter=id:eq:' + id +'&include=id,name,description,minDaysFromStart,repeatable,programStageDataElements[displayInReports,allowProvidedElsewhere,allowDateInFuture,compulsory,dataElement[id,name,type,optionSet[id,name,options]]]',
+ url: '../api/programStages.json?filter=id:eq:' + id +'&include=id,name,description,minDaysFromStart,repeatable,dataEntryForm,programStageDataElements[displayInReports,allowProvidedElsewhere,allowDateInFuture,compulsory,dataElement[id,name,type,optionSet[id,name,options]]]',
type: 'GET'
}).done( function( response ){
_.each( _.values( response.programStages ), function( programStage ) {
=== modified file 'dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/services.js'
--- dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/services.js 2014-05-22 12:58:32 +0000
+++ dhis-2/dhis-web/dhis-web-event-capture/src/main/webapp/dhis-web-event-capture/scripts/services.js 2014-06-02 10:50:49 +0000
@@ -4,69 +4,6 @@
var eventCaptureServices = angular.module('eventCaptureServices', ['ngResource'])
-/* Factory to fetch programs */
-.factory('ProgramFactory', function($http) {
-
- var programUid, programPromise;
- var programs, programsPromise;
- var program;
- return {
-
- get: function(uid){
- if( programUid !== uid ){
- programPromise = $http.get('../api/programs/' + uid + '.json?viewClass=detailed&paging=false').then(function(response){
- programUid = response.data.id;
- program = response.data;
- return program;
- });
- }
- return programPromise;
- },
-
- getMine: function(type){
- if( !programsPromise ){
- programsPromise = $http.get('../api/me/programs?includeDescendants=true&type='+type).then(function(response){
- programs = response.data;
- return programs;
- });
- }
- return programsPromise;
- },
-
- getEventProgramsByOrgUnit: function(orgUnit, type){
-
- var promise = $http.get( '../api/programs.json?orgUnit=' + orgUnit + '&type=' + type ).then(function(response){
- programs = response.data;
- return programs;
- });
- return promise;
- }
- };
-})
-
-/* Factory to fetch programStages */
-.factory('ProgramStageFactory', function($http, storage) {
-
- var programStage, promise;
- return {
- get: function(uid){
- if( programStage !== uid ){
- promise = $http.get( '../api/programStages/' + uid + '.json?viewClass=detailed&paging=false').then(function(response){
- programStage = response.data.id;
-
- //store locally - might need them for event data values
- angular.forEach(response.data.programStageDataElements, function(prStDe){
- storage.set(prStDe.dataElement.id, prStDe);
- });
-
- return response.data;
- });
- }
- return promise;
- }
- };
-})
-
/* factory for loading logged in user profiles from DHIS2 */
.factory('CurrentUserProfile', function($http) {
@@ -91,9 +28,9 @@
getByStage: function(orgUnit, programStage, pager){
var pgSize = pager ? pager.pageSize : 50;
var pg = pager ? pager.page : 1;
- var url = '../api/events.json?' + 'orgUnit=' + orgUnit + '&programStage=' + programStage + '&pageSize=' + pgSize + '&page=' + pg;
-
- var promise = $http.get( url ).then(function(response){
+ var url = '../api/events.json?' + 'orgUnit=' + orgUnit + '&programStage=' + programStage + '&pageSize=' + pgSize + '&page=' + pg;
+
+ var promise = $http.get( url ).then(function(response){
return response.data;
}, function(){
return dhis2.ec.storageManager.getEvents(orgUnit, programStage);
@@ -155,6 +92,120 @@
};
})
+/* service for dealing with events */
+.service('DHIS2EventService', function(){
+ return {
+ //for simplicity of grid display, events were changed from
+ //event.datavalues = [{dataElement: dataElement, value: value}] to
+ //event[dataElement] = value
+ //now they are changed back for the purpose of storage.
+ reconstructEvent: function(event, programStageDataElements){
+ var e = {};
+
+ e.event = event.event;
+ e.status = event.status;
+ e.program = event.program;
+ e.programStage = event.programStage;
+ e.orgUnit = event.orgUnit;
+ e.eventDate = event.eventDate;
+
+ var dvs = [];
+ angular.forEach(programStageDataElements, function(prStDe){
+ if(event.hasOwnProperty(prStDe.dataElement.id)){
+ dvs.push({dataElement: prStDe.dataElement.id, value: event[prStDe.dataElement.id]});
+ }
+ });
+
+ e.dataValues = dvs;
+
+ return e;
+ }
+ };
+})
+
+/* service for dealing with custom form */
+.service('CustomFormService', function(){
+
+ return {
+ getForProgramStage: function(programStage){
+
+ var htmlCode = programStage.dataEntryForm ? programStage.dataEntryForm.htmlCode : null;
+
+ if(htmlCode){
+
+ var programStageDataElements = [];
+
+ angular.forEach(programStage.programStageDataElements, function(prStDe){
+ programStageDataElements[prStDe.dataElement.id] = prStDe;
+ });
+
+ var inputRegex = /
/g,
+ styleRegex = /style="[^"]*"/,
+ idRegex = /id="[^"]*"/,
+ 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 = '