@instructure/quiz-core 17.61.1-rc.0 → 17.62.0

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 (20) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +2 -22
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +1 -1
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +3 -119
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +119 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/index.js +3 -11
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +28 -93
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +22 -1
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +27 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +202 -0
  11. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +3 -23
  12. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +1 -1
  13. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/index.js +3 -134
  14. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +146 -0
  15. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/index.js +4 -14
  16. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +36 -102
  17. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +27 -3
  18. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +45 -0
  19. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +220 -0
  20. package/package.json +10 -10
@@ -0,0 +1,202 @@
1
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ import React, { useEffect } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { itemAnalysisPropType, quizAnalysisPropType } from "./propTypes.js";
7
+ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalComponent) {
8
+ var WithAnalysisStatePresenter = function WithAnalysisStatePresenter(_ref) {
9
+ var quizAnalysis = _ref.quizAnalysis,
10
+ itemAnalyses = _ref.itemAnalyses,
11
+ fetchInProgress = _ref.fetchInProgress,
12
+ generationInProgress = _ref.generationInProgress,
13
+ analysisError = _ref.analysisError,
14
+ setQuizAnalysis = _ref.setQuizAnalysis,
15
+ setItemAnalyses = _ref.setItemAnalyses,
16
+ setFetchInProgress = _ref.setFetchInProgress,
17
+ setGenerationInProgress = _ref.setGenerationInProgress,
18
+ setAnalysisError = _ref.setAnalysisError,
19
+ activeQuizId = _ref.activeQuizId,
20
+ fetchQuizAnalysis = _ref.fetchQuizAnalysis,
21
+ fetchItemAnalyses = _ref.fetchItemAnalyses,
22
+ generateReport = _ref.generateReport,
23
+ passThroughProps = _objectWithoutProperties(_ref, ["quizAnalysis", "itemAnalyses", "fetchInProgress", "generationInProgress", "analysisError", "setQuizAnalysis", "setItemAnalyses", "setFetchInProgress", "setGenerationInProgress", "setAnalysisError", "activeQuizId", "fetchQuizAnalysis", "fetchItemAnalyses", "generateReport"]);
24
+
25
+ WithAnalysisStatePresenter.displayName = "WithAnalysisStatePresenter(".concat(OriginalComponent.displayName || OriginalComponent.name, ")");
26
+
27
+ function fetchReports() {
28
+ return _fetchReports.apply(this, arguments);
29
+ }
30
+
31
+ function _fetchReports() {
32
+ _fetchReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
33
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
34
+ while (1) {
35
+ switch (_context2.prev = _context2.next) {
36
+ case 0:
37
+ _context2.next = 2;
38
+ return queryQuizAnalysis();
39
+
40
+ case 2:
41
+ _context2.next = 4;
42
+ return queryItemAnalyses();
43
+
44
+ case 4:
45
+ case "end":
46
+ return _context2.stop();
47
+ }
48
+ }
49
+ }, _callee2);
50
+ }));
51
+ return _fetchReports.apply(this, arguments);
52
+ }
53
+
54
+ function queryQuizAnalysis() {
55
+ return _queryQuizAnalysis.apply(this, arguments);
56
+ }
57
+
58
+ function _queryQuizAnalysis() {
59
+ _queryQuizAnalysis = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
60
+ var response;
61
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
62
+ while (1) {
63
+ switch (_context3.prev = _context3.next) {
64
+ case 0:
65
+ _context3.next = 2;
66
+ return fetchQuizAnalysis(activeQuizId);
67
+
68
+ case 2:
69
+ response = _context3.sent;
70
+
71
+ if (response) {
72
+ setQuizAnalysis(response.last_successful_analysis);
73
+ }
74
+
75
+ case 4:
76
+ case "end":
77
+ return _context3.stop();
78
+ }
79
+ }
80
+ }, _callee3);
81
+ }));
82
+ return _queryQuizAnalysis.apply(this, arguments);
83
+ }
84
+
85
+ function queryItemAnalyses() {
86
+ return _queryItemAnalyses.apply(this, arguments);
87
+ }
88
+
89
+ function _queryItemAnalyses() {
90
+ _queryItemAnalyses = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
91
+ var response;
92
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
93
+ while (1) {
94
+ switch (_context4.prev = _context4.next) {
95
+ case 0:
96
+ _context4.next = 2;
97
+ return fetchItemAnalyses(activeQuizId);
98
+
99
+ case 2:
100
+ response = _context4.sent;
101
+
102
+ if (response) {
103
+ setItemAnalyses(response.last_successful_analysis);
104
+ }
105
+
106
+ case 4:
107
+ case "end":
108
+ return _context4.stop();
109
+ }
110
+ }
111
+ }, _callee4);
112
+ }));
113
+ return _queryItemAnalyses.apply(this, arguments);
114
+ }
115
+
116
+ function generateReports() {
117
+ return _generateReports.apply(this, arguments);
118
+ }
119
+
120
+ function _generateReports() {
121
+ _generateReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
122
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
123
+ while (1) {
124
+ switch (_context5.prev = _context5.next) {
125
+ case 0:
126
+ case "end":
127
+ return _context5.stop();
128
+ }
129
+ }
130
+ }, _callee5);
131
+ }));
132
+ return _generateReports.apply(this, arguments);
133
+ }
134
+
135
+ useEffect(function () {
136
+ var fetchIfNeeded = /*#__PURE__*/function () {
137
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
138
+ var hasStoredAnalyses;
139
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
140
+ while (1) {
141
+ switch (_context.prev = _context.next) {
142
+ case 0:
143
+ hasStoredAnalyses = quizAnalysis && itemAnalyses;
144
+
145
+ if (!(!hasStoredAnalyses && !fetchInProgress)) {
146
+ _context.next = 4;
147
+ break;
148
+ }
149
+
150
+ _context.next = 4;
151
+ return fetchReports();
152
+
153
+ case 4:
154
+ case "end":
155
+ return _context.stop();
156
+ }
157
+ }
158
+ }, _callee);
159
+ }));
160
+
161
+ return function fetchIfNeeded() {
162
+ return _ref2.apply(this, arguments);
163
+ };
164
+ }();
165
+
166
+ fetchIfNeeded();
167
+ }, []);
168
+ return /*#__PURE__*/React.createElement(OriginalComponent, Object.assign({
169
+ quizAnalysis: quizAnalysis,
170
+ itemAnalyses: itemAnalyses,
171
+ fetchInProgress: fetchInProgress,
172
+ generationInProgress: generationInProgress,
173
+ analysisError: analysisError,
174
+ generateReports: generateReports
175
+ }, passThroughProps));
176
+ };
177
+
178
+ WithAnalysisStatePresenter.propTypes = {
179
+ quizAnalysis: quizAnalysisPropType,
180
+ itemAnalyses: PropTypes.arrayOf(itemAnalysisPropType),
181
+ fetchInProgress: PropTypes.bool.isRequired,
182
+ generationInProgress: PropTypes.bool.isRequired,
183
+ analysisError: PropTypes.string,
184
+ setQuizAnalysis: PropTypes.func.isRequired,
185
+ setItemAnalyses: PropTypes.func.isRequired,
186
+ setFetchInProgress: PropTypes.func.isRequired,
187
+ setGenerationInProgress: PropTypes.func.isRequired,
188
+ setAnalysisError: PropTypes.func.isRequired,
189
+ activeQuizId: PropTypes.string.isRequired,
190
+ fetchQuizAnalysis: PropTypes.func.isRequired,
191
+ fetchItemAnalyses: PropTypes.func.isRequired,
192
+ // can be required after passed from LTI
193
+ generateReport: PropTypes.func
194
+ };
195
+ WithAnalysisStatePresenter.defaultProps = {
196
+ quizAnalysis: void 0,
197
+ itemAnalyses: void 0,
198
+ analysisError: '',
199
+ generateReport: Function.prototype
200
+ };
201
+ return WithAnalysisStatePresenter;
202
+ };
@@ -41,12 +41,12 @@ var _index3 = _interopRequireDefault(require("../AnalysisMetric/index.js"));
41
41
 
