@instructure/quiz-core 17.58.2-rc.5 → 17.58.2-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/es/index.js +1 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +2 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +64 -0
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +3 -0
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +2 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +75 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +6 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -0
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +18 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +245 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +9 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +55 -57
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +68 -0
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +13 -18
  15. package/es/reporting/components/resources/ReportCard/index.js +1 -1
  16. package/lib/index.js +107 -98
  17. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/index.js +11 -0
  18. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +83 -0
  19. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/theme.js +10 -0
  20. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/index.js +11 -0
  21. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +95 -0
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/theme.js +13 -0
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +11 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/popoverContent.js +27 -0
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +274 -0
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +16 -0
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +59 -62
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +91 -0
  29. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +15 -20
  30. package/lib/reporting/components/resources/ReportCard/index.js +1 -1
  31. package/package.json +9 -9
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _presenter = require("./presenter.js");
9
+
10
+ var _default = _presenter.AnalysisPopoverMetric;
11
+ exports.default = _default;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.AnalysisPopoverMetric = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _uiMetric = require("@instructure/ui-metric");
23
+
24
+ var _utils = require("../utils.js");
25
+
26
+ var _index = _interopRequireDefault(require("../MetricPopover/index.js"));
27
+
28
+ var _uiThemeable = require("@instructure/ui-themeable");
29
+
30
+ var _theme = _interopRequireDefault(require("./theme.js"));
31
+
32
+ var _propTypes = _interopRequireDefault(require("prop-types"));
33
+
34
+ var _dec, _class, _class2, _temp;
35
+
36
+ var styles = {
37
+ componentId: 'bLVhr',
38
+ template: function template(theme) {
39
+ return "\n\n.bLVhr_dqHR{padding-left:5px}\n\n.bLVhr_eckF{margin:0;max-width:159px;text-transform:uppercase}";
40
+ },
41
+ 'popoverContainer': 'bLVhr_dqHR',
42
+ 'metricLabel': 'bLVhr_eckF'
43
+ };
44
+ var AnalysisPopoverMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
45
+ (0, _inherits2.default)(AnalysisPopoverMetric, _Component);
46
+
47
+ var _super = (0, _createSuper2.default)(AnalysisPopoverMetric);
48
+
49
+ function AnalysisPopoverMetric() {
50
+ (0, _classCallCheck2.default)(this, AnalysisPopoverMetric);
51
+ return _super.apply(this, arguments);
52
+ }
53
+
54
+ (0, _createClass2.default)(AnalysisPopoverMetric, [{
55
+ key: "renderLabelWithPopover",
56
+ value: function renderLabelWithPopover(texts) {
57
+ return /*#__PURE__*/_react.default.createElement("p", {
58
+ className: styles.metricLabel
59
+ }, this.props.label, /*#__PURE__*/_react.default.createElement("span", {
60
+ className: styles.popoverContainer
61
+ }, /*#__PURE__*/_react.default.createElement(_index.default, texts)));
62
+ }
63
+ }, {
64
+ key: "render",
65
+ value: function render() {
66
+ var _this$props = this.props,
67
+ metricKey = _this$props.metricKey,
68
+ popoverDescription = _this$props.popoverDescription,
69
+ value = _this$props.value;
70
+ return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
71
+ theme: {
72
+ valueFontWeight: 500,
73
+ padding: '0'
74
+ },
75
+ textAlign: "start",
76
+ key: metricKey,
77
+ renderLabel: this.renderLabelWithPopover(popoverDescription),
78
+ renderValue: (0, _utils.getSanitizedMetricValue)(value)
79
+ });
80
+ }
81
+ }]);
82
+ AnalysisPopoverMetric.displayName = "AnalysisPopoverMetric";
83
+ return AnalysisPopoverMetric;
84
+ }(_react.Component), _class2.propTypes = {
85
+ metricKey: _propTypes.default.string.isRequired,
86
+ label: _propTypes.default.string.isRequired,
87
+ value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired,
88
+ popoverDescription: _propTypes.default.shape({
89
+ title: _propTypes.default.string,
90
+ subtitle: _propTypes.default.string,
91
+ body: _propTypes.default.string,
92
+ screenReaderLabel: _propTypes.default.string
93
+ }).isRequired
94
+ }, _temp)) || _class);
95
+ exports.AnalysisPopoverMetric = AnalysisPopoverMetric;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator(_ref) {
9
+ var spacing = _ref.spacing;
10
+ return {
11
+ headerPaddingBottom: spacing.medium
12
+ };
13
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _presenter = require("./presenter.js");
9
+
10
+ var _default = _presenter.NewItemAnalysis;
11
+ exports.default = _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pearsonCorrelation = exports.discriminationIndex = exports.difficultyIndex = void 0;
7
+ var difficultyIndex = {
8
+ title: 'Difficulty title',
9
+ subtitle: 'difficulty subtitle',
10
+ body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi elementum interdum risus sed condimentum. Duis vel nisi at quam luctus dictum id eu risus. Donec eget tristique justo',
11
+ screenReaderLabel: 'Lorem one'
12
+ };
13
+ exports.difficultyIndex = difficultyIndex;
14
+ var discriminationIndex = {
15
+ title: 'Discrimination title',
16
+ subtitle: 'discrimination subtitle',
17
+ body: 'Lorem ipsum dolor sit amet',
18
+ screenReaderLabel: 'Lorem two'
19
+ };
20
+ exports.discriminationIndex = discriminationIndex;
21
+ var pearsonCorrelation = {
22
+ title: 'Pearson correlation title',
23
+ subtitle: 'pearson correlation subtitle',
24
+ body: 'Lorem ipsum dolor sit amet',
25
+ screenReaderLabel: 'Lorem three'
26
+ };
27
+ exports.pearsonCorrelation = pearsonCorrelation;
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.NewItemAnalysis = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
21
+
22
+ var _uiHeading = require("@instructure/ui-heading");
23
+
24
+ var _react = _interopRequireWildcard(require("react"));
25
+
26
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
27
+
28
+ var _index = _interopRequireDefault(require("../../../../../common/components/shared/ExpandButton/index.js"));
29
+
30
+ var _uiText = require("@instructure/ui-text");
31
+
32
+ var _uiThemeable = require("@instructure/ui-themeable");
33
+
34
+ var _theme = _interopRequireDefault(require("./theme.js"));
35
+
36
+ var _popoverContent = require("./popoverContent.js");
37
+
38
+ var _index2 = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
39
+
40
+ var _index3 = _interopRequireDefault(require("../AnalysisMetric/index.js"));
41
+
42
+ var _index4 = _interopRequireDefault(require("../AnalysisPopoverMetric/index.js"));
43
+
44
+ var _propTypes = _interopRequireDefault(require("prop-types"));
45
+
46
+ var _classnames2 = _interopRequireDefault(require("classnames"));
47
+
48
+ var _interactionTypeMetadata = require("../../../../../common/util/interactionTypeMetadata.js");
49
+
50
+ var _dec, _class, _class2, _temp;
51
+
52
+ var styles = {
53
+ componentId: 'dcJyB',
54
+ template: function template(theme) {
55
+ return "\n\n.dcJyB_eDnN{display:flex;flex-basis:45%;flex-direction:column;overflow:hidden}\n\n.dcJyB_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.dcJyB_eIAv{display:flex;position:relative}\n\n.dcJyB_ePHw{flex-basis:91%;overflow:hidden;padding-bottom:10px;text-overflow:ellipsis;white-space:nowrap}\n\n.dcJyB_dzsH{overflow:visible;text-overflow:unset;white-space:normal}\n\n.dcJyB_byoJ{position:absolute;right:7px;top:-8px}\n\n.dcJyB_evBt{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}\n\n.dcJyB_pAQb{display:flex;flex-direction:column;height:60px}\n\n.dcJyB_zefc{display:flex;flex-basis:55%;justify-content:flex-end}\n\n.dcJyB_dPzc{flex-direction:column}\n\n.dcJyB_dPzc,.dcJyB_dzph{display:flex;flex-basis:100%}\n\n.dcJyB_dzph{align-items:flex-start;box-sizing:border-box;column-gap:5px;justify-content:space-between;padding:0 30px 0 25px}\n\n.dcJyB_eobd{padding-top:1rem}\n\n.dcJyB_NpIG{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}\n\n@media screen and (--tabletBreakPoint){.dcJyB_zefc{flex-basis:100%;justify-content:flex-start}.dcJyB_ePHw{flex-basis:94%}.dcJyB_eDnN{flex-basis:100%}.dcJyB_dzph{padding:0}.dcJyB_eDnN h3{padding-right:30px}.dcJyB_NpIG{right:17px}.dcJyB_eIAv{margin-bottom:20px}.dcJyB_byoJ{right:-7px}.dcJyB_dzph{flex-wrap:wrap}}");
56
+ },
57
+ 'heading': 'dcJyB_eDnN',
58
+ 'cardWrapper': 'dcJyB_eKXQ',
59
+ 'bodyPresentation': 'dcJyB_eIAv',
60
+ 'bodyExcerpt': 'dcJyB_ePHw',
61
+ 'bodyExcerptExpanded': 'dcJyB_dzsH',
62
+ 'bodyExpandButtonWrapper': 'dcJyB_byoJ',
63
+ 'innerWrapper': 'dcJyB_evBt',
64
+ 'expandableInnerWrapper': 'dcJyB_pAQb',
65
+ 'metricsWithControls': 'dcJyB_zefc',
66
+ 'metricGroup': 'dcJyB_dPzc',
67
+ 'metricsRow': 'dcJyB_dzph',
68
+ 'metricsRowPaginated': 'dcJyB_eobd',
69
+ 'itemCardToggleButtonWrapper': 'dcJyB_NpIG'
70
+ };
71
+ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
72
+ (0, _inherits2.default)(NewItemAnalysis, _Component);
73
+
74
+ var _super = (0, _createSuper2.default)(NewItemAnalysis);
75
+
76
+ function NewItemAnalysis() {
77
+ var _this;
78
+
79
+ (0, _classCallCheck2.default)(this, NewItemAnalysis);
80
+
81
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
82
+ args[_key] = arguments[_key];
83
+ }
84
+
85
+ _this = _super.call.apply(_super, [this].concat(args));
86
+ _this.state = {
87
+ bodyToggable: false,
88
+ bodyExpanded: false,
89
+ itemExpanded: false,
90
+ metricsExpanded: false
91
+ };
92
+
93
+ _this.mapInteractionTypeToTranslation = function (interactionType) {
94
+ return (0, _interactionTypeMetadata.interactionTypesNameDictionary)({
95
+ slug: interactionType,
96
+ name: (0, _formatMessage.default)('Question')
97
+ });
98
+ };
99
+
100
+ _this.buildItemCardHeadingId = function () {
101
+ return "itemCardHeading-".concat(_this.props.itemAnalysis.metadata.item_id);
102
+ };
103
+
104
+ _this.buildItemCardBodyId = function () {
105
+ return "itemCardBody-".concat(_this.props.itemAnalysis.metadata.item_id);
106
+ };
107
+
108
+ _this.bodyExceedsLimit = function (bodyElement, headingElement) {
109
+ if (!bodyElement || !headingElement) {
110
+ return;
111
+ }
112
+
113
+ return bodyElement.scrollWidth > headingElement.clientWidth || _this.state.bodyExpanded;
114
+ };
115
+
116
+ _this.handleBodyWidth = function () {
117
+ var bodyElement = document.getElementById(_this.buildItemCardBodyId());
118
+ var headingElement = document.getElementById(_this.buildItemCardHeadingId());
119
+
120
+ _this.setState({
121
+ bodyToggable: _this.bodyExceedsLimit(bodyElement, headingElement)
122
+ });
123
+ };
124
+
125
+ _this.handleToggle = function () {
126
+ _this.setState({
127
+ metricsExpanded: !_this.state.metricsExpanded
128
+ });
129
+
130
+ _this.setState({
131
+ itemExpanded: !_this.state.itemExpanded
132
+ });
133
+ };
134
+
135
+ _this.handleBodyToggle = function () {
136
+ _this.setState({
137
+ bodyExpanded: !_this.state.bodyExpanded
138
+ });
139
+ };
140
+
141
+ _this.renderExpandItemCardButton = function () {
142
+ return /*#__PURE__*/_react.default.createElement("div", {
143
+ className: styles.itemCardToggleButtonWrapper
144
+ }, /*#__PURE__*/_react.default.createElement(_index.default, {
145
+ onClick: _this.handleToggle,
146
+ title: _this.state.metricsExpanded ? (0, _formatMessage.default)('collapse item card') : (0, _formatMessage.default)('expand item card'),
147
+ isExpanded: _this.state.metricsExpanded
148
+ }));
149
+ };
150
+
151
+ _this.renderBodyToggleButton = function () {
152
+ return /*#__PURE__*/_react.default.createElement("div", {
153
+ className: styles.bodyExpandButtonWrapper
154
+ }, /*#__PURE__*/_react.default.createElement(_index.default, {
155
+ onClick: _this.handleBodyToggle,
156
+ title: _this.state.bodyExpanded ? (0, _formatMessage.default)('collapse question stem') : (0, _formatMessage.default)('expand question stem'),
157
+ isExpanded: _this.state.bodyExpanded
158
+ }));
159
+ };
160
+
161
+ _this.renderExpanded = function () {
162
+ var scores = _this.props.itemAnalysis.scores;
163
+ return /*#__PURE__*/_react.default.createElement("div", {
164
+ className: [styles.metricsRow, styles.metricsRowPaginated].join(' ')
165
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
166
+ metricKey: "pearson_correlation",
167
+ label: (0, _formatMessage.default)('Pearson Correlation Coefficient'),
168
+ value: _formatMessage.default.number(scores.pearson_correlation),
169
+ popoverDescription: _popoverContent.pearsonCorrelation
170
+ }));
171
+ };
172
+
173
+ return _this;
174
+ }
175
+
176
+ (0, _createClass2.default)(NewItemAnalysis, [{
177
+ key: "componentDidMount",
178
+ value: function componentDidMount() {
179
+ this.handleBodyWidth();
180
+ window.addEventListener('resize', this.handleBodyWidth);
181
+ }
182
+ }, {
183
+ key: "componentWillUnmount",
184
+ value: function componentWillUnmount() {
185
+ window.removeEventListener('resize', this.handleBodyWidth);
186
+ }
187
+ }, {
188
+ key: "render",
189
+ value: function render() {
190
+ var _this$props$itemAnaly = this.props.itemAnalysis,
191
+ metadata = _this$props$itemAnaly.metadata,
192
+ scores = _this$props$itemAnaly.scores;
193
+ var bodyClass = (0, _classnames2.default)(styles.bodyExcerpt, (0, _defineProperty2.default)({}, styles.bodyExcerptExpanded, this.state.bodyExpanded));
194
+ var headingId = this.buildItemCardHeadingId();
195
+ var bodyId = this.buildItemCardBodyId();
196
+ return /*#__PURE__*/_react.default.createElement(_index2.default, {
197
+ className: styles.cardWrapper
198
+ }, /*#__PURE__*/_react.default.createElement("div", {
199
+ className: styles.innerWrapper
200
+ }, /*#__PURE__*/_react.default.createElement("div", {
201
+ id: headingId,
202
+ className: styles.heading
203
+ }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
204
+ margin: "0 0 small 0",
205
+ level: "h3",
206
+ weight: "bold",
207
+ color: "primary"
208
+ }, metadata.item_title), /*#__PURE__*/_react.default.createElement(_uiText.Text, {
209
+ size: "small",
210
+ weight: "bold",
211
+ transform: "capitalize"
212
+ }, this.mapInteractionTypeToTranslation(metadata.interaction_type)), /*#__PURE__*/_react.default.createElement("div", {
213
+ id: "itemBody",
214
+ className: styles.bodyPresentation
215
+ }, /*#__PURE__*/_react.default.createElement("div", {
216
+ id: bodyId,
217
+ className: bodyClass
218
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
219
+ size: "small"
220
+ }, metadata.item_body)), this.state.bodyToggable && this.renderBodyToggleButton())), /*#__PURE__*/_react.default.createElement("div", {
221
+ className: styles.metricsWithControls
222
+ }, /*#__PURE__*/_react.default.createElement("div", {
223
+ className: styles.metricGroup
224
+ }, /*#__PURE__*/_react.default.createElement("div", {
225
+ className: styles.metricsRow
226
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
227
+ metricKey: "difficulty_index",
228
+ label: (0, _formatMessage.default)('Item Difficulty'),
229
+ value: _formatMessage.default.number(scores.difficulty_index),
230
+ popoverDescription: _popoverContent.difficultyIndex
231
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
232
+ metricKey: "mean",
233
+ label: (0, _formatMessage.default)('Mean Earned Points'),
234
+ value: _formatMessage.default.number(scores.mean)
235
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
236
+ metricKey: "median",
237
+ label: (0, _formatMessage.default)('Median Earned Points'),
238
+ value: _formatMessage.default.number(scores.median)
239
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
240
+ metricKey: "discrimination_index",
241
+ label: (0, _formatMessage.default)('Discrimination Index'),
242
+ value: _formatMessage.default.number(scores.discrimination_index),
243
+ popoverDescription: _popoverContent.discriminationIndex
244
+ }), this.renderExpandItemCardButton()), this.state.metricsExpanded && this.renderExpanded()))), this.state.itemExpanded && /*#__PURE__*/_react.default.createElement("div", {
245
+ className: styles.expandableInnerWrapper
246
+ }));
247
+ }
248
+ }]);
249
+ NewItemAnalysis.displayName = "NewItemAnalysis";
250
+ return NewItemAnalysis;
251
+ }(_react.Component), _class2.propTypes = {
252
+ itemAnalysis: _propTypes.default.shape({
253
+ attempts: _propTypes.default.shape({
254
+ students_responded: _propTypes.default.number,
255
+ students_without_response: _propTypes.default.number
256
+ }),
257
+ metadata: _propTypes.default.shape({
258
+ interaction_type: _propTypes.default.string,
259
+ item_body: _propTypes.default.string,
260
+ item_id: _propTypes.default.string,
261
+ item_title: _propTypes.default.string
262
+ }),
263
+ scores: _propTypes.default.shape({
264
+ difficulty_index: _propTypes.default.number,
265
+ discrimination_index: _propTypes.default.number,
266
+ mean: _propTypes.default.number,
267
+ median: _propTypes.default.number,
268
+ pearson_correlation: _propTypes.default.number,
269
+ points_possible: _propTypes.default.number,
270
+ quartile_distribution: _propTypes.default.arrayOf(_propTypes.default.number)
271
+ })
272
+ }).isRequired
273
+ }, _temp)) || _class);
274
+ exports.NewItemAnalysis = NewItemAnalysis;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator(_ref) {
9
+ var spacing = _ref.spacing,
10
+ breakpoints = _ref.breakpoints;
11
+ return {
12
+ tabletBreakPoint: "max-width: ".concat(breakpoints.large),
13
+ cardWrapperPadding: spacing.medium,
14
+ viewPadding: spacing.small
15
+ };
16
+ }
@@ -19,8 +19,6 @@ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
19
19
 
