| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 | 2×
2×
2×
2×
2×
2×
2×
108×
756×
108×
108×
108×
108×
108×
108×
108×
108×
864×
864×
756×
108×
108×
108×
108×
108×
108×
| var BS, CourseGroupingLabel, CourseStore, React, RosterActions, RosterStore, ref;
React = require('react');
BS = require('react-bootstrap');
CourseGroupingLabel = require('../course-grouping-label');
ref = require('../../flux/roster'), RosterActions = ref.RosterActions, RosterStore = ref.RosterStore;
CourseStore = require('../../flux/course').CourseStore;
module.exports = React.createClass({
displayName: 'ChangePeriodLink',
propTypes: {
courseId: React.PropTypes.string.isRequired,
student: React.PropTypes.object.isRequired
},
updatePeriod: function(periodId) {
if (!this.isSaving()) {
return RosterActions.save(this.props.student.id, {
period_id: periodId
});
}
},
isSaving: function() {
return RosterStore.isSaving(this.props.student.id);
},
renderPeriod: function(period) {
return React.createElement(BS.NavItem, {
"key": period.id,
"eventKey": period.id
}, period.name);
},
selectNewPeriod: function() {
var course, period, title;
course = CourseStore.get(this.props.courseId);
title = this.isSaving() ? React.createElement("span", null, React.createElement("i", {
"className": 'fa fa-spinner fa-spin'
}), " Saving...") : React.createElement("span", null, "Move to ", React.createElement(CourseGroupingLabel, {
"courseId": this.props.courseId,
"lowercase": true
}), ":");
return React.createElement(BS.Popover, React.__spread({
"className": 'change-period',
"title": title
}, this.props), React.createElement(BS.Nav, {
"stacked": true,
"bsStyle": 'pills',
"onSelect": this.updatePeriod
}, (function() {
var i, len, ref1, results;
ref1 = course.periods;
results = [];
for (i = 0, len = ref1.length; i < len; i++) {
period = ref1[i];
if (period.id !== this.props.student.period_id) {
results.push(this.renderPeriod(period));
} else {
results.push(void 0);
}
}
return results;
}).call(this)));
},
render: function() {
var course;
course = CourseStore.get(this.props.courseId);
Iif (course.periods.length === 1) {
return null;
}
return React.createElement(BS.OverlayTrigger, {
"rootClose": true,
"trigger": 'click',
"placement": 'left',
"overlay": this.selectNewPeriod()
}, React.createElement("a", null, React.createElement("i", {
"className": 'fa fa-clock-o'
}), " Change ", React.createElement(CourseGroupingLabel, {
"courseId": this.props.courseId
})));
}
});
|