42
42
  var _index4 = _interopRequireDefault(require("../AnalysisPopoverMetric/index.js"));
43
43
 
44
- var _propTypes = _interopRequireDefault(require("prop-types"));
45
-
46
44
  var _classnames2 = _interopRequireDefault(require("classnames"));
47
45
 
48
46
  var _interactionTypeMetadata = require("../../../../../common/util/interactionTypeMetadata.js");
49
47
 
48
+ var _propTypes = require("../propTypes.js");
49
+
50
50
  var _dec, _class, _class2, _temp;
51
51
 
52
52
  var styles = {
@@ -266,26 +266,6 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
266
266
  NewItemAnalysis.displayName = "NewItemAnalysis";
267
267
  return NewItemAnalysis;
268
268
  }(_react.Component), _class2.propTypes = {
269
- itemAnalysis: _propTypes.default.shape({
270
- attempts: _propTypes.default.shape({
271
- students_responded: _propTypes.default.number,
272
- students_without_response: _propTypes.default.number
273
- }),
274
- metadata: _propTypes.default.shape({
275
- interaction_type: _propTypes.default.string,
276
- item_body: _propTypes.default.string,
277
- item_id: _propTypes.default.string,
278
- item_title: _propTypes.default.string
279
- }),
280
- scores: _propTypes.default.shape({
281
- difficulty_index: _propTypes.default.number,
282
- discrimination_index: _propTypes.default.number,
283
- mean: _propTypes.default.number,
284
- median: _propTypes.default.number,
285
- pearson_correlation: _propTypes.default.number,
286
- points_possible: _propTypes.default.number,
287
- quartile_distribution: _propTypes.default.arrayOf(_propTypes.default.number)
288
- })
289
- }).isRequired
269
+ itemAnalysis: _propTypes.itemAnalysisPropType.isRequired
290
270
  }, _temp)) || _class);