20
20
  var _uiHeading = require("@instructure/ui-heading");
21
21
 
22
- var _uiMetric = require("@instructure/ui-metric");
23
-
24
22
  var _react = _interopRequireWildcard(require("react"));
25
23
 
26
24
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
@@ -33,43 +31,39 @@ var _uiThemeable = require("@instructure/ui-themeable");
33
31
 
34
32
  var _theme = _interopRequireDefault(require("./theme.js"));
35
33
 
36
- var _utils = require("../utils.js");
37
-
38
- var _index2 = _interopRequireDefault(require("../MetricPopover/index.js"));
39
-
40
34
  var _formatTimespan = require("../../../../../common/util/formatTimespan.js");
41
35
 
42
36
  var _propTypes = _interopRequireDefault(require("prop-types"));
43
37
 
44
- var _index3 = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
38
+ var _index2 = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
39
+
40
+ var _index3 = _interopRequireDefault(require("../AnalysisPopoverMetric/index.js"));
41
+
42
+ var _index4 = _interopRequireDefault(require("../AnalysisMetric/index.js"));
45
43
 
46
44
  var _presenter = require("../charts/ScoreDistribution/presenter.js");
47
45
 
48
46
  var _dec, _class, _class2, _temp;
49
47
 
50
48
  var styles = {
51
- componentId: 'bsfUh',
49
+ componentId: 'ePPpE',
52
50
  template: function template(theme) {
53
- return "\n\n.bsfUh_eDnN{display:flex;justify-content:space-between;padding-bottom:".concat(theme.headingPadding || 'inherit', "}\n\n.bsfUh_eKXQ{padding:").concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.bsfUh_crZr{padding-top:").concat(theme.metricGroupPaddingTop || 'inherit', "}\n\n.bsfUh_eckF{text-transform:uppercase}\n\n.bsfUh_dPzc,.bsfUh_cpZE{column-gap:").concat(theme.metricsColumnGap || 'inherit', ";display:flex;flex-wrap:wrap;justify-content:flex-start;row-gap:1.5rem}\n\n.bsfUh_dPzc{margin-left:-8px}\n\n.bsfUh_dqHR{padding-left:5px}\n\n.bsfUh_bTHH{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}");
51
+ return "\n\n.ePPpE_eDnN{display:flex;justify-content:space-between;padding-bottom:".concat(theme.headingPadding || 'inherit', "}\n\n.ePPpE_eKXQ{padding:").concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.ePPpE_crZr{padding-top:").concat(theme.metricGroupPaddingTop || 'inherit', "}\n\n.ePPpE_bTHH{position:absolute;right:").concat(theme.viewPadding || 'inherit', ";top:").concat(theme.viewPadding || 'inherit', "}\n\n.ePPpE_dPzc,.ePPpE_cpZE{column-gap:").concat(theme.metricsColumnGap || 'inherit', ";display:flex;flex-wrap:wrap;justify-content:flex-start;row-gap:1.5rem}\n\n.ePPpE_dPzc{margin-left:-8px}");
54
52
  },
55
- 'heading': 'bsfUh_eDnN',
56
- 'cardWrapper': 'bsfUh_eKXQ',
57
- 'container': 'bsfUh_crZr',
58
- 'metricLabel': 'bsfUh_eckF',
59
- 'metricGroup': 'bsfUh_dPzc',
60
- 'metricsWrapper': 'bsfUh_cpZE',
61
- 'popoverContainer': 'bsfUh_dqHR',
62
- 'expandButtonContainer': 'bsfUh_bTHH'
53
+ 'heading': 'ePPpE_eDnN',
54
+ 'cardWrapper': 'ePPpE_eKXQ',
55
+ 'container': 'ePPpE_crZr',
56
+ 'expandButtonContainer': 'ePPpE_bTHH',
57
+ 'metricGroup': 'ePPpE_dPzc',
58
+ 'metricsWrapper': 'ePPpE_cpZE'
63
59
  };
