@instructure/quiz-core 20.11.4 → 20.11.5-rc.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/es/reporting/components/MetricsListItem/index.js +13 -19
- package/es/reporting/components/MetricsListItem/styles.js +12 -0
- package/es/reporting/components/MetricsListItem/theme.js +0 -3
- package/es/reporting/components/itemAnalysis/AnswerFrequencySummary/index.js +33 -61
- package/es/reporting/components/itemAnalysis/AnswerFrequencySummary/styles.js +45 -0
- package/es/reporting/components/itemAnalysis/AnswerFrequencySummary/theme.js +4 -2
- package/es/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +6 -6
- package/es/reporting/components/quizAnalysis/QuizAnalysisOverview.js +9 -9
- package/es/reporting/components/resources/QuizAndItemAnalysis/presenter.js +46 -50
- package/es/reporting/components/resources/QuizAndItemAnalysis/styles.js +18 -0
- package/es/reporting/components/resources/QuizAndItemAnalysis/theme.js +4 -2
- package/lib/reporting/components/MetricsListItem/index.js +12 -22
- package/lib/reporting/components/MetricsListItem/styles.js +20 -0
- package/lib/reporting/components/MetricsListItem/theme.js +1 -10
- package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/index.js +32 -64
- package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/styles.js +56 -0
- package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/theme.js +6 -3
- package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +5 -5
- package/lib/reporting/components/quizAnalysis/QuizAnalysisOverview.js +9 -9
- package/lib/reporting/components/resources/QuizAndItemAnalysis/presenter.js +45 -54
- package/lib/reporting/components/resources/QuizAndItemAnalysis/styles.js +26 -0
- package/lib/reporting/components/resources/QuizAndItemAnalysis/theme.js +6 -3
- package/package.json +10 -10
|
@@ -5,11 +5,12 @@ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
|
5
5
|
|
|
6
6
|
var _dec, _class, _class2, _temp;
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
/** @jsx jsx */
|
|
9
|
+
import { Component } from 'react';
|
|
9
10
|
import PropTypes from 'prop-types';
|
|
10
11
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
11
12
|
import { Heading } from '@instructure/ui-heading';
|
|
12
|
-
import {
|
|
13
|
+
import { withStyle, jsx } from '@instructure/emotion';
|
|
13
14
|
import t from '@instructure/quiz-i18n/es/format-message';
|
|
14
15
|
import { withI18nSupport } from '@instructure/quiz-common';
|
|
15
16
|
import Spinner from "../../../../common/components/shared/spinner/Spinner.js";
|
|
@@ -18,20 +19,12 @@ import FormattedDuration from "../../../../common/components/shared/FormattedDur
|
|
|
18
19
|
import ItemAnalysisRow from "../../../../reporting/components/itemAnalysis/ItemAnalysisRow/index.js";
|
|
19
20
|
import QuizAnalysisOverview from "../../../../reporting/components/quizAnalysis/QuizAnalysisOverview.js";
|
|
20
21
|
import MetricsListItem from "../../MetricsListItem/index.js";
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
template: function template(theme) {
|
|
24
|
-
return "\n\n.cNnNG_nvdO{margin:".concat(theme.titleMarginTop || 'inherit', " ").concat(theme.titleMarginLeftRight || 'inherit', " ").concat(theme.titleMarginBottom || 'inherit', " ").concat(theme.titleMarginLeftRight || 'inherit', "}\n\n.cNnNG_bwKH{color:").concat(theme.emptyTextColor || 'inherit', ";font-size:").concat(theme.emptyTextFontSize || 'inherit', ";padding:").concat(theme.emptyTextPadding || 'inherit', ";text-align:center}\n\n[dir=ltr] .cNnNG_bwKH,[dir=rtl] .cNnNG_bwKH{text-align:center}\n\n.cNnNG_eiMu{justify-content:center}");
|
|
25
|
-
},
|
|
26
|
-
'title': 'cNnNG_nvdO',
|
|
27
|
-
'emptyText': 'cNnNG_bwKH',
|
|
28
|
-
'metric': 'cNnNG_eiMu'
|
|
29
|
-
};
|
|
30
|
-
import theme from "./theme.js";
|
|
22
|
+
import generateStyle from "./styles.js";
|
|
23
|
+
import generateComponentTheme from "./theme.js";
|
|
31
24
|
|
|
32
|
-
var _ref2 =
|
|
25
|
+
var _ref2 = jsx(Spinner, null);
|
|
33
26
|
|
|
34
|
-
export var QuizAndItemAnalysis = (_dec =
|
|
27
|
+
export var QuizAndItemAnalysis = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_withI18nSupport) {
|
|
35
28
|
_inherits(QuizAndItemAnalysis, _withI18nSupport);
|
|
36
29
|
|
|
37
30
|
var _super = _createSuper(QuizAndItemAnalysis);
|
|
@@ -70,9 +63,9 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
70
63
|
var mean = t.rich('{score}<0>/{possible, number} pts</0>', {
|
|
71
64
|
0: function _(_ref) {
|
|
72
65
|
var children = _ref.children;
|
|
73
|
-
return
|
|
66
|
+
return jsx("span", {
|
|
74
67
|
key: "mean",
|
|
75
|
-
|
|
68
|
+
css: _this.props.styles.metricNote
|
|
76
69
|
}, children);
|
|
77
70
|
},
|
|
78
71
|
score: itemAnalysis.meanScore(this.locale) || 0,
|
|
@@ -81,41 +74,41 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
81
74
|
this.props.itemMetrics.forEach(function (key) {
|
|
82
75
|
switch (key) {
|
|
83
76
|
case 'difficultyIndex':
|
|
84
|
-
metrics.push(
|
|
77
|
+
metrics.push(jsx(MetricsListItem, {
|
|
85
78
|
key: "difficultyIndex",
|
|
86
79
|
renderLabel: t('Difficulty Index'),
|
|
87
80
|
renderValue: itemAnalysis.difficultyIndex(_this.locale),
|
|
88
|
-
|
|
81
|
+
customStyles: _this.props.styles.metric,
|
|
89
82
|
isGroupChild: true
|
|
90
83
|
}));
|
|
91
84
|
break;
|
|
92
85
|
|
|
93
86
|
case 'discriminationIndex':
|
|
94
|
-
metrics.push(
|
|
87
|
+
metrics.push(jsx(MetricsListItem, {
|
|
95
88
|
key: "discriminationIndex",
|
|
96
89
|
renderLabel: t('Discrimination Index'),
|
|
97
90
|
renderValue: itemAnalysis.discriminationIndex(_this.locale),
|
|
98
|
-
|
|
91
|
+
customStyles: _this.props.styles.metric,
|
|
99
92
|
isGroupChild: true
|
|
100
93
|
}));
|
|
101
94
|
break;
|
|
102
95
|
|
|
103
96
|
case 'rpb':
|
|
104
|
-
metrics.push(
|
|
97
|
+
metrics.push(jsx(MetricsListItem, {
|
|
105
98
|
key: "rpb",
|
|
106
99
|
renderLabel: t('RPB'),
|
|
107
100
|
renderValue: itemAnalysis.pointBiserial(_this.locale),
|
|
108
|
-
|
|
101
|
+
customStyles: _this.props.styles.metric,
|
|
109
102
|
isGroupChild: true
|
|
110
103
|
}));
|
|
111
104
|
break;
|
|
112
105
|
|
|
113
106
|
case 'meanEarnedScore':
|
|
114
|
-
metrics.push(
|
|
107
|
+
metrics.push(jsx(MetricsListItem, {
|
|
115
108
|
key: "meanEarnedScore",
|
|
116
109
|
renderLabel: t('Mean Earned Score'),
|
|
117
110
|
renderValue: mean,
|
|
118
|
-
|
|
111
|
+
customStyles: _this.props.styles.metric,
|
|
119
112
|
isGroupChild: true
|
|
120
113
|
}));
|
|
121
114
|
break;
|
|
@@ -126,68 +119,70 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
126
119
|
}, {
|
|
127
120
|
key: "generateQuizAnalysisMetrics",
|
|
128
121
|
value: function generateQuizAnalysisMetrics(quizAnalysis) {
|
|
122
|
+
var _this2 = this;
|
|
123
|
+
|
|
129
124
|
var metrics = [];
|
|
130
|
-
var formattedElapsedTime =
|
|
125
|
+
var formattedElapsedTime = jsx(FormattedDuration, {
|
|
131
126
|
seconds: quizAnalysis.meanElapsedTime()
|
|
132
127
|
});
|
|
133
128
|
this.props.quizMetrics.forEach(function (key) {
|
|
134
129
|
switch (key) {
|
|
135
130
|
case 'highScore':
|
|
136
|
-
metrics.push(
|
|
131
|
+
metrics.push(jsx(MetricsListItem, {
|
|
137
132
|
key: "highScore",
|
|
138
133
|
renderLabel: t('High Score'),
|
|
139
134
|
renderValue: quizAnalysis.highScore(),
|
|
140
|
-
|
|
135
|
+
customStyles: _this2.props.styles.metric,
|
|
141
136
|
isGroupChild: true
|
|
142
137
|
}));
|
|
143
138
|
break;
|
|
144
139
|
|
|
145
140
|
case 'lowScore':
|
|
146
|
-
metrics.push(
|
|
141
|
+
metrics.push(jsx(MetricsListItem, {
|
|
147
142
|
key: "lowScore",
|
|
148
143
|
renderLabel: t('Low Score'),
|
|
149
144
|
renderValue: quizAnalysis.lowScore(),
|
|
150
|
-
|
|
145
|
+
customStyles: _this2.props.styles.metric,
|
|
151
146
|
isGroupChild: true
|
|
152
147
|
}));
|
|
153
148
|
break;
|
|
154
149
|
|
|
155
150
|
case 'meanScore':
|
|
156
|
-
metrics.push(
|
|
151
|
+
metrics.push(jsx(MetricsListItem, {
|
|
157
152
|
key: "meanScore",
|
|
158
153
|
renderLabel: t('Mean Score'),
|
|
159
154
|
renderValue: quizAnalysis.meanScore(),
|
|
160
|
-
|
|
155
|
+
customStyles: _this2.props.styles.metric,
|
|
161
156
|
isGroupChild: true
|
|
162
157
|
}));
|
|
163
158
|
break;
|
|
164
159
|
|
|
165
160
|
case 'standardDeviation':
|
|
166
|
-
metrics.push(
|
|
161
|
+
metrics.push(jsx(MetricsListItem, {
|
|
167
162
|
key: "standardDeviation",
|
|
168
163
|
renderLabel: t('Standard Deviation'),
|
|
169
164
|
renderValue: quizAnalysis.standardDeviation(),
|
|
170
|
-
|
|
165
|
+
customStyles: _this2.props.styles.metric,
|
|
171
166
|
isGroupChild: true
|
|
172
167
|
}));
|
|
173
168
|
break;
|
|
174
169
|
|
|
175
170
|
case 'meanElapsedTime':
|
|
176
|
-
metrics.push(
|
|
171
|
+
metrics.push(jsx(MetricsListItem, {
|
|
177
172
|
key: "meanElapsedTime",
|
|
178
173
|
renderLabel: t('Mean Elapsed Time'),
|
|
179
174
|
renderValue: formattedElapsedTime,
|
|
180
|
-
|
|
175
|
+
customStyles: _this2.props.styles.metric,
|
|
181
176
|
isGroupChild: true
|
|
182
177
|
}));
|
|
183
178
|
break;
|
|
184
179
|
|
|
185
180
|
case 'cronbachsAlpha':
|
|
186
|
-
metrics.push(
|
|
181
|
+
metrics.push(jsx(MetricsListItem, {
|
|
187
182
|
key: "cronbachsAlpha",
|
|
188
183
|
renderLabel: t('Cronbach\'s Alpha'),
|
|
189
184
|
renderValue: quizAnalysis.cronbachsAlpha(),
|
|
190
|
-
|
|
185
|
+
customStyles: _this2.props.styles.metric,
|
|
191
186
|
isGroupChild: true
|
|
192
187
|
}));
|
|
193
188
|
break;
|
|
@@ -198,7 +193,7 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
198
193
|
}, {
|
|
199
194
|
key: "renderItemAnalysisRows",
|
|
200
195
|
value: function renderItemAnalysisRows() {
|
|
201
|
-
var
|
|
196
|
+
var _this3 = this;
|
|
202
197
|
|
|
203
198
|
var _this$props = this.props,
|
|
204
199
|
animateDelay = _this$props.animateDelay,
|
|
@@ -213,16 +208,16 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
213
208
|
return;
|
|
214
209
|
}
|
|
215
210
|
|
|
216
|
-
return
|
|
217
|
-
|
|
218
|
-
},
|
|
211
|
+
return jsx("div", null, jsx("div", {
|
|
212
|
+
css: this.props.styles.title
|
|
213
|
+
}, jsx(Heading, {
|
|
219
214
|
level: "h3",
|
|
220
215
|
as: "h2",
|
|
221
216
|
color: "primary"
|
|
222
217
|
}, t('Item Analysis'))), itemAnalyses.toArray().map(function (itemAnalysis, i) {
|
|
223
|
-
var itemMetrics =
|
|
218
|
+
var itemMetrics = _this3.generateItemAnalysisMetrics(itemAnalysis);
|
|
224
219
|
|
|
225
|
-
return
|
|
220
|
+
return jsx(ItemAnalysisRow, {
|
|
226
221
|
animateDelay: animateDelay,
|
|
227
222
|
animateDuration: animateDuration,
|
|
228
223
|
expanded: openRows[itemAnalysis.itemId],
|
|
@@ -232,16 +227,16 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
232
227
|
position: i + 1,
|
|
233
228
|
quizId: activeQuizId,
|
|
234
229
|
toggleExpanded: toggleItemAnalysisRowExpanded,
|
|
235
|
-
outcomesEndpoint:
|
|
236
|
-
outcomesToken:
|
|
230
|
+
outcomesEndpoint: _this3.props.outcomesEndpoint,
|
|
231
|
+
outcomesToken: _this3.props.outcomesToken
|
|
237
232
|
}, itemMetrics);
|
|
238
233
|
}));
|
|
239
234
|
}
|
|
240
235
|
}, {
|
|
241
236
|
key: "renderNotFound",
|
|
242
237
|
value: function renderNotFound() {
|
|
243
|
-
return
|
|
244
|
-
|
|
238
|
+
return jsx(Card, {
|
|
239
|
+
css: this.props.styles.emptyText
|
|
245
240
|
}, t('This report is no longer in use, please use the new Quiz and Item Analysis report. ' + 'Reports generated before { lastReportDate } from this link will be available ' + 'until the summer of 2024. New reports cannot be generated from this link.', {
|
|
246
241
|
lastReportDate: this.formatDateShort(new Date('2024-01-31'))
|
|
247
242
|
}));
|
|
@@ -255,9 +250,9 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
255
250
|
quiz = _this$props2.quiz,
|
|
256
251
|
quizAnalysis = _this$props2.quizAnalysis;
|
|
257
252
|
var quizMetrics = this.generateQuizAnalysisMetrics(quizAnalysis);
|
|
258
|
-
return
|
|
253
|
+
return jsx("div", {
|
|
259
254
|
className: "fs-mask"
|
|
260
|
-
},
|
|
255
|
+
}, jsx(QuizAnalysisOverview, {
|
|
261
256
|
animateDelay: animateDelay,
|
|
262
257
|
animateDuration: animateDuration,
|
|
263
258
|
quizAnalysis: quizAnalysis,
|
|
@@ -295,7 +290,8 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
|
|
|
295
290
|
getExistingQuiz: PropTypes.func.isRequired,
|
|
296
291
|
getItemAnalyses: PropTypes.func.isRequired,
|
|
297
292
|
getQuizAnalysis: PropTypes.func.isRequired,
|
|
298
|
-
locale: PropTypes.string
|
|
293
|
+
locale: PropTypes.string,
|
|
294
|
+
styles: PropTypes.object
|
|
299
295
|
}, _class2.defaultProps = {
|
|
300
296
|
animateDelay: void 0,
|
|
301
297
|
animateDuration: void 0,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var generateStyle = function generateStyle(componentTheme) {
|
|
2
|
+
return {
|
|
3
|
+
title: {
|
|
4
|
+
margin: "".concat(componentTheme.titleMarginTop, " ").concat(componentTheme.titleMarginLeftRight, " ").concat(componentTheme.titleMarginBottom, " ").concat(componentTheme.titleMarginLeftRight)
|
|
5
|
+
},
|
|
6
|
+
emptyText: {
|
|
7
|
+
padding: componentTheme.emptyTextPadding,
|
|
8
|
+
fontSize: componentTheme.emptyTextFontSize,
|
|
9
|
+
textAlign: 'center',
|
|
10
|
+
color: componentTheme.emptyTextColor
|
|
11
|
+
},
|
|
12
|
+
metric: {
|
|
13
|
+
justifyContent: 'center'
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default generateStyle;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
var generateComponentTheme = function generateComponentTheme(_ref) {
|
|
2
2
|
var spacing = _ref.spacing,
|
|
3
3
|
typography = _ref.typography,
|
|
4
4
|
colors = _ref.colors;
|
|
@@ -10,4 +10,6 @@ export default function generator(_ref) {
|
|
|
10
10
|
emptyTextFontSize: typography.fontSizeLarge,
|
|
11
11
|
emptyTextColor: colors.ash
|
|
12
12
|
};
|
|
13
|
-
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default generateComponentTheme;
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -19,32 +17,23 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
|
|
|
19
17
|
|
|
20
18
|
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
21
19
|
|
|
22
|
-
var _react =
|
|
20
|
+
var _react = require("react");
|
|
23
21
|
|
|
24
22
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
23
|
|
|
26
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
27
|
-
|
|
28
24
|
var _uiMetric = require("@instructure/ui-metric");
|
|
29
25
|
|
|
30
26
|
var _uiA11yContent = require("@instructure/ui-a11y-content");
|
|
31
27
|
|
|
32
|
-
var
|
|
28
|
+
var _emotion = require("@instructure/emotion");
|
|
33
29
|
|
|
34
30
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
35
31
|
|
|
36
|
-
var
|
|
32
|
+
var _styles = _interopRequireDefault(require("./styles.js"));
|
|
37
33
|
|
|
38
34
|
var _dec, _class, _class2, _temp;
|
|
39
35
|
|
|
40
|
-
var
|
|
41
|
-
componentId: 'fvWlS',
|
|
42
|
-
template: function template(theme) {
|
|
43
|
-
return "\n\n.fvWlS_bGBk{align-items:center;display:flex;flex-direction:row;justify-content:center}";
|
|
44
|
-
},
|
|
45
|
-
'root': 'fvWlS_bGBk'
|
|
46
|
-
};
|
|
47
|
-
var MetricsListItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
36
|
+
var MetricsListItem = (_dec = (0, _emotion.withStyle)(_styles.default, null), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
48
37
|
(0, _inherits2.default)(MetricsListItem, _Component);
|
|
49
38
|
|
|
50
39
|
var _super = (0, _createSuper2.default)(MetricsListItem);
|
|
@@ -57,19 +46,19 @@ var MetricsListItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
57
46
|
(0, _createClass2.default)(MetricsListItem, [{
|
|
58
47
|
key: "renderNoValue",
|
|
59
48
|
value: function renderNoValue() {
|
|
60
|
-
return
|
|
49
|
+
return (0, _emotion.jsx)("span", null, (0, _emotion.jsx)(_uiA11yContent.ScreenReaderContent, null, (0, _formatMessage.default)('No value')), (0, _emotion.jsx)(_uiA11yContent.PresentationContent, null, (0, _formatMessage.default)('--')));
|
|
61
50
|
}
|
|
62
51
|
}, {
|
|
63
52
|
key: "render",
|
|
64
53
|
value: function render() {
|
|
65
|
-
var
|
|
54
|
+
var styles = [this.props.styles.root, this.props.customStyles];
|
|
66
55
|
var _this$props = this.props,
|
|
67
56
|
renderValue = _this$props.renderValue,
|
|
68
57
|
renderLabel = _this$props.renderLabel,
|
|
69
58
|
isGroupChild = _this$props.isGroupChild;
|
|
70
|
-
return
|
|
71
|
-
|
|
72
|
-
},
|
|
59
|
+
return (0, _emotion.jsx)("div", {
|
|
60
|
+
css: styles
|
|
61
|
+
}, (0, _emotion.jsx)(_uiMetric.Metric, {
|
|
73
62
|
renderLabel: renderLabel,
|
|
74
63
|
renderValue: renderValue || this.renderNoValue(),
|
|
75
64
|
isGroupChild: isGroupChild
|
|
@@ -79,9 +68,10 @@ var MetricsListItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
|
|
|
79
68
|
MetricsListItem.displayName = "MetricsListItem";
|
|
80
69
|
return MetricsListItem;
|
|
81
70
|
}(_react.Component), _class2.propTypes = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _uiMetric.Metric.propTypes), {}, {
|
|
82
|
-
|
|
71
|
+
customStyles: _propTypes.default.object,
|
|
72
|
+
styles: _propTypes.default.object
|
|
83
73
|
}), _class2.defaultProps = {
|
|
84
|
-
|
|
74
|
+
customStyles: {}
|
|
85
75
|
}, _temp)) || _class);
|
|
86
76
|
exports.MetricsListItem = MetricsListItem;
|
|
87
77
|
var _default = MetricsListItem;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var generateStyle = function generateStyle() {
|
|
9
|
+
return {
|
|
10
|
+
root: {
|
|
11
|
+
display: 'flex',
|
|
12
|
+
flexDirection: 'row',
|
|
13
|
+
alignItems: 'center',
|
|
14
|
+
justifyContent: 'center'
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
var _default = generateStyle;
|
|
20
|
+
exports.default = _default;
|
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.default = exports.AnswerFrequencySummary = void 0;
|
|
11
9
|
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
11
|
|
|
16
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
@@ -19,11 +15,11 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
|
|
|
19
15
|
|
|
20
16
|
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
21
17
|
|
|
22
|
-
var _react =
|
|
18
|
+
var _react = require("react");
|
|
23
19
|
|
|
24
|
-
var
|
|
20
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
21
|
|
|
26
|
-
var
|
|
22
|
+
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
|
|
27
23
|
|
|
28
24
|
var _immutable = require("immutable");
|
|
29
25
|
|
|
@@ -35,7 +31,7 @@ var _uiA11yContent = require("@instructure/ui-a11y-content");
|
|
|
35
31
|
|
|
36
32
|
var _uiTable = require("@instructure/ui-table");
|
|
37
33
|
|
|
38
|
-
var
|
|
34
|
+
var _emotion = require("@instructure/emotion");
|
|
39
35
|
|
|
40
36
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
41
37
|
|
|
@@ -43,31 +39,15 @@ var _quizInteractions = require("@instructure/quiz-interactions");
|
|
|
43
39
|
|
|
44
40
|
var _theme = _interopRequireDefault(require("./theme.js"));
|
|
45
41
|
|
|
42
|
+
var _styles = _interopRequireDefault(require("./styles.js"));
|
|
43
|
+
|
|
46
44
|
var _dec, _class, _class2, _temp;
|
|
47
45
|
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
'content': 'deQQP_caGd',
|
|
54
|
-
'contentAnimation': 'deQQP_dFUU',
|
|
55
|
-
'answerRow': 'deQQP_ddmB',
|
|
56
|
-
'answerRowCorrect': 'deQQP_dOeq',
|
|
57
|
-
'answerIcon': 'deQQP_cLIq',
|
|
58
|
-
'answerRatio': 'deQQP_ccwL',
|
|
59
|
-
'answerTextfield': 'deQQP_bFWU',
|
|
60
|
-
'bar': 'deQQP_fKwc',
|
|
61
|
-
'respondentLink': 'deQQP_fTiR',
|
|
62
|
-
'respondentLinkPresent': 'deQQP_lHsH',
|
|
63
|
-
'answerDistributionCell': 'deQQP_dEZf'
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
|
|
67
|
-
|
|
68
|
-
var _ref2 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconXSolid, null);
|
|
69
|
-
|
|
70
|
-
var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
46
|
+
var _ref = (0, _emotion.jsx)(_uiIcons.IconCheckSolid, null);
|
|
47
|
+
|
|
48
|
+
var _ref2 = (0, _emotion.jsx)(_uiIcons.IconXSolid, null);
|
|
49
|
+
|
|
50
|
+
var AnswerFrequencySummary = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
71
51
|
(0, _inherits2.default)(AnswerFrequencySummary, _Component);
|
|
72
52
|
|
|
73
53
|
var _super = (0, _createSuper2.default)(AnswerFrequencySummary);
|
|
@@ -84,29 +64,16 @@ var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default,
|
|
|
84
64
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
85
65
|
|
|
86
66
|
_this.renderAnswerTableRow = function (choiceInfo, choiceIndex) {
|
|
87
|
-
var _classNames, _classNames2;
|
|
88
|
-
|
|
89
67
|
var choiceSum = _this.props.itemAnalysis.choiceCountSum();
|
|
90
68
|
|
|
91
69
|
var choiceBody = _this.renderChoiceBody(choiceInfo);
|
|
92
70
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
className: rowClassNames
|
|
98
|
-
}, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
99
|
-
className: styles.answerIcon
|
|
100
|
-
}, _this.isCorrect(choiceInfo) ? _ref : _ref2, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, _this.getBarTitle(choiceInfo))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.RowHeader, {
|
|
101
|
-
className: styles.answerTextfield
|
|
102
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
71
|
+
return (0, _emotion.jsx)(_uiTable.Table.Row, {
|
|
72
|
+
key: choiceIndex
|
|
73
|
+
}, (0, _emotion.jsx)(_uiTable.Table.Cell, null, _this.isCorrect(choiceInfo) ? _ref : _ref2, (0, _emotion.jsx)(_uiA11yContent.ScreenReaderContent, null, _this.getBarTitle(choiceInfo))), (0, _emotion.jsx)(_uiTable.Table.RowHeader, null, (0, _emotion.jsx)("span", {
|
|
74
|
+
"data-testid": "answer-textfield",
|
|
103
75
|
title: choiceBody
|
|
104
|
-
}, choiceBody)),
|
|
105
|
-
className: respondentClassNames
|
|
106
|
-
}, _formatMessage.default.number(Math.floor(choiceInfo.get('choiceCount')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
107
|
-
className: styles.answerRatio
|
|
108
|
-
}, choiceSum > 0 ? _formatMessage.default.number(choiceInfo.get('choiceCount') / choiceSum, 'percent') : 0), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
109
|
-
className: styles.answerDistributionCell,
|
|
76
|
+
}, choiceBody)), (0, _emotion.jsx)(_uiTable.Table.Cell, null, _formatMessage.default.number(Math.floor(choiceInfo.get('choiceCount')))), (0, _emotion.jsx)(_uiTable.Table.Cell, null, choiceSum > 0 ? _formatMessage.default.number(choiceInfo.get('choiceCount') / choiceSum, 'percent') : 0), (0, _emotion.jsx)(_uiTable.Table.Cell, {
|
|
110
77
|
"aria-hidden": "true"
|
|
111
78
|
}, _this.renderBarPlot(choiceInfo)));
|
|
112
79
|
};
|
|
@@ -139,8 +106,10 @@ var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default,
|
|
|
139
106
|
}, {
|
|
140
107
|
key: "renderBarPlot",
|
|
141
108
|
value: function renderBarPlot(choiceInfo) {
|
|
142
|
-
|
|
143
|
-
|
|
109
|
+
var barStyles = this.isCorrect(choiceInfo) ? [this.props.styles.barCorrect, this.props.styles.bar] : [this.props.styles.bar];
|
|
110
|
+
return (0, _emotion.jsx)("div", {
|
|
111
|
+
"data-testid": "bar",
|
|
112
|
+
css: barStyles,
|
|
144
113
|
style: this.getBarStyles(choiceInfo),
|
|
145
114
|
alt: (0, _formatMessage.default)('Graph bar'),
|
|
146
115
|
title: this.getBarTitle(choiceInfo)
|
|
@@ -161,28 +130,27 @@ var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default,
|
|
|
161
130
|
itemBody: (0, _formatMessage.default)('(No answer)'),
|
|
162
131
|
choiceCount: this.props.itemAnalysis.unansweredInfo()
|
|
163
132
|
});
|
|
164
|
-
return
|
|
165
|
-
|
|
133
|
+
return (0, _emotion.jsx)("div", {
|
|
134
|
+
css: this.props.styles.content,
|
|
166
135
|
"data-automation": "sdk-reporting-frequency-summary"
|
|
167
|
-
},
|
|
136
|
+
}, (0, _emotion.jsx)(_uiTable.Table, {
|
|
168
137
|
caption: (0, _formatMessage.default)('Answer Frequency Summary')
|
|
169
|
-
},
|
|
138
|
+
}, (0, _emotion.jsx)(_uiTable.Table.Head, null, (0, _emotion.jsx)(_uiTable.Table.Row, null, (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
|
|
170
139
|
id: "answer-frequency-summary-is-correct"
|
|
171
|
-
},
|
|
140
|
+
}, (0, _emotion.jsx)(_uiA11yContent.ScreenReaderContent, null, (0, _formatMessage.default)('Is Correct?'))), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
|
|
172
141
|
id: "answer-frequency-sumary-answer"
|
|
173
|
-
}, (0, _formatMessage.default)('Answer')),
|
|
174
|
-
id: "answer-frequency-summary-respondents"
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
className: styles.answerRatio
|
|
179
|
-
}, (0, _formatMessage.default)('Percentage')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choiceInfo.toArray().map(this.renderAnswerTableRow), this.renderAnswerTableRow(this.unansweredChoiceInfo, choiceInfo.size))));
|
|
142
|
+
}, (0, _formatMessage.default)('Answer')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
|
|
143
|
+
id: "answer-frequency-summary-respondents"
|
|
144
|
+
}, (0, _formatMessage.default)('Respondents')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
|
|
145
|
+
id: "answer-frequency-summary-answer-ratio"
|
|
146
|
+
}, (0, _formatMessage.default)('Percentage')))), (0, _emotion.jsx)(_uiTable.Table.Body, null, choiceInfo.toArray().map(this.renderAnswerTableRow), this.renderAnswerTableRow(this.unansweredChoiceInfo, choiceInfo.size))));
|
|
180
147
|
}
|
|
181
148
|
}]);
|
|
182
149
|
AnswerFrequencySummary.displayName = "AnswerFrequencySummary";
|
|
183
150
|
return AnswerFrequencySummary;
|
|
184
151
|
}(_react.Component), _class2.propTypes = {
|
|
185
|
-
itemAnalysis: _reactImmutableProptypes.default.record.isRequired
|
|
152
|
+
itemAnalysis: _reactImmutableProptypes.default.record.isRequired,
|
|
153
|
+
styles: _propTypes.default.object
|
|
186
154
|
}, _temp)) || _class);
|
|
187
155
|
exports.AnswerFrequencySummary = AnswerFrequencySummary;
|
|
188
156
|
var _default = AnswerFrequencySummary;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _emotion = require("@instructure/emotion");
|
|
13
|
+
|
|
14
|
+
function _templateObject() {
|
|
15
|
+
var data = (0, _taggedTemplateLiteral2.default)(["\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }"]);
|
|
16
|
+
|
|
17
|
+
_templateObject = function _templateObject() {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var contentAnimation = (0, _emotion.keyframes)(_templateObject());
|
|
25
|
+
|
|
26
|
+
var generateStyle = function generateStyle(componentTheme, props) {
|
|
27
|
+
var contentCellStyles = {
|
|
28
|
+
borderBottomColor: componentTheme.contentCellBorderColor,
|
|
29
|
+
paddingLeft: '0.35rem',
|
|
30
|
+
paddingRight: '0.35rem'
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
content: {
|
|
34
|
+
opacity: '0.01',
|
|
35
|
+
transform: 'translate3d(0, 0, 0)',
|
|
36
|
+
animationName: contentAnimation,
|
|
37
|
+
animationFillMode: 'forwards',
|
|
38
|
+
animationDuration: '0.3s',
|
|
39
|
+
'th': contentCellStyles,
|
|
40
|
+
'td': contentCellStyles
|
|
41
|
+
},
|
|
42
|
+
bar: {
|
|
43
|
+
background: componentTheme.barBackgroundColor,
|
|
44
|
+
transition: componentTheme.barTransition,
|
|
45
|
+
position: 'relative',
|
|
46
|
+
minWidth: componentTheme.barMinWidth,
|
|
47
|
+
height: '100%'
|
|
48
|
+
},
|
|
49
|
+
barCorrect: {
|
|
50
|
+
background: componentTheme.answerRowCorrectBarBackgroundColor
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
var _default = generateStyle;
|
|
56
|
+
exports.default = _default;
|