+ PageSchedule component

This commit is contained in:
tmshv committed 2016-02-25 18:40:48 +03:00
1 parent c91e46266f
commit cef4bc6bd5
5 files changed
+83 -69

No files matched your search

+2 -6
View File
@@ -17,9 +17,9 @@ import ScheduleRecord from './components/ScheduleRecord';
import FooterLinks from './components/FooterLinks';
import PageSchool from './components/PageSchool';
import PageSchedule from './components/PageSchedule';
import AppController from './controllers/AppController';
import ScheduleController from './controllers/ScheduleController';
import CollectiveController from './controllers/CollectiveController';
import GalleryController from './controllers/GalleryController';
import AlbumController from './controllers/AlbumController';
@@ -91,8 +91,8 @@ app.run(($location, $rootScope, $http) => {
AlbumCollection,
TeacherProfile,
PageSchool,
PageSchedule,
AppController,
ScheduleController,
CollectiveController,
GalleryController,
AlbumController,
@@ -106,10 +106,6 @@ app.run(($location, $rootScope, $http) => {
ScheduleRecord,
FooterLinks,
function (app) {
app.controller('SchedulePageController', ($scope) => {
$scope.pageClass = 'page-schedule';
});
app.controller('GalleryPageController', ($scope) => {
$scope.pageClass = 'page-gallery';
});
+74
View File
@@ -0,0 +1,74 @@
import template from '../../templates/components/page-schedule.html';
import {populate} from '../../utils/populate';
import {getCourseNameByID} from '../../models/course';
import {indexEquals} from '../../utils/common';
import {select, choise} from '../../utils/common';
function isRequested(period, semester) {
return function (schedule) {
return schedule.period === period && schedule.semester === semester;
}
}
export default function (app) {
app.component('pageSchedule', {
template: template,
controller: function($http, $location, $routeParams, api, menu) {
this.pageClass = 'page-schedule';
menu.activate('/schedule');
let current_period = $routeParams.period;
let current_semester = $routeParams.semester;
let isScheduleRequested = current_period && current_semester;
this.schedules = [];
let getScheduleByID = (id) => choise(
this.schedules,
select(i => i._id === id)
);
api.schedule.list()
.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(select(
i => i[0] === schedule.semester,
i => i[1]
));
schedule.text = `${sem} ${schedule.period} года`;
return schedule;
});
schedules.forEach((schedule, i) => {
if (selector(schedule, i)) {
this.currentSchedule = schedules[i];
}
});
this.schedules = schedules;
this.loadSchedule(this.currentSchedule, isScheduleRequested);
});
this.loadSchedule = (s, doUpdateURL) => {
let id = s._id;
let schedule_item = getScheduleByID(id);
if (schedule_item) {
let sem = schedule_item.semester;
let period = schedule_item.period;
api.schedule.get(period, sem, true)
.success(scheduleRecord => {
this.schedule = scheduleRecord.schedule;
if (doUpdateURL) $location.url(api.schedule.buildScheduleUrl(period, sem));
});
}
};
}
});
};
+1 -2
View File
@@ -27,8 +27,7 @@ export let routes = [
},
{
name: '/schedule/:period?/:semester?',
templateUrl: '/views/schedule.html',
controller: 'SchedulePageController',
template: '<page-schedule></page-schedule>',
title: 'Расписание'
},
{
+1 -56
View File
@@ -10,60 +10,5 @@ function isRequested(period, semester) {
}
export default function (app) {
app.controller('ScheduleController', ($scope, $http, $location, $routeParams, api, menu) => {
menu.activate('/schedule');
let current_period = $routeParams.period;
let current_semester = $routeParams.semester;
let isScheduleRequested = current_period && current_semester;
$scope.schedules = [];
let getScheduleByID = (id) => choise(
$scope.schedules,
select(i => i._id === id)
);
api.schedule.list()
.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(select(
i => i[0] === schedule.semester,
i => i[1]
));
schedule.text = `${sem} ${schedule.period} года`;
return schedule;
});
schedules.forEach((schedule, i) => {
if (selector(schedule, i)) {
$scope.currentSchedule = schedules[i];
}
});
$scope.schedules = schedules;
$scope.loadSchedule($scope.currentSchedule, isScheduleRequested);
});
$scope.loadSchedule = (s, doUpdateURL) => {
let id = s._id;
let schedule_item = getScheduleByID(id);
if (schedule_item) {
let sem = schedule_item.semester;
let period = schedule_item.period;
api.schedule.get(period, sem, true)
.success(scheduleRecord => {
$scope.schedule = scheduleRecord.schedule;
if (doUpdateURL) $location.url(api.schedule.buildScheduleUrl(period, sem));
});
}
};
});
//app.controller('ScheduleController', );
};
+5 -5
View File
@@ -1,13 +1,13 @@
<div class="content content_wide" ng-controller="ScheduleController">
<div class="content content_wide">
<div class="schedule-selector">
<label> Семестр
<select
ng-model="currentSchedule"
ng-change="loadSchedule(currentSchedule, true)"
ng-options="s.text for s in schedules">
ng-model="$ctrl.currentSchedule"
ng-change="$ctrl.loadSchedule($ctrl.currentSchedule, true)"
ng-options="s.text for s in $ctrl.schedules">
</select>
</label>
</div>
<schedule schedule="schedule"></schedule>
<schedule schedule="$ctrl.schedule"></schedule>
</div>