291
271
  exports.NewItemAnalysis = NewItemAnalysis;
@@ -177,7 +177,7 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
177
177
  NewQuizAnalysis.displayName = "NewQuizAnalysis";
178
178
  return NewQuizAnalysis;
179
179
  }(_react.Component), _class2.propTypes = {
180
- quizAnalysis: _propTypes.quizAnalysisPropType
180
+ quizAnalysis: _propTypes.quizAnalysisPropType.isRequired
181
181
  }, _class2.defaultProps = {
182
182
  quizAnalysis: {}
183
183
  }, _temp)) || _class);
@@ -2,147 +2,16 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.default = exports.NewQuizAndItemAnalysisReportCard = void 0;
11
9
 
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 _propTypes = _interopRequireDefault(require("prop-types"));
23
-
24
- var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
25
-
26
- var _uiText = require("@instructure/ui-text");
27
-
28
- var _uiLink = require("@instructure/ui-link");
29
-
30
- var _uiFlex = require("@instructure/ui-flex");
31
-
32
- var _uiThemeable = require("@instructure/ui-themeable");
33
-
34
- var _index = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
35
-
36
- var _theme = _interopRequireDefault(require("./theme.js"));
37
-
38
- var _index2 = _interopRequireDefault(require("../AnalysisMetric/index.js"));
39
-
40
- var _Spinner = _interopRequireDefault(require("../../../../../common/components/shared/spinner/Spinner.js"));
41
-
42
- var _index3 = require("../AnalysisUpdateDate/index.js");
43
-
44
- var _propTypes2 = require("../propTypes.js");
45
-
46
- var _dec, _class, _class2, _temp;
47
-
48
- var styles = {
49
- componentId: 'eJSiT',
50
- template: function template(theme) {
51
- return "\n\n.eJSiT_bqdH{column-gap:5px;display:flex;justify-content:space-between;padding:".concat(theme.metricsPadding || 'inherit', " 0}\n\n.eJSiT_fbIL{border-radius:").concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.eJSiT_blRb{max-width:160px;padding-right:10px}");
52
- },
53
- 'metricsContainer': 'eJSiT_bqdH',
54
- 'card': 'eJSiT_fbIL',
55
- 'dateContainer': 'eJSiT_blRb'
56
- };
57
-
58
- var _ref = /*#__PURE__*/_react.default.createElement(_Spinner.default, null);
59
-
60
- var NewQuizAndItemAnalysisReportCard = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
61
- (0, _inherits2.default)(NewQuizAndItemAnalysisReportCard, _Component);
62
-
63
- var _super = (0, _createSuper2.default)(NewQuizAndItemAnalysisReportCard);
64
-
65
- function NewQuizAndItemAnalysisReportCard() {
66
- var _this;
67
-
68
- (0, _classCallCheck2.default)(this, NewQuizAndItemAnalysisReportCard);
69
-
70
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
71
- args[_key] = arguments[_key];
72
- }
73
-
74
- _this = _super.call.apply(_super, [this].concat(args));
75
-
76
- _this.renderMetrics = function () {
77
- var _quizAnalysis$scores, _quizAnalysis$scores2, _quizAnalysis$scores3;
78
-
79
- var quizAnalysis = _this.props.quizAnalysis;
80
- return /*#__PURE__*/_react.default.createElement("div", {
81
- className: styles.metricsContainer
82
- }, /*#__PURE__*/_react.default.createElement(_index2.default, {
83
- metricKey: "highscore",
84
- label: (0, _formatMessage.default)('high score'),
85
- value: (_quizAnalysis$scores = quizAnalysis.scores) === null || _quizAnalysis$scores === void 0 ? void 0 : _quizAnalysis$scores.max_percentage,
86
- suffix: "%"
87
- }), /*#__PURE__*/_react.default.createElement(_index2.default, {
88
- metricKey: "lowscore",
89
- label: (0, _formatMessage.default)('low score'),
90
- value: (_quizAnalysis$scores2 = quizAnalysis.scores) === null || _quizAnalysis$scores2 === void 0 ? void 0 : _quizAnalysis$scores2.min_percentage,
91
- suffix: "%"
92
- }), /*#__PURE__*/_react.default.createElement(_index2.default, {
93
- metricKey: "meanscore",
94
- label: (0, _formatMessage.default)('mean score'),
95
- value: (_quizAnalysis$scores3 = quizAnalysis.scores) === null || _quizAnalysis$scores3 === void 0 ? void 0 : _quizAnalysis$scores3.mean_percentage,
96
- suffix: "%"
97
- }));
98
- };
10
+ var _presenter = require("./presenter.js");
99
11
 
