@instructure/quiz-core 17.63.1-rc.1 → 17.63.1-rc.4
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/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/ReportCard/presenter.js +80 -30
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +4 -2
- 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/withAnalysisState.js +10 -4
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +53 -13
- 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/ReportCard/presenter.js +79 -29
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +4 -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/withAnalysisState.js +10 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +53 -12
- package/package.json +9 -9
|
@@ -21,9 +21,9 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
21
21
|
|
|
22
22
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _uiText = require("@instructure/ui-text");
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _uiSpinner = require("@instructure/ui-spinner");
|
|
27
27
|
|
|
28
28
|
var _uiA11yContent = require("@instructure/ui-a11y-content");
|
|
29
29
|
|
|
@@ -36,14 +36,13 @@ var _theme = _interopRequireDefault(require("./theme.js"));
|
|
|
36
36
|
var _dec, _class, _class2, _temp;
|
|
37
37
|
|
|
38
38
|
var styles = {
|
|
39
|
-
componentId: '
|
|
39
|
+
componentId: 'cJgyM',
|
|
40
40
|
template: function template(theme) {
|
|
41
|
-
return "\n\n.
|
|
41
|
+
return "\n\n.cJgyM_gasz{align-items:center;column-gap:10px;display:inline-flex;flex:1 1 auto;height:100%;justify-content:center;width:100%}\n\n:root .cJgyM_gasz,_:-ms-fullscreen{height:10rem}\n\n.cJgyM_bZBM .cJgyM_qrQc{flex:1 1 auto}";
|
|
42
42
|
},
|
|
43
|
-
'wrapper': '
|
|
44
|
-
'left': '
|
|
45
|
-
'right': '
|
|
46
|
-
'mainText': 'ebGcj_fBqo'
|
|
43
|
+
'wrapper': 'cJgyM_gasz',
|
|
44
|
+
'left': 'cJgyM_bZBM',
|
|
45
|
+
'right': 'cJgyM_qrQc'
|
|
47
46
|
};
|
|
48
47
|
var QuizzesSpinner = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
49
48
|
(0, _inherits2.default)(QuizzesSpinner, _Component);
|
|
@@ -58,34 +57,50 @@ var QuizzesSpinner = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles)
|
|
|
58
57
|
(0, _createClass2.default)(QuizzesSpinner, [{
|
|
59
58
|
key: "mainText",
|
|
60
59
|
value: function mainText() {
|
|
61
|
-
|
|
60
|
+
var _this$props = this.props,
|
|
61
|
+
color = _this$props.color,
|
|
62
|
+
mainText = _this$props.mainText,
|
|
63
|
+
fontSize = _this$props.fontSize;
|
|
64
|
+
return /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
65
|
+
size: fontSize,
|
|
66
|
+
color: color
|
|
67
|
+
}, mainText || (0, _formatMessage.default)('Loading...'));
|
|
62
68
|
}
|
|
63
69
|
}, {
|
|
64
70
|
key: "render",
|
|
65
71
|
value: function render() {
|
|
72
|
+
var _this$props2 = this.props,
|
|
73
|
+
size = _this$props2.size,
|
|
74
|
+
minHeight = _this$props2.minHeight;
|
|
66
75
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
67
|
-
className: styles.wrapper
|
|
76
|
+
className: styles.wrapper,
|
|
77
|
+
style: {
|
|
78
|
+
minHeight: minHeight
|
|
79
|
+
}
|
|
68
80
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
69
81
|
className: styles.left
|
|
70
82
|
}, /*#__PURE__*/_react.default.createElement(_uiSpinner.Spinner, {
|
|
71
83
|
renderTitle: this.mainText(),
|
|
72
|
-
size:
|
|
84
|
+
size: size
|
|
73
85
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
74
86
|
className: styles.right
|
|
75
|
-
}, /*#__PURE__*/_react.default.createElement(_uiA11yContent.PresentationContent, null,
|
|
76
|
-
level: "h2",
|
|
77
|
-
as: "h1"
|
|
78
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
79
|
-
className: styles.mainText
|
|
80
|
-
}, this.mainText())))));
|
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_uiA11yContent.PresentationContent, null, this.mainText())));
|
|
81
88
|
}
|
|
82
89
|
}]);
|
|
83
90
|
QuizzesSpinner.displayName = "QuizzesSpinner";
|
|
84
91
|
return QuizzesSpinner;
|
|
85
92
|
}(_react.Component), _class2.propTypes = {
|
|
86
|
-
mainText: _propTypes.default.string
|
|
93
|
+
mainText: _propTypes.default.string,
|
|
94
|
+
fontSize: _propTypes.default.oneOf(['x-small', 'small', 'medium', 'large', 'x-large', 'xx-large']),
|
|
95
|
+
size: _propTypes.default.oneOf(['x-small', 'small', 'medium', 'large']),
|
|
96
|
+
color: _propTypes.default.string,
|
|
97
|
+
minHeight: _propTypes.default.string
|
|
87
98
|
}, _class2.defaultProps = {
|
|
88
|
-
mainText: null
|
|
99
|
+
mainText: null,
|
|
100
|
+
size: 'large',
|
|
101
|
+
fontSize: 'xx-large',
|
|
102
|
+
minHeight: '500px',
|
|
103
|
+
color: 'primary'
|
|
89
104
|
}, _temp)) || _class);
|
|
90
105
|
exports.QuizzesSpinner = QuizzesSpinner;
|
|
91
106
|
var _default = QuizzesSpinner;
|
|
@@ -1,14 +1,20 @@
|
|
|
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.default = exports.defaultState = exports.errorKey = exports.generationInProgressKey = exports.fetchInProgressKey = exports.itemAnalysesKey = exports.quizAnalysisKey = void 0;
|
|
8
|
+
exports.default = exports.defaultState = exports.errorKey = exports.statusPollingInProgressKey = exports.generationInProgressKey = exports.fetchInProgressKey = exports.itemAnalysesKey = exports.quizAnalysisKey = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
7
11
|
|
|
8
12
|
var _immutable = require("immutable");
|
|
9
13
|
|
|
10
14
|
var _quizCommon = require("@instructure/quiz-common");
|
|
11
15
|
|
|
16
|
+
var _fromJS;
|
|
17
|
+
|
|
12
18
|
var quizAnalysisKey = 'quizAnalysis';
|
|
13
19
|
exports.quizAnalysisKey = quizAnalysisKey;
|
|
14
20
|
var itemAnalysesKey = 'itemAnalyses';
|
|
@@ -17,15 +23,11 @@ var fetchInProgressKey = 'fetchInProgress';
|
|
|
17
23
|
exports.fetchInProgressKey = fetchInProgressKey;
|
|
18
24
|
var generationInProgressKey = 'generationInProgress';
|
|
19
25
|
exports.generationInProgressKey = generationInProgressKey;
|
|
26
|
+
var statusPollingInProgressKey = 'statusPollingInProgress';
|
|
27
|
+
exports.statusPollingInProgressKey = statusPollingInProgressKey;
|
|
20
28
|
var errorKey = 'analysisError';
|
|
21
29
|
exports.errorKey = errorKey;
|
|
22
|
-
var defaultState = (0, _immutable.fromJS)({
|
|
23
|
-
quizAnalysisKey: void 0,
|
|
24
|
-
itemAnalysesKey: void 0,
|
|
25
|
-
fetchStateKey: false,
|
|
26
|
-
generationStateKey: false,
|
|
27
|
-
errorKey: void 0
|
|
28
|
-
});
|
|
30
|
+
var defaultState = (0, _immutable.fromJS)((_fromJS = {}, (0, _defineProperty2.default)(_fromJS, quizAnalysisKey, void 0), (0, _defineProperty2.default)(_fromJS, itemAnalysesKey, void 0), (0, _defineProperty2.default)(_fromJS, fetchInProgressKey, false), (0, _defineProperty2.default)(_fromJS, generationInProgressKey, false), (0, _defineProperty2.default)(_fromJS, statusPollingInProgressKey, false), (0, _defineProperty2.default)(_fromJS, errorKey, void 0), _fromJS));
|
|
29
31
|
exports.defaultState = defaultState;
|
|
30
32
|
|
|
31
33
|
var _default = function _default() {
|
|
@@ -45,6 +47,9 @@ var _default = function _default() {
|
|
|
45
47
|
case _quizCommon.SET_ANALYSIS_GENERATION_IN_PROGRESS:
|
|
46
48
|
return state.set(generationInProgressKey, action.payload);
|
|
47
49
|
|
|
50
|
+
case _quizCommon.SET_STATUS_POLLING_IN_PROGRESS:
|
|
51
|
+
return state.set(statusPollingInProgressKey, action.payload);
|
|
52
|
+
|
|
48
53
|
case _quizCommon.SET_ANALYSIS_ERROR:
|
|
49
54
|
return state.set(errorKey, action.payload);
|
|
50
55
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getAnalysisError = exports.getGenerationInProgress = exports.getFetchInProgress = exports.getItemAnalyses = exports.getQuizAnalysis = void 0;
|
|
6
|
+
exports.getAnalysisError = exports.getGenerationInProgress = exports.getStatusPollingInProgress = exports.getFetchInProgress = exports.getItemAnalyses = exports.getQuizAnalysis = void 0;
|
|
7
7
|
var path = 'analyses';
|
|
8
8
|
|
|
9
9
|
var getQuizAnalysis = function getQuizAnalysis(state) {
|
|
@@ -28,6 +28,12 @@ var getFetchInProgress = function getFetchInProgress(state) {
|
|
|
28
28
|
|
|
29
29
|
exports.getFetchInProgress = getFetchInProgress;
|
|
30
30
|
|
|
31
|
+
var getStatusPollingInProgress = function getStatusPollingInProgress(state) {
|
|
32
|
+
return state.getIn([path, 'statusPollingInProgress'], false);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.getStatusPollingInProgress = getStatusPollingInProgress;
|
|
36
|
+
|
|
31
37
|
var getGenerationInProgress = function getGenerationInProgress(state) {
|
|
32
38
|
return state.getIn([path, 'generationInProgress'], false);
|
|
33
39
|
};
|
|
@@ -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
|
|
|
@@ -97,20 +97,14 @@ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeab
|
|
|
97
97
|
}));
|
|
98
98
|
};
|
|
99
99
|
|
|
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, {
|
|
100
|
+
_this.renderQuizAnalysisSummary = function () {
|
|
101
|
+
var _this$props = _this.props,
|
|
102
|
+
quizAnalysis = _this$props.quizAnalysis,
|
|
103
|
+
itemAnalyses = _this$props.itemAnalyses,
|
|
104
|
+
href = _this$props.href;
|
|
105
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
106
|
+
className: styles.quizAnalysisSummary
|
|
107
|
+
}, _this.renderMetrics(), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
114
108
|
direction: "row",
|
|
115
109
|
justifyItems: "space-between"
|
|
116
110
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -118,18 +112,66 @@ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeab
|
|
|
118
112
|
}, /*#__PURE__*/_react.default.createElement(_index3.AnalysisUpdateDate, {
|
|
119
113
|
date: quizAnalysis.created_timestamp,
|
|
120
114
|
multiline: true
|
|
121
|
-
})), /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
|
|
115
|
+
})), quizAnalysis && itemAnalyses && /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
|
|
122
116
|
href: href
|
|
123
117
|
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
124
118
|
size: "small"
|
|
125
119
|
}, (0, _formatMessage.default)('View Report')))));
|
|
126
|
-
}
|
|
127
|
-
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
_this.renderSpinner = function (mainText) {
|
|
123
|
+
return /*#__PURE__*/_react.default.createElement(_Spinner.default, {
|
|
124
|
+
size: "x-small",
|
|
125
|
+
color: "brand",
|
|
126
|
+
minHeight: "0",
|
|
127
|
+
mainText: mainText,
|
|
128
|
+
fontSize: "x-small"
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
_this.renderReportCardFooter = function () {
|
|
133
|
+
var _this$props2 = _this.props,
|
|
134
|
+
generationInProgress = _this$props2.generationInProgress,
|
|
135
|
+
generateReports = _this$props2.generateReports,
|
|
136
|
+
analysisError = _this$props2.analysisError;
|
|
137
|
+
return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
138
|
+
direction: "row",
|
|
139
|
+
justifyItems: "space-between"
|
|
140
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
141
|
+
shouldShrink: true
|
|
142
|
+
}, analysisError && !generationInProgress && /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
143
|
+
size: "x-small",
|
|
144
|
+
lineHeight: "fit",
|
|
145
|
+
weight: "bold",
|
|
146
|
+
color: "danger"
|
|
147
|
+
}, analysisError)), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, generationInProgress ? _this.renderSpinner((0, _formatMessage.default)('Generation In Progress')) : /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
|
|
148
|
+
onClick: generateReports,
|
|
149
|
+
role: "button"
|
|
150
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
151
|
+
size: "small"
|
|
152
|
+
}, (0, _formatMessage.default)('Generate Report')))));
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
return _this;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
(0, _createClass2.default)(NewQuizAndItemAnalysisReportCardPresenter, [{
|
|
128
159
|
key: "render",
|
|
129
160
|
value: function render() {
|
|
161
|
+
var _this$props3 = this.props,
|
|
162
|
+
fetchInProgress = _this$props3.fetchInProgress,
|
|
163
|
+
name = _this$props3.name,
|
|
164
|
+
quizAnalysis = _this$props3.quizAnalysis;
|
|
130
165
|
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
131
|
-
className: styles.
|
|
132
|
-
},
|
|
166
|
+
className: styles.reportCard
|
|
167
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
168
|
+
className: styles.titleContainer
|
|
169
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
170
|
+
size: "medium",
|
|
171
|
+
weight: "bold"
|
|
172
|
+
}, name)), !fetchInProgress && quizAnalysis && this.renderQuizAnalysisSummary(), fetchInProgress && /*#__PURE__*/_react.default.createElement("div", {
|
|
173
|
+
className: styles.spinnerContainer
|
|
174
|
+
}, this.renderSpinner()), !fetchInProgress && this.renderReportCardFooter());
|
|
133
175
|
}
|
|
134
176
|
}]);
|
|
135
177
|
NewQuizAndItemAnalysisReportCardPresenter.displayName = "NewQuizAndItemAnalysisReportCardPresenter";
|
|
@@ -137,10 +179,18 @@ var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeab
|
|
|
137
179
|
}(_react.Component), _class2.propTypes = {
|
|
138
180
|
name: _propTypes.default.node,
|
|
139
181
|
href: _propTypes.default.string,
|
|
140
|
-
quizAnalysis: _propTypes2.quizAnalysisPropType
|
|
182
|
+
quizAnalysis: _propTypes2.quizAnalysisPropType,
|
|
183
|
+
itemAnalyses: _propTypes.default.arrayOf(_propTypes2.itemAnalysisPropType),
|
|
184
|
+
fetchInProgress: _propTypes.default.bool.isRequired,
|
|
185
|
+
generationInProgress: _propTypes.default.bool.isRequired,
|
|
186
|
+
analysisError: _propTypes.default.string,
|
|
187
|
+
generateReports: _propTypes.default.func.isRequired
|
|
141
188
|
}, _class2.defaultProps = {
|
|
142
189
|
name: void 0,
|
|
143
190
|
href: void 0,
|
|
144
|
-
|
|
191
|
+
analysisError: void 0,
|
|
192
|
+
generationInProgress: void 0,
|
|
193
|
+
quizAnalysis: void 0,
|
|
194
|
+
itemAnalyses: void 0
|
|
145
195
|
}, _temp)) || _class);
|
|
146
196
|
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
|
}
|
|
@@ -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;
|
|
@@ -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,8 @@ var _propTypes2 = require("./propTypes.js");
|
|
|
23
23
|
|
|
24
24
|
var _fetchReports = require("./fetchReports.js");
|
|
25
25
|
|
|
26
|
+
var _fetchReportsStatus = require("./fetchReportsStatus.js");
|
|
27
|
+
|
|
26
28
|
var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalComponent) {
|
|
27
29
|
var WithAnalysisStatePresenter = function WithAnalysisStatePresenter(_ref) {
|
|
28
30
|
var quizAnalysis = _ref.quizAnalysis,
|
|
@@ -40,18 +42,38 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
40
42
|
generateReport = _ref.generateReport,
|
|
41
43
|
fetchQuizAnalysis = _ref.fetchQuizAnalysis,
|
|
42
44
|
fetchItemAnalyses = _ref.fetchItemAnalyses,
|
|
43
|
-
|
|
45
|
+
fetchAnalysesStatus = _ref.fetchAnalysesStatus,
|
|
46
|
+
statusPollingInProgress = _ref.statusPollingInProgress,
|
|
47
|
+
setStatusPollingInProgress = _ref.setStatusPollingInProgress,
|
|
48
|
+
pollingInterval = _ref.pollingInterval,
|
|
49
|
+
passThroughProps = (0, _objectWithoutProperties2.default)(_ref, ["quizAnalysis", "itemAnalyses", "fetchInProgress", "generationInProgress", "analysisError", "setQuizAnalysis", "addError", "setItemAnalyses", "setFetchInProgress", "setGenerationInProgress", "setAnalysisError", "activeQuizId", "generateReport", "fetchQuizAnalysis", "fetchItemAnalyses", "fetchAnalysesStatus", "statusPollingInProgress", "setStatusPollingInProgress", "pollingInterval"]);
|
|
44
50
|
WithAnalysisStatePresenter.displayName = "WithAnalysisStatePresenter(".concat(OriginalComponent.displayName || OriginalComponent.name, ")");
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
var runningInterval = (0, _react.useRef)(null);
|
|
52
|
+
|
|
53
|
+
var instrumentedFetchReports = function instrumentedFetchReports() {
|
|
54
|
+
return (0, _fetchReports.fetchReports)({
|
|
55
|
+
activeQuizId: activeQuizId,
|
|
56
|
+
addError: addError,
|
|
57
|
+
fetchQuizAnalysis: fetchQuizAnalysis,
|
|
58
|
+
fetchItemAnalyses: fetchItemAnalyses,
|
|
59
|
+
setAnalysisError: setAnalysisError,
|
|
60
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
61
|
+
setItemAnalyses: setItemAnalyses,
|
|
62
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
63
|
+
setFetchInProgress: setFetchInProgress,
|
|
64
|
+
setQuizAnalysis: setQuizAnalysis
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
var instrumentedStatusFetching = function instrumentedStatusFetching() {
|
|
69
|
+
return (0, _fetchReportsStatus.fetchReportsStatus)({
|
|
70
|
+
activeQuizId: activeQuizId,
|
|
71
|
+
addError: addError,
|
|
72
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
73
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
74
|
+
fetchAnalysesStatus: fetchAnalysesStatus,
|
|
75
|
+
instrumentedFetchReports: instrumentedFetchReports
|
|
76
|
+
});
|
|
55
77
|
};
|
|
56
78
|
|
|
57
79
|
function generateReports() {
|
|
@@ -89,7 +111,7 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
89
111
|
}
|
|
90
112
|
|
|
91
113
|
_context.next = 4;
|
|
92
|
-
return (
|
|
114
|
+
return instrumentedFetchReports();
|
|
93
115
|
|
|
94
116
|
case 4:
|
|
95
117
|
case "end":
|
|
@@ -106,6 +128,21 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
106
128
|
|
|
107
129
|
fetchIfNeeded();
|
|
108
130
|
}, []);
|
|
131
|
+
(0, _react.useEffect)(function () {
|
|
132
|
+
if (statusPollingInProgress && !runningInterval.current) {
|
|
133
|
+
runningInterval.current = setInterval(instrumentedStatusFetching, pollingInterval);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (!statusPollingInProgress && runningInterval.current) {
|
|
137
|
+
clearInterval(runningInterval.current);
|
|
138
|
+
runningInterval.current = null;
|
|
139
|
+
} // unmount cleanup
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
return function () {
|
|
143
|
+
return clearInterval(runningInterval.current);
|
|
144
|
+
};
|
|
145
|
+
}, [statusPollingInProgress]);
|
|
109
146
|
return /*#__PURE__*/_react.default.createElement(OriginalComponent, Object.assign({
|
|
110
147
|
quizAnalysis: quizAnalysis,
|
|
111
148
|
itemAnalyses: itemAnalyses,
|
|
@@ -121,16 +158,20 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
121
158
|
itemAnalyses: _propTypes.default.arrayOf(_propTypes2.itemAnalysisPropType),
|
|
122
159
|
fetchInProgress: _propTypes.default.bool.isRequired,
|
|
123
160
|
generationInProgress: _propTypes.default.bool.isRequired,
|
|
161
|
+
statusPollingInProgress: _propTypes.default.bool.isRequired,
|
|
124
162
|
analysisError: _propTypes.default.string,
|
|
125
163
|
setQuizAnalysis: _propTypes.default.func.isRequired,
|
|
126
164
|
setItemAnalyses: _propTypes.default.func.isRequired,
|
|
127
165
|
setFetchInProgress: _propTypes.default.func.isRequired,
|
|
128
166
|
setGenerationInProgress: _propTypes.default.func.isRequired,
|
|
129
167
|
setAnalysisError: _propTypes.default.func.isRequired,
|
|
168
|
+
setStatusPollingInProgress: _propTypes.default.func.isRequired,
|
|
130
169
|
activeQuizId: _propTypes.default.string.isRequired,
|
|
131
170
|
fetchQuizAnalysis: _propTypes.default.func.isRequired,
|
|
132
171
|
fetchItemAnalyses: _propTypes.default.func.isRequired,
|
|
172
|
+
fetchAnalysesStatus: _propTypes.default.func.isRequired,
|
|
133
173
|
addError: _propTypes.default.func.isRequired,
|
|
174
|
+
pollingInterval: _propTypes.default.number.isRequired,
|
|
134
175
|
// can be required after passed from LTI
|
|
135
176
|
generateReport: _propTypes.default.func
|
|
136
177
|
};
|