@instructure/quiz-core 17.63.1-rc.0 → 17.63.1-rc.12
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.
- package/es/building/api/qtiImports.js +16 -10
- package/es/building/components/QTIImportModal/index.js +1 -1
- package/es/common/actions/analyses.js +7 -1
- package/es/common/components/shared/spinner/Spinner.js +33 -18
- package/es/common/components/shared/spinner/theme.js +2 -5
- package/es/common/reducers/analyses.js +10 -8
- package/es/common/selectors/analyses.js +3 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +14 -7
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +4 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +129 -143
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +2 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +14 -17
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/theme.js +2 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +85 -30
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +4 -2
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +3 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +15 -12
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/fetchReportsStatus.js +45 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/generateReports.js +52 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +10 -4
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +73 -18
- package/lib/building/api/qtiImports.js +16 -10
- package/lib/building/components/QTIImportModal/index.js +1 -1
- package/lib/common/actions/analyses.js +8 -0
- package/lib/common/components/shared/spinner/Spinner.js +34 -19
- package/lib/common/components/shared/spinner/theme.js +2 -5
- package/lib/common/reducers/analyses.js +13 -8
- package/lib/common/selectors/analyses.js +7 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +14 -6
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +5 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +132 -144
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +2 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +14 -17
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/theme.js +2 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +84 -29
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +4 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +8 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +15 -12
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/fetchReportsStatus.js +59 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/generateReports.js +67 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +10 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +74 -17
- package/package.json +9 -9
|
@@ -46,17 +46,17 @@ var _propTypes2 = require("../propTypes.js");
|
|
|
46
46
|
var _dec, _class, _class2, _temp;
|
|
47
47
|
|
|
48
48
|
var styles = {
|
|
49
|
-
componentId: '
|
|
49
|
+
componentId: 'boQPo',
|
|
50
50
|
template: function template(theme) {
|
|
51
|
-
return "\n\n.
|
|
51
|
+
return "\n\n.boQPo_bqdH{column-gap:5px;display:flex;justify-content:space-between;padding-bottom:".concat(theme.metricsPadding || 'inherit', "}\n\n.boQPo_PFlN{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.boQPo_blRb{max-width:160px;padding-right:10px}\n\n.boQPo_bxzy{border-bottom:1px solid ").concat(theme.quizSummaryBorderBottomColor || 'inherit', ";margin-bottom:15px;padding-bottom:15px}\n\n.boQPo_dKIc{padding-bottom:15px}\n\n.boQPo_cGHR{align-self:flex-end}");
|
|
52
52
|
},
|
|
53
|
-
'metricsContainer': '
|
|
54
|
-
'
|
|
55
|
-
'dateContainer': '
|
|
53
|
+
'metricsContainer': 'boQPo_bqdH',
|
|
54
|
+
'reportCard': 'boQPo_PFlN',
|
|
55
|
+
'dateContainer': 'boQPo_blRb',
|
|
56
|
+
'quizAnalysisSummary': 'boQPo_bxzy',
|
|
57
|
+
'titleContainer': 'boQPo_dKIc',
|
|
58
|
+
'spinnerContainer': 'boQPo_cGHR'
|
|
56
59
|
};
|
|
57
|
-
|
|
58
|
-
var _ref = /*#__PURE__*/_react.default.createElement(_Spinner.default, null);
|
|
59
|
-
|
|
60
60
|
var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
61
61
|
(0, _inherits2.default)(NewQuizAndItemAnalysisReportCardPresenter, _Component);
|
|
62
62
|
|
|
@@ -73,6 +73,12 @@ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeab
|
|
|
73
73
|
|
|
74
74
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
75
75
|
|
|
76
|
+
_this.handleGeneration = function (_event) {
|
|
77
|
+
var filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'last_attempt';
|
|
78
|
+
|
|
79
|
+
_this.props.generateReports(filter);
|
|
80
|
+
};
|
|
81
|
+
|
|
76
82
|
_this.renderMetrics = function () {
|
|
77
83
|
var _quizAnalysis$scores, _quizAnalysis$scores2, _quizAnalysis$scores3;
|
|
78
84
|
|
|
@@ -97,20 +103,14 @@ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeab
|
|
|
97
103
|
}));
|
|
98
104
|
};
|
|
99
105
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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, {
|
|
106
|
+
_this.renderQuizAnalysisSummary = function () {
|
|
107
|
+
var _this$props = _this.props,
|
|
108
|
+
quizAnalysis = _this$props.quizAnalysis,
|
|
109
|
+
itemAnalyses = _this$props.itemAnalyses,
|
|
110
|
+
href = _this$props.href;
|
|
111
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
112
|
+
className: styles.quizAnalysisSummary
|
|
113
|
+
}, _this.renderMetrics(), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
114
114
|
direction: "row",
|
|
115
115
|
justifyItems: "space-between"
|
|
116
116
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -118,18 +118,65 @@ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeab
|
|
|
118
118
|
}, /*#__PURE__*/_react.default.createElement(_index3.AnalysisUpdateDate, {
|
|
119
119
|
date: quizAnalysis.created_timestamp,
|
|
120
120
|
multiline: true
|
|
121
|
-
})), /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
|
|
121
|
+
})), quizAnalysis && itemAnalyses && /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
|
|
122
122
|
href: href
|
|
123
123
|
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
124
124
|
size: "small"
|
|
125
125
|
}, (0, _formatMessage.default)('View Report')))));
|
|
126
|
-
}
|
|
127
|
-
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
_this.renderSpinner = function (mainText) {
|
|
129
|
+
return /*#__PURE__*/_react.default.createElement(_Spinner.default, {
|
|
130
|
+
size: "x-small",
|
|
131
|
+
color: "brand",
|
|
132
|
+
minHeight: "0",
|
|
133
|
+
mainText: mainText,
|
|
134
|
+
fontSize: "x-small"
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
_this.renderReportCardFooter = function () {
|
|
139
|
+
var _this$props2 = _this.props,
|
|
140
|
+
generationInProgress = _this$props2.generationInProgress,
|
|
141
|
+
analysisError = _this$props2.analysisError;
|
|
142
|
+
return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
143
|
+
direction: "row",
|
|
144
|
+
justifyItems: "space-between"
|
|
145
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
146
|
+
shouldShrink: true
|
|
147
|
+
}, analysisError && !generationInProgress && /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
148
|
+
size: "x-small",
|
|
149
|
+
lineHeight: "fit",
|
|
150
|
+
weight: "bold",
|
|
151
|
+
color: "danger"
|
|
152
|
+
}, analysisError)), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, generationInProgress ? _this.renderSpinner((0, _formatMessage.default)('Generation In Progress')) : /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
|
|
153
|
+
onClick: _this.handleGeneration,
|
|
154
|
+
role: "button"
|
|
155
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
156
|
+
size: "small"
|
|
157
|
+
}, (0, _formatMessage.default)('Generate Report')))));
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
return _this;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
(0, _createClass2.default)(NewQuizAndItemAnalysisReportCardPresenter, [{
|
|
128
164
|
key: "render",
|
|
129
165
|
value: function render() {
|
|
166
|
+
var _this$props3 = this.props,
|
|
167
|
+
fetchInProgress = _this$props3.fetchInProgress,
|
|
168
|
+
name = _this$props3.name,
|
|
169
|
+
quizAnalysis = _this$props3.quizAnalysis;
|
|
130
170
|
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
131
|
-
className: styles.
|
|
132
|
-
},
|
|
171
|
+
className: styles.reportCard
|
|
172
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
173
|
+
className: styles.titleContainer
|
|
174
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
175
|
+
size: "medium",
|
|
176
|
+
weight: "bold"
|
|
177
|
+
}, name)), !fetchInProgress && quizAnalysis && this.renderQuizAnalysisSummary(), fetchInProgress && /*#__PURE__*/_react.default.createElement("div", {
|
|
178
|
+
className: styles.spinnerContainer
|
|
179
|
+
}, this.renderSpinner()), !fetchInProgress && this.renderReportCardFooter());
|
|
133
180
|
}
|
|
134
181
|
}]);
|
|
135
182
|
NewQuizAndItemAnalysisReportCardPresenter.displayName = "NewQuizAndItemAnalysisReportCardPresenter";
|
|
@@ -137,10 +184,18 @@ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeab
|
|
|
137
184
|
}(_react.Component), _class2.propTypes = {
|
|
138
185
|
name: _propTypes.default.node,
|
|
139
186
|
href: _propTypes.default.string,
|
|
140
|
-
quizAnalysis: _propTypes2.quizAnalysisPropType
|
|
187
|
+
quizAnalysis: _propTypes2.quizAnalysisPropType,
|
|
188
|
+
itemAnalyses: _propTypes.default.arrayOf(_propTypes2.itemAnalysisPropType),
|
|
189
|
+
fetchInProgress: _propTypes.default.bool.isRequired,
|
|
190
|
+
generationInProgress: _propTypes.default.bool.isRequired,
|
|
191
|
+
analysisError: _propTypes.default.string,
|
|
192
|
+
generateReports: _propTypes.default.func.isRequired
|
|
141
193
|
}, _class2.defaultProps = {
|
|
142
194
|
name: void 0,
|
|
143
195
|
href: void 0,
|
|
144
|
-
|
|
196
|
+
analysisError: void 0,
|
|
197
|
+
generationInProgress: void 0,
|
|
198
|
+
quizAnalysis: void 0,
|
|
199
|
+
itemAnalyses: void 0
|
|
145
200
|
}, _temp)) || _class);
|
|
146
201
|
exports.NewQuizAndItemAnalysisReportCardPresenter = NewQuizAndItemAnalysisReportCardPresenter;
|
|
@@ -7,13 +7,15 @@ exports.default = generator;
|
|
|
7
7
|
|
|
8
8
|
function generator(_ref) {
|
|
9
9
|
var spacing = _ref.spacing,
|
|
10
|
-
borders = _ref.borders
|
|
10
|
+
borders = _ref.borders,
|
|
11
|
+
colors = _ref.colors;
|
|
11
12
|
return {
|
|
12
13
|
metricsPadding: spacing.medium,
|
|
13
14
|
cardWidth: '16rem',
|
|
14
15
|
cardPadding: spacing.medium,
|
|
15
16
|
cardMargin: spacing.xSmall,
|
|
16
17
|
cardBoxShadow: '1px 1px 3px 0 #ddd',
|
|
17
|
-
cardBorderRadius: borders.radiusMedium
|
|
18
|
+
cardBorderRadius: borders.radiusMedium,
|
|
19
|
+
quizSummaryBorderBottomColor: colors.tiara
|
|
18
20
|
};
|
|
19
21
|
}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.getLastReportGenerationFailed = exports.getFailedToFetchReports = void 0;
|
|
8
|
+
exports.getReportGenerationFailure = exports.getLastReportGenerationFailed = exports.getFailedToFetchReports = void 0;
|
|
9
9
|
|
|
10
10
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
11
11
|
|
|
@@ -19,4 +19,10 @@ var getLastReportGenerationFailed = function getLastReportGenerationFailed() {
|
|
|
19
19
|
return (0, _formatMessage.default)('Report generation failed. Please try again.');
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
exports.getLastReportGenerationFailed = getLastReportGenerationFailed;
|
|
22
|
+
exports.getLastReportGenerationFailed = getLastReportGenerationFailed;
|
|
23
|
+
|
|
24
|
+
var getReportGenerationFailure = function getReportGenerationFailure() {
|
|
25
|
+
return (0, _formatMessage.default)('An error has occurred while generating this report. Please try again.');
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.getReportGenerationFailure = getReportGenerationFailure;
|
|
@@ -17,13 +17,13 @@ var _errorMessages = require("./errorMessages.js");
|
|
|
17
17
|
|
|
18
18
|
var fetchReports = /*#__PURE__*/function () {
|
|
19
19
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
20
|
-
var activeQuizId, setFetchInProgress, setQuizAnalysis, setItemAnalyses, setAnalysisError, setGenerationInProgress, addError, fetchQuizAnalysis, fetchItemAnalyses, _yield$Promise$all, _yield$Promise$all2, quizAnalysis, itemAnalyses;
|
|
20
|
+
var activeQuizId, setFetchInProgress, setQuizAnalysis, setItemAnalyses, setStatusPollingInProgress, setAnalysisError, setGenerationInProgress, addError, fetchQuizAnalysis, fetchItemAnalyses, _yield$Promise$all, _yield$Promise$all2, quizAnalysis, itemAnalyses, areAnalysesInProgress, areAnalysesFailed;
|
|
21
21
|
|
|
22
22
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
23
23
|
while (1) {
|
|
24
24
|
switch (_context.prev = _context.next) {
|
|
25
25
|
case 0:
|
|
26
|
-
activeQuizId = _ref.activeQuizId, setFetchInProgress = _ref.setFetchInProgress, setQuizAnalysis = _ref.setQuizAnalysis, setItemAnalyses = _ref.setItemAnalyses, setAnalysisError = _ref.setAnalysisError, setGenerationInProgress = _ref.setGenerationInProgress, addError = _ref.addError, fetchQuizAnalysis = _ref.fetchQuizAnalysis, fetchItemAnalyses = _ref.fetchItemAnalyses;
|
|
26
|
+
activeQuizId = _ref.activeQuizId, setFetchInProgress = _ref.setFetchInProgress, setQuizAnalysis = _ref.setQuizAnalysis, setItemAnalyses = _ref.setItemAnalyses, setStatusPollingInProgress = _ref.setStatusPollingInProgress, setAnalysisError = _ref.setAnalysisError, setGenerationInProgress = _ref.setGenerationInProgress, addError = _ref.addError, fetchQuizAnalysis = _ref.fetchQuizAnalysis, fetchItemAnalyses = _ref.fetchItemAnalyses;
|
|
27
27
|
_context.prev = 1;
|
|
28
28
|
setFetchInProgress(true);
|
|
29
29
|
_context.next = 5;
|
|
@@ -34,33 +34,36 @@ var fetchReports = /*#__PURE__*/function () {
|
|
|
34
34
|
_yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
|
|
35
35
|
quizAnalysis = _yield$Promise$all2[0];
|
|
36
36
|
itemAnalyses = _yield$Promise$all2[1];
|
|
37
|
+
areAnalysesInProgress = quizAnalysis.new_analysis_in_progress || itemAnalyses.new_analysis_in_progress;
|
|
38
|
+
areAnalysesFailed = quizAnalysis.last_analysis_failed || itemAnalyses.last_analysis_failed;
|
|
39
|
+
setGenerationInProgress(areAnalysesInProgress);
|
|
40
|
+
setStatusPollingInProgress(areAnalysesInProgress);
|
|
37
41
|
setQuizAnalysis(quizAnalysis.last_successful_analysis);
|
|
38
42
|
setItemAnalyses(itemAnalyses.last_successful_analysis);
|
|
39
|
-
setGenerationInProgress(quizAnalysis.new_analysis_in_progress || itemAnalyses.new_analysis_in_progress);
|
|
40
43
|
|
|
41
|
-
if (
|
|
44
|
+
if (areAnalysesFailed) {
|
|
42
45
|
setAnalysisError((0, _errorMessages.getLastReportGenerationFailed)());
|
|
43
46
|
}
|
|
44
47
|
|
|
45
|
-
_context.next =
|
|
48
|
+
_context.next = 21;
|
|
46
49
|
break;
|
|
47
50
|
|
|
48
|
-
case
|
|
49
|
-
_context.prev =
|
|
51
|
+
case 18:
|
|
52
|
+
_context.prev = 18;
|
|
50
53
|
_context.t0 = _context["catch"](1);
|
|
51
54
|
addError((0, _errorMessages.getFailedToFetchReports)());
|
|
52
55
|
|
|
53
|
-
case
|
|
54
|
-
_context.prev =
|
|
56
|
+
case 21:
|
|
57
|
+
_context.prev = 21;
|
|
55
58
|
setFetchInProgress(false);
|
|
56
|
-
return _context.finish(
|
|
59
|
+
return _context.finish(21);
|
|
57
60
|
|
|
58
|
-
case
|
|
61
|
+
case 24:
|
|
59
62
|
case "end":
|
|
60
63
|
return _context.stop();
|
|
61
64
|
}
|
|
62
65
|
}
|
|
63
|
-
}, _callee, null, [[1,
|
|
66
|
+
}, _callee, null, [[1, 18, 21, 24]]);
|
|
64
67
|
}));
|
|
65
68
|
|
|
66
69
|
return function fetchReports(_x) {
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.fetchReportsStatus = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _errorMessages = require("./errorMessages.js");
|
|
15
|
+
|
|
16
|
+
var fetchReportsStatus = /*#__PURE__*/function () {
|
|
17
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
18
|
+
var activeQuizId, addError, fetchAnalysesStatus, instrumentedFetchReports, setStatusPollingInProgress, setGenerationInProgress, status, isReportGenerationReady;
|
|
19
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
20
|
+
while (1) {
|
|
21
|
+
switch (_context.prev = _context.next) {
|
|
22
|
+
case 0:
|
|
23
|
+
activeQuizId = _ref.activeQuizId, addError = _ref.addError, fetchAnalysesStatus = _ref.fetchAnalysesStatus, instrumentedFetchReports = _ref.instrumentedFetchReports, setStatusPollingInProgress = _ref.setStatusPollingInProgress, setGenerationInProgress = _ref.setGenerationInProgress;
|
|
24
|
+
_context.prev = 1;
|
|
25
|
+
_context.next = 4;
|
|
26
|
+
return fetchAnalysesStatus(activeQuizId);
|
|
27
|
+
|
|
28
|
+
case 4:
|
|
29
|
+
status = _context.sent;
|
|
30
|
+
isReportGenerationReady = !status.quiz_analysis_in_progress && !status.item_analyses_in_progress;
|
|
31
|
+
|
|
32
|
+
if (isReportGenerationReady) {
|
|
33
|
+
instrumentedFetchReports();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
_context.next = 14;
|
|
37
|
+
break;
|
|
38
|
+
|
|
39
|
+
case 9:
|
|
40
|
+
_context.prev = 9;
|
|
41
|
+
_context.t0 = _context["catch"](1);
|
|
42
|
+
addError((0, _errorMessages.getFailedToFetchReports)());
|
|
43
|
+
setStatusPollingInProgress(false);
|
|
44
|
+
setGenerationInProgress(false);
|
|
45
|
+
|
|
46
|
+
case 14:
|
|
47
|
+
case "end":
|
|
48
|
+
return _context.stop();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}, _callee, null, [[1, 9]]);
|
|
52
|
+
}));
|
|
53
|
+
|
|
54
|
+
return function fetchReportsStatus(_x) {
|
|
55
|
+
return _ref2.apply(this, arguments);
|
|
56
|
+
};
|
|
57
|
+
}();
|
|
58
|
+
|
|
59
|
+
exports.fetchReportsStatus = fetchReportsStatus;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.generateReports = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _errorMessages = require("./errorMessages.js");
|
|
15
|
+
|
|
16
|
+
var generateReports = /*#__PURE__*/function () {
|
|
17
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
18
|
+
var setGenerationInProgress, setStatusPollingInProgress, generateAnalysis, filter, addError, response;
|
|
19
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
20
|
+
while (1) {
|
|
21
|
+
switch (_context.prev = _context.next) {
|
|
22
|
+
case 0:
|
|
23
|
+
setGenerationInProgress = _ref.setGenerationInProgress, setStatusPollingInProgress = _ref.setStatusPollingInProgress, generateAnalysis = _ref.generateAnalysis, filter = _ref.filter, addError = _ref.addError;
|
|
24
|
+
_context.prev = 1;
|
|
25
|
+
setGenerationInProgress(true);
|
|
26
|
+
_context.next = 5;
|
|
27
|
+
return generateAnalysis(filter);
|
|
28
|
+
|
|
29
|
+
case 5:
|
|
30
|
+
response = _context.sent;
|
|
31
|
+
|
|
32
|
+
if (response) {
|
|
33
|
+
_context.next = 10;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
addError((0, _errorMessages.getReportGenerationFailure)());
|
|
38
|
+
setGenerationInProgress(false);
|
|
39
|
+
return _context.abrupt("return");
|
|
40
|
+
|
|
41
|
+
case 10:
|
|
42
|
+
setStatusPollingInProgress(true);
|
|
43
|
+
_context.next = 17;
|
|
44
|
+
break;
|
|
45
|
+
|
|
46
|
+
case 13:
|
|
47
|
+
_context.prev = 13;
|
|
48
|
+
_context.t0 = _context["catch"](1);
|
|
49
|
+
addError((0, _errorMessages.getReportGenerationFailure)());
|
|
50
|
+
setGenerationInProgress(false);
|
|
51
|
+
|
|
52
|
+
case 17:
|
|
53
|
+
case "end":
|
|
54
|
+
return _context.stop();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}, _callee, null, [[1, 13]]);
|
|
58
|
+
}));
|
|
59
|
+
|
|
60
|
+
return function generateReports(_x) {
|
|
61
|
+
return _ref2.apply(this, arguments);
|
|
62
|
+
};
|
|
63
|
+
}();
|
|
64
|
+
|
|
65
|
+
exports.generateReports = generateReports;
|
|
66
|
+
var _default = generateReports;
|
|
67
|
+
exports.default = _default;
|
|
@@ -16,6 +16,8 @@ var _getQuizAnalysis = require("../../../api/getQuizAnalysis.js");
|
|
|
16
16
|
|
|
17
17
|
var _getItemAnalyses = require("../../../api/getItemAnalyses.js");
|
|
18
18
|
|
|
19
|
+
var _getAnalysesStatus = require("../../../api/getAnalysesStatus.js");
|
|
20
|
+
|
|
19
21
|
var _reactRedux = require("../../../../common/react-redux.js");
|
|
20
22
|
|
|
21
23
|
var _redux = require("redux");
|
|
@@ -24,16 +26,21 @@ var _quizzes = require("../../../../common/selectors/quizzes.js");
|
|
|
24
26
|
|
|
25
27
|
var _alerts = require("../../../../common/actions/alerts.js");
|
|
26
28
|
|
|
29
|
+
var DEFAULT_POLLING_INTERVAL = 3000;
|
|
30
|
+
|
|
27
31
|
function mapStateToProps(state, ownProps) {
|
|
28
32
|
return {
|
|
29
33
|
quizAnalysis: (0, _analyses.getQuizAnalysis)(state),
|
|
30
34
|
itemAnalyses: (0, _analyses.getItemAnalyses)(state),
|
|
31
35
|
fetchInProgress: (0, _analyses.getFetchInProgress)(state),
|
|
32
36
|
generationInProgress: (0, _analyses.getGenerationInProgress)(state),
|
|
37
|
+
statusPollingInProgress: (0, _analyses.getStatusPollingInProgress)(state),
|
|
33
38
|
analysisError: (0, _analyses.getAnalysisError)(state),
|
|
34
39
|
activeQuizId: ownProps.activeQuizId || (0, _quizzes.getActiveQuizId)(state),
|
|
35
40
|
fetchQuizAnalysis: _getQuizAnalysis.getQuizAnalysis,
|
|
36
|
-
fetchItemAnalyses: _getItemAnalyses.getItemAnalyses
|
|
41
|
+
fetchItemAnalyses: _getItemAnalyses.getItemAnalyses,
|
|
42
|
+
fetchAnalysesStatus: _getAnalysesStatus.getAnalysesStatus,
|
|
43
|
+
pollingInterval: ownProps.pollingInterval || DEFAULT_POLLING_INTERVAL
|
|
37
44
|
};
|
|
38
45
|
}
|
|
39
46
|
|
|
@@ -43,7 +50,8 @@ var mapDispatchToProps = {
|
|
|
43
50
|
setFetchInProgress: _analyses2.setFetchInProgress,
|
|
44
51
|
setGenerationInProgress: _analyses2.setGenerationInProgress,
|
|
45
52
|
setAnalysisError: _analyses2.setAnalysisError,
|
|
46
|
-
addError: _alerts.addError
|
|
53
|
+
addError: _alerts.addError,
|
|
54
|
+
setStatusPollingInProgress: _analyses2.setStatusPollingInProgress
|
|
47
55
|
};
|
|
48
56
|
var withAnalysisState = (0, _redux.compose)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps), _withAnalysisStatePresenter.withAnalysisStatePresenter);
|
|
49
57
|
exports.withAnalysisState = withAnalysisState;
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js
CHANGED
|
@@ -23,6 +23,10 @@ var _propTypes2 = require("./propTypes.js");
|
|
|
23
23
|
|
|
24
24
|
var _fetchReports = require("./fetchReports.js");
|
|
25
25
|
|
|
26
|
+
var _fetchReportsStatus = require("./fetchReportsStatus.js");
|
|
27
|
+
|
|
28
|
+
var _generateReports2 = require("./generateReports.js");
|
|
29
|
+
|
|
26
30
|
var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalComponent) {
|
|
27
31
|
var WithAnalysisStatePresenter = function WithAnalysisStatePresenter(_ref) {
|
|
28
32
|
var quizAnalysis = _ref.quizAnalysis,
|
|
@@ -37,21 +41,41 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
37
41
|
setGenerationInProgress = _ref.setGenerationInProgress,
|
|
38
42
|
setAnalysisError = _ref.setAnalysisError,
|
|
39
43
|
activeQuizId = _ref.activeQuizId,
|
|
40
|
-
|
|
44
|
+
generateAnalysis = _ref.generateAnalysis,
|
|
41
45
|
fetchQuizAnalysis = _ref.fetchQuizAnalysis,
|
|
42
46
|
fetchItemAnalyses = _ref.fetchItemAnalyses,
|
|
43
|
-
|
|
47
|
+
fetchAnalysesStatus = _ref.fetchAnalysesStatus,
|
|
48
|
+
statusPollingInProgress = _ref.statusPollingInProgress,
|
|
49
|
+
setStatusPollingInProgress = _ref.setStatusPollingInProgress,
|
|
50
|
+
pollingInterval = _ref.pollingInterval,
|
|
51
|
+
passThroughProps = (0, _objectWithoutProperties2.default)(_ref, ["quizAnalysis", "itemAnalyses", "fetchInProgress", "generationInProgress", "analysisError", "setQuizAnalysis", "addError", "setItemAnalyses", "setFetchInProgress", "setGenerationInProgress", "setAnalysisError", "activeQuizId", "generateAnalysis", "fetchQuizAnalysis", "fetchItemAnalyses", "fetchAnalysesStatus", "statusPollingInProgress", "setStatusPollingInProgress", "pollingInterval"]);
|
|
44
52
|
WithAnalysisStatePresenter.displayName = "WithAnalysisStatePresenter(".concat(OriginalComponent.displayName || OriginalComponent.name, ")");
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
var runningInterval = (0, _react.useRef)(null);
|
|
54
|
+
|
|
55
|
+
var instrumentedFetchReports = function instrumentedFetchReports() {
|
|
56
|
+
return (0, _fetchReports.fetchReports)({
|
|
57
|
+
activeQuizId: activeQuizId,
|
|
58
|
+
addError: addError,
|
|
59
|
+
fetchQuizAnalysis: fetchQuizAnalysis,
|
|
60
|
+
fetchItemAnalyses: fetchItemAnalyses,
|
|
61
|
+
setAnalysisError: setAnalysisError,
|
|
62
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
63
|
+
setItemAnalyses: setItemAnalyses,
|
|
64
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
65
|
+
setFetchInProgress: setFetchInProgress,
|
|
66
|
+
setQuizAnalysis: setQuizAnalysis
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
var instrumentedStatusFetching = function instrumentedStatusFetching() {
|
|
71
|
+
return (0, _fetchReportsStatus.fetchReportsStatus)({
|
|
72
|
+
activeQuizId: activeQuizId,
|
|
73
|
+
addError: addError,
|
|
74
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
75
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
76
|
+
fetchAnalysesStatus: fetchAnalysesStatus,
|
|
77
|
+
instrumentedFetchReports: instrumentedFetchReports
|
|
78
|
+
});
|
|
55
79
|
};
|
|
56
80
|
|
|
57
81
|
function generateReports() {
|
|
@@ -60,10 +84,25 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
60
84
|
|
|
61
85
|
function _generateReports() {
|
|
62
86
|
_generateReports = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
87
|
+
var filter,
|
|
88
|
+
generationConfig,
|
|
89
|
+
_args2 = arguments;
|
|
63
90
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
64
91
|
while (1) {
|
|
65
92
|
switch (_context2.prev = _context2.next) {
|
|
66
93
|
case 0:
|
|
94
|
+
filter = _args2.length > 0 && _args2[0] !== void 0 ? _args2[0] : 'last_attempt';
|
|
95
|
+
generationConfig = {
|
|
96
|
+
filter: filter,
|
|
97
|
+
generateAnalysis: generateAnalysis,
|
|
98
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
99
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
100
|
+
addError: addError
|
|
101
|
+
};
|
|
102
|
+
_context2.next = 4;
|
|
103
|
+
return (0, _generateReports2.generateReports)(generationConfig);
|
|
104
|
+
|
|
105
|
+
case 4:
|
|
67
106
|
case "end":
|
|
68
107
|
return _context2.stop();
|
|
69
108
|
}
|
|
@@ -89,7 +128,7 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
89
128
|
}
|
|
90
129
|
|
|
91
130
|
_context.next = 4;
|
|
92
|
-
return (
|
|
131
|
+
return instrumentedFetchReports();
|
|
93
132
|
|
|
94
133
|
case 4:
|
|
95
134
|
case "end":
|
|
@@ -106,6 +145,21 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
106
145
|
|
|
107
146
|
fetchIfNeeded();
|
|
108
147
|
}, []);
|
|
148
|
+
(0, _react.useEffect)(function () {
|
|
149
|
+
if (statusPollingInProgress && !runningInterval.current) {
|
|
150
|
+
runningInterval.current = setInterval(instrumentedStatusFetching, pollingInterval);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (!statusPollingInProgress && runningInterval.current) {
|
|
154
|
+
clearInterval(runningInterval.current);
|
|
155
|
+
runningInterval.current = null;
|
|
156
|
+
} // unmount cleanup
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
return function () {
|
|
160
|
+
return clearInterval(runningInterval.current);
|
|
161
|
+
};
|
|
162
|
+
}, [statusPollingInProgress]);
|
|
109
163
|
return /*#__PURE__*/_react.default.createElement(OriginalComponent, Object.assign({
|
|
110
164
|
quizAnalysis: quizAnalysis,
|
|
111
165
|
itemAnalyses: itemAnalyses,
|
|
@@ -121,24 +175,27 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
121
175
|
itemAnalyses: _propTypes.default.arrayOf(_propTypes2.itemAnalysisPropType),
|
|
122
176
|
fetchInProgress: _propTypes.default.bool.isRequired,
|
|
123
177
|
generationInProgress: _propTypes.default.bool.isRequired,
|
|
178
|
+
statusPollingInProgress: _propTypes.default.bool.isRequired,
|
|
124
179
|
analysisError: _propTypes.default.string,
|
|
125
180
|
setQuizAnalysis: _propTypes.default.func.isRequired,
|
|
126
181
|
setItemAnalyses: _propTypes.default.func.isRequired,
|
|
127
182
|
setFetchInProgress: _propTypes.default.func.isRequired,
|
|
128
183
|
setGenerationInProgress: _propTypes.default.func.isRequired,
|
|
129
184
|
setAnalysisError: _propTypes.default.func.isRequired,
|
|
185
|
+
setStatusPollingInProgress: _propTypes.default.func.isRequired,
|
|
130
186
|
activeQuizId: _propTypes.default.string.isRequired,
|
|
131
187
|
fetchQuizAnalysis: _propTypes.default.func.isRequired,
|
|
132
188
|
fetchItemAnalyses: _propTypes.default.func.isRequired,
|
|
189
|
+
fetchAnalysesStatus: _propTypes.default.func.isRequired,
|
|
133
190
|
addError: _propTypes.default.func.isRequired,
|
|
134
|
-
|
|
135
|
-
|
|
191
|
+
pollingInterval: _propTypes.default.number.isRequired,
|
|
192
|
+
generateAnalysis: _propTypes.default.func.isRequired // from LTI, f(filter: string)
|
|
193
|
+
|
|
136
194
|
};
|
|
137
195
|
WithAnalysisStatePresenter.defaultProps = {
|
|
138
196
|
quizAnalysis: void 0,
|
|
139
197
|
itemAnalyses: void 0,
|
|
140
|
-
analysisError: ''
|
|
141
|
-
generateReport: Function.prototype
|
|
198
|
+
analysisError: ''
|
|
142
199
|
};
|
|
143
200
|
return WithAnalysisStatePresenter;
|
|
144
201
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/quiz-core",
|
|
3
|
-
"version": "17.63.1-rc.
|
|
3
|
+
"version": "17.63.1-rc.12+35b51ed8f",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The Quiz React SDK by Instructure Inc.",
|
|
6
6
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@instructure/outcomes-ui": "^2.1.9",
|
|
44
|
-
"@instructure/quiz-common": "17.63.1-rc.
|
|
45
|
-
"@instructure/quiz-i18n": "17.63.1-rc.
|
|
46
|
-
"@instructure/quiz-interactions": "17.63.1-rc.
|
|
47
|
-
"@instructure/quiz-number-input": "17.63.1-rc.
|
|
48
|
-
"@instructure/quiz-rce": "17.63.1-rc.
|
|
44
|
+
"@instructure/quiz-common": "17.63.1-rc.12+35b51ed8f",
|
|
45
|
+
"@instructure/quiz-i18n": "17.63.1-rc.12+35b51ed8f",
|
|
46
|
+
"@instructure/quiz-interactions": "17.63.1-rc.12+35b51ed8f",
|
|
47
|
+
"@instructure/quiz-number-input": "17.63.1-rc.12+35b51ed8f",
|
|
48
|
+
"@instructure/quiz-rce": "17.63.1-rc.12+35b51ed8f",
|
|
49
49
|
"@instructure/ui-a11y-content": "^7.20.0",
|
|
50
50
|
"@instructure/ui-alerts": "^7.20.0",
|
|
51
51
|
"@instructure/ui-avatar": "^7.20.0",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"eventemitter3": "^3.1.0",
|
|
107
107
|
"humps": "^2.0.0",
|
|
108
108
|
"immutable": "^3.8.1",
|
|
109
|
-
"instructure-validations": "17.63.1-rc.
|
|
109
|
+
"instructure-validations": "17.63.1-rc.12+35b51ed8f",
|
|
110
110
|
"ipaddr.js": "^1.5.4",
|
|
111
111
|
"isomorphic-fetch": "^2.2.0",
|
|
112
112
|
"isuuid": "^0.1.0",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
"intl": "^1.2.4",
|
|
158
158
|
"jquery": "^2.2.3",
|
|
159
159
|
"most-subject": "^5.3.0",
|
|
160
|
-
"quiz-presets": "17.63.1-rc.
|
|
160
|
+
"quiz-presets": "17.63.1-rc.12+35b51ed8f",
|
|
161
161
|
"react": "^16.8.6",
|
|
162
162
|
"react-addons-test-utils": "^15.6.2",
|
|
163
163
|
"react-dom": "^16.8.6",
|
|
@@ -173,5 +173,5 @@
|
|
|
173
173
|
"publishConfig": {
|
|
174
174
|
"access": "public"
|
|
175
175
|
},
|
|
176
|
-
"gitHead": "
|
|
176
|
+
"gitHead": "35b51ed8f5fba0d63337bafc790b1f1cbc48e6e4"
|
|
177
177
|
}
|