@instructure/quiz-core 17.63.1-rc.1 → 17.63.1-rc.13

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 (43) hide show
  1. package/es/building/api/qtiImports.js +16 -10
  2. package/es/building/components/QTIImportModal/index.js +1 -1
  3. package/es/common/actions/analyses.js +7 -1
  4. package/es/common/components/shared/spinner/Spinner.js +33 -18
  5. package/es/common/components/shared/spinner/theme.js +2 -5
  6. package/es/common/reducers/analyses.js +10 -8
  7. package/es/common/selectors/analyses.js +3 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +14 -7
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +4 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +129 -143
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +2 -1
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +9 -8
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/theme.js +2 -1
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +85 -30
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +4 -2
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +3 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +15 -12
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/fetchReportsStatus.js +45 -0
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/generateReports.js +52 -0
  20. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +10 -4
  21. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +73 -18
  22. package/lib/building/api/qtiImports.js +16 -10
  23. package/lib/building/components/QTIImportModal/index.js +1 -1
  24. package/lib/common/actions/analyses.js +8 -0
  25. package/lib/common/components/shared/spinner/Spinner.js +34 -19
  26. package/lib/common/components/shared/spinner/theme.js +2 -5
  27. package/lib/common/reducers/analyses.js +13 -8
  28. package/lib/common/selectors/analyses.js +7 -1
  29. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +14 -6
  30. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +5 -0
  31. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +132 -144
  32. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/theme.js +2 -1
  33. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +9 -8
  34. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/theme.js +2 -1
  35. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +84 -29
  36. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +4 -2
  37. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +8 -2
  38. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +15 -12
  39. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/fetchReportsStatus.js +59 -0
  40. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/generateReports.js +67 -0
  41. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +10 -2
  42. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +74 -17
  43. package/package.json +9 -9
@@ -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 (quizAnalysis.last_analysis_failed || itemAnalyses.last_analysis_failed) {
44
+ if (areAnalysesFailed) {
42
45
  setAnalysisError((0, _errorMessages.getLastReportGenerationFailed)());
43
46
  }
44
47
 
45
- _context.next = 18;
48
+ _context.next = 21;
46
49
  break;
47
50
 
48
- case 15:
49
- _context.prev = 15;
51
+ case 18:
52
+ _context.prev = 18;
50
53
  _context.t0 = _context["catch"](1);
51
54
  addError((0, _errorMessages.getFailedToFetchReports)());
52
55
 
53
- case 18:
54
- _context.prev = 18;
56
+ case 21:
57
+ _context.prev = 21;
55
58
  setFetchInProgress(false);
56
- return _context.finish(18);
59
+ return _context.finish(21);
57
60
 
58
- case 21:
61
+ case 24:
59
62
  case "end":
60
63
  return _context.stop();
61
64
  }
62
65
  }
63
- }, _callee, null, [[1, 15, 18, 21]]);
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;
@@ -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
- generateReport = _ref.generateReport,
44
+ generateAnalysis = _ref.generateAnalysis,
41
45
  fetchQuizAnalysis = _ref.fetchQuizAnalysis,
42
46
  fetchItemAnalyses = _ref.fetchItemAnalyses,
43
- passThroughProps = (0, _objectWithoutProperties2.default)(_ref, ["quizAnalysis", "itemAnalyses", "fetchInProgress", "generationInProgress", "analysisError", "setQuizAnalysis", "addError", "setItemAnalyses", "setFetchInProgress", "setGenerationInProgress", "setAnalysisError", "activeQuizId", "generateReport", "fetchQuizAnalysis", "fetchItemAnalyses"]);
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 reportFetchingConfig = {
46
- activeQuizId: activeQuizId,
47
- addError: addError,
48
- fetchQuizAnalysis: fetchQuizAnalysis,
49
- fetchItemAnalyses: fetchItemAnalyses,
50
- setAnalysisError: setAnalysisError,
51
- setItemAnalyses: setItemAnalyses,
52
- setGenerationInProgress: setGenerationInProgress,
53
- setFetchInProgress: setFetchInProgress,
54
- setQuizAnalysis: setQuizAnalysis
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 (0, _fetchReports.fetchReports)(reportFetchingConfig);
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
- // can be required after passed from LTI
135
- generateReport: _propTypes.default.func
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.1+70beebd5f",
3
+ "version": "17.63.1-rc.13+2689d1535",
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.1+70beebd5f",
45
- "@instructure/quiz-i18n": "17.63.1-rc.1+70beebd5f",
46
- "@instructure/quiz-interactions": "17.63.1-rc.1+70beebd5f",
47
- "@instructure/quiz-number-input": "17.63.1-rc.1+70beebd5f",
48
- "@instructure/quiz-rce": "17.63.1-rc.1+70beebd5f",
44
+ "@instructure/quiz-common": "17.63.1-rc.13+2689d1535",
45
+ "@instructure/quiz-i18n": "17.63.1-rc.13+2689d1535",
46
+ "@instructure/quiz-interactions": "17.63.1-rc.13+2689d1535",
47
+ "@instructure/quiz-number-input": "17.63.1-rc.13+2689d1535",
48
+ "@instructure/quiz-rce": "17.63.1-rc.13+2689d1535",
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.1+70beebd5f",
109
+ "instructure-validations": "17.63.1-rc.13+2689d1535",
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.1+70beebd5f",
160
+ "quiz-presets": "17.63.1-rc.13+2689d1535",
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": "70beebd5f9c207e03df9942938452b5389ef3881"
176
+ "gitHead": "2689d153545ce15c011be212105bfc5aae9835db"
177
177
  }