| 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 | 2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
54×
54×
54×
54×
303×
303×
303×
266×
150×
150×
150×
150×
4×
45×
54×
53×
99×
99×
99×
99×
99×
| var BS, BookLinks, CourseListingStore, CourseName, CourseStore, CurrentUserActions, NotificationsBar, React, Router, ServerErrorMonitoring, UserActionsMenu, _;
React = require('react');
BS = require('react-bootstrap');
Router = require('react-router');
_ = require('underscore');
CourseName = require('./course-name');
ServerErrorMonitoring = require('./server-error-monitoring');
UserActionsMenu = require('./user-actions-menu');
BookLinks = require('./book-links');
NotificationsBar = require('./notifications-bar');
CurrentUserActions = require('../../flux/current-user').CurrentUserActions;
CourseStore = require('../../flux/course').CourseStore;
CourseListingStore = require('../../flux/course-listing').CourseListingStore;
module.exports = React.createClass({
displayName: 'Navigation',
contextTypes: {
router: React.PropTypes.func
},
componentWillMount: function() {
return CourseListingStore.ensureLoaded();
},
getInitialState: function() {
var course;
course = this.getCourseFromParams();
return {
course: course
};
},
getCourseFromParams: function() {
var courseId;
courseId = this.context.router.getCurrentParams().courseId;
if (courseId != null) {
return CourseStore.get(courseId);
}
},
handleCourseChanges: function() {
var course;
Eif (this.isMounted()) {
course = this.getCourseFromParams();
if (!_.isEqual(course, this.state.course)) {
return this.setState({
course: course
});
}
}
},
componentDidUpdate: function() {
return this.handleCourseChanges();
},
componentDidMount: function() {
return CourseStore.on('course.loaded', this.handleCourseChanges);
},
componentWillUnmount: function() {
return CourseStore.off('course.loaded', this.handleCourseChanges);
},
render: function() {
var brand, course, courseId;
course = this.state.course;
courseId = this.context.router.getCurrentParams().courseId;
brand = React.createElement(Router.Link, {
"to": 'dashboard',
"className": 'navbar-brand'
}, React.createElement("i", {
"className": 'ui-brand-logo'
}));
return React.createElement(BS.Navbar, {
"brand": brand,
"toggleNavKey": 0.,
"fixedTop": true,
"fluid": true
}, React.createElement(BS.CollapsibleNav, {
"eventKey": 0.
}, React.createElement(BS.Nav, {
"navbar": true
}, React.createElement(CourseName, {
"course": course
}), React.createElement(BookLinks, {
"courseId": courseId
})), React.createElement(BS.Nav, {
"right": true,
"navbar": true
}, React.createElement(UserActionsMenu, {
"courseId": courseId,
"course": this.getCourseFromParams()
}))), React.createElement(ServerErrorMonitoring, null), React.createElement(NotificationsBar, null));
}
});
|