@instructure/quiz-core 20.28.0 → 20.28.1-snapshot.1
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/CHANGELOG.md +4671 -0
- package/es/common/actions/analyses.js +25 -1
- package/es/common/reducers/analyses.js +14 -2
- package/es/common/selectors/analyses.js +13 -0
- package/es/index.js +1 -0
- package/es/reporting/api/fetchStudentAnalyses.js +30 -0
- package/es/reporting/api/getAnalysesExport.js +7 -4
- package/es/reporting/api/getAnalysesStatus.js +7 -4
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/CategorizationType.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/ExportButton/index.js +6 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +2 -2
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/fetchReportsStatus.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +3 -3
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +2 -2
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +5 -5
- package/es/reporting/components/resources/StudentAnalysis/ReportCard/index.js +3 -0
- package/es/reporting/components/resources/StudentAnalysis/ReportCard/presenter.js +164 -0
- package/es/reporting/components/resources/StudentAnalysis/ReportCard/styles.js +41 -0
- package/es/reporting/components/resources/StudentAnalysis/ReportCard/theme.js +12 -0
- package/es/reporting/components/resources/StudentAnalysis/fetchReport.js +48 -0
- package/es/reporting/components/resources/StudentAnalysis/fetchReportStatus.js +42 -0
- package/es/reporting/components/resources/StudentAnalysis/withStudentAnalysisReportState.js +39 -0
- package/es/reporting/components/resources/StudentAnalysis/withStudentAnalysisReportStatePresenter.js +222 -0
- package/es/reporting/components/resources/common/ExportButton/index.js +24 -0
- package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/errorCodes.js +2 -2
- package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/errorMessages.js +1 -1
- package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/exportReports.js +4 -3
- package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/propTypes.js +3 -0
- package/lib/common/actions/analyses.js +28 -0
- package/lib/common/reducers/analyses.js +18 -2
- package/lib/common/selectors/analyses.js +18 -1
- package/lib/index.js +106 -98
- package/lib/reporting/api/fetchStudentAnalyses.js +38 -0
- package/lib/reporting/api/getAnalysesExport.js +7 -4
- package/lib/reporting/api/getAnalysesStatus.js +7 -4
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/LegacyChoiceType/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/CategorizationType.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ChoiceTypeTable/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ExportButton/index.js +5 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +2 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/fetchReportsStatus.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +3 -3
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +2 -3
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +5 -5
- package/lib/reporting/components/resources/StudentAnalysis/ReportCard/index.js +11 -0
- package/lib/reporting/components/resources/StudentAnalysis/ReportCard/presenter.js +172 -0
- package/lib/reporting/components/resources/StudentAnalysis/ReportCard/styles.js +49 -0
- package/lib/reporting/components/resources/StudentAnalysis/ReportCard/theme.js +19 -0
- package/lib/reporting/components/resources/StudentAnalysis/fetchReport.js +56 -0
- package/lib/reporting/components/resources/StudentAnalysis/fetchReportStatus.js +50 -0
- package/lib/reporting/components/resources/StudentAnalysis/withStudentAnalysisReportState.js +46 -0
- package/lib/reporting/components/resources/StudentAnalysis/withStudentAnalysisReportStatePresenter.js +231 -0
- package/lib/reporting/components/resources/common/ExportButton/index.js +32 -0
- package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/errorCodes.js +1 -1
- package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/errorMessages.js +3 -3
- package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/exportReports.js +4 -3
- package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/propTypes.js +5 -1
- package/package.json +11 -10
- /package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/AnalysisUpdateDate/index.js +0 -0
- /package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/generateReports.js +0 -0
- /package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/utils.js +0 -0
- /package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/AnalysisUpdateDate/index.js +0 -0
- /package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/generateReports.js +0 -0
- /package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/utils.js +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.fetchReportStatus = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _errorMessages = require("../common/errorMessages.js");
|
|
11
|
+
var _quizCommon = require("@instructure/quiz-common");
|
|
12
|
+
var fetchReportStatus = /*#__PURE__*/function () {
|
|
13
|
+
var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
14
|
+
var activeQuizId, addError, fetchAnalysesStatus, instrumentedFetchReports, setStatusPollingInProgress, setGenerationInProgress, status, isReportGenerationReady;
|
|
15
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
|
+
while (1) {
|
|
17
|
+
switch (_context.prev = _context.next) {
|
|
18
|
+
case 0:
|
|
19
|
+
activeQuizId = _ref.activeQuizId, addError = _ref.addError, fetchAnalysesStatus = _ref.fetchAnalysesStatus, instrumentedFetchReports = _ref.instrumentedFetchReports, setStatusPollingInProgress = _ref.setStatusPollingInProgress, setGenerationInProgress = _ref.setGenerationInProgress;
|
|
20
|
+
_context.prev = 1;
|
|
21
|
+
_context.next = 4;
|
|
22
|
+
return fetchAnalysesStatus(activeQuizId, 'last_attempt', _quizCommon.STUDENT_ANALYSES);
|
|
23
|
+
case 4:
|
|
24
|
+
status = _context.sent;
|
|
25
|
+
isReportGenerationReady = !status.student_analyses_in_progress;
|
|
26
|
+
if (isReportGenerationReady) {
|
|
27
|
+
instrumentedFetchReports();
|
|
28
|
+
setStatusPollingInProgress(false);
|
|
29
|
+
setGenerationInProgress(false);
|
|
30
|
+
}
|
|
31
|
+
return _context.abrupt("return", isReportGenerationReady);
|
|
32
|
+
case 10:
|
|
33
|
+
_context.prev = 10;
|
|
34
|
+
_context.t0 = _context["catch"](1);
|
|
35
|
+
addError((0, _errorMessages.getFailedToFetchReports)());
|
|
36
|
+
setStatusPollingInProgress(false);
|
|
37
|
+
setGenerationInProgress(false);
|
|
38
|
+
return _context.abrupt("return", true);
|
|
39
|
+
case 16:
|
|
40
|
+
case "end":
|
|
41
|
+
return _context.stop();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}, _callee, null, [[1, 10]]);
|
|
45
|
+
}));
|
|
46
|
+
return function fetchReportStatus(_x) {
|
|
47
|
+
return _ref2.apply(this, arguments);
|
|
48
|
+
};
|
|
49
|
+
}();
|
|
50
|
+
exports.fetchReportStatus = fetchReportStatus;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactRedux = require("../../../../common/react-redux.js");
|
|
8
|
+
var _featureCheck = require("../../../../common/util/featureCheck.js");
|
|
9
|
+
var _withStudentAnalysisReportStatePresenter = require("./withStudentAnalysisReportStatePresenter.js");
|
|
10
|
+
var _redux = require("redux");
|
|
11
|
+
var _analyses = require("../../../../common/selectors/analyses.js");
|
|
12
|
+
var _analyses2 = require("../../../../common/actions/analyses.js");
|
|
13
|
+
var _getAnalysesStatus = require("../../../api/getAnalysesStatus.js");
|
|
14
|
+
var _fetchStudentAnalyses = require("../../../api/fetchStudentAnalyses.js");
|
|
15
|
+
var _alerts = require("../../../../common/actions/alerts.js");
|
|
16
|
+
var _quizzes = require("../../../../common/selectors/quizzes.js");
|
|
17
|
+
var _getAnalysesExport = require("../../../api/getAnalysesExport.js");
|
|
18
|
+
var DEFAULT_POLLING_INTERVAL = 3000;
|
|
19
|
+
var mapStateToProps = function mapStateToProps(state, ownProps) {
|
|
20
|
+
return {
|
|
21
|
+
studentAnalyses: (0, _analyses.getStudentAnalyses)(state),
|
|
22
|
+
fetchInProgress: (0, _analyses.getStudentAnalysisFetchInProgress)(state),
|
|
23
|
+
generationInProgress: (0, _analyses.getStudentAnalysisGenerationInProgress)(state),
|
|
24
|
+
statusPollingInProgress: (0, _analyses.getStudentAnalysisStatusPollingInProgress)(state),
|
|
25
|
+
analysisError: (0, _analyses.getAnalysisError)(state),
|
|
26
|
+
activeQuizId: ownProps.activeQuizId || (0, _quizzes.getActiveQuizId)(state),
|
|
27
|
+
getAnalysesExport: _getAnalysesExport.getAnalysesExport,
|
|
28
|
+
fetchStudentAnalyses: _fetchStudentAnalyses.fetchStudentAnalyses,
|
|
29
|
+
fetchAnalysesStatus: _getAnalysesStatus.getAnalysesStatus,
|
|
30
|
+
pollingInterval: ownProps.pollingInterval || DEFAULT_POLLING_INTERVAL,
|
|
31
|
+
exportEnabled: (0, _featureCheck.featureOn)('student_analysis_csv')
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
|
|
35
|
+
return {
|
|
36
|
+
setStudentAnalyses: (0, _redux.bindActionCreators)(_analyses2.setStudentAnalyses, dispatch),
|
|
37
|
+
setFetchInProgress: (0, _redux.bindActionCreators)(_analyses2.setStudentAnalysisFetchInProgress, dispatch),
|
|
38
|
+
setGenerationInProgress: (0, _redux.bindActionCreators)(_analyses2.setStudentAnalysesGenerationInProgress, dispatch),
|
|
39
|
+
setAnalysisError: (0, _redux.bindActionCreators)(_analyses2.setAnalysisError, dispatch),
|
|
40
|
+
addError: ownProps.addError || (0, _redux.bindActionCreators)(_alerts.addError, dispatch),
|
|
41
|
+
setStatusPollingInProgress: (0, _redux.bindActionCreators)(_analyses2.setStudentAnalysisStatusPollingInProgress, dispatch)
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
var withStudentAnalysisReportState = (0, _redux.compose)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps), _withStudentAnalysisReportStatePresenter.withStudentAnalysisReportStatePresenter);
|
|
45
|
+
var _default = withStudentAnalysisReportState;
|
|
46
|
+
exports.default = _default;
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.withStudentAnalysisReportStatePresenter = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
var _generateReports = require("../common/generateReports.js");
|
|
16
|
+
var _exportReports = require("../common/exportReports.js");
|
|
17
|
+
var _errorCodes = require("../common/errorCodes.js");
|
|
18
|
+
var _utils = require("../common/utils.js");
|
|
19
|
+
var _fetchReport = require("./fetchReport.js");
|
|
20
|
+
var _fetchReportStatus = require("./fetchReportStatus.js");
|
|
21
|
+
var _quizCommon = require("@instructure/quiz-common");
|
|
22
|
+
var _propTypes2 = require("../common/propTypes.js");
|
|
23
|
+
var withStudentAnalysisReportStatePresenter = function withStudentAnalysisReportStatePresenter(OriginalComponent) {
|
|
24
|
+
var StudentAnalysisReportStatePresenter = function StudentAnalysisReportStatePresenter(_ref) {
|
|
25
|
+
var studentAnalyses = _ref.studentAnalyses,
|
|
26
|
+
fetchInProgress = _ref.fetchInProgress,
|
|
27
|
+
generationInProgress = _ref.generationInProgress,
|
|
28
|
+
analysisError = _ref.analysisError,
|
|
29
|
+
setStudentAnalyses = _ref.setStudentAnalyses,
|
|
30
|
+
addError = _ref.addError,
|
|
31
|
+
setFetchInProgress = _ref.setFetchInProgress,
|
|
32
|
+
setGenerationInProgress = _ref.setGenerationInProgress,
|
|
33
|
+
setAnalysisError = _ref.setAnalysisError,
|
|
34
|
+
activeQuizId = _ref.activeQuizId,
|
|
35
|
+
generateAnalysis = _ref.generateAnalysis,
|
|
36
|
+
fetchStudentAnalyses = _ref.fetchStudentAnalyses,
|
|
37
|
+
getAnalysesExport = _ref.getAnalysesExport,
|
|
38
|
+
fetchAnalysesStatus = _ref.fetchAnalysesStatus,
|
|
39
|
+
statusPollingInProgress = _ref.statusPollingInProgress,
|
|
40
|
+
setStatusPollingInProgress = _ref.setStatusPollingInProgress,
|
|
41
|
+
pollingInterval = _ref.pollingInterval,
|
|
42
|
+
disableReportsCache = _ref.disableReportsCache,
|
|
43
|
+
passThroughProps = (0, _objectWithoutProperties2.default)(_ref, ["studentAnalyses", "fetchInProgress", "generationInProgress", "analysisError", "setStudentAnalyses", "addError", "setFetchInProgress", "setGenerationInProgress", "setAnalysisError", "activeQuizId", "generateAnalysis", "fetchStudentAnalyses", "getAnalysesExport", "fetchAnalysesStatus", "statusPollingInProgress", "setStatusPollingInProgress", "pollingInterval", "disableReportsCache"]);
|
|
44
|
+
StudentAnalysisReportStatePresenter.displayName = "StudentAnalysisReportStatePresenter(".concat(OriginalComponent.displayName || OriginalComponent.name, ")");
|
|
45
|
+
var _useState = (0, _react.useState)(false),
|
|
46
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
47
|
+
analysisFetchError = _useState2[0],
|
|
48
|
+
setAnalysisFetchError = _useState2[1];
|
|
49
|
+
var instrumentedFetchReports = function instrumentedFetchReports() {
|
|
50
|
+
return (0, _fetchReport.fetchReport)({
|
|
51
|
+
activeQuizId: activeQuizId,
|
|
52
|
+
addError: addError,
|
|
53
|
+
fetchStudentAnalyses: fetchStudentAnalyses,
|
|
54
|
+
setAnalysisError: setAnalysisError,
|
|
55
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
56
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
57
|
+
setFetchInProgress: setFetchInProgress,
|
|
58
|
+
setStudentAnalyses: setStudentAnalyses,
|
|
59
|
+
getErrorMessageForCode: _errorCodes.getErrorMessageForCode,
|
|
60
|
+
setAnalysisFetchError: setAnalysisFetchError
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
var instrumentedStatusFetching = function instrumentedStatusFetching() {
|
|
64
|
+
return (0, _fetchReportStatus.fetchReportStatus)({
|
|
65
|
+
activeQuizId: activeQuizId,
|
|
66
|
+
addError: addError,
|
|
67
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
68
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
69
|
+
fetchAnalysesStatus: fetchAnalysesStatus,
|
|
70
|
+
instrumentedFetchReports: instrumentedFetchReports
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
function generateReport() {
|
|
74
|
+
return _generateReport.apply(this, arguments);
|
|
75
|
+
}
|
|
76
|
+
function _generateReport() {
|
|
77
|
+
_generateReport = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
78
|
+
var filter,
|
|
79
|
+
analysisType,
|
|
80
|
+
generationConfig,
|
|
81
|
+
_args3 = arguments;
|
|
82
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
83
|
+
while (1) {
|
|
84
|
+
switch (_context3.prev = _context3.next) {
|
|
85
|
+
case 0:
|
|
86
|
+
filter = _args3.length > 0 && _args3[0] !== void 0 ? _args3[0] : 'last_attempt';
|
|
87
|
+
analysisType = _args3.length > 1 ? _args3[1] : void 0;
|
|
88
|
+
generationConfig = {
|
|
89
|
+
filter: filter,
|
|
90
|
+
analysisType: analysisType,
|
|
91
|
+
setGenerationInProgress: setGenerationInProgress,
|
|
92
|
+
setStatusPollingInProgress: setStatusPollingInProgress,
|
|
93
|
+
generateAnalysis: generateAnalysis,
|
|
94
|
+
addError: addError
|
|
95
|
+
};
|
|
96
|
+
_context3.next = 5;
|
|
97
|
+
return (0, _generateReports.generateReports)(generationConfig);
|
|
98
|
+
case 5:
|
|
99
|
+
case "end":
|
|
100
|
+
return _context3.stop();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}, _callee3);
|
|
104
|
+
}));
|
|
105
|
+
return _generateReport.apply(this, arguments);
|
|
106
|
+
}
|
|
107
|
+
function exportReport(_x) {
|
|
108
|
+
return _exportReport.apply(this, arguments);
|
|
109
|
+
}
|
|
110
|
+
function _exportReport() {
|
|
111
|
+
_exportReport = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(format) {
|
|
112
|
+
var filter,
|
|
113
|
+
analysisType,
|
|
114
|
+
exportConfig,
|
|
115
|
+
_args4 = arguments;
|
|
116
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
117
|
+
while (1) {
|
|
118
|
+
switch (_context4.prev = _context4.next) {
|
|
119
|
+
case 0:
|
|
120
|
+
filter = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : 'last_attempt';
|
|
121
|
+
analysisType = _args4.length > 2 && _args4[2] !== void 0 ? _args4[2] : _quizCommon.STUDENT_ANALYSES;
|
|
122
|
+
exportConfig = {
|
|
123
|
+
getAnalysesExport: getAnalysesExport,
|
|
124
|
+
format: format,
|
|
125
|
+
filter: filter,
|
|
126
|
+
activeQuizId: activeQuizId,
|
|
127
|
+
addError: addError,
|
|
128
|
+
saveFile: _utils.saveFile,
|
|
129
|
+
analysisType: analysisType
|
|
130
|
+
};
|
|
131
|
+
_context4.next = 5;
|
|
132
|
+
return (0, _exportReports.exportReports)(exportConfig);
|
|
133
|
+
case 5:
|
|
134
|
+
case "end":
|
|
135
|
+
return _context4.stop();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}, _callee4);
|
|
139
|
+
}));
|
|
140
|
+
return _exportReport.apply(this, arguments);
|
|
141
|
+
}
|
|
142
|
+
(0, _react.useEffect)(function () {
|
|
143
|
+
var fetchIfNeeded = /*#__PURE__*/function () {
|
|
144
|
+
var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
145
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
146
|
+
while (1) {
|
|
147
|
+
switch (_context.prev = _context.next) {
|
|
148
|
+
case 0:
|
|
149
|
+
if (!(!studentAnalyses || disableReportsCache)) {
|
|
150
|
+
_context.next = 3;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
_context.next = 3;
|
|
154
|
+
return instrumentedFetchReports();
|
|
155
|
+
case 3:
|
|
156
|
+
case "end":
|
|
157
|
+
return _context.stop();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}, _callee);
|
|
161
|
+
}));
|
|
162
|
+
return function fetchIfNeeded() {
|
|
163
|
+
return _ref2.apply(this, arguments);
|
|
164
|
+
};
|
|
165
|
+
}();
|
|
166
|
+
fetchIfNeeded();
|
|
167
|
+
}, []);
|
|
168
|
+
var recursiveInstrumentedStatusFetching = /*#__PURE__*/function () {
|
|
169
|
+
var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
170
|
+
var isReportGenerationReady;
|
|
171
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
172
|
+
while (1) {
|
|
173
|
+
switch (_context2.prev = _context2.next) {
|
|
174
|
+
case 0:
|
|
175
|
+
_context2.next = 2;
|
|
176
|
+
return instrumentedStatusFetching();
|
|
177
|
+
case 2:
|
|
178
|
+
isReportGenerationReady = _context2.sent;
|
|
179
|
+
!isReportGenerationReady && setTimeout(recursiveInstrumentedStatusFetching, pollingInterval);
|
|
180
|
+
case 4:
|
|
181
|
+
case "end":
|
|
182
|
+
return _context2.stop();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}, _callee2);
|
|
186
|
+
}));
|
|
187
|
+
return function recursiveInstrumentedStatusFetching() {
|
|
188
|
+
return _ref3.apply(this, arguments);
|
|
189
|
+
};
|
|
190
|
+
}();
|
|
191
|
+
(0, _react.useEffect)(function () {
|
|
192
|
+
statusPollingInProgress && recursiveInstrumentedStatusFetching();
|
|
193
|
+
}, [statusPollingInProgress]);
|
|
194
|
+
return /*#__PURE__*/_react.default.createElement(OriginalComponent, Object.assign({
|
|
195
|
+
studentAnalyses: studentAnalyses,
|
|
196
|
+
fetchInProgress: fetchInProgress,
|
|
197
|
+
generationInProgress: generationInProgress,
|
|
198
|
+
analysisError: analysisError,
|
|
199
|
+
exportReport: exportReport,
|
|
200
|
+
generateReport: generateReport,
|
|
201
|
+
analysisFetchError: analysisFetchError
|
|
202
|
+
}, passThroughProps));
|
|
203
|
+
};
|
|
204
|
+
StudentAnalysisReportStatePresenter.propTypes = {
|
|
205
|
+
studentAnalyses: _propTypes2.studentAnalysesPropType,
|
|
206
|
+
fetchInProgress: _propTypes.default.bool.isRequired,
|
|
207
|
+
generationInProgress: _propTypes.default.bool.isRequired,
|
|
208
|
+
statusPollingInProgress: _propTypes.default.bool.isRequired,
|
|
209
|
+
analysisError: _propTypes.default.string,
|
|
210
|
+
setStudentAnalyses: _propTypes.default.func.isRequired,
|
|
211
|
+
setFetchInProgress: _propTypes.default.func.isRequired,
|
|
212
|
+
setGenerationInProgress: _propTypes.default.func.isRequired,
|
|
213
|
+
setAnalysisError: _propTypes.default.func.isRequired,
|
|
214
|
+
setStatusPollingInProgress: _propTypes.default.func.isRequired,
|
|
215
|
+
activeQuizId: _propTypes.default.string.isRequired,
|
|
216
|
+
fetchStudentAnalyses: _propTypes.default.func.isRequired,
|
|
217
|
+
fetchAnalysesStatus: _propTypes.default.func.isRequired,
|
|
218
|
+
getAnalysesExport: _propTypes.default.func.isRequired,
|
|
219
|
+
addError: _propTypes.default.func.isRequired,
|
|
220
|
+
pollingInterval: _propTypes.default.number.isRequired,
|
|
221
|
+
generateAnalysis: _propTypes.default.func.isRequired,
|
|
222
|
+
disableReportsCache: _propTypes.default.bool
|
|
223
|
+
};
|
|
224
|
+
StudentAnalysisReportStatePresenter.defaultProps = {
|
|
225
|
+
studentAnalyses: void 0,
|
|
226
|
+
analysisError: '',
|
|
227
|
+
disableReportsCache: false
|
|
228
|
+
};
|
|
229
|
+
return StudentAnalysisReportStatePresenter;
|
|
230
|
+
};
|
|
231
|
+
exports.withStudentAnalysisReportStatePresenter = withStudentAnalysisReportStatePresenter;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ExportButton = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
11
|
+
var _uiText = require("@instructure/ui-text");
|
|
12
|
+
var _uiButtons = require("@instructure/ui-buttons");
|
|
13
|
+
var ExportButton = function ExportButton(_ref) {
|
|
14
|
+
var enabled = _ref.enabled,
|
|
15
|
+
handleExport = _ref.handleExport;
|
|
16
|
+
return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
|
|
17
|
+
color: enabled ? 'secondary' : 'primary-inverse',
|
|
18
|
+
interaction: enabled ? 'enabled' : 'disabled',
|
|
19
|
+
onClick: handleExport,
|
|
20
|
+
themeOverride: {
|
|
21
|
+
lineHeight: '24px'
|
|
22
|
+
},
|
|
23
|
+
"data-automation": "sdk-new-report-export-button"
|
|
24
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
25
|
+
size: "medium"
|
|
26
|
+
}, (0, _formatMessage.default)('Export CSV')));
|
|
27
|
+
};
|
|
28
|
+
exports.ExportButton = ExportButton;
|
|
29
|
+
ExportButton.propTypes = {
|
|
30
|
+
enabled: _propTypes.default.bool.isRequired,
|
|
31
|
+
handleExport: _propTypes.default.func.isRequired
|
|
32
|
+
};
|
|
@@ -20,7 +20,7 @@ var getErrorMessageForCode = function getErrorMessageForCode(code) {
|
|
|
20
20
|
var defaultMsg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
|
|
21
21
|
switch (code) {
|
|
22
22
|
case INSUFFICIENT_NUMBER_OF_SESSIONS:
|
|
23
|
-
return (0, _errorMessages.
|
|
23
|
+
return (0, _errorMessages.getInsufficientSubmissionNumberError)();
|
|
24
24
|
case ANALYSIS_GENERATION_IN_PROGRESS:
|
|
25
25
|
return (0, _errorMessages.getOngoingReportGenerationError)();
|
|
26
26
|
case GENERAL_ANALYSIS_ERROR:
|
package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/errorMessages.js
RENAMED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.getNotEnoughDataAvailableError = exports.getMinimumThreeGradedSubmissionError = exports.getOngoingReportGenerationError = exports.
|
|
7
|
+
exports.getNotEnoughDataAvailableError = exports.getMinimumThreeGradedSubmissionError = exports.getOngoingReportGenerationError = exports.getInsufficientSubmissionNumberError = exports.getReportGenerationFailure = exports.getLastReportGenerationFailed = exports.getFailedToExportReports = exports.getFailedToFetchReports = void 0;
|
|
8
8
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
9
9
|
var getFailedToFetchReports = function getFailedToFetchReports() {
|
|
10
10
|
return (0, _formatMessage.default)('An error has occurred while loading this report. Please refresh the page.');
|
|
@@ -22,10 +22,10 @@ var getReportGenerationFailure = function getReportGenerationFailure() {
|
|
|
22
22
|
return (0, _formatMessage.default)('An error has occurred while generating this report. Please try again.');
|
|
23
23
|
};
|
|
24
24
|
exports.getReportGenerationFailure = getReportGenerationFailure;
|
|
25
|
-
var
|
|
25
|
+
var getInsufficientSubmissionNumberError = function getInsufficientSubmissionNumberError() {
|
|
26
26
|
return (0, _formatMessage.default)('There is not enough data available to generate this report. A minimum of 3 submissions is required to generate. Please try again when more submissions are available.');
|
|
27
27
|
};
|
|
28
|
-
exports.
|
|
28
|
+
exports.getInsufficientSubmissionNumberError = getInsufficientSubmissionNumberError;
|
|
29
29
|
var getOngoingReportGenerationError = function getOngoingReportGenerationError() {
|
|
30
30
|
return (0, _formatMessage.default)('A report for this quiz is currently being generated by another user. Please try again later.');
|
|
31
31
|
};
|
package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/exportReports.js
RENAMED
|
@@ -9,17 +9,18 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _errorMessages = require("./errorMessages.js");
|
|
11
11
|
var _contentDisposition = _interopRequireDefault(require("content-disposition"));
|
|
12
|
+
var _quizCommon = require("@instructure/quiz-common");
|
|
12
13
|
var exportReports = /*#__PURE__*/function () {
|
|
13
14
|
var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
14
|
-
var getAnalysesExport, activeQuizId, filter, format, saveFile, addError, response, dispositionHeader, disposition, filename, blob;
|
|
15
|
+
var getAnalysesExport, activeQuizId, filter, format, saveFile, addError, _ref$analysisType, analysisType, response, dispositionHeader, disposition, filename, blob;
|
|
15
16
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
16
17
|
while (1) {
|
|
17
18
|
switch (_context.prev = _context.next) {
|
|
18
19
|
case 0:
|
|
19
|
-
getAnalysesExport = _ref.getAnalysesExport, activeQuizId = _ref.activeQuizId, filter = _ref.filter, format = _ref.format, saveFile = _ref.saveFile, addError = _ref.addError;
|
|
20
|
+
getAnalysesExport = _ref.getAnalysesExport, activeQuizId = _ref.activeQuizId, filter = _ref.filter, format = _ref.format, saveFile = _ref.saveFile, addError = _ref.addError, _ref$analysisType = _ref.analysisType, analysisType = _ref$analysisType === void 0 ? _quizCommon.ITEM_ANALYSES : _ref$analysisType;
|
|
20
21
|
_context.prev = 1;
|
|
21
22
|
_context.next = 4;
|
|
22
|
-
return getAnalysesExport(activeQuizId, format, filter);
|
|
23
|
+
return getAnalysesExport(activeQuizId, format, filter, analysisType);
|
|
23
24
|
case 4:
|
|
24
25
|
response = _context.sent;
|
|
25
26
|
dispositionHeader = response.headers.get('Content-Disposition');
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.afsFlags = exports.itemAnalysisPropType = exports.answerSummaryPropType = exports.numericTypeAnswerSummaryPropType = exports.richFillBlankTypeAnswerSummaryPropType = exports.matchingTypeAnswerSummaryPropType = exports.scoreDistributionType = exports.scoreDistributionTypeAnswerSummaryPropType = exports.choiceTypeAnswerSummaryPropType = exports.choiceTypeObject = exports.onlyAggregatePropType = exports.aggregatePropType = exports.aggregateDetailPropType = exports.quizAnalysisPropType = exports.quizAnalysisMetadata = void 0;
|
|
7
|
+
exports.afsFlags = exports.itemAnalysisPropType = exports.answerSummaryPropType = exports.numericTypeAnswerSummaryPropType = exports.richFillBlankTypeAnswerSummaryPropType = exports.matchingTypeAnswerSummaryPropType = exports.scoreDistributionType = exports.scoreDistributionTypeAnswerSummaryPropType = exports.choiceTypeAnswerSummaryPropType = exports.choiceTypeObject = exports.onlyAggregatePropType = exports.aggregatePropType = exports.aggregateDetailPropType = exports.studentAnalysesPropType = exports.quizAnalysisPropType = exports.quizAnalysisMetadata = void 0;
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var quizAnalysisMetadata = _propTypes.default.shape({
|
|
10
10
|
quiz_title: _propTypes.default.string,
|
|
@@ -35,6 +35,10 @@ var quizAnalysisPropType = _propTypes.default.shape({
|
|
|
35
35
|
}).isRequired
|
|
36
36
|
});
|
|
37
37
|
exports.quizAnalysisPropType = quizAnalysisPropType;
|
|
38
|
+
var studentAnalysesPropType = _propTypes.default.shape({
|
|
39
|
+
created_timestamp: _propTypes.default.string.isRequired
|
|
40
|
+
});
|
|
41
|
+
exports.studentAnalysesPropType = studentAnalysesPropType;
|
|
38
42
|
var aggregateDetailPropType = _propTypes.default.shape({
|
|
39
43
|
count: _propTypes.default.number.isRequired,
|
|
40
44
|
percentage: _propTypes.default.number.isRequired
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/quiz-core",
|
|
3
|
-
"version": "20.28.
|
|
3
|
+
"version": "20.28.1-snapshot.1+0f6a0bb60",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The Quiz React SDK by Instructure Inc.",
|
|
6
6
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"@instructure/emotion": "^8.51.0",
|
|
45
45
|
"@instructure/grading-utils": "^1.0.0",
|
|
46
46
|
"@instructure/outcomes-ui": "^3.2.2",
|
|
47
|
-
"@instructure/quiz-common": "
|
|
48
|
-
"@instructure/quiz-i18n": "
|
|
49
|
-
"@instructure/quiz-interactions": "
|
|
50
|
-
"@instructure/quiz-number-input": "
|
|
51
|
-
"@instructure/quiz-rce": "
|
|
47
|
+
"@instructure/quiz-common": "20.28.1-snapshot.1+0f6a0bb60",
|
|
48
|
+
"@instructure/quiz-i18n": "20.28.1-snapshot.1+0f6a0bb60",
|
|
49
|
+
"@instructure/quiz-interactions": "20.28.1-snapshot.1+0f6a0bb60",
|
|
50
|
+
"@instructure/quiz-number-input": "20.28.1-snapshot.1+0f6a0bb60",
|
|
51
|
+
"@instructure/quiz-rce": "20.28.1-snapshot.1+0f6a0bb60",
|
|
52
52
|
"@instructure/ui-a11y-content": "^8.51.0",
|
|
53
53
|
"@instructure/ui-alerts": "^8.51.0",
|
|
54
54
|
"@instructure/ui-avatar": "^8.51.0",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"file-saver": "~2.0.5",
|
|
113
113
|
"humps": "^2.0.0",
|
|
114
114
|
"immutable": "^3.8.1",
|
|
115
|
-
"instructure-validations": "
|
|
115
|
+
"instructure-validations": "20.28.1-snapshot.1+0f6a0bb60",
|
|
116
116
|
"ipaddr.js": "^1.5.4",
|
|
117
117
|
"isomorphic-fetch": "^2.2.0",
|
|
118
118
|
"isuuid": "^0.1.0",
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
"uuid": "^3.2.1"
|
|
144
144
|
},
|
|
145
145
|
"devDependencies": {
|
|
146
|
-
"@instructure/quiz-scripts": "
|
|
146
|
+
"@instructure/quiz-scripts": "20.28.0",
|
|
147
147
|
"@instructure/ui-axe-check": "^8.51.0",
|
|
148
148
|
"@instructure/ui-babel-preset": "^7.22.1",
|
|
149
149
|
"@instructure/ui-test-utils": "^7.22.1",
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
"jquery": "^2.2.3",
|
|
162
162
|
"karma-junit-reporter": "^2.0.1",
|
|
163
163
|
"most-subject": "^5.3.0",
|
|
164
|
-
"quiz-presets": "
|
|
164
|
+
"quiz-presets": "20.28.1-snapshot.1+0f6a0bb60",
|
|
165
165
|
"react": "^16.8.6",
|
|
166
166
|
"react-addons-test-utils": "^15.6.2",
|
|
167
167
|
"react-dom": "^16.8.6",
|
|
@@ -176,5 +176,6 @@
|
|
|
176
176
|
},
|
|
177
177
|
"publishConfig": {
|
|
178
178
|
"access": "public"
|
|
179
|
-
}
|
|
179
|
+
},
|
|
180
|
+
"gitHead": "0f6a0bb6083ba41b5c53567d462aecb297c5a804"
|
|
180
181
|
}
|
|
File without changes
|
/package/es/reporting/components/resources/{NewQuizAndItemAnalysis → common}/generateReports.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/lib/reporting/components/resources/{NewQuizAndItemAnalysis → common}/generateReports.js
RENAMED
|
File without changes
|
|
File without changes
|