Code coverage report for src/components/course-settings/change-period.cjsx

Statements: 89.66% (26 / 29)      Branches: 50% (4 / 8)      Functions: 83.33% (5 / 6)      Lines: 89.66% (26 / 29)      Ignored: none     

All files » src/components/course-settings/ » change-period.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                                       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
    })));
  }
});