| 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 | 2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
13×
35×
35×
35×
31×
4×
4×
4×
4×
1×
3×
48×
48×
48×
48×
48×
2×
| var BS, BrowseTheBook, CourseAddMenuMixin, CourseCalendarHeader, PracticeButton, React, Router, TimeHelper, TimeStore, _, moment, twix;
moment = require('moment');
twix = require('twix');
_ = require('underscore');
React = require('react');
BS = require('react-bootstrap');
Router = require('react-router');
CourseAddMenuMixin = require('./add-menu-mixin');
PracticeButton = require('../buttons/practice-button');
BrowseTheBook = require('../buttons/browse-the-book');
TimeStore = require('../../flux/time').TimeStore;
TimeHelper = require('../../helpers/time');
CourseCalendarHeader = React.createClass({
displayName: 'CourseCalendarHeader',
propTypes: {
duration: React.PropTypes.oneOf(['month', 'week', 'day']).isRequired,
setDate: React.PropTypes.func,
date: TimeHelper.PropTypes.moment,
format: React.PropTypes.string.isRequired
},
mixins: [CourseAddMenuMixin],
contextTypes: {
router: React.PropTypes.func
},
getDefaultProps: function() {
return {
duration: 'month',
format: 'MMMM YYYY'
};
},
getInitialState: function() {
return {
date: this.props.date || moment(TimeStore.getNow())
};
},
componentDidUpdate: function() {
var setDate;
setDate = this.props.setDate;
return typeof setDate === "function" ? setDate(this.state.date) : void 0;
},
componentWillReceiveProps: function(nextProps) {
Iif (!moment(nextProps.date).isSame(this.state.date, 'month')) {
return this.setState({
date: nextProps.date
});
}
},
handleNavigate: function(subtractOrAdd, clickEvent) {
var duration, ref, setDate;
ref = this.props, duration = ref.duration, setDate = ref.setDate;
clickEvent.preventDefault();
return this.setState({
date: this.state.date.clone()[subtractOrAdd](1, duration)
});
},
handleNext: function(clickEvent) {
return this.handleNavigate('add', clickEvent);
},
handlePrevious: function(clickEvent) {
return this.handleNavigate('subtract', clickEvent);
},
render: function() {
var courseId, date, duration, format, ref;
date = this.state.date;
ref = this.props, format = ref.format, duration = ref.duration;
courseId = this.context.router.getCurrentParams().courseId;
return React.createElement("div", {
"className": 'calendar-header'
}, React.createElement(BS.Row, {
"className": 'calendar-actions'
}, React.createElement(BrowseTheBook, {
"bsStyle": 'default',
"courseId": courseId
}), React.createElement(Router.Link, {
"className": 'btn btn-default',
"to": 'viewTeacherPerformanceForecast',
"params": {
courseId: courseId
}
}, "Performance Forecast"), React.createElement(Router.Link, {
"className": 'btn btn-default',
"to": 'viewScores',
"params": {
courseId: courseId
}
}, "Student Scores")), React.createElement(BS.Row, null, React.createElement(BS.Col, {
"xs": 4.
}, React.createElement(BS.DropdownButton, {
"className": 'add-assignment',
"title": 'Add Assignment',
"bsStyle": 'primary'
}, this.renderAddActions())), React.createElement(BS.Col, {
"xs": 4.,
"className": 'calendar-header-label'
}, React.createElement("a", {
"href": '#',
"className": 'calendar-header-control previous',
"onClick": this.handlePrevious
}, React.createElement("i", {
"className": 'fa fa-caret-left'
})), date.format(format), React.createElement("a", {
"href": '#',
"className": 'calendar-header-control next',
"onClick": this.handleNext
}, React.createElement("i", {
"className": 'fa fa-caret-right'
})))));
}
});
module.exports = CourseCalendarHeader;
|