Code coverage report for src/components/course-calendar/header.cjsx

Statements: 96.88% (31 / 32)      Branches: 50% (3 / 6)      Functions: 100% (8 / 8)      Lines: 96.88% (31 / 32)      Ignored: none     

All files » src/components/course-calendar/ » header.cjsx
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                                                           13×         35× 35× 35×     31×                             48× 48× 48× 48× 48×                                                                                          
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;