← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 19876: tracker-capture: program rules are now supported during registration

 

------------------------------------------------------------
revno: 19876
committer: Abyot Asalefew Gizaw <abyota@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2015-08-27 21:05:47 +0200
message:
  tracker-capture: program rules are now supported during registration
modified:
  dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/default-registration-form.html
  dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/registration-controller.js
  dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/index.html
  dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.angular.services.js
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramRule.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramRule.vm


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/default-registration-form.html'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/default-registration-form.html	2015-08-26 12:29:22 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/default-registration-form.html	2015-08-27 19:05:47 +0000
@@ -1,6 +1,6 @@
 <h3 ng-if="widget !== 'PROFILE'">{{'profile'| translate}}</h3>
 <table class="dhis2-list-table-striped dhis2-table-hover">
-    <tr ng-repeat="attribute in attributes">
+    <tr ng-repeat="attribute in attributes" ng-if="!hiddenFields[attribute.id]">
         <td>
             {{attribute.name}}<span ng-if="attribute.mandatory || attribute.unique" class="required">*</span>
         </td>

=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/registration-controller.js'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/registration-controller.js	2015-08-27 15:15:20 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/components/registration/registration-controller.js	2015-08-27 19:05:47 +0000
@@ -26,7 +26,10 @@
     $scope.customForm = null;    
     $scope.selectedTei = {};
     $scope.tei = {};
