Skip to content

Commit 3550901

Browse files
committed
MOBILE-1547 cbe: Add course competencies support
1 parent 927fb29 commit 3550901

File tree

17 files changed

+331
-144
lines changed

17 files changed

+331
-144
lines changed

www/addons/competency/controllers/competencies.js

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,15 @@ angular.module('mm.addons.competency')
2121
* @ngdoc controller
2222
* @name mmaCompetenciesListCtrl
2323
*/
24-
.controller('mmaCompetenciesListCtrl', function($scope, $log, $mmaCompetency, $mmUtil, $stateParams, $state, $ionicPlatform, $q,
25-
$translate) {
26-
27-
$log = $log.getInstance('mmaCompetenciesListCtrl');
24+
.controller('mmaCompetenciesListCtrl', function($scope, $mmaCompetency, $mmUtil, $stateParams, $state, $ionicPlatform, $q,
25+
$translate, $mmaCompetencyHelper) {
2826

2927
var planId = parseInt($stateParams.pid) || false,
3028
courseId = parseInt($stateParams.cid) || false,
31-
competencyId = parseInt($stateParams.compid);
29+
competencyId = parseInt($stateParams.compid),
30+
userId = parseInt($stateParams.uid) || false;
3231

33-
function fetchCompetencies(refresh) {
32+
function fetchCompetencies() {
3433
var promise;
3534

3635
if (planId) {
@@ -50,6 +49,7 @@ angular.module('mm.addons.competency')
5049
$scope.title = response.plan.name;
5150
$scope.id = response.plan.id;
5251
$scope.idname = 'planid';
52+
userId = response.plan.userid;
5353
} else {
5454
$scope.title = $translate.instant('mma.competency.coursecompetencies');
5555
$scope.id = response.courseid;
@@ -58,11 +58,6 @@ angular.module('mm.addons.competency')
5858

5959
$scope.competencies = response.competencies;
6060
}).catch(function(message) {
61-
if (!refresh) {
62-
// Some call failed, retry without using cache.
63-
return refreshAllData();
64-
}
65-
6661
if (message) {
6762
$mmUtil.showErrorModal(message);
6863
} else {
@@ -77,20 +72,20 @@ angular.module('mm.addons.competency')
7772
// Show split view on tablet.
7873
$state.go('site.competency', {planid: planId, competencyid: competencyId});
7974
} else {
80-
$state.go('site.competency', {courseid: courseId, competencyid: competencyId});
75+
$state.go('site.competency', {courseid: courseId, competencyid: competencyId, userid: userId});
8176
}
8277
};
8378

8479
// Convenience function to refresh all the data.
8580
function refreshAllData() {
8681
var promise;
8782
if (planId) {
88-
promise = $mmaCompetency.invalidateLearningPlan(planId);
83+
promise = $mmaCompetency.invalidateLearningPlan(planId);
8984
} else {
9085
promise = $mmaCompetency.invalidateCourseCompetencies(courseId);
9186
}
9287
return promise.finally(function() {
93-
return fetchCompetencies(true);
88+
return fetchCompetencies();
9489
});
9590
}
9691

www/addons/competency/controllers/competency.js

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,40 +19,48 @@ angular.module('mm.addons.competency')
1919
*
2020
* @module mm.addons.competency
2121
* @ngdoc controller
22-
* @name Competency
22+
* @name mmaCompetencyCtrl
2323
*/
24-
.controller('mmaCompetencyCtrl', function($scope, $log, $stateParams, $mmaCompetency, $mmUtil, $translate, $q,
24+
.controller('mmaCompetencyCtrl', function($scope, $stateParams, $mmaCompetency, $mmUtil, $translate, $q, $mmSite,
2525
mmaCompetencyReviewStatusIdle, mmaCompetencyReviewStatusInReview, mmaCompetencyReviewStatusWaitingForReview) {
2626

27-
$log = $log.getInstance('mmaCompetencyCtrl');
28-
2927
var competencyId = parseInt($stateParams.competencyid),
3028
planId = parseInt($stateParams.planid) || false,
31-
courseId = parseInt($stateParams.courseid) || false;
29+
courseId = parseInt($stateParams.courseid) || false,
30+
userId = parseInt($stateParams.userid) || false,
31+
planStatus = false;
3232

3333
// Convenience function that fetches the event and updates the scope.
34-
function fetchCompetency(refresh) {
34+
function fetchCompetency() {
3535

3636
if (planId) {
37+
planStatus = false;
3738
promise = $mmaCompetency.getCompetencyInPlan(planId, competencyId);
3839
} else if (courseId){
39-
promise = $mmaCompetency.getCompetencyInCourse(courseId, competencyId);
40+
promise = $mmaCompetency.getCompetencyInCourse(courseId, competencyId, userId);
4041
} else {
4142
promise = $q.reject();
4243
}
4344

4445
return promise.then(function(competency) {
4546

4647
if (planId) {
47-
statusName = getStatusName(competency.usercompetencysummary.usercompetency.status);
48-
if (statusName) {
49-
competency.usercompetencysummary.usercompetency.statusname = statusName;
50-
}
48+
planStatus = competency.plan.status;
49+
competency.usercompetencysummary.usercompetency.statusname = getStatusName(competency.usercompetencysummary.usercompetency.status);
5150
} else {
5251
competency.usercompetencysummary.usercompetency = competency.usercompetencysummary.usercompetencycourse;
5352
$scope.coursemodules = competency.coursemodules;
5453
}
5554

55+
if (competency.usercompetencysummary.user.id != $mmSite.getUserId()) {
56+
competency.usercompetencysummary.user.profileimageurl = competency.usercompetencysummary.user.profileimageurl
57+
|| true;
58+
59+
// Get the user profile image from the returned object.
60+
$scope.user = competency.usercompetencysummary.user;
61+
console.log($scope.user);
62+
}
63+
5664
angular.forEach(competency.usercompetencysummary.evidence, function(evidence) {
5765
if (evidence.descidentifier) {
5866
evidence.description = $translate.instant('mma.competency.' + evidence.descidentifier, {a: evidence.desca});
@@ -62,11 +70,6 @@ angular.module('mm.addons.competency')
6270
$scope.competency = competency.usercompetencysummary;
6371

6472
}, function(message) {
65-
if (!refresh) {
66-
// Some call failed, retry without using cache.
67-
return refreshAllData();
68-
}
69-
7073
if (message) {
7174
$mmUtil.showErrorModal(message);
7275
} else {
@@ -91,7 +94,7 @@ angular.module('mm.addons.competency')
9194
break;
9295
default:
9396
// We can use the current status name.
94-
return false;
97+
return status;
9598
}
9699
return $translate.instant('mma.competency.usercompetencystatus_' + statusTranslateName);
97100
}
@@ -106,24 +109,23 @@ angular.module('mm.addons.competency')
106109
promise = $mmaCompetency.invalidateCompetencyInCourse(courseId, competencyId);
107110
}
108111
return promise.finally(function() {
109-
return fetchCompetency(true);
112+
return fetchCompetency();
110113
});
111114
}
112115

113-
// Get event.
114-
fetchCompetency().finally(function() {
116+
fetchCompetency().then(function() {
115117
if (planId) {
116-
$mmaCompetency.logCompetencyInPlanView(planId, competencyId);
118+
$mmaCompetency.logCompetencyInPlanView(planId, competencyId, planStatus, userId);
117119
} else {
118-
$mmaCompetency.logCompetencyInCourseView(courseId, competencyId);
120+
$mmaCompetency.logCompetencyInCourseView(courseId, competencyId, userId);
119121
}
120122
}).finally(function() {
121123
$scope.competencyLoaded = true;
122124
});
123125

124126
// Pull to refresh.
125127
$scope.refreshCompetency = function() {
126-
fetchCompetency(true).finally(function() {
128+
refreshAllData().finally(function() {
127129
$scope.$broadcast('scroll.refreshComplete');
128130
});
129131
};

www/addons/competency/controllers/competencysummary.js

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,17 @@ angular.module('mm.addons.competency')
1919
*
2020
* @module mm.addons.competency
2121
* @ngdoc controller
22-
* @name Competency
22+
* @name mmaCompetencySummaryCtrl
2323
*/
24-
.controller('mmaCompetencySummaryCtrl', function($scope, $log, $stateParams, $mmaCompetency, $mmUtil, $q) {
25-
26-
$log = $log.getInstance('mmaCompetencySummaryCtrl');
24+
.controller('mmaCompetencySummaryCtrl', function($scope, $stateParams, $mmaCompetency, $mmUtil, $q) {
2725

2826
var competencyId = parseInt($stateParams.competencyid);
2927

3028
// Convenience function that fetches the event and updates the scope.
31-
function fetchCompetency(refresh) {
29+
function fetchCompetency() {
3230
return $mmaCompetency.getCompetencySummary(competencyId).then(function(competency) {
3331
$scope.competency = competency;
3432
}, function(message) {
35-
if (!refresh) {
36-
// Some call failed, retry without using cache.
37-
return refreshAllData();
38-
}
39-
4033
if (message) {
4134
$mmUtil.showErrorModal(message);
4235
} else {
@@ -49,20 +42,19 @@ angular.module('mm.addons.competency')
4942
// Convenience function to refresh all the data.
5043
function refreshAllData() {
5144
return $mmaCompetency.invalidateCompetencySummary(competencyId).finally(function() {
52-
return fetchCompetency(true);
45+
return fetchCompetency();
5346
});
5447
}
5548

56-
// Get event.
57-
fetchCompetency().finally(function() {
49+
fetchCompetency().then(function() {
5850
$mmaCompetency.logCompetencyView(competencyId);
5951
}).finally(function() {
6052
$scope.competencyLoaded = true;
6153
});
6254

6355
// Pull to refresh.
6456
$scope.refreshCompetency = function() {
65-
fetchCompetency(true).finally(function() {
57+
refreshAllData().finally(function() {
6658
$scope.$broadcast('scroll.refreshComplete');
6759
});
6860
};

www/addons/competency/controllers/coursecompetencies.js

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,22 @@ angular.module('mm.addons.competency')
2121
* @ngdoc controller
2222
* @name mmaCourseCompetenciesCtrl
2323
*/
24-
.controller('mmaCourseCompetenciesCtrl', function($scope, $log, $stateParams, $mmaCompetency, $mmUtil, $state, $ionicPlatform, $q) {
25-
26-
$log = $log.getInstance('mmaCourseCompetenciesCtrl');
24+
.controller('mmaCourseCompetenciesCtrl', function($scope, $stateParams, $mmaCompetency, $mmUtil, $state, $ionicPlatform, $q,
25+
$mmaCompetencyHelper) {
2726

2827
var courseId = parseInt($stateParams.courseid);
28+
userId = parseInt($stateParams.userid) || false;
2929

3030
// Convenience function that fetches the event and updates the scope.
31-
function fetchCourseCompetencies(refresh) {
31+
function fetchCourseCompetencies() {
3232
return $mmaCompetency.getCourseCompetencies(courseId).then(function(competencies) {
3333
$scope.competencies = competencies;
34-
}, function(message) {
35-
if (!refresh) {
36-
// Some call failed, retry without using cache.
37-
return refreshAllData();
38-
}
3934

35+
// Get the user profile image.
36+
$mmaCompetencyHelper.getProfile(userId).then(function(user) {
37+
$scope.user = user;
38+
});
39+
}, function(message) {
4040
if (message) {
4141
$mmUtil.showErrorModal(message);
4242
} else {
@@ -49,29 +49,26 @@ angular.module('mm.addons.competency')
4949
$scope.gotoCompetency = function(competencyId) {
5050
if ($ionicPlatform.isTablet()) {
5151
// Show split view on tablet.
52-
$state.go('site.competencies', {cid: courseId, compid: competencyId});
52+
$state.go('site.competencies', {cid: courseId, compid: competencyId, uid: userId});
5353
} else {
54-
$state.go('site.competency', {courseid: courseId, competencyid: competencyId});
54+
$state.go('site.competency', {courseid: courseId, competencyid: competencyId, userid: userId});
5555
}
5656
};
5757

5858
// Convenience function to refresh all the data.
5959
function refreshAllData() {
6060
return $mmaCompetency.invalidateCourseCompetencies(courseId).finally(function() {
61-
return fetchCourseCompetencies(true);
61+
return fetchCourseCompetencies();
6262
});
6363
}
6464

65-
// Get event.
6665
fetchCourseCompetencies().finally(function() {
67-
//$mmaCompetency.logPlanView(courseId);
68-
}).finally(function() {
6966
$scope.competenciesLoaded = true;
7067
});
7168

7269
// Pull to refresh.
7370
$scope.refreshCourseCompetencies = function() {
74-
fetchCourseCompetencies(true).finally(function() {
71+
refreshAllData().finally(function() {
7572
$scope.$broadcast('scroll.refreshComplete');
7673
});
7774
};

www/addons/competency/controllers/plan.js

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,31 +21,27 @@ angular.module('mm.addons.competency')
2121
* @ngdoc controller
2222
* @name mmaLearningPlanCtrl
2323
*/
24-
.controller('mmaLearningPlanCtrl', function($scope, $log, $stateParams, $mmaCompetency, $mmUtil, $translate,
24+
.controller('mmaLearningPlanCtrl', function($scope, $stateParams, $mmaCompetency, $mmUtil, $translate,
2525
mmaCompetencyStatusDraft, mmaCompetencyStatusActive, mmaCompetencyStatusComplete, mmaCompetencyStatusWaitingForReview,
26-
mmaCompetencyStatusInReview, $state, $ionicPlatform, $q) {
27-
28-
$log = $log.getInstance('mmaLearningPlanCtrl');
26+
mmaCompetencyStatusInReview, $state, $ionicPlatform, $q, $mmaCompetencyHelper) {
2927

3028
var planId = parseInt($stateParams.id);
3129

3230
// Convenience function that fetches the event and updates the scope.
33-
function fetchLearningPlan(refresh) {
31+
function fetchLearningPlan() {
3432
return $mmaCompetency.getLearningPlan(planId).then(function(plan) {
35-
var statusName;
33+
var statusName, userId;
3634

37-
statusName = getStatusName(plan.plan.status);
38-
if (statusName) {
39-
plan.plan.statusname = statusName;
40-
}
35+
plan.plan.statusname = getStatusName(plan.plan.status);
36+
37+
userId = plan.plan.userid;
38+
// Get the user profile image.
39+
$mmaCompetencyHelper.getProfile(userId).then(function(user) {
40+
$scope.user = user;
41+
});
4142

4243
$scope.plan = plan;
4344
}, function(message) {
44-
if (!refresh) {
45-
// Some call failed, retry without using cache.
46-
return refreshAllData();
47-
}
48-
4945
if (message) {
5046
$mmUtil.showErrorModal(message);
5147
} else {
@@ -85,28 +81,25 @@ angular.module('mm.addons.competency')
8581
break;
8682
default:
8783
// We can use the current status name.
88-
return false;
84+
return status;
8985
}
9086
return $translate.instant('mma.competency.planstatus' + statusTranslateName);
9187
}
9288

9389
// Convenience function to refresh all the data.
9490
function refreshAllData() {
9591
return $mmaCompetency.invalidateLearningPlan(planId).finally(function() {
96-
return fetchLearningPlan(true);
92+
return fetchLearningPlan();
9793
});
9894
}
9995

100-
// Get event.
10196
fetchLearningPlan().finally(function() {
102-
//$mmaCompetency.logPlanView(planId);
103-
}).finally(function() {
10497
$scope.planLoaded = true;
10598
});
10699

107100
// Pull to refresh.
108101
$scope.refreshLearningPlan = function() {
109-
fetchLearningPlan(true).finally(function() {
102+
refreshAllData().finally(function() {
110103
$scope.$broadcast('scroll.refreshComplete');
111104
});
112105
};

0 commit comments

Comments
 (0)