ScheduleController ES6 refactoring
This commit is contained in:
1 parent
88e6884da0
commit
2cf5d0cc65
3 files changed
+78
-82
No files matched your search
@@ -0,0 +1,76 @@
|
||||
import {populate} from '../../utils/populate';
|
||||
import {getCourseNameByID} from '../../models/course';
|
||||
import {indexEquals} from '../../utils/common';
|
||||
import {translateAnItem} from '../../utils/common';
|
||||
|
||||
function isRequested(period, semester) {
|
||||
return function (schedule) {
|
||||
return schedule.period === period && schedule.semester === semester;
|
||||
}
|
||||
}
|
||||
|
||||
export default function (app) {
|
||||
app.controller('ScheduleController', ($scope, $http, $location, $routeParams, scheduleData, team, menu) => {
|
||||
menu.activate('/schedule');
|
||||
|
||||
let current_period = $routeParams.period;
|
||||
let current_semester = $routeParams.semester;
|
||||
let isScheduleRequested = current_period && current_semester;
|
||||
|
||||
$http.get('/schedules', {cache: true})
|
||||
.success(schedules => {
|
||||
// By url params or last element
|
||||
let selector = isScheduleRequested ? isRequested(current_period, current_semester) : indexEquals(schedules.length - 1);
|
||||
|
||||
schedules = schedules.map(schedule => {
|
||||
let sem = [['spring', 'Весена'], ['autumn', 'Осень']]
|
||||
.reduce(translateAnItem(
|
||||
i => i[0] === schedule.semester,
|
||||
i => i[1]
|
||||
));
|
||||
schedule.text = `${sem} ${schedule.period} года`;
|
||||
|
||||
return schedule;
|
||||
});
|
||||
|
||||
schedules.forEach(function (schedule, i) {
|
||||
if (selector(schedule, i)) {
|
||||
$scope.currentSchedule = schedules[i];
|
||||
}
|
||||
});
|
||||
|
||||
$scope.schedules = schedules;
|
||||
$scope.loadSchedule($scope.currentSchedule, isScheduleRequested);
|
||||
});
|
||||
|
||||
$scope.loadSchedule = (s, updateURL) => {
|
||||
let id = s._id;
|
||||
let schedule_item = getScheduleByID(id);
|
||||
|
||||
if (schedule_item) {
|
||||
let sem = schedule_item.semester;
|
||||
let period = schedule_item.period;
|
||||
|
||||
let url = `/schedule/${period}/${sem}`;
|
||||
$http.get(url, {cache: true})
|
||||
.success(scheduleRecord => {
|
||||
$scope.groups = scheduleData.populate(scheduleRecord.schedule, [
|
||||
populate(team.short, 'teacher'),
|
||||
populate(getCourseNameByID, 'lesson')
|
||||
]);
|
||||
|
||||
if (updateURL) $location.url(url);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function getScheduleByID(id) {
|
||||
let schedules = $scope.schedules;
|
||||
for (let i = 0, l = schedules.length; i < l; i++) {
|
||||
let s = schedules[i];
|
||||
if (id === s._id) return s;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
};
|
||||
Reference in new issue
Block a user