64
60
  var stdDevPopoverTexts = {
65
- metricLabel: 'standard deviation',
66
61
  title: 'Lorem ipsum ',
67
62
  subtitle: 'subtitle',
68
63
  body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor',
69
64
  screenReaderLabel: 'standard deviation tooltip'
70
65
  };
71
66
  var cronbachsAlphaPopoverTexts = {
72
- metricLabel: 'cronbach\'s alpha',
73
67
  title: 'Lorem ipsum ',
74
68
  subtitle: 'subtitle',
75
69
  body: 'cronbach\'s alpha description',
@@ -109,50 +103,28 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
109
103
  className: styles.container
110
104
  }, /*#__PURE__*/_react.default.createElement("div", {
111
105
  className: styles.metricGroup
112
- }, _this.renderMetric('median_percentage', (0, _formatMessage.default)('median score'), _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.median_percentage), '%'), _this.renderMetricWithPopover('stddev', stdDevPopoverTexts, _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.stddev)), _this.renderMetricWithPopover('cronbachs_alpha', cronbachsAlphaPopoverTexts, _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.cronbachs_alpha))));
106
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
107
+ metricKey: "median_percentage",
108
+ label: (0, _formatMessage.default)('Median Score'),
109
+ value: _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.median_percentage),
110
+ suffix: "%"
111
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
112
+ metricKey: "stddev",
113
+ value: _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.stddev),
114
+ label: (0, _formatMessage.default)('Standard Deviation'),
115
+ popoverDescription: stdDevPopoverTexts
116
+ }), /*#__PURE__*/_react.default.createElement(_index3.default, {
117
+ metricKey: "cronbachs_alpha",
118
+ value: _formatMessage.default.number(scores === null || scores === void 0 ? void 0 : scores.cronbachs_alpha),
119
+ label: (0, _formatMessage.default)('Cronbach\'s Alpha'),
120
+ popoverDescription: cronbachsAlphaPopoverTexts
121
+ })));
113
122
  };