-    $scope.registrationMode = null;
+    $scope.registrationMode = null;    
+    $scope.hiddenFields = {};
+    $scope.errorMessages = {};
+    $scope.warningMessages = {};
     
     $scope.attributesById = CurrentSelection.getAttributesById();
     if(!$scope.attributesById){
@@ -272,11 +275,11 @@
     var processRuleEffect = function(){
 
         angular.forEach($rootScope.ruleeffects['registration'], function (effect) {
-            if (effect.dataElement) {
+            if (effect.trackedEntityAttribute) {
                 //in the data entry controller we only care about the "hidefield", showerror and showwarning actions
                 if (effect.action === "HIDEFIELD") {
-                    if (effect.dataElement) {
-                        if (effect.ineffect && affectedEvent[effect.dataElement.id]) {
+                    if (effect.trackedEntityAttribute) {
+                        if (effect.ineffect && $scope.selectedTei[effect.trackedEntityAttribute.id]) {
                             //If a field is going to be hidden, but contains a value, we need to take action;
                             if (effect.content) {
                                 //TODO: Alerts is going to be replaced with a proper display mecanism.
@@ -284,41 +287,40 @@
                             }
                             else {
                                 //TODO: Alerts is going to be replaced with a proper display mecanism.
-                                alert($scope.prStDes[effect.dataElement.id].dataElement.formName + "Was blanked out and hidden by your last action");
+                                alert($scope.attributesById[effect.trackedEntityAttribute.id].name + "Was blanked out and hidden by your last action");
                             }
 
                             //Blank out the value:
-                            affectedEvent[effect.dataElement.id] = "";
-                            $scope.saveDatavalueForEvent($scope.prStDes[effect.dataElement.id], null, affectedEvent);
+                            $scope.selectedTei[effect.trackedEntityAttribute.id] = "";
                         }
 
-                        $scope.hiddenFields[effect.dataElement.id] = effect.ineffect;
+                        $scope.hiddenFields[effect.trackedEntityAttribute.id] = effect.ineffect;
                     }
                     else {
-                        $log.warn("ProgramRuleAction " + effect.id + " is of type HIDEFIELD, bot does not have a dataelement defined");
+                        $log.warn("ProgramRuleAction " + effect.id + " is of type HIDEFIELD, bot does not have an attribute defined");
                     }
                 } else if (effect.action === "SHOWERROR") {
-                    if (effect.dataElement) {
+                    if (effect.trackedEntityAttribute) {
                         
                         if(effect.ineffect) {
-                            $scope.errorMessages[effect.dataElement.id] = effect.content;
+                            $scope.errorMessages[effect.trackedEntityAttribute.id] = effect.content;
                         } else {
-                            $scope.errorMessages[effect.dataElement.id] = false;
+                            $scope.errorMessages[effect.trackedEntityAttribute.id] = false;
                         }
                     }
                     else {
-                        $log.warn("ProgramRuleAction " + effect.id + " is of type HIDEFIELD, bot does not have a dataelement defined");
+                        $log.warn("ProgramRuleAction " + effect.id + " is of type HIDEFIELD, bot does not have an attribute defined");
                     }
                 } else if (effect.action === "SHOWWARNING") {
-                    if (effect.dataElement) {
+                    if (effect.trackedEntityAttribute) {
                         if(effect.ineffect) {
-                            $scope.warningMessages[effect.dataElement.id] = effect.content;
+                            $scope.warningMessages[effect.trackedEntityAttribute.id] = effect.content;
                         } else {
-                            $scope.warningMessages[effect.dataElement.id] = false;
+                            $scope.warningMessages[effect.trackedEntityAttribute.id] = false;
                         }
                     }
                     else {
-                        $log.warn("ProgramRuleAction " + effect.id + " is of type HIDEFIELD, bot does not have a dataelement defined");
+                        $log.warn("ProgramRuleAction " + effect.id + " is of type HIDEFIELD, bot does not have an attribute defined");
                     }
                 }
             }
@@ -326,7 +328,7 @@
     };
     
     $scope.executeRules = function () {   
-        var flag = {debug: true, verbose: true};
+        var flag = {debug: true, verbose: false};
         
         //repopulate attributes with updated values
         $scope.selectedTei.attributes = [];
@@ -347,6 +349,13 @@
 
     };
     
+    //check if field is hidden
+    $scope.isHidden = function (id) {
+        //In case the field contains a value, we cant hide it. 
+        //If we hid a field with a value, it would falsely seem the user was aware that the value was entered in the UI.        
+        return $scope.selectedTei[id] ? false : $scope.hiddenFields[id];
+    };
+    
     $scope.teiValueUpdated = function(tei, field){
         $scope.executeRules();
     };

=== modified file 'dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/index.html'
--- dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/index.html	2015-07-13 07:37:11 +0000
+++ dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/index.html	2015-08-27 19:05:47 +0000
@@ -95,8 +95,8 @@
         <script type="text/javascript" src="../dhis-web-commons/javascripts/dhis2/dhis2.angular.services.js"></script>
         <script type="text/javascript" src="../dhis-web-commons/javascripts/dhis2/dhis2.angular.validations.js"></script>
         <script type="text/javascript" src="../dhis-web-commons/javascripts/dhis2/dhis2.angular.filters.js"></script>
-        <script type="text/javascript" src="../dhis-web-commons/javascripts/dhis2/dhis2.angular.controllers.js"></script>        
-
+        <script type="text/javascript" src="../dhis-web-commons/javascripts/dhis2/dhis2.angular.controllers.js"></script>
+        
         <script type="text/javascript" src="scripts/app.js"></script>
         <script type="text/javascript" src="scripts/services.js"></script>
         <script type="text/javascript" src="scripts/filters.js"></script>

=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.angular.services.js'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.angular.services.js	2015-08-27 15:15:20 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/javascripts/dhis2/dhis2.angular.services.js	2015-08-27 19:05:47 +0000
@@ -395,7 +395,7 @@
                                     this.getAttributesAsString(attributes) +
                                     ' d2-focus-next-on-enter' +
                                     ' ng-model="selectedTei.' + attId + '" ' +
-                                    ' ng-disabled="editingDisabled"' +
+                                    ' ng-disabled="editingDisabled || isHidden(attributesById.' + attId + '.id)"' +
                                     ' d2-validation ' +
                                     ' ng-required=" ' + (att.mandatory || att.unique) + '" ';
 
@@ -762,6 +762,7 @@
             return pushVariable(variables, variablename, variableValue, variableType, variablefound, variablePrefix);
         },
         getVariables: function(allProgramRules, executingEvent, evs, allDes, selectedEntity, selectedEnrollment) {
+            
             var variables = {};
             
             var programVariables = allProgramRules.programVariables;            
@@ -769,6 +770,7 @@
             programVariables = programVariables.concat(allProgramRules.programIndicators.variables);
 
             angular.forEach(programVariables, function(programVariable) {
+                
                 var dataElementId = programVariable.dataElement;
                 if(programVariable.dataElement && programVariable.dataElement.id) {
                     dataElementId = programVariable.dataElement.id;

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramRule.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramRule.vm	2015-08-27 14:45:23 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/addProgramRule.vm	2015-08-27 19:05:47 +0000
@@ -104,7 +104,7 @@
                                                         #if( $ruleVariable.sourceType == 'TEI_ATTRIBUTE')
                                                             #set( $json_Data='{"name":"' + $ruleVariable.name + '"'
 								+ ',"sourceType":"' + $ruleVariable.sourceType + '"'
-								+ ',"trackedEntityAttribute":{ "id":"' + $ruleVariable.trackedEntityAttribute.id + '"}'
+								+ ',"trackedEntityAttribute":{ "id":"' + $ruleVariable.attribute.id + '"}'
 								+ ',"program":{"id":"' + $ruleVariable.program.id + '"}}' )
                                                         #else
                                                             #set( $json_Data='{"name":"' + $ruleVariable.name + '"'

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramRule.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramRule.vm	2015-08-27 14:45:23 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/webapp/dhis-web-maintenance-program/updateProgramRule.vm	2015-08-27 19:05:47 +0000
@@ -111,7 +111,7 @@
 							#if( $ruleVariable.sourceType == "TEI_ATTRIBUTE" )
 								#set( $json_Data='{"name":"' + $ruleVariable.name + '"'
 									+ ',"sourceType":"' + $ruleVariable.sourceType + '"'
-									+ ',"trackedEntityAttribute":{ "id":"' + $ruleVariable.dataElement.id + '"}'
+									+ ',"trackedEntityAttribute":{ "id":"' + $ruleVariable.attribute.id + '"}'
 									+ ',"program":{"id":"' + "$!ruleVariable.program.id" + '"}}' )
 								
 								<tr class="$clazz" jsonData='$json_Data' id="$ruleVariable.uid">