← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 15317: more interaction in tei dashboard widgets such as editing, enrolling, event creation... - WIP

 

------------------------------------------------------------
revno: 15317
committer: Abyot Asalefew Gizaw abyota@xxxxxxxxx
branch nick: dhis2
timestamp: Tue 2014-05-20 17:56:10 +0200
message:
  more interaction in tei dashboard widgets such as editing, enrolling, event creation... - WIP
modified:
  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/scripts/controllers.js
  dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/styles/style.css
  dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/dataentry.html
  dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/enrollment.html
  dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/profile.html


--
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-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-05-19 11:33:07 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/i18n/en.json	2014-05-20 15:56:10 +0000
@@ -26,7 +26,8 @@
     "next": "Next",
     "last": "Last",
     "dashboard": "Go to Dashboard",
-    "edit": "Edit Entity",
+    "edit": "Edit",
+    "edit_profile": "Edit profile",
     "association": "Manage Associations",
     "change_location": "Manage Location",
     "details_history": "Details/History",
@@ -35,6 +36,7 @@
     "add_new": "Add new",
     "new_event": "New event",
     "create_new_event": "Create new event",
+    "create_new_event_repeatable": "Create new event from a repeatable stage",
     "close_search": "Close search",
     "search_attributes": "Search attributes",
     "available_search_attributes": "Available search attributes",
@@ -78,6 +80,7 @@
     "registration_error": "Error in registration",
     "category": "Category",
     "entity_type": "Entity type",
+    "save": "Save",
     "save_and_add_new": "Save and add new",
     "save_and_go_back": "Save and go back",
     "save_and_continue": "Save and continue",

=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js	2014-05-20 13:24:54 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/scripts/controllers.js	2014-05-20 15:56:10 +0000
@@ -507,6 +507,7 @@
     
     //attributes for profile    
     $scope.attributes = {};    
+    $scope.editProfile = false;    
     
     angular.forEach(storage.get('ATTRIBUTES'), function(attribute){
         $scope.attributes[attribute.id] = attribute;
@@ -522,7 +523,23 @@
                 $scope.trackedEntity = te;
             }
         }); 
+        
+        $scope.entityAttributes = angular.copy($scope.selectedEntity.attributes);
     });
+    
+    $scope.showEdit = function(){
+      $scope.editProfile = !$scope.editProfile; 
+    };
+    
+    $scope.save = function(){
+        
+        $scope.editProfile = !$scope.editProfile;
+    };
+    
+    $scope.cancel = function(){
+        $scope.selectedEntity.attributes = $scope.entityAttributes;  
+        $scope.editProfile = !$scope.editProfile;
+    };
 })
 
 //Controller for the enrollment section
@@ -540,6 +557,7 @@
     //programs for enrollment
     $scope.enrollments = [];
     $scope.programs = []; 
+    $scope.showEnrollmentDiv = false;
     
     $scope.selectedOrgUnit = storage.get('SELECTED_OU');
     
@@ -601,6 +619,10 @@
         }        
     };
     
+    $scope.showEnrollment = function(){        
+        console.log('Enrollment', $scope.selectedEntity, ' ', $scope.selectedProgram);
+    };
+    
     $scope.enroll = function(){        
         console.log('Enrollment', $scope.selectedEntity, ' ', $scope.selectedProgram);
     };
