~stian-sandvold/dhis2/UserSettingFallback

« back to all changes in this revision

Viewing changes to dhis-2/dhis-web/dhis-web-apps/src/main/webapp/dhis-web-tracker-capture/scripts/services.js

  • Committer: Stian Sandvold
  • Date: 2016-03-14 12:16:33 UTC
  • mfrom: (21871.1.422 dhis2)
  • Revision ID: stian.sandvold@gmail.com-20160314121633-ojggeaoszdunzltj
merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
138
138
                p.endDate = DateUtils.formatFromApiToUser(p.endDate);
139
139
                p.startDate = DateUtils.formatFromApiToUser(p.startDate);
140
140
                
141
 
                if(moment(p.endDate).isAfter(eventDateOffSet)){                    
 
141
                if(moment(p.endDate, calendarSetting.momentFormat).isAfter(moment(eventDateOffSet,calendarSetting.momentFormat))){
142
142
                    availablePeriods.push( p );
143
143
                }
144
144
            });                
189
189
        getCode: function(options, key){
190
190
            if(options){
191
191
                for(var i=0; i<options.length; i++){
192
 
                    if( key === options[i].name){
 
192
                    if( key === options[i].displayName){
193
193
                        return options[i].code;
194
194
                    }
195
195
                }
200
200
            if(options){
201
201
                for(var i=0; i<options.length; i++){                    
202
202
                    if( key === options[i].code){
203
 
                        return options[i].name;
 
203
                        return options[i].displayName;
204
204
                    }
205
205
                }
206
206
            }            
243
243
})
244
244
 
245
245
/* Factory to fetch programs */
246
 
.factory('ProgramFactory', function($q, $rootScope, SessionStorageService, TCStorageService) { 
 
246
.factory('ProgramFactory', function($q, $rootScope, SessionStorageService, TCStorageService, orderByFilter) { 
247
247
    
248
248
    var userHasValidRole = function(program, userRoles){
249
249
        
304
304
                        }
305
305
                    });
306
306
                    
 
307
                    programs = orderByFilter(programs, '-displayName').reverse();
 
308
                    
307
309
                    if(programs.length === 0){
308
310
                        selectedProgram = null;
309
311
                    }
324
326
                            }
325
327
                        }
326
328
                    }
 
329
                        
 
330
                    if(!selectedProgram || angular.isUndefined(selectedProgram) && programs.legth > 0){
 
331
                        selectedProgram = programs[0];
 
332
                    }
327
333
                    
328
334
                    $rootScope.$apply(function(){
329
335
                        def.resolve({programs: programs, selectedProgram: selectedProgram});
360
366
                        }
361
367
                    });
362
368
                    
 
369
                    programs = orderByFilter(programs, '-displayName').reverse();
 
370
                    
363
371
                    if(programs.length === 0){
364
372
                        selectedProgram = null;
365
373
                    }
380
388
                            }
381
389
                        }
382
390
                    }
 
391
                                        
 
392
                    if(!selectedProgram || angular.isUndefined(selectedProgram) && programs.legth > 0){
 
393
                        selectedProgram = programs[0];
 
394
                    }
383
395
                    
384
396
                    $rootScope.$apply(function(){
385
397
                        def.resolve({programs: programs, selectedProgram: selectedProgram});
471
483
})
472
484
 
473
485
/* Factory for fetching OrgUnit */
474
 