100
- return _this;
101
- }
12
+ var _withAnalysisState = _interopRequireDefault(require("../withAnalysisState.js"));
102
13
 
103
- (0, _createClass2.default)(NewQuizAndItemAnalysisReportCard, [{
104
- key: "renderContent",
105
- value: function renderContent() {
106
- var _this$props = this.props,
107
- name = _this$props.name,
108
- href = _this$props.href,
109
- quizAnalysis = _this$props.quizAnalysis;
110
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
111
- size: "medium",
112
- weight: "bold"
113
- }, name), this.renderMetrics(), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
114
- direction: "row",
115
- justifyItems: "space-between"
116
- }, /*#__PURE__*/_react.default.createElement("div", {
117
- className: styles.dateContainer
118
- }, /*#__PURE__*/_react.default.createElement(_index3.AnalysisUpdateDate, {
119
- date: quizAnalysis.created_timestamp,
120
- multiline: true
121
- })), /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
122
- href: href
123
- }, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
124
- size: "small"
125
- }, (0, _formatMessage.default)('View Report')))));
126
- }
127
- }, {
128
- key: "render",
129
- value: function render() {
130
- return /*#__PURE__*/_react.default.createElement(_index.default, {
131
- className: styles.card
132
- }, this.props.quizAnalysis ? this.renderContent() : _ref);
133
- }
134
- }]);
135
- NewQuizAndItemAnalysisReportCard.displayName = "NewQuizAndItemAnalysisReportCard";
136
- return NewQuizAndItemAnalysisReportCard;
137
- }(_react.Component), _class2.propTypes = {
138
- name: _propTypes.default.node,
139
- href: _propTypes.default.string,
140
- quizAnalysis: _propTypes2.quizAnalysisPropType
141
- }, _class2.defaultProps = {
142
- name: void 0,
143
- href: void 0,
144
- quizAnalysis: {}
145
- }, _temp)) || _class);
14
+ var NewQuizAndItemAnalysisReportCard = (0, _withAnalysisState.default)(_presenter.NewQuizAndItemAnalysisReportCardPresenter);
146
15
  exports.NewQuizAndItemAnalysisReportCard = NewQuizAndItemAnalysisReportCard;
