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

Statements: 86.67% (39 / 45)      Branches: 64.29% (9 / 14)      Functions: 71.43% (5 / 7)      Lines: 86.67% (39 / 45)      Ignored: none     

All files » src/components/course-settings/ » roster.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 126 127 128 129 130 131 132 133 134 135 136                                                             396× 396× 3168× 3168× 396× 396×     396×                             36× 36× 36× 36× 36× 36× 288× 288×     288× 288×               288×                         36×           36×         36×           36×     36×                            
var AddPeriodLink, BS, BindStoreMixin, CourseActions, CourseStore, DeletePeriodLink, NoPeriods, PeriodEnrollmentCode, PeriodRoster, React, RenamePeriodLink, RosterActions, RosterStore, _, classnames, ref, ref1;
 
React = require('react');
 
BS = require('react-bootstrap');
 
_ = require('underscore');
 
classnames = require('classnames');
 
BindStoreMixin = require('../bind-store-mixin');
 
NoPeriods = require('../no-periods');
 
ref = require('../../flux/course'), CourseStore = ref.CourseStore, CourseActions = ref.CourseActions;
 
ref1 = require('../../flux/roster'), RosterStore = ref1.RosterStore, RosterActions = ref1.RosterActions;
 
PeriodRoster = require('./period-roster');
 
PeriodEnrollmentCode = require('./period-enrollment-code');
 
AddPeriodLink = require('./add-period');
 
RenamePeriodLink = require('./rename-period');
 
DeletePeriodLink = require('./delete-period');
 
module.exports = React.createClass({
  displayName: 'PeriodRoster',
  mixins: [BindStoreMixin],
  bindStore: RosterStore,
  propTypes: {
    courseId: React.PropTypes.string.isRequired
  },
  getInitialState: function() {
    return {
      key: 0
    };
  },
  handleSelect: function(key) {
    return this.setState({
      key: key
    });
  },
  getActivePeriod: function(active, periods) {
    var i, id, j, len, name, period;
    for (i = j = 0, len = periods.length; j < len; i = ++j) {
      period = periods[i];
      if (i === active) {
        name = period.name;
        id = period.id;
      }
    }
    return {
      name: name,
      id: id
    };
  },
  selectPreviousTab: function() {
    var previous;
    if (this.state.key > 0) {
      previous = this.state.key - 1;
    } else {
      previous = 0;
    }
    return this.handleSelect(previous);
  },
  render: function() {
    var course, deleteButton, enrollmentButton, is_concept_coach, noPeriodMessage, periods, renameButton, tabs;
    course = CourseStore.get(this.props.courseId);
    is_concept_coach = course.is_concept_coach;
    periods = course.periods.length > 0;
    tabs = _.map(course.periods, (function(_this) {
      return function(period, index) {
        var className, name, tooltip;
        className = classnames({
          'is-trouble': period.is_trouble
        });
        tooltip = React.createElement(BS.Tooltip, null, period.name);
        name = React.createElement(BS.OverlayTrigger, {
          "placement": 'top',
          "delayShow": 1000.,
          "delayHide": 0.,
          "overlay": tooltip
        }, React.createElement("span", {
          "className": 'tab-item-period-name'
        }, period.name));
        return React.createElement(BS.TabPane, {
          "key": period.id,
          "eventKey": index,
          "tab": name,
          "className": className
        }, React.createElement(PeriodRoster, {
          "period": period,
          "courseId": _this.props.courseId,
          "activeTab": _this.getActivePeriod(_this.state.key, course.periods),
          "isConceptCoach": is_concept_coach
        }));
      };
    })(this));
    enrollmentButton = React.createElement(PeriodEnrollmentCode, {
      "activeTab": this.getActivePeriod(this.state.key, course.periods),
      "periods": course.periods,
      "bookUrl": course.webview_url,
      "bookName": course.salesforce_book_name
    });
    renameButton = React.createElement(RenamePeriodLink, {
      "courseId": this.props.courseId,
      "periods": course.periods,
      "activeTab": this.getActivePeriod(this.state.key, course.periods)
    });
    deleteButton = React.createElement(DeletePeriodLink, {
      "courseId": this.props.courseId,
      "periods": course.periods,
      "activeTab": this.getActivePeriod(this.state.key, course.periods),
      "selectPreviousTab": this.selectPreviousTab
    });
    noPeriodMessage = React.createElement(NoPeriods, {
      "noPanel": true
    });
    return React.createElement(BS.TabbedArea, {
      "activeKey": this.state.key,
      "onSelect": this.handleSelect
    }, React.createElement("div", {
      "className": 'period-edit-ui'
    }, React.createElement(AddPeriodLink, {
      "courseId": this.props.courseId,
      "periods": course.periods
    }), (periods ? renameButton : void 0), (periods ? deleteButton : void 0)), (periods && is_concept_coach ? enrollmentButton : void 0), React.createElement("div", null, React.createElement("span", {
      "className": 'course-settings-subtitle tabbed'
    }, "Roster")), (!periods ? noPeriodMessage : void 0), tabs);
  }
});