ScheduleController ES6 refactoring

This commit is contained in:
tmshv committed 2016-02-22 04:19:32 +03:00
1 parent 88e6884da0
commit 2cf5d0cc65
3 files changed
+78 -82

No files matched your search

+2 -1
View File
@@ -10,6 +10,7 @@ import GalleryItem from './components/GalleryItem';
import TeamMemberProfile from './components/TeamMemberProfile';
import AppController from './controllers/AppController';
import HomeController from './controllers/HomeController';
import ScheduleController from './controllers/ScheduleController';
import TeamController from './controllers/TeamController';
import GalleryController from './controllers/GalleryController';
import AlbumController from './controllers/AlbumController';
@@ -106,7 +107,6 @@ app.run(($location, $rootScope, $http) => {
Strip,
UppercaseFirst,
require('./ui/timeline'),
require('./pages/schedule'),
MainMenu,
Breadcrumbs,
Document,
@@ -115,6 +115,7 @@ app.run(($location, $rootScope, $http) => {
TeamMemberProfile,
AppController,
HomeController,
ScheduleController,
TeamController,
GalleryController,
AlbumController,
@@ -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;
}
});
};
-81
View File
@@ -1,81 +0,0 @@
import {populate} from '../../utils/populate';
import {getCourseNameByID} from '../../models/course';
function indexEquals(i) {
return function (_, index) {
return i === index;
}
}
function isRequested(period, semester) {
return function (schedule) {
return schedule.period === period && schedule.semester === semester;
}
}
module.exports = function (app) {
app.controller('ScheduleController', function ($scope, $http, $location, $routeParams, scheduleData, team, menu) {
menu.activate('/schedule');
var current_period = $routeParams.period;
var current_semester = $routeParams.semester;
var isScheduleRequested = current_period && current_semester;
$http.get("/schedules", {cache: true})
.success(function (schedules) {
// By url params or last element
var select_fn = isScheduleRequested ? isRequested(current_period, current_semester) : indexEquals(schedules.length - 1);
schedules = schedules.map(function (schedule) {
var sem = [['spring', 'Весена'], ['autumn', 'Осень']].reduce(function (s, word) {
if (word[0] === schedule.semester) return word[1];
else return s[1];
});
schedule.text = `${sem} ${schedule.period} года`;
return schedule;
});
schedules.forEach(function (schedule, i) {
if (select_fn(schedule, i)) {
$scope.currentSchedule = schedules[i];
}
});
$scope.schedules = schedules;
$scope.loadSchedule($scope.currentSchedule, isScheduleRequested);
});
$scope.loadSchedule = function (s, updateURL) {
var id = s._id;
var schedule_item = getScheduleByID(id);
if (schedule_item) {
var sem = schedule_item.semester;
var period = schedule_item.period;
var url = `/schedule/${period}/${sem}`;
$http.get(url, {cache: true})
.success(function (scheduleRecord) {
$scope.groups = scheduleData.populate(scheduleRecord.schedule, [
populate(team.short, 'teacher'),
populate(getCourseNameByID, 'lesson')
]);
if (updateURL) {
$location.url(url);
}
});
}
};
function getScheduleByID(id) {
var schedules = $scope.schedules;
for (var i = 0, l = schedules.length; i < l; i++) {
var s = schedules[i];
if (id === s._id) return s;
}
return null;
}
});
};