114
123
 
115
124
  return _this;
116
125
  }
117
126
 
118
127
  (0, _createClass2.default)(NewQuizAnalysis, [{
119
- key: "renderLabelWithPopover",
120
- value: function renderLabelWithPopover(texts) {
121
- return /*#__PURE__*/_react.default.createElement("span", {
122
- className: styles.metricLabel
123
- }, texts.metricLabel, /*#__PURE__*/_react.default.createElement("span", {
124
- className: styles.popoverContainer
125
- }, /*#__PURE__*/_react.default.createElement(_index2.default, texts)));
126
- }
127
- }, {
128
- key: "renderMetric",
129
- value: function renderMetric(key, label, value, suffix) {
130
- return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
131
- theme: {
132
- valueFontWeight: 500
133
- },
134
- textAlign: "start",
135
- key: key,
136
- renderLabel: /*#__PURE__*/_react.default.createElement("span", {
137
- className: styles.metricLabel
138
- }, label),
139
- renderValue: (0, _utils.getSanitizedMetricValue)(value, suffix)
140
- });
141
- }
142
- }, {
143
- key: "renderMetricWithPopover",
144
- value: function renderMetricWithPopover(key, texts, value) {
145
- return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
146
- theme: {
147
- valueFontWeight: 500
148
- },
149
- textAlign: "start",
150
- key: key,
151
- renderLabel: this.renderLabelWithPopover(texts),
152
- renderValue: (0, _utils.getSanitizedMetricValue)(value)
153
- });
154
- }
155
- }, {
156
128
  key: "render",
157
129
  value: function render() {
158
130
  var quizAnalysis = this.props.quizAnalysis;
@@ -160,7 +132,7 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
160
132
  attempts = quizAnalysis.attempts,
161
133
  metadata = quizAnalysis.metadata;
162
134
  var expanded = this.state.expanded;
163
- return /*#__PURE__*/_react.default.createElement(_index3.default, {
135
+ return /*#__PURE__*/_react.default.createElement(_index2.default, {
164
136
  className: styles.cardWrapper
165
137
  }, /*#__PURE__*/_react.default.createElement("div", {
166
138
  className: styles.heading
@@ -171,9 +143,32 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
171
143
  className: styles.metricGroup
172
144
  }, /*#__PURE__*/_react.default.createElement("div", {
173
145
  className: styles.metricsWrapper
174
- }, this.renderMetric('highscore', (0, _formatMessage.default)('high score'), scores === null || scores === void 0 ? void 0 : scores.max_percentage, '%'), this.renderMetric('lowscore', (0, _formatMessage.default)('low score'), scores === null || scores === void 0 ? void 0 : scores.min_percentage, '%'), this.renderMetric('meanscore', (0, _formatMessage.default)('mean score'), scores === null || scores === void 0 ? void 0 : scores.mean_percentage, '%')), /*#__PURE__*/_react.default.createElement("div", {
146
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
147
+ metricKey: "highscore",
148
+ label: (0, _formatMessage.default)('high score'),
149
+ value: scores === null || scores === void 0 ? void 0 : scores.max_percentage,
150
+ suffix: "%"
151
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
152
+ metricKey: "lowscore",
153
+ label: (0, _formatMessage.default)('low score'),
154
+ value: scores === null || scores === void 0 ? void 0 : scores.min_percentage,
155
+ suffix: "%"
156
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
157
+ metricKey: "meanscore",
158
+ label: (0, _formatMessage.default)('mean score'),
159
+ value: scores === null || scores === void 0 ? void 0 : scores.mean_percentage,
160
+ suffix: "%"
161
+ })), /*#__PURE__*/_react.default.createElement("div", {
175
162
  className: styles.metricsWrapper
176
- }, this.renderMetric('average_attempts', (0, _formatMessage.default)('average attempts'), _formatMessage.default.number(attempts === null || attempts === void 0 ? void 0 : attempts.average_attempts)), this.renderMetric('mean_elapsed_sec', (0, _formatMessage.default)('mean elapsed time'), (0, _formatTimespan.formatTimeToFullNumeric)(attempts === null || attempts === void 0 ? void 0 : attempts.mean_elapsed_sec))), /*#__PURE__*/_react.default.createElement("div", {
163
+ }, /*#__PURE__*/_react.default.createElement(_index4.default, {
164
+ metricKey: "average_attempts",
165
+ label: (0, _formatMessage.default)('average attempts'),
166
+ value: _formatMessage.default.number(attempts === null || attempts === void 0 ? void 0 : attempts.average_attempts)
167
+ }), /*#__PURE__*/_react.default.createElement(_index4.default, {
168
+ metricKey: "mean_elapsed_sec",
169
+ label: (0, _formatMessage.default)('mean elapsed time'),
170
+ value: (0, _formatTimespan.formatTimeToFullNumeric)(attempts === null || attempts === void 0 ? void 0 : attempts.mean_elapsed_sec)
171
+ })), /*#__PURE__*/_react.default.createElement("div", {
177
172
  className: styles.expandButtonContainer
178
173
  }, /*#__PURE__*/_react.default.createElement(_index.default, {
179
174
  onClick: this.handleToggle,
@@ -190,10 +185,10 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
190
185
  return NewQuizAnalysis;
191
186
  }(_react.Component), _class2.propTypes = {
192
187
  quizAnalysis: _propTypes.default.shape({
193
- created_timestamp: _propTypes.default.string,
188
+ created_timestamp: _propTypes.default.string.isRequired,
194
189
  metadata: _propTypes.default.shape({
195
190
  quiz_title: _propTypes.default.string
196
- }),
191
+ }).isRequired,
197
192
  scores: _propTypes.default.shape({
198
193
  decile_distribution: _propTypes.default.arrayOf(_propTypes.default.number),
199
194
  cronbachs_alpha: _propTypes.default.number,
@@ -211,5 +206,7 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
211
206
  average_attempts: _propTypes.default.number
212
207
  }).isRequired
213
208
  }).isRequired
209
+ }, _class2.defaultProps = {
210
+ quizAnalysis: {}
214
211
  }, _temp)) || _class);
215
212
  exports.NewQuizAnalysis = NewQuizAnalysis;