Code coverage report for src/components/student-dashboard/events-panel.cjsx

Statements: 86.96% (20 / 23)      Branches: 57.14% (4 / 7)      Functions: 100% (3 / 3)      Lines: 86.96% (20 / 23)      Ignored: none     

All files » src/components/student-dashboard/ » events-panel.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                                               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));
  }
});