@@ -622,9 +644,14 @@
     
     //listen for the selected items
     $scope.$on('dataentry', function(event, args) {  
+        
+        var today = moment();
+        today = Date.parse(today);
+        today = $filter('date')(today, 'yyyy-MM-dd');
 
         $scope.currentEvent = null;
-        
+        $scope.allowEventCreation = false;
+        $scope.repeatableStages = [];        
         $scope.dhis2Events = [];       
     
         $scope.selectedEntity = args.selectedEntity;
@@ -642,7 +669,7 @@
                     
                     console.log('need to create new ones:  ', $scope.selectedEnrollment);
                     
-                    if($scope.selectedEnrollment.status == 'ACTIVE'){
+                    if($scope.selectedEnrollment.status === 'ACTIVE'){
                         //create events for the selected enrollment
                         var program = storage.get($scope.selectedProgramId);
                         var programStages = [];
@@ -650,43 +677,47 @@
                         angular.forEach(program.programStages, function(ps){  
                             ps = storage.get(ps.id);
                             programStages.push(ps);
+                            
+                            var eventDate = moment(moment().add('d', ps.minDaysFromStart), 'YYYY-MM-DD')._d;
+                            eventDate = Date.parse(eventDate);
+                            eventDate = $filter('date')(eventDate, 'yyyy-MM-dd');
                             var dhis2Event = {programStage: ps.id, 
                                               orgUnit: $scope.selectedOrgUnitId, 
-                                              eventDate: moment(),
+                                              eventDate: eventDate,
                                               name: ps.name,
                                               status: 'ACTIVE'};
                             
-                            var today = moment();                                       
-                            
-                            dhis2Event.statusColor = 'stage-on-time';
-                            
-                            if( moment().add('d', ps.minDaysFromStart).isBefore(today)){                                
-                                dhis2Event.statusColor = 'stage-overdue';
-                            }                            
-
-                            $scope.dhis2Events.push(dhis2Event);
+                            $scope.dhis2Events.push(dhis2Event);    
+                            
                         });
                     }
                 }
                 
                 angular.forEach($scope.dhis2Events, function(dhis2Event){
-                        
-                    dhis2Event.name = storage.get(dhis2Event.programStage).name;
+                    
+                    var ps = storage.get(dhis2Event.programStage);
+                    //check if a stage is repeatable
+                    if(ps.repeatable){
+                        $scope.allowEventCreation = true;
+                        if($scope.repeatableStages.indexOf(ps) == -1){
+                            $scope.repeatableStages.push(ps);
+                        }
+                    }
+                            
+                    dhis2Event.name = ps.name;
                     dhis2Event.eventDate = moment(dhis2Event.eventDate, 'YYYY-MM-DD')._d;
                     dhis2Event.eventDate = Date.parse(dhis2Event.eventDate);
                     dhis2Event.eventDate = $filter('date')(dhis2Event.eventDate, 'yyyy-MM-dd');
                     
-                    if(dhis2Event.status == 'COMPLETED'){
+                    if(dhis2Event.status === 'COMPLETED'){
                         dhis2Event.statusColor = 'stage-completed';
                     }
                     else{
-                        var date = moment(dhis2Event.eventDate, 'yyyy-MM-dd');
-                        if(moment().isAfter(date)){
+                        dhis2Event.statusColor = 'stage-on-time';
+
+                        if(moment(today).isAfter(dhis2Event.eventDate)){
                             dhis2Event.statusColor = 'stage-overdue';
-                        }
-                        else{
-                            dhis2Event.statusColor = 'stage-on-time';
-                        }
+                        }                        
                     } 
                     
                     if(dhis2Event.orgUnit){
@@ -706,8 +737,8 @@
         }
     });
     
-    $scope.createNewEvent = function(){        
-        console.log('need to create new event');        
+    $scope.createNewEvent = function(){
+        console.log('need to create new event:  ', $scope.repeatableStages);        
     };
     
     $scope.showDataEntry = function(event){

=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/styles/style.css'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/styles/style.css	2014-05-16 13:58:07 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/styles/style.css	2014-05-20 15:56:10 +0000
@@ -583,6 +583,10 @@
     margin-bottom: 10px;
 }
 
+.widget-content-container{
+    padding: 20px 10px;
+}
+
 /*----------------------------------------------------------------------------*/
 /* Bootstrap modal style
 /*----------------------------------------------------------------------------*/

=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/dataentry.html'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/dataentry.html	2014-05-13 09:54:48 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/dataentry.html	2014-05-20 15:56:10 +0000
@@ -1,8 +1,8 @@
 <div class="panel panel-default" ng-controller="DataEntryController">
     <div class="panel-heading">
         {{dataentryWidget.title| translate}} 
-        <span class="nav-pills" ng-show="selectedEnrollment">
-            | <span><a href ng-click="createNewEvent()">{{'create_new_event'| translate}}</a></span>            
+        <span class="nav-pills" ng-show="selectedEnrollment && allowEventCreation">
+            | <span><a href ng-click="createNewEvent()" title="{{'create_new_event_repeatable'| translate}}">{{'create_new_event'| translate}}</a></span>            
         </span>
         <span class="pull-right">
             <a href ng-click="removeWidget(dataentryWidget)" title="{{'remove'| translate}}"><span class='black'><i class="fa fa-times-circle"></i></span></a>            

=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/enrollment.html'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/enrollment.html	2014-05-19 14:00:19 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/enrollment.html	2014-05-20 15:56:10 +0000
@@ -22,7 +22,7 @@
                 <button type="button" 
                         class="btn btn-default"
                         ng-if="selectedProgram && !selectedEnrollment" 
-                        ng-click="enroll()">
+                        ng-click="showEnrollment()">
                     {{'enroll'| translate}}
                 </button>  
             </td>                

=== modified file 'dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/profile.html'
--- dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/profile.html	2014-05-19 14:00:19 +0000
+++ dhis-2/dhis-web/dhis-web-tracker-capture/src/main/webapp/dhis-web-tracker-capture/views/profile.html	2014-05-20 15:56:10 +0000
@@ -1,6 +1,10 @@
+
 <div class="panel panel-default" ng-controller="ProfileController">
     <div class="panel-heading">
-        {{trackedEntity.name || 'entity' | translate}} {{profileWidget.title| translate}}
+        {{trackedEntity.name|| 'entity' | translate}} {{profileWidget.title| translate}}
+        <span class="nav-pills" ng-show="selectedEntity.attributes.length">
+            | <span><a href ng-click="showEdit()" title="{{'edit_profile'| translate}}">{{'edit'| translate}}</a></span>            
+        </span>
         <span class="pull-right">
             <a href ng-click="removeWidget(profileWidget)" title="{{'remove'| translate}}"><span class='black'><i class="fa fa-times-circle"></i></span></a>            
         </span>        
@@ -13,13 +17,13 @@
             <td>
                 <div ng-switch="attribute.type">
                     <div ng-switch-when="date">
-                        <input type="text" class="form-control" ng-date ng-model="attribute.value"  value="attribute.value | date:'yyyy-MM-dd"/>
+                        <input type="text" class="form-control" ng-date ng-model="attribute.value"  value="attribute.value | date:'yyyy-MM-dd" ng-disabled="!editProfile"/>
                     </div>
                     <div ng-switch-when="trueOnly">
-                        <input type="checkbox" class="form-control" ng-model="attribute.value" />
+                        <input type="checkbox" class="form-control" ng-model="attribute.value" ng-disabled="!editProfile"/>
                     </div>
                     <div ng-switch-when="bool">
-                        <select ng-model="attribute.value" class="form-control">
+                        <select ng-model="attribute.value" class="form-control" ng-disabled="!editProfile">
                             <option value="">{{'please_select'| translate}}</option>                        
                             <option value="0">{{'no'| translate}}</option>
                             <option value="1">{{'yes'| translate}}</option>
@@ -31,16 +35,32 @@
                                ng-model="attribute.value"                                                 
                                typeahead="option for option in attributes[attribute.attribute].optionSet.options | filter:$viewValue | limitTo:20" 
                                typeahead-open-on-focus 
-                               />
+                               ng-disabled="!editProfile"/>
                     </div>
                     <div ng-switch-when="number">
-                        <input type="number" class="form-control" ng-model="attribute.value" />
+                        <input type="number" class="form-control" ng-model="attribute.value" ng-disabled="!editProfile"/>
                     </div>
                     <div ng-switch-default>
-                        <input type="text"  class="form-control" ng-model="attribute.value" />                                        
+                        <input type="text"  class="form-control" ng-model="attribute.value" ng-disabled="!editProfile"/>                         
                     </div>
                 </div>                                                                                                    
             </td>
         </tr>           
     </table>
+
+    <div class="widget-content-container" ng-if="editProfile">
+        <div class="btn-group">
+            <button type="button" 
+                    class="btn btn-default"
+                    ng-click="save()">
+                {{'save'| translate}}
+            </button>        
+            <button type="button" 
+                    class="btn btn-default" 
+                    ng-click="cancel()">
+                {{'cancel'| translate}}
+            </button>        
+        </div>
+    </div>
+
 </div>
\ No newline at end of file