.factory('OrgUnitFactory', function($http, SessionStorageService) {    
 
486
.factory('OrgUnitFactory', function($http) {    
475
487
    var orgUnit, orgUnitPromise, rootOrgUnitPromise,orgUnitTreePromise;
476
488
    return {
477
489
        get: function(uid){            
478
490
            if( orgUnit !== uid ){
479
 
                orgUnitPromise = $http.get( '../api/organisationUnits.json?filter=id:eq:' + uid + '&fields=id,name,level,children[id,name,level,children[id,name,level]]&paging=false' ).then(function(response){
 
491
                orgUnitPromise = $http.get( '../api/organisationUnits.json?filter=id:eq:' + uid + '&fields=id,displayName,level,children[id,displayName,level,children[id,displayName,level]]&paging=false' ).then(function(response){
480
492
                    orgUnit = response.data.id;
481
493
                    return response.data;
482
494
                });
484
496
            return orgUnitPromise;
485
497
        },
486
498
        getSearchTreeRoot: function(){
487
 
            //var roles = SessionStorageService.get('USER_ROLES');
488
499
            if(!rootOrgUnitPromise){
489
 
                var url = '../api/me.json?fields=organisationUnits[id,name,level,children[id,name,level,children[id,name,level]]]&paging=false';
490
 
                /*if( roles && roles.userCredentials && roles.userCredentials.userRoles){
491
 
                    var userRoles = roles.userCredentials.userRoles;
492
 
                    for(var i=0; i<userRoles.length; i++){
493
 
                        if(userRoles[i].authorities.indexOf('ALL') !== -1 || 
494
 
                          userRoles[i].authorities.indexOf('F_TRACKED_ENTITY_INSTANCE_SEARCH_IN_ALL_ORGUNITS') !== -1 ){                        
495
 
                          url = '../api/organisationUnits.json?filter=level:eq:1&fields=id,name,children[id,name,children[id,name]]&paging=false';
496
 
                          i=userRoles.length;
497
 
                        }
498
 
                    }  
499
 
                }*/
 
500
                var url = '../api/me.json?fields=organisationUnits[id,displayName,level,children[id,displayName,level,children[id,displayName,level]]]&paging=false';                
500
501
                rootOrgUnitPromise = $http.get( url ).then(function(response){
501
502
                    return response.data;
502
503
                });
539
540
            for(var k in attributesById){
540
541
                if( formTei[k] ){
541
542
                    var att = attributesById[k];
542
 
                    tei.attributes.push({attribute: att.id, value: formTei[k], displayName: att.name, valueType: att.valueType});
 
543
                    tei.attributes.push({attribute: att.id, value: formTei[k], displayName: att.displayName, valueType: att.valueType});
543
544
                    formEmpty = false;              
544
545
                }
545
546
                delete tei[k];
681
682
                var tei = response.data;
682
683
                angular.forEach(tei.attributes, function(att){                    
683
684
                    if(attributesById[att.attribute]){
684
 
                        att.displayName = attributesById[att.attribute].name;
 
685
                        att.displayName = attributesById[att.attribute].displayName;
685
686
                    }
686
687
                    att.value = AttributesFactory.formatAttributeValue(att, attributesById, optionSets, 'USER');
687
688
                });
907
908
                        teiAttributes[j].order = i;
908
909
                        teiAttributes[j].mandatory = requiredAttributes[i].mandatory ? requiredAttributes[i].mandatory : false;
909
910
                        teiAttributes[j].allowFutureDate = requiredAttributes[i].allowFutureDate ? requiredAttributes[i].allowFutureDate : false;
910
 
                        teiAttributes[j].displayName = requiredAttributes[i].name;
 
911
                        teiAttributes[j].displayName = requiredAttributes[i].displayName;
911
912
                    }
912
913
                }
913
914
 
914
915
                if(!processed && fromEnrollment){//attribute was empty, so a chance to put some value
915
 
                    teiAttributes.push({show: true, order: i, allowFutureDate: requiredAttributes[i].allowFutureDate ? requiredAttributes[i].allowFutureDate : false, mandatory: requiredAttributes[i].mandatory ? requiredAttributes[i].mandatory : false, attribute: requiredAttributes[i].id, displayName: requiredAttributes[i].name, type: requiredAttributes[i].valueType, value: ''});
 
916
                    teiAttributes.push({show: true, order: i, allowFutureDate: requiredAttributes[i].allowFutureDate ? requiredAttributes[i].allowFutureDate : false, mandatory: requiredAttributes[i].mandatory ? requiredAttributes[i].mandatory : false, attribute: requiredAttributes[i].id, displayName: requiredAttributes[i].displayName, type: requiredAttributes[i].valueType, value: ''});
916
917
                }                   
917
918
            }
918
919
 
992
993
/* factory for handling events */
993
994
.factory('DHIS2EventFactory', function($http, DialogService, $translate) {   
994
995
    
 
996
    var skipPaging = "&skipPaging=true";
995
997
    return {     
996
998
        
997
999
        getEventsByStatus: function(entity, orgUnit, program, programStatus){   
998
 
            var promise = $http.get( '../api/events.json?ouMode=ACCESSIBLE&' + 'trackedEntityInstance=' + entity + '&orgUnit=' + orgUnit + '&program=' + program + '&programStatus=' + programStatus  + '&paging=false').then(function(response){
 
1000
            var promise = $http.get( '../api/events.json?ouMode=ACCESSIBLE&' + 'trackedEntityInstance=' + entity + '&orgUnit=' + orgUnit + '&program=' + program + '&programStatus=' + programStatus  + skipPaging).then(function(response){
999
1001
                return response.data.events;
1000
1002
            });            
1001
1003
            return promise;
1002
1004
        },
1003
1005
        getEventsByProgram: function(entity, program){   
1004
1006
            
1005
 
            var url = '../api/events.json?ouMode=ACCESSIBLE&' + 'trackedEntityInstance=' + entity + '&paging=false';            
 
1007
            var url = '../api/events.json?ouMode=ACCESSIBLE&' + 'trackedEntityInstance=' + entity + skipPaging;            
1006
1008
            if(program){
1007
1009
                url = url + '&program=' + program;
1008
1010
            }
1012
1014
            return promise;
1013
1015
        },
1014
1016
        getEventsByProgramStage: function(entity, programStage){
1015
 
          var url = '../api/events.json?ouMode=ACCESSIBLE&' + 'trackedEntityInstance=' + entity + '&paging=false'; 
 
1017
          var url = '../api/events.json?ouMode=ACCESSIBLE&' + 'trackedEntityInstance=' + entity + skipPaging; 
1016
1018
          if(programStage){
1017
1019
              url += '&programStage='+programStage;
1018
1020
          }
1024
1026
        getByOrgUnitAndProgram: function(orgUnit, ouMode, program, startDate, endDate){
1025
1027
            var url;
1026
1028
            if(startDate && endDate){
1027
 
                url = '../api/events.json?' + 'orgUnit=' + orgUnit + '&ouMode='+ ouMode + '&program=' + program + '&startDate=' + startDate + '&endDate=' + endDate + '&paging=false';
 
1029
                url = '../api/events.json?' + 'orgUnit=' + orgUnit + '&ouMode='+ ouMode + '&program=' + program + '&startDate=' + startDate + '&endDate=' + endDate + skipPaging;
1028
1030
            }
1029
1031
            else{
1030
 
                url = '../api/events.json?' + 'orgUnit=' + orgUnit + '&ouMode='+ ouMode + '&program=' + program + '&paging=false';
 
1032
                url = '../api/events.json?' + 'orgUnit=' + orgUnit + '&ouMode='+ ouMode + '&program=' + program + skipPaging;
1031
1033
            }
1032
1034
            var promise = $http.get( url ).then(function(response){
1033
1035
                return response.data.events;
1203
1205
                        if(pi.displayInForm){
1204
1206
                            var newAction = {
1205
1207
                                    id:pi.id,
1206
 
                                    content:pi.displayDescription ? pi.displayDescription : pi.name,
 
1208
                                    content:pi.displayDescription ? pi.displayDescription : pi.displayName,
1207
1209
                                    data:pi.expression,
1208
1210
                                    programRuleActionType:'DISPLAYKEYVALUEPAIR',
1209
1211
                                    location:'indicators'
1210
1212
                                };
1211
1213
                            var newRule = {
1212
 
                                    name:pi.name,
 
1214
                                    name:pi.displayName,
1213
1215
                                    id: pi.id,
1214
1216
                                    shortname:pi.shortname,
1215
1217
                                    code:pi.code,
1280
1282
                                angular.forEach(variableObjectsCurrentExpression, function(variableCurrentRule) {
1281
1283
                                   if(valueCountText) {
1282
1284
                                       //This is not the first value in the value count part of the expression. 
1283
 
                                       valueCountText +=  ' + d2:count(\'' + variableCurrentRule.name + '\')';
 
1285
                                       valueCountText +=  ' + d2:count(\'' + variableCurrentRule.displayName + '\')';
1284
1286
                                   }
1285
1287
                                   else
1286
1288
                                   {
1287
1289
                                       //This is the first part value in the value count expression:
1288
 
                                       valueCountText = '(d2:count(\'' + variableCurrentRule.name + '\')';
 
1290
                                       valueCountText = '(d2:count(\'' + variableCurrentRule.displayName + '\')';
1289
1291
                                   }
1290
1292
                                });
1291
1293
                                //To finish the value count expression we need to close the paranthesis:
1300
1302
                                angular.forEach(variableObjectsCurrentExpression, function(variableCurrentRule) {
1301
1303
                                   if(zeroPosValueCountText) {
1302
1304
                                       //This is not the first value in the value count part of the expression. 
1303
 
                                       zeroPosValueCountText +=  '+ d2:countifzeropos(\'' + variableCurrentRule.name + '\')';
 
1305
                                       zeroPosValueCountText +=  '+ d2:countifzeropos(\'' + variableCurrentRule.displayName + '\')';
1304
1306
                                   }
1305
1307
                                   else
1306
1308
                                   {
1307
1309
                                       //This is the first part value in the value count expression:
1308
 
                                       zeroPosValueCountText = '(d2:countifzeropos(\'' + variableCurrentRule.name + '\')';
 
1310
                                       zeroPosValueCountText = '(d2:countifzeropos(\'' + variableCurrentRule.displayName + '\')';
1309
1311
                                   }
1310
1312
                                });
1311
1313
                                //To finish the value count expression we need to close the paranthesis:
1426
1428
        
1427
1429
        if(enrollment){
1428
1430
            var q = '';
1429
 
            if(enrollment.operator === OperatorFactory.defaultOperators[0]){
1430
 
                if(enrollment.programExactDate && enrollment.programExactDate !== ''){
1431
 
                    query.hasValue = true;
1432
 
                    q += '&programStartDate=' + DateUtils.formatFromUserToApi(enrollment.programExactDate) + '&programEndDate=' + DateUtils.formatFromUserToApi(enrollment.programExactDate);
1433
 
                }
1434
 
            }
1435
 
            if(enrollment.operator === OperatorFactory.defaultOperators[1]){
1436
 
                if(enrollment.programStartDate && enrollment.programStartDate !== ''){                
1437
 
                    query.hasValue = true;
1438
 
                    q += '&programStartDate=' + DateUtils.formatFromUserToApi(enrollment.programStartDate);
1439
 
                }
1440
 
                if(enrollment.programEndDate && enrollment.programEndDate !== ''){
1441
 
                    query.hasValue = true;
1442
 
                    q += '&programEndDate=' + DateUtils.formatFromUserToApi(enrollment.programEndDate);
1443
 
                }
1444
 
            }            
 
1431
            if(enrollment.programEnrollmentStartDate && enrollment.programEnrollmentStartDate !== ''){                
 
1432
                query.hasValue = true;
 
1433
                q += '&programEnrollmentStartDate=' + DateUtils.formatFromUserToApi(enrollment.programEnrollmentStartDate);
 
1434
            }
 
1435
            if(enrollment.programEnrollmentEndDate && enrollment.programEnrollmentEndDate !== ''){
 
1436
                query.hasValue = true;
 
1437
                q += '&programEnrollmentEndDate=' + DateUtils.formatFromUserToApi(enrollment.programEnrollmentEndDate);
 
1438
            }
 
1439
            if(enrollment.programIncidentStartDate && enrollment.programIncidentStartDate !== ''){                
 
1440
                query.hasValue = true;
 
1441
                q += '&programIncidentStartDate=' + DateUtils.formatFromUserToApi(enrollment.programIncidentStartDate);
 
1442
            }
 
1443
            if(enrollment.programIncidentEndDate && enrollment.programIncidentEndDate !== ''){
 
1444
                query.hasValue = true;
 
1445
                q += '&programIncidentEndDate=' + DateUtils.formatFromUserToApi(enrollment.programIncidentEndDate);
 
1446
            }
1445
1447
            if(q){
1446
1448
                if(query.url){
1447
1449
                    query.url = query.url + q;
1546
1548
            //grid.headers[7..] = Attribute, Attribute,.... 
1547
1549
            var attributes = [];
1548
1550
            for(var i=6; i<grid.headers.length; i++){
1549
 
                attributes.push({id: grid.headers[i].name, name: grid.headers[i].column, type: grid.headers[i].type});
 
1551
                attributes.push({id: grid.headers[i].name, displayName: grid.headers[i].column, type: grid.headers[i].type});
1550
1552
            }
1551
1553
 
1552
1554
            var entityList = {own: [], other: []};
1626
1628
            }
1627
1629
       
1628
1630
            //also add extra columns which are not part of attributes (orgunit for example)
1629
 
            columns.push({id: 'orgUnitName', name: $translate.instant('registering_unit'), valueType: 'TEXT', displayInListNoProgram: false, attribute: false});
1630
 
            columns.push({id: 'created', name: $translate.instant('registration_date'), valueType: 'DATE', displayInListNoProgram: false, attribute: false});
1631
 
            columns.push({id: 'inactive', name: $translate.instant('inactive'), valueType: 'BOOLEAN', displayInListNoProgram: false, attribute: false});
 
1631
            columns.push({id: 'orgUnitName', displayName: $translate.instant('registering_unit'), valueType: 'TEXT', displayInListNoProgram: false, attribute: false});
 
1632
            columns.push({id: 'created', displayName: $translate.instant('registration_date'), valueType: 'DATE', displayInListNoProgram: false, attribute: false});
 
1633
            columns.push({id: 'inactive', displayName: $translate.instant('inactive'), valueType: 'BOOLEAN', displayInListNoProgram: false, attribute: false});
1632
1634
            columns = columns.concat(returnAttributes ? returnAttributes : []);
1633
1635
            
1634
1636
            //generate grid column for the selected program/attributes
1655
1657
                var d = {};
1656
1658
                angular.forEach(columns, function(col){
1657
1659
                    if(col.show){
1658
 
                        d[col.name] = row[col.id];
 
1660
                        d[col.displayName] = row[col.id];
1659
1661
                    }                
1660
1662
                });
1661
1663
                data.push(d);            
1666
1668
            var header = []; 
1667
1669
            angular.forEach(columns, function(col){
1668
1670
                if(col.show){
1669
 
                    header.push($translate.instant(col.name));
 
1671
                    header.push($translate.instant(col.displayName));
1670
1672
                }
1671
1673
            });        
1672
1674
            return header;
1741
1743
                              programStage: programStage.id, 
1742
1744
                              program: program.id,
1743
1745
                              orgUnit: orgUnit.id,
1744
 
                              orgUnitName: orgUnit.name,
1745
 
                              name: programStage.name,
 
1746
                              orgUnitName: orgUnit.displayName,
 
1747
                              name: programStage.displayName,
1746
1748
                              excecutionDateLabel: programStage.excecutionDateLabel ? programStage.excecutionDateLabel : $translate.instant('report_date'),
1747
1749
                              enrollmentStatus: 'ACTIVE',
1748
1750
                              enrollment: enrollment.enrollment,
1751
1753
            if(programStage.periodType){                
1752
1754
                var periods = getEventDuePeriod(eventsPerStage, programStage, enrollment);
1753
1755
                dummyEvent.dueDate = periods[0].endDate;
1754
 
                dummyEvent.periodName = periods[0].name;
 
1756
                dummyEvent.periodName = periods[0].displayName;
1755
1757
                dummyEvent.eventDate = dummyEvent.dueDate;
1756
1758
                dummyEvent.periods = periods;
1757
1759
            }
1910
1912
 
1911
1913
.service('EventCreationService', function($modal){
1912
1914
            
1913
 
        this.showModal = function(eventsByStage, stage, availableStages,programStages,selectedEntity,selectedProgram,selectedOrgUnit,selectedEnrollment, autoCreate, eventCreationAction,allEventsSorted, suggestedStage){
 
1915
        this.showModal = function(eventsByStage, stage, availableStages,programStages,selectedEntity,selectedProgram,selectedOrgUnit,selectedEnrollment, autoCreate, eventCreationAction,allEventsSorted, suggestedStage, selectedCategories){
1914
1916
            var modalInstance = $modal.open({
1915
1917
                templateUrl: 'components/dataentry/new-event.html',
1916
1918
                controller: 'EventCreationController',
1950
1952
                    },
1951
1953
                    suggestedStage: function(){
1952
1954
                        return suggestedStage;
1953
 
                    }
 
1955
                    },
 
1956
                        selectedCategories: function () {
 
1957
                        return selectedCategories;
 
1958
                        }
1954
1959
                }
1955
1960
            }).result;
1956
1961
            return modalInstance;
1958
1963
        this.eventCreationActions = { add: 'ADD',  schedule: 'SCHEDULE', referral: 'REFERRAL'};
1959
1964
})
1960
1965
 
 
1966
.service('MessagingService', function($http){
 
1967
    return {
 
1968
        sendSmsMessage: function(message){    
 
1969
            var promise = $http.post('../api/sms/outbound', message).then(function(response){
 
1970
                return response.data;           
 
1971
            }, function(response){
 
1972
                return response.data;
 
1973
            });
 
1974
            return promise;            
 
1975
        }
 
1976
    };
 
1977
});
 
1978