147
16
  var _default = NewQuizAndItemAnalysisReportCard;
148
17
  exports.default = _default;
@@ -0,0 +1,146 @@
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.NewQuizAndItemAnalysisReportCardPresenter = 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 _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
25
+
26
+ var _uiText = require("@instructure/ui-text");
27
+
28
+ var _uiLink = require("@instructure/ui-link");
29
+
30
+ var _uiFlex = require("@instructure/ui-flex");
31
+
32
+ var _uiThemeable = require("@instructure/ui-themeable");
33
+
34
+ var _index = _interopRequireDefault(require("../../../../../common/components/shared/Card/index.js"));
35
+
36
+ var _theme = _interopRequireDefault(require("./theme.js"));
37
+
38
+ var _index2 = _interopRequireDefault(require("../AnalysisMetric/index.js"));
39
+
40
+ var _Spinner = _interopRequireDefault(require("../../../../../common/components/shared/spinner/Spinner.js"));
41
+
42
+ var _index3 = require("../AnalysisUpdateDate/index.js");
43
+
44
+ var _propTypes2 = require("../propTypes.js");
45
+
46
+ var _dec, _class, _class2, _temp;
47
+
48
+ var styles = {
49
+ componentId: 'eJSiT',
50
+ template: function template(theme) {
51
+ return "\n\n.eJSiT_bqdH{column-gap:5px;display:flex;justify-content:space-between;padding:".concat(theme.metricsPadding || 'inherit', " 0}\n\n.eJSiT_fbIL{border-radius:").concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.eJSiT_blRb{max-width:160px;padding-right:10px}");
52
+ },
53
+ 'metricsContainer': 'eJSiT_bqdH',
54
+ 'card': 'eJSiT_fbIL',
55
+ 'dateContainer': 'eJSiT_blRb'
56
+ };
57
+
58
+ var _ref = /*#__PURE__*/_react.default.createElement(_Spinner.default, null);
59
+
60
+ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
61
+ (0, _inherits2.default)(NewQuizAndItemAnalysisReportCardPresenter, _Component);
62
+
63
+ var _super = (0, _createSuper2.default)(NewQuizAndItemAnalysisReportCardPresenter);
64
+
65
+ function NewQuizAndItemAnalysisReportCardPresenter() {
66
+ var _this;
67
+
68
+ (0, _classCallCheck2.default)(this, NewQuizAndItemAnalysisReportCardPresenter);
69
+
70
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
71
+ args[_key] = arguments[_key];
72
+ }
73
+
74
+ _this = _super.call.apply(_super, [this].concat(args));
75
+
76
+ _this.renderMetrics = function () {
77
+ var _quizAnalysis$scores, _quizAnalysis$scores2, _quizAnalysis$scores3;
78
+
79
+ var quizAnalysis = _this.props.quizAnalysis;
80
+ return /*#__PURE__*/_react.default.createElement("div", {
81
+ className: styles.metricsContainer
82
+ }, /*#__PURE__*/_react.default.createElement(_index2.default, {
83
+ metricKey: "highscore",
84
+ label: (0, _formatMessage.default)('high score'),
85
+ value: (_quizAnalysis$scores = quizAnalysis.scores) === null || _quizAnalysis$scores === void 0 ? void 0 : _quizAnalysis$scores.max_percentage,
86
+ suffix: "%"
87
+ }), /*#__PURE__*/_react.default.createElement(_index2.default, {
88
+ metricKey: "lowscore",
89
+ label: (0, _formatMessage.default)('low score'),
90
+ value: (_quizAnalysis$scores2 = quizAnalysis.scores) === null || _quizAnalysis$scores2 === void 0 ? void 0 : _quizAnalysis$scores2.min_percentage,
91
+ suffix: "%"
92
+ }), /*#__PURE__*/_react.default.createElement(_index2.default, {
93
+ metricKey: "meanscore",
94
+ label: (0, _formatMessage.default)('mean score'),
95
+ value: (_quizAnalysis$scores3 = quizAnalysis.scores) === null || _quizAnalysis$scores3 === void 0 ? void 0 : _quizAnalysis$scores3.mean_percentage,
96
+ suffix: "%"
97
+ }));
98
+ };
99
+
100
+ return _this;
101
+ }
102
+
103
+ (0, _createClass2.default)(NewQuizAndItemAnalysisReportCardPresenter, [{
104
+ key: "renderContent",
105
+ value: function renderContent() {
106
+ var _this$props = this.props,
107
+ name = _this$props.name,
108
+ href = _this$props.href,
109
+ quizAnalysis = _this$props.quizAnalysis;
110
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
111
+ size: "medium",
112
+ weight: "bold"
113
+ }, name), this.renderMetrics(), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
114
+ direction: "row",
115
+ justifyItems: "space-between"
116
+ }, /*#__PURE__*/_react.default.createElement("div", {
117
+ className: styles.dateContainer
118
+ }, /*#__PURE__*/_react.default.createElement(_index3.AnalysisUpdateDate, {
119
+ date: quizAnalysis.created_timestamp,
120
+ multiline: true
121
+ })), /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
122
+ href: href
123
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
124
+ size: "small"
125
+ }, (0, _formatMessage.default)('View Report')))));
126
+ }
127
+ }, {
128
+ key: "render",
129
+ value: function render() {
130
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
131
+ className: styles.card
132
+ }, this.props.quizAnalysis ? this.renderContent() : _ref);
133
+ }
134
+ }]);
135
+ NewQuizAndItemAnalysisReportCardPresenter.displayName = "NewQuizAndItemAnalysisReportCardPresenter";
136
+ return NewQuizAndItemAnalysisReportCardPresenter;
137
+ }(_react.Component), _class2.propTypes = {
138
+ name: _propTypes.default.node,
139
+ href: _propTypes.default.string,
140
+ quizAnalysis: _propTypes2.quizAnalysisPropType
141
+ }, _class2.defaultProps = {
142
+ name: void 0,
143
+ href: void 0,
144
+ quizAnalysis: void 0
145
+ }, _temp)) || _class);
146
+ exports.NewQuizAndItemAnalysisReportCardPresenter = NewQuizAndItemAnalysisReportCardPresenter;
@@ -1,27 +1,17 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
- exports.mapStateToProps = mapStateToProps;
7
8
  exports.default = exports.NewQuizAndItemAnalysis = void 0;
8
9
 
9
10
  var _presenter = require("./presenter.js");
10
11
 
11
- var _reactRedux = require("../../../../common/react-redux.js");
12
-
13
- var _newQuizAnalysis = require("../../../api/newQuizAnalysis.js");
14
-
15
- var _newItemAnalyses = require("../../../api/newItemAnalyses.js");
16
-
17
- function mapStateToProps(_state) {
18
- return {
19
- getQuizAnalysis: _newQuizAnalysis.getQuizAnalysis,
20
- getItemAnalyses: _newItemAnalyses.getItemAnalyses
21
- };
22
- }
12
+ var _withAnalysisState = _interopRequireDefault(require("./withAnalysisState.js"));
23
13
 
24
- var NewQuizAndItemAnalysis = (0, _reactRedux.connect)(mapStateToProps)(_presenter.NewQuizAndItemAnalysis);
14
+ var NewQuizAndItemAnalysis = (0, _withAnalysisState.default)(_presenter.NewQuizAndItemAnalysisPresenter);
25
15
  exports.NewQuizAndItemAnalysis = NewQuizAndItemAnalysis;
26
16
  var _default = NewQuizAndItemAnalysis;
27
17
  exports.default = _default;