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

Statements: 31.82% (7 / 22)      Branches: 0% (0 / 6)      Functions: 0% (0 / 6)      Lines: 31.82% (7 / 22)      Ignored: none     

All files » src/components/student-dashboard/ » dont-forget-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                                                                                                                                          
var BS, EmptyPanel, React, StudentDashboardStore, _;
 
React = require('react');
 
BS = require('react-bootstrap');
 
StudentDashboardStore = require('../../flux/student-dashboard').StudentDashboardStore;
 
EmptyPanel = require('./empty-panel');
 
_ = require('underscore');
 
module.exports = React.createClass({
  displayName: 'DontForgetPanel',
  propTypes: {
    courseId: React.PropTypes.string.isRequired
  },
  viewFeedback: function(taskId) {
    return alert("TODO: View Feedback for task ID: " + taskId + " in course ID: " + this.props.courseId);
  },
  viewRecovery: function(taskId) {
    return alert("TODO: View Recovery for task ID: " + taskId + " in course ID: " + this.props.courseId);
  },
  recoverData: function(event) {
    return {
      name: 'Recovery',
      summary: event.exercise_count + " available",
      icon: 'recover',
      clickHandler: this.viewRecovery
    };
  },
  feedbackData: function(event) {
    var summary;
    summary = event.correct_exercise_count ? event.correct_exercise_count + "/" + event.exercise_count + " correct" : event.complete_exercise_count + "/" + event.exercise_count + " complete";
    return {
      name: 'Feedback',
      summary: summary,
      icon: 'feedback',
      clickHandler: this.viewFeedback
    };
  },
  renderBlock: function(event, i, all) {
    var data, feedback;
    feedback = event.complete_exercise_count + "/" + event.exercise_count + " complete";
    data = i % 2 ? this.feedbackData(event) : this.recoverData(event);
    return React.createElement(BS.Col, {
      "key": event.id,
      "xs": 12 / all.length
    }, React.createElement("div", null, React.createElement("i", {
      "className": "icon-xlg icon-" + data.icon,
      "onClick": _.partial(data.clickHandler, event.id)
    }), React.createElement("h3", {
      "className": 'heading'
    }, "View ", data.name), React.createElement("div", {
      "className": 'title'
    }, event.title), React.createElement("div", {
      "className": 'summary'
    }, data.summary)));
  },
  render: function() {
    var events;
    events = _.last(StudentDashboardStore.pastDueEvents(this.props.courseId), 4);
    if (events.length) {
      return React.createElement(BS.Panel, {
        "className": 'dont-forget',
        "header": "Don't Forget"
      }, _.map(events, this.renderBlock));
    } else {
      return React.createElement(EmptyPanel, {
        "title": "Don't Forget"
      }, "No new reminders");
    }
  }
});