| 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 | 2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
60×
18×
42×
168×
84×
84×
60×
| var BS, EventRow, EventTaskRow, ExternalRow, GenericEventRow, HomeworkRow, React, ReadingRow, Time, _, moment;
React = require('react');
BS = require('react-bootstrap');
Time = require('../time');
moment = require('moment');
ReadingRow = require('./reading-row');
HomeworkRow = require('./homework-row');
ExternalRow = require('./external-row');
EventTaskRow = require('./event-task-row');
EventRow = require('./event-row');
GenericEventRow = require('./generic-event-row');
_ = require('underscore');
module.exports = React.createClass({
displayName: 'EventsPanel',
propTypes: {
events: React.PropTypes.array.isRequired,
courseId: React.PropTypes.string.isRequired,
startAt: React.PropTypes.object,
endAt: React.PropTypes.object,
limit: React.PropTypes.number,
title: React.PropTypes.string,
className: React.PropTypes.string
},
renderTitle: function() {
if (this.props.title) {
return React.createElement("span", {
"className": "title"
}, this.props.title);
} else {
return React.createElement("span", {
"className": "date-range"
}, React.createElement(Time, {
"date": moment(this.props.startAt).toDate()
}), "–", React.createElement(Time, {
"date": moment(this.props.endAt).toDate()
}));
}
},
renderEvent: function(event) {
switch (event.type) {
case 'reading':
return React.createElement(ReadingRow, {
"courseId": this.props.courseId,
"key": event.id,
"event": event
});
case 'homework':
return React.createElement(HomeworkRow, {
"courseId": this.props.courseId,
"key": event.id,
"event": event
});
case 'external':
return React.createElement(ExternalRow, {
"courseId": this.props.courseId,
"key": event.id,
"event": event
});
case 'event':
return React.createElement(EventTaskRow, {
"courseId": this.props.courseId,
"key": event.id,
"event": event
});
default:
return React.createElement(GenericEventRow, {
"courseId": this.props.courseId,
"key": event.id,
"event": event
});
}
},
render: function() {
return React.createElement(BS.Panel, {
"className": this.props.className
}, React.createElement("div", {
"className": "row labels"
}, React.createElement(BS.Col, {
"xs": 12.,
"sm": 7.
}, this.renderTitle()), React.createElement(BS.Col, {
"xs": 5.,
"xsOffset": 2.,
"smOffset": 0.,
"sm": 3.,
"className": 'progress-label'
}, "Progress"), React.createElement(BS.Col, {
"xs": 5.,
"sm": 2.,
"className": 'due-at-label'
}, "Due (7:00am)")), _.map(this.props.events, this.renderEvent));
}
});
|