@instructure/quiz-core 17.64.1-rc.2 → 17.64.1-rc.6
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/components/resources/quizSessionResult/Info/index.js +31 -1
- package/es/common/components/resources/sessionItemResult/SessionItemResult/presenter.js +3 -1
- package/es/common/components/resources/sessionItemResult/SessionItemResultsList/index.js +5 -0
- package/es/common/reducers/analyses.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +2 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +3 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +8 -4
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +4 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +5 -5
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +42 -24
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/theme.js +2 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +99 -36
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +10 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +1 -1
- package/lib/common/components/resources/quizSessionResult/Info/index.js +33 -1
- package/lib/common/components/resources/sessionItemResult/SessionItemResult/presenter.js +3 -1
- package/lib/common/components/resources/sessionItemResult/SessionItemResultsList/index.js +6 -0
- package/lib/common/reducers/analyses.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +2 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js +3 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +8 -4
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +4 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +5 -5
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +44 -24
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/theme.js +2 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +103 -35
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +10 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +1 -1
- package/package.json +10 -9
|
@@ -7,6 +7,7 @@ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
|
7
7
|
var _dec, _class, _class2, _temp;
|
|
8
8
|
|
|
9
9
|
import React, { Component } from 'react';
|
|
10
|
+
import PropTypes from 'prop-types';
|
|
10
11
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
11
12
|
import classNames from 'classnames';
|
|
12
13
|
import { AccessibleContent, ScreenReaderContent } from '@instructure/ui-a11y-content';
|
|
@@ -17,6 +18,7 @@ import { Heading } from '@instructure/ui-heading';
|
|
|
17
18
|
import { View } from '@instructure/ui-view';
|
|
18
19
|
import { themeable } from '@instructure/ui-themeable';
|
|
19
20
|
import t from '@instructure/quiz-i18n/es/format-message';
|
|
21
|
+
import { scoreToLetterGrade } from '@instructure/grading-utils';
|
|
20
22
|
import { withI18nSupport } from '@instructure/quiz-common';
|
|
21
23
|
import FormattedDuration from "../../../shared/FormattedDuration/index.js";
|
|
22
24
|
import { formatTime } from "../../../../util/formatTimespan.js";
|
|
@@ -114,6 +116,26 @@ export var Info = (_dec = themeable(theme, styles), _dec(_class = (_temp = _clas
|
|
|
114
116
|
}, alerts));
|
|
115
117
|
}
|
|
116
118
|
}
|
|
119
|
+
}, {
|
|
120
|
+
key: "renderLetterGrade",
|
|
121
|
+
value: function renderLetterGrade() {
|
|
122
|
+
var letterGrade = scoreToLetterGrade(this.percentageVal * 100, this.props.gradingScheme);
|
|
123
|
+
var gradeText = t('Grade for this attempt');
|
|
124
|
+
var alt = t('Grade for this attempt: { grade }', {
|
|
125
|
+
grade: letterGrade
|
|
126
|
+
});
|
|
127
|
+
return /*#__PURE__*/React.createElement(AccessibleContent, {
|
|
128
|
+
alt: alt
|
|
129
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
130
|
+
as: "div"
|
|
131
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
132
|
+
size: "xx-large",
|
|
133
|
+
weight: "bold",
|
|
134
|
+
color: "primary"
|
|
135
|
+
}, letterGrade)), /*#__PURE__*/React.createElement(Text, {
|
|
136
|
+
color: "secondary"
|
|
137
|
+
}, gradeText));
|
|
138
|
+
}
|
|
117
139
|
}, {
|
|
118
140
|
key: "renderScoreStats",
|
|
119
141
|
value: function renderScoreStats() {
|
|
@@ -186,7 +208,7 @@ export var Info = (_dec = themeable(theme, styles), _dec(_class = (_temp = _clas
|
|
|
186
208
|
className: classNames('fs-mask', styles.info)
|
|
187
209
|
}, /*#__PURE__*/React.createElement(ScreenReaderContent, null, /*#__PURE__*/React.createElement(Heading, {
|
|
188
210
|
level: "h2"
|
|
189
|
-
}, t('Assessment Statistics'))), this.renderScoreStats(), /*#__PURE__*/React.createElement("div", {
|
|
211
|
+
}, t('Assessment Statistics'))), this.props.restrictQuantitativeData ? this.renderLetterGrade() : this.renderScoreStats(), /*#__PURE__*/React.createElement("div", {
|
|
190
212
|
className: styles.infoWrapper
|
|
191
213
|
}, this.renderTime()))));
|
|
192
214
|
}
|
|
@@ -286,8 +308,16 @@ export var Info = (_dec = themeable(theme, styles), _dec(_class = (_temp = _clas
|
|
|
286
308
|
Info.displayName = "Info";
|
|
287
309
|
return Info;
|
|
288
310
|
}(withI18nSupport(Component)), _class2.propTypes = {
|
|
311
|
+
gradingScheme: PropTypes.arrayOf(PropTypes.shape({
|
|
312
|
+
name: PropTypes.string,
|
|
313
|
+
value: PropTypes.number
|
|
314
|
+
})),
|
|
289
315
|
quizSession: ImmutablePropTypes.record.isRequired,
|
|
290
316
|
quizSessionResult: ImmutablePropTypes.record.isRequired,
|
|
317
|
+
restrictQuantitativeData: PropTypes.bool,
|
|
291
318
|
sessionItemResults: ImmutablePropTypes.list.isRequired
|
|
319
|
+
}, _class2.defaultProps = {
|
|
320
|
+
gradingScheme: [],
|
|
321
|
+
restrictQuantitativeData: false
|
|
292
322
|
}, _temp)) || _class);
|
|
293
323
|
export default Info;
|
|
@@ -136,7 +136,7 @@ export var SessionItemResult = (_dec = themeable(theme, styles), _dec(_class = (
|
|
|
136
136
|
value: function renderHeader() {
|
|
137
137
|
return /*#__PURE__*/React.createElement("div", {
|
|
138
138
|
className: styles.sessionItemResultHeader
|
|
139
|
-
}, this.renderResultPosition(), this.hasRegradeInfo() ? this.renderRegradePoints() : this.renderPoints());
|
|
139
|
+
}, this.renderResultPosition(), !this.props.restrictQuantitativeData && (this.hasRegradeInfo() ? this.renderRegradePoints() : this.renderPoints()));
|
|
140
140
|
}
|
|
141
141
|
}, {
|
|
142
142
|
key: "renderResultPosition",
|
|
@@ -345,6 +345,7 @@ export var SessionItemResult = (_dec = themeable(theme, styles), _dec(_class = (
|
|
|
345
345
|
editGraderFeedback: PropTypes.func,
|
|
346
346
|
hideGraderFeedback: PropTypes.bool,
|
|
347
347
|
itemResultsModifications: ImmutablePropTypes.map,
|
|
348
|
+
restrictQuantitativeData: PropTypes.bool,
|
|
348
349
|
sessionItem: ImmutablePropTypes.record.isRequired,
|
|
349
350
|
sessionItemResult: ImmutablePropTypes.record.isRequired,
|
|
350
351
|
shouldRenderAnswerFeedback: PropTypes.bool,
|
|
@@ -353,6 +354,7 @@ export var SessionItemResult = (_dec = themeable(theme, styles), _dec(_class = (
|
|
|
353
354
|
editGraderFeedback: null,
|
|
354
355
|
hideGraderFeedback: false,
|
|
355
356
|
itemResultsModifications: null,
|
|
357
|
+
restrictQuantitativeData: false,
|
|
356
358
|
shouldRenderAnswerFeedback: false,
|
|
357
359
|
shouldRenderTopBorder: true
|
|
358
360
|
}, _temp)) || _class);
|
|
@@ -6,6 +6,7 @@ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
|
6
6
|
var _dec, _class, _class2, _temp;
|
|
7
7
|
|
|
8
8
|
import React, { Component } from 'react';
|
|
9
|
+
import PropTypes from 'prop-types';
|
|
9
10
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
10
11
|
import { Heading } from '@instructure/ui-heading';
|
|
11
12
|
import { themeable } from '@instructure/ui-themeable';
|
|
@@ -44,6 +45,7 @@ export var SessionItemResultsList = (_dec = themeable(theme, styles), _dec(_clas
|
|
|
44
45
|
return /*#__PURE__*/React.createElement(SessionItemResult, {
|
|
45
46
|
appContainer: _this.props.appContainer,
|
|
46
47
|
key: sessionItem.id,
|
|
48
|
+
restrictQuantitativeData: _this.props.restrictQuantitativeData,
|
|
47
49
|
sessionItem: sessionItem,
|
|
48
50
|
sessionItemResult: sessionItem.sessionItemResult,
|
|
49
51
|
shouldRenderTopBorder: shouldRenderTopBorder
|
|
@@ -93,6 +95,9 @@ export var SessionItemResultsList = (_dec = themeable(theme, styles), _dec(_clas
|
|
|
93
95
|
return SessionItemResultsList;
|
|
94
96
|
}(Component), _class2.propTypes = {
|
|
95
97
|
appContainer: CustomPropTypes.selectors.isRequired,
|
|
98
|
+
restrictQuantitativeData: PropTypes.bool,
|
|
96
99
|
sessionItems: ImmutablePropTypes.list.isRequired
|
|
100
|
+
}, _class2.defaultProps = {
|
|
101
|
+
restrictQuantitativeData: false
|
|
97
102
|
}, _temp)) || _class);
|
|
98
103
|
export default SessionItemResultsList;
|
|
@@ -10,7 +10,7 @@ export var fetchInProgressKey = 'fetchInProgress';
|
|
|
10
10
|
export var generationInProgressKey = 'generationInProgress';
|
|
11
11
|
export var statusPollingInProgressKey = 'statusPollingInProgress';
|
|
12
12
|
export var errorKey = 'analysisError';
|
|
13
|
-
export var defaultState = fromJS((_fromJS = {}, _defineProperty(_fromJS, quizAnalysisKey, void 0), _defineProperty(_fromJS, itemAnalysesKey, void 0), _defineProperty(_fromJS, fetchInProgressKey,
|
|
13
|
+
export var defaultState = fromJS((_fromJS = {}, _defineProperty(_fromJS, quizAnalysisKey, void 0), _defineProperty(_fromJS, itemAnalysesKey, void 0), _defineProperty(_fromJS, fetchInProgressKey, true), _defineProperty(_fromJS, generationInProgressKey, false), _defineProperty(_fromJS, statusPollingInProgressKey, false), _defineProperty(_fromJS, errorKey, void 0), _fromJS));
|
|
14
14
|
export default (function () {
|
|
15
15
|
var state = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : defaultState;
|
|
16
16
|
var action = arguments.length > 1 ? arguments[1] : void 0;
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js
CHANGED
|
@@ -57,8 +57,9 @@ export var AnalysisMetric = (_dec = themeable(theme, styles), _dec(_class = (_te
|
|
|
57
57
|
}(Component), _class2.propTypes = {
|
|
58
58
|
metricKey: PropTypes.string.isRequired,
|
|
59
59
|
label: PropTypes.string.isRequired,
|
|
60
|
-
value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array])
|
|
60
|
+
value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]),
|
|
61
61
|
suffix: PropTypes.string
|
|
62
62
|
}, _class2.defaultProps = {
|
|
63
|
+
value: void 0,
|
|
63
64
|
suffix: ''
|
|
64
65
|
}, _temp)) || _class);
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js
CHANGED
|
@@ -65,11 +65,13 @@ export var AnalysisPopoverMetric = (_dec = themeable(theme, styles), _dec(_class
|
|
|
65
65
|
}(Component), _class2.propTypes = {
|
|
66
66
|
metricKey: PropTypes.string.isRequired,
|
|
67
67
|
label: PropTypes.string.isRequired,
|
|
68
|
-
value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
|
68
|
+
value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
69
69
|
popoverDescription: PropTypes.shape({
|
|
70
70
|
title: PropTypes.string,
|
|
71
71
|
subtitle: PropTypes.string,
|
|
72
72
|
body: PropTypes.string,
|
|
73
73
|
screenReaderLabel: PropTypes.string
|
|
74
74
|
}).isRequired
|
|
75
|
+
}, _class2.defaultProps = {
|
|
76
|
+
value: void 0
|
|
75
77
|
}, _temp)) || _class);
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js
CHANGED
|
@@ -75,20 +75,24 @@ export var Row = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class
|
|
|
75
75
|
key: _this.props.choiceIndex
|
|
76
76
|
}, /*#__PURE__*/React.createElement(Table.Cell, {
|
|
77
77
|
theme: {
|
|
78
|
-
padding: '0px'
|
|
78
|
+
padding: '0px',
|
|
79
|
+
fontWeight: 'bold'
|
|
79
80
|
}
|
|
80
81
|
}, _this.renderIcon(correct)), /*#__PURE__*/React.createElement(Table.RowHeader, {
|
|
81
82
|
theme: {
|
|
82
|
-
padding: cellPadding
|
|
83
|
+
padding: cellPadding,
|
|
84
|
+
fontWeight: 'bold'
|
|
83
85
|
},
|
|
84
86
|
className: styles.tableBody
|
|
85
87
|
}, _this.renderMiddleCell(correct, extractTextFromHtml(_this.props.choice.body))), /*#__PURE__*/React.createElement(Table.Cell, {
|
|
86
88
|
theme: {
|
|
87
|
-
padding: cellPadding
|
|
89
|
+
padding: cellPadding,
|
|
90
|
+
fontWeight: 'bold'
|
|
88
91
|
}
|
|
89
92
|
}, _this.renderMiddleCell(correct, _this.props.choice.count)), /*#__PURE__*/React.createElement(Table.Cell, {
|
|
90
93
|
theme: {
|
|
91
|
-
padding: cellPadding
|
|
94
|
+
padding: cellPadding,
|
|
95
|
+
fontWeight: 'bold'
|
|
92
96
|
},
|
|
93
97
|
textAlign: "center"
|
|
94
98
|
}, _this.renderLastCell(correct, "".concat(_this.props.choice.percentage, "%"))));
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js
CHANGED
|
@@ -48,7 +48,10 @@ export var AnswerSummaryTable = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
48
48
|
className: styles.tableWrapper
|
|
49
49
|
}, /*#__PURE__*/React.createElement(Heading, {
|
|
50
50
|
margin: "large 0 small 0",
|
|
51
|
-
level: "h3"
|
|
51
|
+
level: "h3",
|
|
52
|
+
theme: {
|
|
53
|
+
h3FontWeight: 'normal'
|
|
54
|
+
}
|
|
52
55
|
}, t('Answer Frequency Summary')), /*#__PURE__*/React.createElement(ChoiceInfo, {
|
|
53
56
|
itemId: itemId,
|
|
54
57
|
choices: choices,
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js
CHANGED
|
@@ -143,7 +143,7 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
|
|
|
143
143
|
}, /*#__PURE__*/React.createElement(AnalysisPopoverMetric, {
|
|
144
144
|
metricKey: "difficulty_index",
|
|
145
145
|
label: t('Item Difficulty'),
|
|
146
|
-
value:
|
|
146
|
+
value: scores.difficulty_index,
|
|
147
147
|
popoverDescription: difficultyIndex
|
|
148
148
|
})), /*#__PURE__*/React.createElement(Flex.Item, {
|
|
149
149
|
margin: "none medium none none"
|
|
@@ -162,7 +162,7 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
|
|
|
162
162
|
}, /*#__PURE__*/React.createElement(AnalysisPopoverMetric, {
|
|
163
163
|
metricKey: "discrimination_index",
|
|
164
164
|
label: t('Discrimination Index'),
|
|
165
|
-
value:
|
|
165
|
+
value: scores.discrimination_index,
|
|
166
166
|
popoverDescription: discriminationIndex
|
|
167
167
|
})))), /*#__PURE__*/React.createElement(Flex.Item, {
|
|
168
168
|
overflowY: "visible",
|
|
@@ -176,7 +176,7 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
|
|
|
176
176
|
}, /*#__PURE__*/React.createElement(AnalysisPopoverMetric, {
|
|
177
177
|
metricKey: "pearson_correlation",
|
|
178
178
|
label: t('Corrected Item-Total Correlation Coefficient'),
|
|
179
|
-
value:
|
|
179
|
+
value: scores.pearson_correlation,
|
|
180
180
|
popoverDescription: pearsonCorrelation
|
|
181
181
|
}))))));
|
|
182
182
|
};
|
|
@@ -242,5 +242,5 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
|
|
|
242
242
|
NewItemAnalysis.displayName = "NewItemAnalysis";
|
|
243
243
|
return NewItemAnalysis;
|
|
244
244
|
}(Component), _class2.propTypes = {
|
|
245
|
-
itemAnalysis: itemAnalysisPropType
|
|
246
|
-
}, _temp)) || _class);
|
|
245
|
+
itemAnalysis: itemAnalysisPropType
|
|
246
|
+
}.isRequired, _temp)) || _class);
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js
CHANGED
|
@@ -8,16 +8,17 @@ var _dec, _class, _class2, _temp;
|
|
|
8
8
|
import { Heading } from '@instructure/ui-heading';
|
|
9
9
|
import React, { Component } from 'react';
|
|
10
10
|
var styles = {
|
|
11
|
-
componentId: '
|
|
11
|
+
componentId: 'PCuaD',
|
|
12
12
|
template: function template(theme) {
|
|
13
|
-
return "\n\n.
|
|
13
|
+
return "\n\n.PCuaD_eDnN{display:flex;justify-content:space-between;padding-bottom:".concat(theme.headingPadding || 'inherit', "}\n\n.PCuaD_eKXQ{margin:").concat(theme.cardTopMargin || 'inherit', " 0 ").concat(theme.cardBottomMargin || 'inherit', " 0;padding:").concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.PCuaD_dYbQ{align-items:center;display:flex;height:502px;justify-content:center;padding:").concat(theme.cardWrapperPadding || 'inherit', "}\n\n.PCuaD_crZr{padding-top:").concat(theme.metricGroupPaddingTop || 'inherit', "}\n\n.PCuaD_bTHH{position:absolute;right:").concat(theme.viewPaddingRight || 'inherit', ";top:").concat(theme.viewPaddingTop || 'inherit', "}\n\n.PCuaD_dPzc,.PCuaD_cpZE{column-gap:").concat(theme.metricsColumnGap || 'inherit', ";display:flex;flex-wrap:wrap;justify-content:flex-start;row-gap:1.5rem}");
|
|
14
14
|
},
|
|
15
|
-
'heading': '
|
|
16
|
-
'cardWrapper': '
|
|
17
|
-
'
|
|
18
|
-
'
|
|
19
|
-
'
|
|
20
|
-
'
|
|
15
|
+
'heading': 'PCuaD_eDnN',
|
|
16
|
+
'cardWrapper': 'PCuaD_eKXQ',
|
|
17
|
+
'skeletonCardWrapper': 'PCuaD_dYbQ',
|
|
18
|
+
'container': 'PCuaD_crZr',
|
|
19
|
+
'expandButtonContainer': 'PCuaD_bTHH',
|
|
20
|
+
'metricGroup': 'PCuaD_dPzc',
|
|
21
|
+
'metricsWrapper': 'PCuaD_cpZE'
|
|
21
22
|
};
|
|
22
23
|
import t from '@instructure/quiz-i18n/es/format-message';
|
|
23
24
|
import ExpandButton from "../../../../../common/components/shared/ExpandButton/index.js";
|
|
@@ -29,6 +30,8 @@ import AnalysisPopoverMetric from "../AnalysisPopoverMetric/index.js";
|
|
|
29
30
|
import AnalysisMetric from "../AnalysisMetric/index.js";
|
|
30
31
|
import { ScoreDistribution } from "../charts/ScoreDistribution/presenter.js";
|
|
31
32
|
import { quizAnalysisPropType } from "../propTypes.js";
|
|
33
|
+
import PropTypes from 'prop-types';
|
|
34
|
+
import { Spinner } from '@instructure/ui-spinner';
|
|
32
35
|
import { cronbachsAlpha, standardDeviation } from "./popoverContent.js";
|
|
33
36
|
export var NewQuizAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
34
37
|
_inherits(NewQuizAnalysis, _Component);
|
|
@@ -63,28 +66,23 @@ export var NewQuizAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
|
|
|
63
66
|
className: styles.metricGroup
|
|
64
67
|
}, /*#__PURE__*/React.createElement(AnalysisPopoverMetric, {
|
|
65
68
|
metricKey: "stddev",
|
|
66
|
-
value:
|
|
69
|
+
value: scores === null || scores === void 0 ? void 0 : scores.stddev,
|
|
67
70
|
label: t('Standard Deviation'),
|
|
68
71
|
popoverDescription: standardDeviation
|
|
69
72
|
}), /*#__PURE__*/React.createElement(AnalysisPopoverMetric, {
|
|
70
73
|
metricKey: "cronbachs_alpha",
|
|
71
|
-
value:
|
|
74
|
+
value: scores === null || scores === void 0 ? void 0 : scores.cronbachs_alpha,
|
|
72
75
|
label: t('Cronbach\'s Alpha'),
|
|
73
76
|
popoverDescription: cronbachsAlpha
|
|
74
77
|
})));
|
|
75
78
|
};
|
|
76
79
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
_createClass(NewQuizAnalysis, [{
|
|
81
|
-
key: "render",
|
|
82
|
-
value: function render() {
|
|
83
|
-
var quizAnalysis = this.props.quizAnalysis;
|
|
80
|
+
_this.renderContent = function () {
|
|
81
|
+
var quizAnalysis = _this.props.quizAnalysis;
|
|
84
82
|
var scores = quizAnalysis.scores,
|
|
85
83
|
attempts = quizAnalysis.attempts,
|
|
86
84
|
metadata = quizAnalysis.metadata;
|
|
87
|
-
var expanded =
|
|
85
|
+
var expanded = _this.state.expanded;
|
|
88
86
|
return /*#__PURE__*/React.createElement(Card, {
|
|
89
87
|
className: styles.cardWrapper
|
|
90
88
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -117,7 +115,7 @@ export var NewQuizAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
|
|
|
117
115
|
}, /*#__PURE__*/React.createElement(AnalysisMetric, {
|
|
118
116
|
metricKey: "median_percentage",
|
|
119
117
|
label: t('Median Score'),
|
|
120
|
-
value:
|
|
118
|
+
value: scores === null || scores === void 0 ? void 0 : scores.median_percentage,
|
|
121
119
|
suffix: "%"
|
|
122
120
|
}), /*#__PURE__*/React.createElement(AnalysisMetric, {
|
|
123
121
|
metricKey: "mean_elapsed_sec",
|
|
@@ -126,19 +124,39 @@ export var NewQuizAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
|
|
|
126
124
|
})), /*#__PURE__*/React.createElement("div", {
|
|
127
125
|
className: styles.expandButtonContainer
|
|
128
126
|
}, /*#__PURE__*/React.createElement(ExpandButton, {
|
|
129
|
-
onClick:
|
|
127
|
+
onClick: _this.handleToggle,
|
|
130
128
|
title: expanded ? t('collapse quiz analysis') : t('expand quiz analysis'),
|
|
131
129
|
isExpanded: expanded
|
|
132
|
-
}))), expanded &&
|
|
133
|
-
decileDistribution:
|
|
130
|
+
}))), expanded && _this.renderExpanded(), /*#__PURE__*/React.createElement(ScoreDistribution, {
|
|
131
|
+
decileDistribution: scores === null || scores === void 0 ? void 0 : scores.decile_distribution
|
|
134
132
|
}));
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
return _this;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
_createClass(NewQuizAnalysis, [{
|
|
139
|
+
key: "render",
|
|
140
|
+
value: function render() {
|
|
141
|
+
var fetchInProgress = this.props.fetchInProgress;
|
|
142
|
+
|
|
143
|
+
if (fetchInProgress) {
|
|
144
|
+
return /*#__PURE__*/React.createElement(Card, {
|
|
145
|
+
className: styles.skeletonCardWrapper
|
|
146
|
+
}, /*#__PURE__*/React.createElement(Spinner, {
|
|
147
|
+
renderTitle: t('Loading quiz analysis data')
|
|
148
|
+
}));
|
|
149
|
+
} else {
|
|
150
|
+
return this.renderContent();
|
|
151
|
+
}
|
|
135
152
|
}
|
|
136
153
|
}]);
|
|
137
154
|
|
|
138
155
|
NewQuizAnalysis.displayName = "NewQuizAnalysis";
|
|
139
156
|
return NewQuizAnalysis;
|
|
140
157
|
}(Component), _class2.propTypes = {
|
|
141
|
-
quizAnalysis: quizAnalysisPropType
|
|
142
|
-
|
|
158
|
+
quizAnalysis: quizAnalysisPropType,
|
|
159
|
+
fetchInProgress: PropTypes.bool
|
|
160
|
+
}.isRequired, _class2.defaultProps = {
|
|
143
161
|
quizAnalysis: {}
|
|
144
162
|
}, _temp)) || _class);
|
|
@@ -2,6 +2,8 @@ export default function generator(_ref) {
|
|
|
2
2
|
var spacing = _ref.spacing;
|
|
3
3
|
return {
|
|
4
4
|
metricGroupPaddingTop: spacing.medium,
|
|
5
|
+
cardTopMargin: spacing.small,
|
|
6
|
+
cardBottomMargin: spacing.medium,
|
|
5
7
|
viewPaddingRight: spacing.large,
|
|
6
8
|
viewPaddingTop: spacing.medium,
|
|
7
9
|
headingPadding: spacing.medium,
|
|
@@ -62,7 +62,7 @@ export var ScoreDistribution = (_dec = themeable(theme, styles), _dec(_class = (
|
|
|
62
62
|
}, t('Score Distribution'))), /*#__PURE__*/React.createElement(QuintileDistribution, {
|
|
63
63
|
animateDelay: 1000,
|
|
64
64
|
animateDuration: 1000,
|
|
65
|
-
visualDistribution: this.props.decileDistribution,
|
|
65
|
+
visualDistribution: this.props.decileDistribution || [],
|
|
66
66
|
calculateLabelForColumn: this.calculateLabelForColumn
|
|
67
67
|
}), /*#__PURE__*/React.createElement("div", {
|
|
68
68
|
className: styles.chartLabel
|
|
@@ -6,64 +6,122 @@ import React, { Component } from 'react';
|
|
|
6
6
|
import { Heading } from '@instructure/ui-heading';
|
|
7
7
|
import NewItemAnalysis from "./NewItemAnalysis/index.js";
|
|
8
8
|
import NewQuizAnalysis from "./NewQuizAnalysis/index.js";
|
|
9
|
-
import Spinner from "../../../../common/components/shared/spinner/Spinner.js";
|
|
10
9
|
import t from '@instructure/quiz-i18n/es/format-message';
|
|
11
10
|
import { Flex } from '@instructure/ui-flex';
|
|
12
11
|
import { AnalysisUpdateDate } from "./AnalysisUpdateDate/index.js";
|
|
13
12
|
import { itemAnalysisPropType, quizAnalysisPropType } from "./propTypes.js";
|
|
14
13
|
import PropTypes from 'prop-types';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
import { QuizzesSpinner } from "../../../../common/components/shared/spinner/Spinner.js";
|
|
15
|
+
import { Spinner } from '@instructure/ui-spinner';
|
|
16
|
+
import { Button } from '@instructure/ui-buttons';
|
|
17
|
+
import { Text } from '@instructure/ui-text';
|
|
18
18
|
export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
|
|
19
19
|
_inherits(NewQuizAndItemAnalysisPresenter, _Component);
|
|
20
20
|
|
|
21
21
|
var _super = _createSuper(NewQuizAndItemAnalysisPresenter);
|
|
22
22
|
|
|
23
23
|
function NewQuizAndItemAnalysisPresenter() {
|
|
24
|
+
var _this;
|
|
25
|
+
|
|
24
26
|
_classCallCheck(this, NewQuizAndItemAnalysisPresenter);
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
29
|
+
args[_key] = arguments[_key];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
33
|
+
|
|
34
|
+
_this.renderItemAnalyses = function () {
|
|
35
|
+
var itemAnalyses = _this.props.itemAnalyses;
|
|
36
|
+
return /*#__PURE__*/React.createElement("div", null, itemAnalyses.map(function (itemAnalysis) {
|
|
37
|
+
return /*#__PURE__*/React.createElement(NewItemAnalysis, {
|
|
38
|
+
key: itemAnalysis.metadata.item_id,
|
|
39
|
+
itemAnalysis: itemAnalysis
|
|
40
|
+
});
|
|
41
|
+
}));
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
_this.renderSpinner = function () {
|
|
45
|
+
return /*#__PURE__*/React.createElement(Flex, {
|
|
46
|
+
padding: "medium",
|
|
47
|
+
justifyItems: "center",
|
|
48
|
+
alignItems: "center"
|
|
49
|
+
}, /*#__PURE__*/React.createElement(Spinner, {
|
|
50
|
+
renderTitle: t('Loading item analyses data')
|
|
51
|
+
}));
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
_this.renderOngoingGenerationButton = function () {
|
|
55
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
56
|
+
color: "primary-inverse",
|
|
57
|
+
interaction: "disabled",
|
|
58
|
+
margin: "0 0 x-small 0"
|
|
59
|
+
}, /*#__PURE__*/React.createElement(QuizzesSpinner, {
|
|
60
|
+
size: "x-small",
|
|
61
|
+
color: "brand",
|
|
62
|
+
minHeight: "0",
|
|
63
|
+
mainText: t('Generation In Progress'),
|
|
64
|
+
fontSize: "medium"
|
|
65
|
+
}));
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
_this.renderStartGenerationButton = function () {
|
|
69
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
70
|
+
color: "primary-inverse",
|
|
71
|
+
margin: "0 0 x-small 0",
|
|
72
|
+
onClick: _this.handleGeneration,
|
|
73
|
+
theme: {
|
|
74
|
+
lineHeight: '24px'
|
|
75
|
+
}
|
|
76
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
77
|
+
size: "medium"
|
|
78
|
+
}, t('Generate Report')));
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
_this.renderGenerationButton = function () {
|
|
82
|
+
return _this.props.generationInProgress ? _this.renderOngoingGenerationButton() : _this.renderStartGenerationButton();
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
_this.handleGeneration = function (_event) {
|
|
86
|
+
var filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'last_attempt';
|
|
87
|
+
|
|
88
|
+
_this.props.generateReports(filter);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return _this;
|
|
27
92
|
}
|
|
28
93
|
|
|
29
94
|
_createClass(NewQuizAndItemAnalysisPresenter, [{
|
|
30
|
-
key: "
|
|
31
|
-
value: function
|
|
95
|
+
key: "render",
|
|
96
|
+
value: function render() {
|
|
32
97
|
var _this$props = this.props,
|
|
33
|
-
|
|
34
|
-
|
|
98
|
+
analysisError = _this$props.analysisError,
|
|
99
|
+
fetchInProgress = _this$props.fetchInProgress,
|
|
100
|
+
generationInProgress = _this$props.generationInProgress,
|
|
101
|
+
quizAnalysis = _this$props.quizAnalysis;
|
|
102
|
+
var shouldShowError = analysisError && !fetchInProgress && !generationInProgress;
|
|
35
103
|
return /*#__PURE__*/React.createElement("div", {
|
|
36
104
|
className: "fs-mask"
|
|
37
105
|
}, /*#__PURE__*/React.createElement(Flex, {
|
|
38
|
-
|
|
106
|
+
alignItems: "end",
|
|
39
107
|
width: "82.5rem",
|
|
40
|
-
margin: "auto"
|
|
41
|
-
|
|
108
|
+
margin: "auto",
|
|
109
|
+
direction: "column"
|
|
110
|
+
}, /*#__PURE__*/React.createElement(Flex.Item, {
|
|
111
|
+
overflowY: "visible"
|
|
112
|
+
}, !fetchInProgress && this.renderGenerationButton()), /*#__PURE__*/React.createElement(Flex.Item, null, shouldShowError && /*#__PURE__*/React.createElement(Text, {
|
|
113
|
+
size: "x-small",
|
|
114
|
+
weight: "bold",
|
|
115
|
+
color: "danger"
|
|
116
|
+
}, analysisError)), /*#__PURE__*/React.createElement(Flex.Item, null, !fetchInProgress && /*#__PURE__*/React.createElement(AnalysisUpdateDate, {
|
|
42
117
|
date: quizAnalysis.created_timestamp
|
|
43
|
-
})), /*#__PURE__*/React.createElement(NewQuizAnalysis, {
|
|
44
|
-
quizAnalysis: quizAnalysis
|
|
45
|
-
|
|
46
|
-
|
|
118
|
+
}))), /*#__PURE__*/React.createElement(NewQuizAnalysis, {
|
|
119
|
+
quizAnalysis: quizAnalysis,
|
|
120
|
+
fetchInProgress: fetchInProgress
|
|
121
|
+
}), !fetchInProgress && /*#__PURE__*/React.createElement(Heading, {
|
|
122
|
+
level: "h2",
|
|
47
123
|
color: "primary"
|
|
48
|
-
}, t('Item Analysis')),
|
|
49
|
-
return /*#__PURE__*/React.createElement(NewItemAnalysis, {
|
|
50
|
-
key: itemAnalysis.metadata.item_id,
|
|
51
|
-
itemAnalysis: itemAnalysis
|
|
52
|
-
});
|
|
53
|
-
}));
|
|
54
|
-
}
|
|
55
|
-
}, {
|
|
56
|
-
key: "render",
|
|
57
|
-
value: function render() {
|
|
58
|
-
var _this$props2 = this.props,
|
|
59
|
-
quizAnalysis = _this$props2.quizAnalysis,
|
|
60
|
-
itemAnalyses = _this$props2.itemAnalyses;
|
|
61
|
-
|
|
62
|
-
if (quizAnalysis && itemAnalyses) {
|
|
63
|
-
return this.renderContent();
|
|
64
|
-
} else {
|
|
65
|
-
return _ref;
|
|
66
|
-
}
|
|
124
|
+
}, t('Item Analysis')), fetchInProgress ? this.renderSpinner() : this.renderItemAnalyses());
|
|
67
125
|
}
|
|
68
126
|
}]);
|
|
69
127
|
|
|
@@ -72,9 +130,14 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
|
|
|
72
130
|
}(Component);
|
|
73
131
|
NewQuizAndItemAnalysisPresenter.propTypes = {
|
|
74
132
|
quizAnalysis: quizAnalysisPropType,
|
|
75
|
-
itemAnalyses: PropTypes.arrayOf(itemAnalysisPropType)
|
|
133
|
+
itemAnalyses: PropTypes.arrayOf(itemAnalysisPropType),
|
|
134
|
+
fetchInProgress: PropTypes.bool.isRequired,
|
|
135
|
+
generationInProgress: PropTypes.bool.isRequired,
|
|
136
|
+
analysisError: PropTypes.string,
|
|
137
|
+
generateReports: PropTypes.func.isRequired
|
|
76
138
|
};
|
|
77
139
|
NewQuizAndItemAnalysisPresenter.defaultProps = {
|
|
140
|
+
analysisError: void 0,
|
|
78
141
|
quizAnalysis: void 0,
|
|
79
142
|
itemAnalyses: void 0
|
|
80
143
|
};
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import t from '@instructure/quiz-i18n/es/format-message';
|
|
2
2
|
|
|
3
|
+
var formatNumbers = function formatNumbers(value) {
|
|
4
|
+
if (typeof value === 'number') {
|
|
5
|
+
return t.number(value);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
10
|
+
|
|
3
11
|
var getSanitizedMetricValue = function getSanitizedMetricValue(value, suffix) {
|
|
4
12
|
if (value === null || value === void 0) {
|
|
5
13
|
return t('N/A');
|
|
6
14
|
}
|
|
7
15
|
|
|
8
|
-
|
|
16
|
+
var formattedValue = formatNumbers(value);
|
|
17
|
+
return suffix ? formattedValue + suffix : formattedValue;
|
|
9
18
|
};
|
|
10
19
|
|
|
11
20
|
export { getSanitizedMetricValue };
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js
CHANGED
|
@@ -103,7 +103,7 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
|
|
|
103
103
|
case 0:
|
|
104
104
|
hasStoredAnalyses = quizAnalysis && itemAnalyses;
|
|
105
105
|
|
|
106
|
-
if (
|
|
106
|
+
if (hasStoredAnalyses) {
|
|
107
107
|
_context.next = 4;
|
|
108
108
|
break;
|
|
109
109
|
}
|
|
@@ -21,6 +21,8 @@ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
21
21
|
|
|
22
22
|
var _react = _interopRequireWildcard(require("react"));
|
|
23
23
|
|
|
24
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
|
+
|
|
24
26
|
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
|
|
25
27
|
|
|
26
28
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -41,6 +43,8 @@ var _uiThemeable = require("@instructure/ui-themeable");
|
|
|
41
43
|
|
|
42
44
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
43
45
|
|
|
46
|
+
var _gradingUtils = require("@instructure/grading-utils");
|
|
47
|
+
|
|
44
48
|
var _quizCommon = require("@instructure/quiz-common");
|
|
45
49
|
|
|
46
50
|
var _index = _interopRequireDefault(require("../../../shared/FormattedDuration/index.js"));
|
|
@@ -143,6 +147,26 @@ var Info = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
|
|
|
143
147
|
}, alerts));
|
|
144
148
|
}
|
|
145
149
|
}
|
|
150
|
+
}, {
|
|
151
|
+
key: "renderLetterGrade",
|
|
152
|
+
value: function renderLetterGrade() {
|
|
153
|
+
var letterGrade = (0, _gradingUtils.scoreToLetterGrade)(this.percentageVal * 100, this.props.gradingScheme);
|
|
154
|
+
var gradeText = (0, _formatMessage.default)('Grade for this attempt');
|
|
155
|
+
var alt = (0, _formatMessage.default)('Grade for this attempt: { grade }', {
|
|
156
|
+
grade: letterGrade
|
|
157
|
+
});
|
|
158
|
+
return /*#__PURE__*/_react.default.createElement(_uiA11yContent.AccessibleContent, {
|
|
159
|
+
alt: alt
|
|
160
|
+
}, /*#__PURE__*/_react.default.createElement(_uiView.View, {
|
|
161
|
+
as: "div"
|
|
162
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
163
|
+
size: "xx-large",
|
|
164
|
+
weight: "bold",
|
|
165
|
+
color: "primary"
|
|
166
|
+
}, letterGrade)), /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
167
|
+
color: "secondary"
|
|
168
|
+
}, gradeText));
|
|
169
|
+
}
|
|
146
170
|
}, {
|
|
147
171
|
key: "renderScoreStats",
|
|
148
172
|
value: function renderScoreStats() {
|
|
@@ -215,7 +239,7 @@ var Info = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
|
|
|
215
239
|
className: (0, _classnames.default)('fs-mask', styles.info)
|
|
216
240
|
}, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
|
|
217
241
|
level: "h2"
|
|
218
|
-
}, (0, _formatMessage.default)('Assessment Statistics'))), this.renderScoreStats(), /*#__PURE__*/_react.default.createElement("div", {
|
|
242
|
+
}, (0, _formatMessage.default)('Assessment Statistics'))), this.props.restrictQuantitativeData ? this.renderLetterGrade() : this.renderScoreStats(), /*#__PURE__*/_react.default.createElement("div", {
|
|
219
243
|
className: styles.infoWrapper
|
|
220
244
|
}, this.renderTime()))));
|
|
221
245
|
}
|
|
@@ -314,9 +338,17 @@ var Info = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
|
|
|
314
338
|
Info.displayName = "Info";
|
|
315
339
|
return Info;
|
|
316
340
|
}((0, _quizCommon.withI18nSupport)(_react.Component)), _class2.propTypes = {
|
|
341
|
+
gradingScheme: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
342
|
+
name: _propTypes.default.string,
|
|
343
|
+
value: _propTypes.default.number
|
|
344
|
+
})),
|
|
317
345
|
quizSession: _reactImmutableProptypes.default.record.isRequired,
|
|
318
346
|
quizSessionResult: _reactImmutableProptypes.default.record.isRequired,
|
|
347
|
+
restrictQuantitativeData: _propTypes.default.bool,
|
|
319
348
|
sessionItemResults: _reactImmutableProptypes.default.list.isRequired
|
|
349
|
+
}, _class2.defaultProps = {
|
|
350
|
+
gradingScheme: [],
|
|
351
|
+
restrictQuantitativeData: false
|
|
320
352
|
}, _temp)) || _class);
|
|
321
353
|
exports.Info = Info;
|
|
322
354
|
var _default = Info;
|
|
@@ -168,7 +168,7 @@ var SessionItemResult = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
168
168
|
value: function renderHeader() {
|
|
169
169
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
170
170
|
className: styles.sessionItemResultHeader
|
|
171
|
-
}, this.renderResultPosition(), this.hasRegradeInfo() ? this.renderRegradePoints() : this.renderPoints());
|
|
171
|
+
}, this.renderResultPosition(), !this.props.restrictQuantitativeData && (this.hasRegradeInfo() ? this.renderRegradePoints() : this.renderPoints()));
|
|
172
172
|
}
|
|
173
173
|
}, {
|
|
174
174
|
key: "renderResultPosition",
|
|
@@ -376,6 +376,7 @@ var SessionItemResult = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
376
376
|
editGraderFeedback: _propTypes.default.func,
|
|
377
377
|
hideGraderFeedback: _propTypes.default.bool,
|
|
378
378
|
itemResultsModifications: _reactImmutableProptypes.default.map,
|
|
379
|
+
restrictQuantitativeData: _propTypes.default.bool,
|
|
379
380
|
sessionItem: _reactImmutableProptypes.default.record.isRequired,
|
|
380
381
|
sessionItemResult: _reactImmutableProptypes.default.record.isRequired,
|
|
381
382
|
shouldRenderAnswerFeedback: _propTypes.default.bool,
|
|
@@ -384,6 +385,7 @@ var SessionItemResult = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
384
385
|
editGraderFeedback: null,
|
|
385
386
|
hideGraderFeedback: false,
|
|
386
387
|
itemResultsModifications: null,
|
|
388
|
+
restrictQuantitativeData: false,
|
|
387
389
|
shouldRenderAnswerFeedback: false,
|
|
388
390
|
shouldRenderTopBorder: true
|
|
389
391
|
}, _temp)) || _class);
|
|
@@ -19,6 +19,8 @@ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
19
19
|
|
|
20
20
|
var _react = _interopRequireWildcard(require("react"));
|
|
21
21
|
|
|
22
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
23
|
+
|
|
22
24
|
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
|
|
23
25
|
|
|
24
26
|
var _uiHeading = require("@instructure/ui-heading");
|
|
@@ -68,6 +70,7 @@ var SessionItemResultsList = (_dec = (0, _uiThemeable.themeable)(_theme.default,
|
|
|
68
70
|
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
69
71
|
appContainer: _this.props.appContainer,
|
|
70
72
|
key: sessionItem.id,
|
|
73
|
+
restrictQuantitativeData: _this.props.restrictQuantitativeData,
|
|
71
74
|
sessionItem: sessionItem,
|
|
72
75
|
sessionItemResult: sessionItem.sessionItemResult,
|
|
73
76
|
shouldRenderTopBorder: shouldRenderTopBorder
|
|
@@ -116,7 +119,10 @@ var SessionItemResultsList = (_dec = (0, _uiThemeable.themeable)(_theme.default,
|
|
|
116
119
|
return SessionItemResultsList;
|
|
117
120
|
}(_react.Component), _class2.propTypes = {
|
|
118
121
|
appContainer: _CustomPropTypes.default.selectors.isRequired,
|
|
122
|
+
restrictQuantitativeData: _propTypes.default.bool,
|
|
119
123
|
sessionItems: _reactImmutableProptypes.default.list.isRequired
|
|
124
|
+
}, _class2.defaultProps = {
|
|
125
|
+
restrictQuantitativeData: false
|
|
120
126
|
}, _temp)) || _class);
|
|
121
127
|
exports.SessionItemResultsList = SessionItemResultsList;
|
|
122
128
|
var _default = SessionItemResultsList;
|
|
@@ -27,7 +27,7 @@ var statusPollingInProgressKey = 'statusPollingInProgress';
|
|
|
27
27
|
exports.statusPollingInProgressKey = statusPollingInProgressKey;
|
|
28
28
|
var errorKey = 'analysisError';
|
|
29
29
|
exports.errorKey = errorKey;
|
|
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,
|
|
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, true), (0, _defineProperty2.default)(_fromJS, generationInProgressKey, false), (0, _defineProperty2.default)(_fromJS, statusPollingInProgressKey, false), (0, _defineProperty2.default)(_fromJS, errorKey, void 0), _fromJS));
|
|
31
31
|
exports.defaultState = defaultState;
|
|
32
32
|
|
|
33
33
|
var _default = function _default() {
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js
CHANGED
|
@@ -75,9 +75,10 @@ var AnalysisMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles)
|
|
|
75
75
|
}(_react.Component), _class2.propTypes = {
|
|
76
76
|
metricKey: _propTypes.default.string.isRequired,
|
|
77
77
|
label: _propTypes.default.string.isRequired,
|
|
78
|
-
value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string, _propTypes.default.array])
|
|
78
|
+
value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string, _propTypes.default.array]),
|
|
79
79
|
suffix: _propTypes.default.string
|
|
80
80
|
}, _class2.defaultProps = {
|
|
81
|
+
value: void 0,
|
|
81
82
|
suffix: ''
|
|
82
83
|
}, _temp)) || _class);
|
|
83
84
|
exports.AnalysisMetric = AnalysisMetric;
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisPopoverMetric/presenter.js
CHANGED
|
@@ -84,12 +84,14 @@ var AnalysisPopoverMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default,
|
|
|
84
84
|
}(_react.Component), _class2.propTypes = {
|
|
85
85
|
metricKey: _propTypes.default.string.isRequired,
|
|
86
86
|
label: _propTypes.default.string.isRequired,
|
|
87
|
-
value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])
|
|
87
|
+
value: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
88
88
|
popoverDescription: _propTypes.default.shape({
|
|
89
89
|
title: _propTypes.default.string,
|
|
90
90
|
subtitle: _propTypes.default.string,
|
|
91
91
|
body: _propTypes.default.string,
|
|
92
92
|
screenReaderLabel: _propTypes.default.string
|
|
93
93
|
}).isRequired
|
|
94
|
+
}, _class2.defaultProps = {
|
|
95
|
+
value: void 0
|
|
94
96
|
}, _temp)) || _class);
|
|
95
97
|
exports.AnalysisPopoverMetric = AnalysisPopoverMetric;
|
|
@@ -97,20 +97,24 @@ var Row = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cla
|
|
|
97
97
|
key: _this.props.choiceIndex
|
|
98
98
|
}, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
99
99
|
theme: {
|
|
100
|
-
padding: '0px'
|
|
100
|
+
padding: '0px',
|
|
101
|
+
fontWeight: 'bold'
|
|
101
102
|
}
|
|
102
103
|
}, _this.renderIcon(correct)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.RowHeader, {
|
|
103
104
|
theme: {
|
|
104
|
-
padding: cellPadding
|
|
105
|
+
padding: cellPadding,
|
|
106
|
+
fontWeight: 'bold'
|
|
105
107
|
},
|
|
106
108
|
className: styles.tableBody
|
|
107
109
|
}, _this.renderMiddleCell(correct, (0, _quizInteractions.extractTextFromHtml)(_this.props.choice.body))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
108
110
|
theme: {
|
|
109
|
-
padding: cellPadding
|
|
111
|
+
padding: cellPadding,
|
|
112
|
+
fontWeight: 'bold'
|
|
110
113
|
}
|
|
111
114
|
}, _this.renderMiddleCell(correct, _this.props.choice.count)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
112
115
|
theme: {
|
|
113
|
-
padding: cellPadding
|
|
116
|
+
padding: cellPadding,
|
|
117
|
+
fontWeight: 'bold'
|
|
114
118
|
},
|
|
115
119
|
textAlign: "center"
|
|
116
120
|
}, _this.renderLastCell(correct, "".concat(_this.props.choice.percentage, "%"))));
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js
CHANGED
|
@@ -69,7 +69,10 @@ var AnswerSummaryTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, sty
|
|
|
69
69
|
className: styles.tableWrapper
|
|
70
70
|
}, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
|
|
71
71
|
margin: "large 0 small 0",
|
|
72
|
-
level: "h3"
|
|
72
|
+
level: "h3",
|
|
73
|
+
theme: {
|
|
74
|
+
h3FontWeight: 'normal'
|
|
75
|
+
}
|
|
73
76
|
}, (0, _formatMessage.default)('Answer Frequency Summary')), /*#__PURE__*/_react.default.createElement(_presenter.ChoiceInfo, {
|
|
74
77
|
itemId: itemId,
|
|
75
78
|
choices: choices,
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js
CHANGED
|
@@ -175,7 +175,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
175
175
|
}, /*#__PURE__*/_react.default.createElement(_index4.default, {
|
|
176
176
|
metricKey: "difficulty_index",
|
|
177
177
|
label: (0, _formatMessage.default)('Item Difficulty'),
|
|
178
|
-
value:
|
|
178
|
+
value: scores.difficulty_index,
|
|
179
179
|
popoverDescription: _popoverContent.difficultyIndex
|
|
180
180
|
})), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
181
181
|
margin: "none medium none none"
|
|
@@ -194,7 +194,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
194
194
|
}, /*#__PURE__*/_react.default.createElement(_index4.default, {
|
|
195
195
|
metricKey: "discrimination_index",
|
|
196
196
|
label: (0, _formatMessage.default)('Discrimination Index'),
|
|
197
|
-
value:
|
|
197
|
+
value: scores.discrimination_index,
|
|
198
198
|
popoverDescription: _popoverContent.discriminationIndex
|
|
199
199
|
})))), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
200
200
|
overflowY: "visible",
|
|
@@ -208,7 +208,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
208
208
|
}, /*#__PURE__*/_react.default.createElement(_index4.default, {
|
|
209
209
|
metricKey: "pearson_correlation",
|
|
210
210
|
label: (0, _formatMessage.default)('Corrected Item-Total Correlation Coefficient'),
|
|
211
|
-
value:
|
|
211
|
+
value: scores.pearson_correlation,
|
|
212
212
|
popoverDescription: _popoverContent.pearsonCorrelation
|
|
213
213
|
}))))));
|
|
214
214
|
};
|
|
@@ -273,6 +273,6 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
273
273
|
NewItemAnalysis.displayName = "NewItemAnalysis";
|
|
274
274
|
return NewItemAnalysis;
|
|
275
275
|
}(_react.Component), _class2.propTypes = {
|
|
276
|
-
itemAnalysis: _propTypes.itemAnalysisPropType
|
|
277
|
-
}, _temp)) || _class);
|
|
276
|
+
itemAnalysis: _propTypes.itemAnalysisPropType
|
|
277
|
+
}.isRequired, _temp)) || _class);
|
|
278
278
|
exports.NewItemAnalysis = NewItemAnalysis;
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js
CHANGED
|
@@ -41,21 +41,26 @@ var _presenter = require("../charts/ScoreDistribution/presenter.js");
|
|
|
41
41
|
|
|
42
42
|
var _propTypes = require("../propTypes.js");
|
|
43
43
|
|
|
44
|
+
var _propTypes2 = _interopRequireDefault(require("prop-types"));
|
|
45
|
+
|
|
46
|
+
var _uiSpinner = require("@instructure/ui-spinner");
|
|
47
|
+
|
|
44
48
|
var _popoverContent = require("./popoverContent.js");
|
|
45
49
|
|
|
46
50
|
var _dec, _class, _class2, _temp;
|
|
47
51
|
|
|
48
52
|
var styles = {
|
|
49
|
-
componentId: '
|
|
53
|
+
componentId: 'PCuaD',
|
|
50
54
|
template: function template(theme) {
|
|
51
|
-
return "\n\n.
|
|
55
|
+
return "\n\n.PCuaD_eDnN{display:flex;justify-content:space-between;padding-bottom:".concat(theme.headingPadding || 'inherit', "}\n\n.PCuaD_eKXQ{margin:").concat(theme.cardTopMargin || 'inherit', " 0 ").concat(theme.cardBottomMargin || 'inherit', " 0;padding:").concat(theme.cardWrapperPadding || 'inherit', ";position:relative}\n\n.PCuaD_dYbQ{align-items:center;display:flex;height:502px;justify-content:center;padding:").concat(theme.cardWrapperPadding || 'inherit', "}\n\n.PCuaD_crZr{padding-top:").concat(theme.metricGroupPaddingTop || 'inherit', "}\n\n.PCuaD_bTHH{position:absolute;right:").concat(theme.viewPaddingRight || 'inherit', ";top:").concat(theme.viewPaddingTop || 'inherit', "}\n\n.PCuaD_dPzc,.PCuaD_cpZE{column-gap:").concat(theme.metricsColumnGap || 'inherit', ";display:flex;flex-wrap:wrap;justify-content:flex-start;row-gap:1.5rem}");
|
|
52
56
|
},
|
|
53
|
-
'heading': '
|
|
54
|
-
'cardWrapper': '
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
57
|
+
'heading': 'PCuaD_eDnN',
|
|
58
|
+
'cardWrapper': 'PCuaD_eKXQ',
|
|
59
|
+
'skeletonCardWrapper': 'PCuaD_dYbQ',
|
|
60
|
+
'container': 'PCuaD_crZr',
|
|
61
|
+
'expandButtonContainer': 'PCuaD_bTHH',
|
|
62
|
+
'metricGroup': 'PCuaD_dPzc',
|
|
63
|
+
'metricsWrapper': 'PCuaD_cpZE'
|
|
59
64
|
};
|
|
60
65
|
var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
61
66
|
(0, _inherits2.default)(NewQuizAnalysis, _Component);
|
|
@@ -90,28 +95,23 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
90
95
|
className: styles.metricGroup
|
|
91
96
|
}, /*#__PURE__*/_react.default.createElement(_index3.default, {
|
|
92
97
|
metricKey: "stddev",
|
|
93
|
-
value:
|
|
98
|
+
value: scores === null || scores === void 0 ? void 0 : scores.stddev,
|
|
94
99
|
label: (0, _formatMessage.default)('Standard Deviation'),
|
|
95
100
|
popoverDescription: _popoverContent.standardDeviation
|
|
96
101
|
}), /*#__PURE__*/_react.default.createElement(_index3.default, {
|
|
97
102
|
metricKey: "cronbachs_alpha",
|
|
98
|
-
value:
|
|
103
|
+
value: scores === null || scores === void 0 ? void 0 : scores.cronbachs_alpha,
|
|
99
104
|
label: (0, _formatMessage.default)('Cronbach\'s Alpha'),
|
|
100
105
|
popoverDescription: _popoverContent.cronbachsAlpha
|
|
101
106
|
})));
|
|
102
107
|
};
|
|
103
108
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
(0, _createClass2.default)(NewQuizAnalysis, [{
|
|
108
|
-
key: "render",
|
|
109
|
-
value: function render() {
|
|
110
|
-
var quizAnalysis = this.props.quizAnalysis;
|
|
109
|
+
_this.renderContent = function () {
|
|
110
|
+
var quizAnalysis = _this.props.quizAnalysis;
|
|
111
111
|
var scores = quizAnalysis.scores,
|
|
112
112
|
attempts = quizAnalysis.attempts,
|
|
113
113
|
metadata = quizAnalysis.metadata;
|
|
114
|
-
var expanded =
|
|
114
|
+
var expanded = _this.state.expanded;
|
|
115
115
|
return /*#__PURE__*/_react.default.createElement(_index2.default, {
|
|
116
116
|
className: styles.cardWrapper
|
|
117
117
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -144,7 +144,7 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
144
144
|
}, /*#__PURE__*/_react.default.createElement(_index4.default, {
|
|
145
145
|
metricKey: "median_percentage",
|
|
146
146
|
label: (0, _formatMessage.default)('Median Score'),
|
|
147
|
-
value:
|
|
147
|
+
value: scores === null || scores === void 0 ? void 0 : scores.median_percentage,
|
|
148
148
|
suffix: "%"
|
|
149
149
|
}), /*#__PURE__*/_react.default.createElement(_index4.default, {
|
|
150
150
|
metricKey: "mean_elapsed_sec",
|
|
@@ -153,19 +153,39 @@ var NewQuizAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
153
153
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
154
154
|
className: styles.expandButtonContainer
|
|
155
155
|
}, /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
156
|
-
onClick:
|
|
156
|
+
onClick: _this.handleToggle,
|
|
157
157
|
title: expanded ? (0, _formatMessage.default)('collapse quiz analysis') : (0, _formatMessage.default)('expand quiz analysis'),
|
|
158
158
|
isExpanded: expanded
|
|
159
|
-
}))), expanded &&
|
|
160
|
-
decileDistribution:
|
|
159
|
+
}))), expanded && _this.renderExpanded(), /*#__PURE__*/_react.default.createElement(_presenter.ScoreDistribution, {
|
|
160
|
+
decileDistribution: scores === null || scores === void 0 ? void 0 : scores.decile_distribution
|
|
161
161
|
}));
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
return _this;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
(0, _createClass2.default)(NewQuizAnalysis, [{
|
|
168
|
+
key: "render",
|
|
169
|
+
value: function render() {
|
|
170
|
+
var fetchInProgress = this.props.fetchInProgress;
|
|
171
|
+
|
|
172
|
+
if (fetchInProgress) {
|
|
173
|
+
return /*#__PURE__*/_react.default.createElement(_index2.default, {
|
|
174
|
+
className: styles.skeletonCardWrapper
|
|
175
|
+
}, /*#__PURE__*/_react.default.createElement(_uiSpinner.Spinner, {
|
|
176
|
+
renderTitle: (0, _formatMessage.default)('Loading quiz analysis data')
|
|
177
|
+
}));
|
|
178
|
+
} else {
|
|
179
|
+
return this.renderContent();
|
|
180
|
+
}
|
|
162
181
|
}
|
|
163
182
|
}]);
|
|
164
183
|
NewQuizAnalysis.displayName = "NewQuizAnalysis";
|
|
165
184
|
return NewQuizAnalysis;
|
|
166
185
|
}(_react.Component), _class2.propTypes = {
|
|
167
|
-
quizAnalysis: _propTypes.quizAnalysisPropType
|
|
168
|
-
|
|
186
|
+
quizAnalysis: _propTypes.quizAnalysisPropType,
|
|
187
|
+
fetchInProgress: _propTypes2.default.bool
|
|
188
|
+
}.isRequired, _class2.defaultProps = {
|
|
169
189
|
quizAnalysis: {}
|
|
170
190
|
}, _temp)) || _class);
|
|
171
191
|
exports.NewQuizAnalysis = NewQuizAnalysis;
|
|
@@ -9,6 +9,8 @@ function generator(_ref) {
|
|
|
9
9
|
var spacing = _ref.spacing;
|
|
10
10
|
return {
|
|
11
11
|
metricGroupPaddingTop: spacing.medium,
|
|
12
|
+
cardTopMargin: spacing.small,
|
|
13
|
+
cardBottomMargin: spacing.medium,
|
|
12
14
|
viewPaddingRight: spacing.large,
|
|
13
15
|
viewPaddingTop: spacing.medium,
|
|
14
16
|
headingPadding: spacing.medium,
|
|
@@ -84,7 +84,7 @@ var ScoreDistribution = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
84
84
|
}, (0, _formatMessage.default)('Score Distribution'))), /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
85
85
|
animateDelay: 1000,
|
|
86
86
|
animateDuration: 1000,
|
|
87
|
-
visualDistribution: this.props.decileDistribution,
|
|
87
|
+
visualDistribution: this.props.decileDistribution || [],
|
|
88
88
|
calculateLabelForColumn: this.calculateLabelForColumn
|
|
89
89
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
90
90
|
className: styles.chartLabel
|
|
@@ -25,8 +25,6 @@ var _index = _interopRequireDefault(require("./NewItemAnalysis/index.js"));
|
|
|
25
25
|
|
|
26
26
|
var _index2 = _interopRequireDefault(require("./NewQuizAnalysis/index.js"));
|
|
27
27
|
|
|
28
|
-
var _Spinner = _interopRequireDefault(require("../../../../common/components/shared/spinner/Spinner.js"));
|
|
29
|
-
|
|
30
28
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
31
29
|
|
|
32
30
|
var _uiFlex = require("@instructure/ui-flex");
|
|
@@ -37,7 +35,13 @@ var _propTypes = require("./propTypes.js");
|
|
|
37
35
|
|
|
38
36
|
var _propTypes2 = _interopRequireDefault(require("prop-types"));
|
|
39
37
|
|
|
40
|
-
var
|
|
38
|
+
var _Spinner = require("../../../../common/components/shared/spinner/Spinner.js");
|
|
39
|
+
|
|
40
|
+
var _uiSpinner = require("@instructure/ui-spinner");
|
|
41
|
+
|
|
42
|
+
var _uiButtons = require("@instructure/ui-buttons");
|
|
43
|
+
|
|
44
|
+
var _uiText = require("@instructure/ui-text");
|
|
41
45
|
|
|
42
46
|
var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
|
|
43
47
|
(0, _inherits2.default)(NewQuizAndItemAnalysisPresenter, _Component);
|
|
@@ -45,48 +49,107 @@ var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
|
|
|
45
49
|
var _super = (0, _createSuper2.default)(NewQuizAndItemAnalysisPresenter);
|
|
46
50
|
|
|
47
51
|
function NewQuizAndItemAnalysisPresenter() {
|
|
52
|
+
var _this;
|
|
53
|
+
|
|
48
54
|
(0, _classCallCheck2.default)(this, NewQuizAndItemAnalysisPresenter);
|
|
49
|
-
|
|
55
|
+
|
|
56
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
57
|
+
args[_key] = arguments[_key];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
61
|
+
|
|
62
|
+
_this.renderItemAnalyses = function () {
|
|
63
|
+
var itemAnalyses = _this.props.itemAnalyses;
|
|
64
|
+
return /*#__PURE__*/_react.default.createElement("div", null, itemAnalyses.map(function (itemAnalysis) {
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
66
|
+
key: itemAnalysis.metadata.item_id,
|
|
67
|
+
itemAnalysis: itemAnalysis
|
|
68
|
+
});
|
|
69
|
+
}));
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
_this.renderSpinner = function () {
|
|
73
|
+
return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
74
|
+
padding: "medium",
|
|
75
|
+
justifyItems: "center",
|
|
76
|
+
alignItems: "center"
|
|
77
|
+
}, /*#__PURE__*/_react.default.createElement(_uiSpinner.Spinner, {
|
|
78
|
+
renderTitle: (0, _formatMessage.default)('Loading item analyses data')
|
|
79
|
+
}));
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
_this.renderOngoingGenerationButton = function () {
|
|
83
|
+
return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
|
|
84
|
+
color: "primary-inverse",
|
|
85
|
+
interaction: "disabled",
|
|
86
|
+
margin: "0 0 x-small 0"
|
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_Spinner.QuizzesSpinner, {
|
|
88
|
+
size: "x-small",
|
|
89
|
+
color: "brand",
|
|
90
|
+
minHeight: "0",
|
|
91
|
+
mainText: (0, _formatMessage.default)('Generation In Progress'),
|
|
92
|
+
fontSize: "medium"
|
|
93
|
+
}));
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
_this.renderStartGenerationButton = function () {
|
|
97
|
+
return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
|
|
98
|
+
color: "primary-inverse",
|
|
99
|
+
margin: "0 0 x-small 0",
|
|
100
|
+
onClick: _this.handleGeneration,
|
|
101
|
+
theme: {
|
|
102
|
+
lineHeight: '24px'
|
|
103
|
+
}
|
|
104
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
105
|
+
size: "medium"
|
|
106
|
+
}, (0, _formatMessage.default)('Generate Report')));
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
_this.renderGenerationButton = function () {
|
|
110
|
+
return _this.props.generationInProgress ? _this.renderOngoingGenerationButton() : _this.renderStartGenerationButton();
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
_this.handleGeneration = function (_event) {
|
|
114
|
+
var filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'last_attempt';
|
|
115
|
+
|
|
116
|
+
_this.props.generateReports(filter);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
return _this;
|
|
50
120
|
}
|
|
51
121
|
|
|
52
122
|
(0, _createClass2.default)(NewQuizAndItemAnalysisPresenter, [{
|
|
53
|
-
key: "
|
|
54
|
-
value: function
|
|
123
|
+
key: "render",
|
|
124
|
+
value: function render() {
|
|
55
125
|
var _this$props = this.props,
|
|
56
|
-
|
|
57
|
-
|
|
126
|
+
analysisError = _this$props.analysisError,
|
|
127
|
+
fetchInProgress = _this$props.fetchInProgress,
|
|
128
|
+
generationInProgress = _this$props.generationInProgress,
|
|
129
|
+
quizAnalysis = _this$props.quizAnalysis;
|
|
130
|
+
var shouldShowError = analysisError && !fetchInProgress && !generationInProgress;
|
|
58
131
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
59
132
|
className: "fs-mask"
|
|
60
133
|
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
61
|
-
|
|
134
|
+
alignItems: "end",
|
|
62
135
|
width: "82.5rem",
|
|
63
|
-
margin: "auto"
|
|
64
|
-
|
|
136
|
+
margin: "auto",
|
|
137
|
+
direction: "column"
|
|
138
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
139
|
+
overflowY: "visible"
|
|
140
|
+
}, !fetchInProgress && this.renderGenerationButton()), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, shouldShowError && /*#__PURE__*/_react.default.createElement(_uiText.Text, {
|
|
141
|
+
size: "x-small",
|
|
142
|
+
weight: "bold",
|
|
143
|
+
color: "danger"
|
|
144
|
+
}, analysisError)), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, !fetchInProgress && /*#__PURE__*/_react.default.createElement(_index3.AnalysisUpdateDate, {
|
|
65
145
|
date: quizAnalysis.created_timestamp
|
|
66
|
-
})), /*#__PURE__*/_react.default.createElement(_index2.default, {
|
|
67
|
-
quizAnalysis: quizAnalysis
|
|
68
|
-
|
|
69
|
-
|
|
146
|
+
}))), /*#__PURE__*/_react.default.createElement(_index2.default, {
|
|
147
|
+
quizAnalysis: quizAnalysis,
|
|
148
|
+
fetchInProgress: fetchInProgress
|
|
149
|
+
}), !fetchInProgress && /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
|
|
150
|
+
level: "h2",
|
|
70
151
|
color: "primary"
|
|
71
|
-
}, (0, _formatMessage.default)('Item Analysis')),
|
|
72
|
-
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
73
|
-
key: itemAnalysis.metadata.item_id,
|
|
74
|
-
itemAnalysis: itemAnalysis
|
|
75
|
-
});
|
|
76
|
-
}));
|
|
77
|
-
}
|
|
78
|
-
}, {
|
|
79
|
-
key: "render",
|
|
80
|
-
value: function render() {
|
|
81
|
-
var _this$props2 = this.props,
|
|
82
|
-
quizAnalysis = _this$props2.quizAnalysis,
|
|
83
|
-
itemAnalyses = _this$props2.itemAnalyses;
|
|
84
|
-
|
|
85
|
-
if (quizAnalysis && itemAnalyses) {
|
|
86
|
-
return this.renderContent();
|
|
87
|
-
} else {
|
|
88
|
-
return _ref;
|
|
89
|
-
}
|
|
152
|
+
}, (0, _formatMessage.default)('Item Analysis')), fetchInProgress ? this.renderSpinner() : this.renderItemAnalyses());
|
|
90
153
|
}
|
|
91
154
|
}]);
|
|
92
155
|
NewQuizAndItemAnalysisPresenter.displayName = "NewQuizAndItemAnalysisPresenter";
|
|
@@ -96,9 +159,14 @@ var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
|
|
|
96
159
|
exports.NewQuizAndItemAnalysisPresenter = NewQuizAndItemAnalysisPresenter;
|
|
97
160
|
NewQuizAndItemAnalysisPresenter.propTypes = {
|
|
98
161
|
quizAnalysis: _propTypes.quizAnalysisPropType,
|
|
99
|
-
itemAnalyses: _propTypes2.default.arrayOf(_propTypes.itemAnalysisPropType)
|
|
162
|
+
itemAnalyses: _propTypes2.default.arrayOf(_propTypes.itemAnalysisPropType),
|
|
163
|
+
fetchInProgress: _propTypes2.default.bool.isRequired,
|
|
164
|
+
generationInProgress: _propTypes2.default.bool.isRequired,
|
|
165
|
+
analysisError: _propTypes2.default.string,
|
|
166
|
+
generateReports: _propTypes2.default.func.isRequired
|
|
100
167
|
};
|
|
101
168
|
NewQuizAndItemAnalysisPresenter.defaultProps = {
|
|
169
|
+
analysisError: void 0,
|
|
102
170
|
quizAnalysis: void 0,
|
|
103
171
|
itemAnalyses: void 0
|
|
104
172
|
};
|
|
@@ -9,12 +9,21 @@ exports.getSanitizedMetricValue = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
11
11
|
|
|
12
|
+
var formatNumbers = function formatNumbers(value) {
|
|
13
|
+
if (typeof value === 'number') {
|
|
14
|
+
return _formatMessage.default.number(value);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
|
|
12
20
|
var getSanitizedMetricValue = function getSanitizedMetricValue(value, suffix) {
|
|
13
21
|
if (value === null || value === void 0) {
|
|
14
22
|
return (0, _formatMessage.default)('N/A');
|
|
15
23
|
}
|
|
16
24
|
|
|
17
|
-
|
|
25
|
+
var formattedValue = formatNumbers(value);
|
|
26
|
+
return suffix ? formattedValue + suffix : formattedValue;
|
|
18
27
|
};
|
|
19
28
|
|
|
20
29
|
exports.getSanitizedMetricValue = getSanitizedMetricValue;
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js
CHANGED
|
@@ -122,7 +122,7 @@ var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalCom
|
|
|
122
122
|
case 0:
|
|
123
123
|
hasStoredAnalyses = quizAnalysis && itemAnalyses;
|
|
124
124
|
|
|
125
|
-
if (
|
|
125
|
+
if (hasStoredAnalyses) {
|
|
126
126
|
_context.next = 4;
|
|
127
127
|
break;
|
|
128
128
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/quiz-core",
|
|
3
|
-
"version": "17.64.1-rc.
|
|
3
|
+
"version": "17.64.1-rc.6+4603e7609",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The Quiz React SDK by Instructure Inc.",
|
|
6
6
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
@@ -40,12 +40,13 @@
|
|
|
40
40
|
"lib"
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
|
+
"@instructure/grading-utils": "^1.0.0",
|
|
43
44
|
"@instructure/outcomes-ui": "^2.1.9",
|
|
44
|
-
"@instructure/quiz-common": "17.64.1-rc.
|
|
45
|
-
"@instructure/quiz-i18n": "17.64.1-rc.
|
|
46
|
-
"@instructure/quiz-interactions": "17.64.1-rc.
|
|
47
|
-
"@instructure/quiz-number-input": "17.64.1-rc.
|
|
48
|
-
"@instructure/quiz-rce": "17.64.1-rc.
|
|
45
|
+
"@instructure/quiz-common": "17.64.1-rc.6+4603e7609",
|
|
46
|
+
"@instructure/quiz-i18n": "17.64.1-rc.6+4603e7609",
|
|
47
|
+
"@instructure/quiz-interactions": "17.64.1-rc.6+4603e7609",
|
|
48
|
+
"@instructure/quiz-number-input": "17.64.1-rc.6+4603e7609",
|
|
49
|
+
"@instructure/quiz-rce": "17.64.1-rc.6+4603e7609",
|
|
49
50
|
"@instructure/ui-a11y-content": "^7.20.0",
|
|
50
51
|
"@instructure/ui-alerts": "^7.20.0",
|
|
51
52
|
"@instructure/ui-avatar": "^7.20.0",
|
|
@@ -106,7 +107,7 @@
|
|
|
106
107
|
"eventemitter3": "^3.1.0",
|
|
107
108
|
"humps": "^2.0.0",
|
|
108
109
|
"immutable": "^3.8.1",
|
|
109
|
-
"instructure-validations": "17.64.1-rc.
|
|
110
|
+
"instructure-validations": "17.64.1-rc.6+4603e7609",
|
|
110
111
|
"ipaddr.js": "^1.5.4",
|
|
111
112
|
"isomorphic-fetch": "^2.2.0",
|
|
112
113
|
"isuuid": "^0.1.0",
|
|
@@ -157,7 +158,7 @@
|
|
|
157
158
|
"intl": "^1.2.4",
|
|
158
159
|
"jquery": "^2.2.3",
|
|
159
160
|
"most-subject": "^5.3.0",
|
|
160
|
-
"quiz-presets": "17.64.1-rc.
|
|
161
|
+
"quiz-presets": "17.64.1-rc.6+4603e7609",
|
|
161
162
|
"react": "^16.8.6",
|
|
162
163
|
"react-addons-test-utils": "^15.6.2",
|
|
163
164
|
"react-dom": "^16.8.6",
|
|
@@ -173,5 +174,5 @@
|
|
|
173
174
|
"publishConfig": {
|
|
174
175
|
"access": "public"
|
|
175
176
|
},
|
|
176
|
-
"gitHead": "
|
|
177
|
+
"gitHead": "4603e76094b6047dcfd896183b6a5c8243b7cc92"
|
|
177
178
|
}
|