| 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 | 2×
2×
2×
2×
2×
2×
2×
2×
2×
2×
| var ArbitraryHtmlAndMath, BS, ExerciseCard, ExerciseIdentifierLink, ExerciseStore, React, _, classnames, ref;
React = require('react');
_ = require('underscore');
classnames = require('classnames');
BS = require('react-bootstrap');
ref = require('openstax-react-components'), ArbitraryHtmlAndMath = ref.ArbitraryHtmlAndMath, ExerciseIdentifierLink = ref.ExerciseIdentifierLink;
ExerciseStore = require('../flux/exercise').ExerciseStore;
ExerciseCard = React.createClass({displayName: "ExerciseCard",
propTypes: {
displayFeedback: React.PropTypes.bool,
panelStyle: React.PropTypes.string,
header: React.PropTypes.element,
displayAllTags: React.PropTypes.bool,
hideAnswers: React.PropTypes.bool,
toggleExercise: React.PropTypes.func,
className: React.PropTypes.string,
exercise: React.PropTypes.shape({
content: React.PropTypes.object,
tags: React.PropTypes.array
}).isRequired
},
getDefaultProps: function() {
return {
panelStyle: 'default'
};
},
renderAnswer: function(answer) {
var classes;
classes = classnames('answers-answer', {
correct: answer.correctness === '1.0'
});
return React.createElement("div", {
"key": answer.id,
"className": classes
}, React.createElement("div", {
"className": "answer-letter"
}), React.createElement("div", {
"className": "answer"
}, React.createElement(ArbitraryHtmlAndMath, {
"className": "choice",
"block": false,
"html": answer.content_html
}), React.createElement(ArbitraryHtmlAndMath, {
"className": "feedback",
"block": false,
"html": answer.feedback_html
})));
},
renderTag: function(tag) {
var classes, content, isLO, ref1;
ref1 = ExerciseStore.getTagContent(tag), content = ref1.content, isLO = ref1.isLO;
classes = isLO ? (isLO ? content = "LO: " + content : void 0, 'lo-tag') : 'exercise-tag';
return React.createElement("span", {
"key": tag.id || tag.name,
"className": classes
}, content);
},
onClick: function(ev) {
var base;
if (ev.target.tagName !== 'A') {
return typeof (base = this.props).toggleExercise === "function" ? base.toggleExercise() : void 0;
}
},
render: function() {
var classes, content, question, ref1, renderedAnswers, renderedTags, tags;
content = this.props.exercise.content;
question = content.questions[0];
if (!this.props.hideAnswers) {
renderedAnswers = _(question.answers).chain().sortBy('id').map(this.renderAnswer).value();
}
tags = _.clone(this.props.exercise.tags);
if (!this.props.displayAllTags) {
tags = _.where(tags, {
is_visible: true
});
}
renderedTags = _.map(_.sortBy(tags, 'name'), this.renderTag);
renderedTags.push(React.createElement(ExerciseIdentifierLink, {
"key": 'identifier',
"exerciseId": this.props.exercise.content.uid
}));
classes = classnames('card', 'exercise', this.props.className, {
'answers-hidden': this.props.hideAnswers,
'is-displaying-feedback': this.props.displayFeedback
});
return React.createElement(BS.Panel, {
"className": classes,
"bsStyle": this.props.panelStyle,
"header": this.props.header,
"onClick": this.onClick
}, React.createElement(ArbitraryHtmlAndMath, {
"className": '-stimulus',
"block": true,
"html": content.stimulus_html
}), React.createElement(ArbitraryHtmlAndMath, {
"className": 'stem',
"block": true,
"html": question.stem_html
}), React.createElement("div", {
"className": 'answers-table'
}, renderedAnswers), React.createElement("div", {
"className": 'detailed-solution'
}, React.createElement("div", {
"className": 'header'
}, "Detailed solution"), React.createElement(ArbitraryHtmlAndMath, {
"className": "solution",
"block": true,
"html": ((ref1 = _.first(question.solutions)) != null ? ref1.content_html : void 0)
})), React.createElement("div", {
"className": 'exercise-tags'
}, renderedTags), this.props.children);
}
});
module.exports = ExerciseCard;
|