@instructure/quiz-core 20.7.1-rc.9 → 20.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +90 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +255 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared/ChoiceGroupTypeTable → NumericType}/theme.js +1 -2
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/presenter.js +23 -59
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/styles.js +10 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +11 -35
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +120 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/styles.js +38 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/theme.js +11 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +55 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +14 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +8 -2
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/presenter.js +104 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/{ChoiceGroupTypeTable → ExpandableCard}/styles.js +3 -2
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/theme.js +7 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +4 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +52 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/ChoiceTypeWithInfo/presenter.js +113 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/NumericType/presenter.js +281 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared/ChoiceGroupTypeTable → NumericType}/theme.js +1 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/presenter.js +27 -64
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/ChoiceGroupTypeTable/styles.js +18 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/presenter.js +15 -39
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +140 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/styles.js +46 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/theme.js +19 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +80 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +20 -4
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +8 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/presenter.js +124 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/{ChoiceGroupTypeTable → ExpandableCard}/styles.js +3 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/ExpandableCard/theme.js +15 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +4 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +68 -3
- package/package.json +10 -10
- /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{RichFillBlankType → NumericType}/styles.js +0 -0
- /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/index.js +0 -0
- /package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/{theme.js → ChoiceGroupTypeTable/theme.js} +0 -0
- /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{RichFillBlankType → NumericType}/styles.js +0 -0
- /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/{shared → RichFillBlankType}/ChoiceGroupTypeTable/index.js +0 -0
- /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/RichFillBlankType/{theme.js → ChoiceGroupTypeTable/theme.js} +0 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
4
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
5
|
+
|
|
6
|
+
var _dec, _class, _class2, _temp;
|
|
7
|
+
|
|
8
|
+
/** @jsx jsx */
|
|
9
|
+
import { scoreDistributionType } from "../../../propTypes.js";
|
|
10
|
+
import { Component } from 'react';
|
|
11
|
+
import t from '@instructure/quiz-i18n/es/format-message';
|
|
12
|
+
import { Table } from '@instructure/ui-table';
|
|
13
|
+
import PropTypes from 'prop-types';
|
|
14
|
+
import { withStyle, jsx } from '@instructure/emotion';
|
|
15
|
+
import generateStyle from "./styles.js";
|
|
16
|
+
import generateComponentTheme from "./theme.js";
|
|
17
|
+
export var ScoreDistributionTypeTable = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
18
|
+
_inherits(ScoreDistributionTypeTable, _Component);
|
|
19
|
+
|
|
20
|
+
var _super = _createSuper(ScoreDistributionTypeTable);
|
|
21
|
+
|
|
22
|
+
function ScoreDistributionTypeTable() {
|
|
23
|
+
var _this;
|
|
24
|
+
|
|
25
|
+
_classCallCheck(this, ScoreDistributionTypeTable);
|
|
26
|
+
|
|
27
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
28
|
+
args[_key] = arguments[_key];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
32
|
+
|
|
33
|
+
_this.renderFirstCell = function (content) {
|
|
34
|
+
return jsx("div", {
|
|
35
|
+
css: _this.props.styles.firstTextContainer
|
|
36
|
+
}, content);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
_this.renderCell = function (content) {
|
|
40
|
+
return jsx("div", {
|
|
41
|
+
css: _this.props.styles.textContainer
|
|
42
|
+
}, content);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
_this.renderRow = function (choice, choiceIndex) {
|
|
46
|
+
var count = choice.count,
|
|
47
|
+
score = choice.score,
|
|
48
|
+
percentage = choice.percentage;
|
|
49
|
+
return jsx(Table.Row, {
|
|
50
|
+
key: choiceIndex
|
|
51
|
+
}, jsx(Table.Cell, {
|
|
52
|
+
themeOverride: {
|
|
53
|
+
padding: '0'
|
|
54
|
+
}
|
|
55
|
+
}, _this.renderFirstCell(score)), jsx(Table.Cell, {
|
|
56
|
+
themeOverride: {
|
|
57
|
+
padding: '0'
|
|
58
|
+
}
|
|
59
|
+
}, _this.renderCell(count)), jsx(Table.Cell, {
|
|
60
|
+
themeOverride: {
|
|
61
|
+
padding: '0'
|
|
62
|
+
},
|
|
63
|
+
textAlign: "center"
|
|
64
|
+
}, _this.renderCell("".concat(percentage, "%"))));
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return _this;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
_createClass(ScoreDistributionTypeTable, [{
|
|
71
|
+
key: "componentDidMount",
|
|
72
|
+
value: function componentDidMount() {
|
|
73
|
+
this.props.makeStyles();
|
|
74
|
+
}
|
|
75
|
+
}, {
|
|
76
|
+
key: "componentDidUpdate",
|
|
77
|
+
value: function componentDidUpdate() {
|
|
78
|
+
this.props.makeStyles();
|
|
79
|
+
}
|
|
80
|
+
}, {
|
|
81
|
+
key: "render",
|
|
82
|
+
value: function render() {
|
|
83
|
+
var _this$props = this.props,
|
|
84
|
+
scores = _this$props.scores,
|
|
85
|
+
itemId = _this$props.itemId,
|
|
86
|
+
styles = _this$props.styles;
|
|
87
|
+
var pointsHeaderId = "answer-frequency-summary-points-".concat(itemId);
|
|
88
|
+
var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
|
|
89
|
+
var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
|
|
90
|
+
return jsx("div", {
|
|
91
|
+
css: styles.tableContainer
|
|
92
|
+
}, jsx(Table, {
|
|
93
|
+
caption: t('Score Frequency Summary'),
|
|
94
|
+
elementRef: this.setTableRef
|
|
95
|
+
}, jsx(Table.Head, null, jsx(Table.Row, null, jsx(Table.ColHeader, {
|
|
96
|
+
id: pointsHeaderId,
|
|
97
|
+
height: "47px"
|
|
98
|
+
}, t('Points')), jsx(Table.ColHeader, {
|
|
99
|
+
id: respondentsHeaderId,
|
|
100
|
+
height: "47px",
|
|
101
|
+
textAlign: "center"
|
|
102
|
+
}, t('Respondents')), jsx(Table.ColHeader, {
|
|
103
|
+
id: percentageHeaderId,
|
|
104
|
+
height: "47px",
|
|
105
|
+
textAlign: "center"
|
|
106
|
+
}, t('%')))), jsx(Table.Body, null, scores.map(this.renderRow))));
|
|
107
|
+
}
|
|
108
|
+
}]);
|
|
109
|
+
|
|
110
|
+
ScoreDistributionTypeTable.displayName = "ScoreDistributionTypeTable";
|
|
111
|
+
return ScoreDistributionTypeTable;
|
|
112
|
+
}(Component), _class2.propTypes = {
|
|
113
|
+
itemId: PropTypes.number.isRequired,
|
|
114
|
+
scores: PropTypes.arrayOf(scoreDistributionType).isRequired,
|
|
115
|
+
// eslint-disable-next-line react/require-default-props
|
|
116
|
+
makeStyles: PropTypes.func,
|
|
117
|
+
// eslint-disable-next-line react/require-default-props,react/forbid-prop-types
|
|
118
|
+
styles: PropTypes.object
|
|
119
|
+
}, _temp)) || _class);
|
|
120
|
+
export default ScoreDistributionTypeTable;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var generateStyle = function generateStyle(componentTheme) {
|
|
2
|
+
var borderBottom = "solid 0.0625rem ".concat(componentTheme.colorGray);
|
|
3
|
+
return {
|
|
4
|
+
tableContainer: {
|
|
5
|
+
width: 'calc(25% + 350px)',
|
|
6
|
+
maxWidth: '100%',
|
|
7
|
+
'& table': {
|
|
8
|
+
borderCollapse: 'separate',
|
|
9
|
+
borderSpacing: '0 1px',
|
|
10
|
+
'& thead tr': {
|
|
11
|
+
'& th, & td': {
|
|
12
|
+
borderBottom: borderBottom
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
'& tbody tr': {
|
|
16
|
+
'& th, & td': {
|
|
17
|
+
width: '33.33%',
|
|
18
|
+
borderBottom: borderBottom
|
|
19
|
+
},
|
|
20
|
+
'& th': {
|
|
21
|
+
fontWeight: 400
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
textContainer: {
|
|
27
|
+
height: 'calc(100% - 4px)',
|
|
28
|
+
display: 'flex',
|
|
29
|
+
alignItems: 'center',
|
|
30
|
+
justifyContent: 'center'
|
|
31
|
+
},
|
|
32
|
+
firstTextContainer: {
|
|
33
|
+
padding: componentTheme.cellPadding
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export default generateStyle;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var generateComponentTheme = function generateComponentTheme(_ref) {
|
|
2
|
+
var spacing = _ref.spacing,
|
|
3
|
+
colors = _ref.colors;
|
|
4
|
+
return {
|
|
5
|
+
tableBottomPadding: spacing === null || spacing === void 0 ? void 0 : spacing.medium,
|
|
6
|
+
colorGray: colors === null || colors === void 0 ? void 0 : colors.tiara,
|
|
7
|
+
cellPadding: "".concat(spacing === null || spacing === void 0 ? void 0 : spacing.small, " ").concat(spacing === null || spacing === void 0 ? void 0 : spacing.small)
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export default generateComponentTheme;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
3
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
4
|
+
import React, { Component } from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import ScoreDistributionTypeTable from "./Table/index.js";
|
|
7
|
+
import { scoreDistributionTypeAnswerSummaryPropType } from "../../propTypes.js";
|
|
8
|
+
import AggregationTable from "../shared/AggregationTable/index.js";
|
|
9
|
+
import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
|
|
10
|
+
import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
|
|
11
|
+
import t from '@instructure/quiz-i18n/es/format-message';
|
|
12
|
+
export var ScoreDistributionType = /*#__PURE__*/function (_Component) {
|
|
13
|
+
_inherits(ScoreDistributionType, _Component);
|
|
14
|
+
|
|
15
|
+
var _super = _createSuper(ScoreDistributionType);
|
|
16
|
+
|
|
17
|
+
function ScoreDistributionType() {
|
|
18
|
+
var _this;
|
|
19
|
+
|
|
20
|
+
_classCallCheck(this, ScoreDistributionType);
|
|
21
|
+
|
|
22
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
23
|
+
args[_key] = arguments[_key];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
27
|
+
|
|
28
|
+
_this.render = function () {
|
|
29
|
+
var _this$props = _this.props,
|
|
30
|
+
answerSummary = _this$props.answerSummary,
|
|
31
|
+
itemId = _this$props.itemId;
|
|
32
|
+
return /*#__PURE__*/React.createElement(AfsTableWrapper, {
|
|
33
|
+
tableHeader: t('Score Frequency Summary')
|
|
34
|
+
}, /*#__PURE__*/React.createElement(AfsPartsContainer, {
|
|
35
|
+
afsTable: /*#__PURE__*/React.createElement(ScoreDistributionTypeTable, {
|
|
36
|
+
itemId: itemId,
|
|
37
|
+
scores: answerSummary.score_distribution
|
|
38
|
+
}),
|
|
39
|
+
aggregationTable: /*#__PURE__*/React.createElement(AggregationTable, {
|
|
40
|
+
itemId: itemId,
|
|
41
|
+
answerSummary: answerSummary
|
|
42
|
+
})
|
|
43
|
+
}));
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return _this;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return ScoreDistributionType;
|
|
50
|
+
}(Component);
|
|
51
|
+
ScoreDistributionType.propTypes = {
|
|
52
|
+
itemId: PropTypes.number,
|
|
53
|
+
answerSummary: scoreDistributionTypeAnswerSummaryPropType
|
|
54
|
+
}.isRequired;
|
|
55
|
+
export default ScoreDistributionType;
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js
CHANGED
|
@@ -7,7 +7,9 @@ import LegacyChoiceType from "./LegacyChoiceType/index.js";
|
|
|
7
7
|
import ChoiceType from "./ChoiceType/index.js";
|
|
8
8
|
import RichFillBlankType from "./RichFillBlankType/index.js";
|
|
9
9
|
import AggregationType from "./AggregationType/index.js";
|
|
10
|
+
import NumericType from "./NumericType/index.js";
|
|
10
11
|
import { MatchingType, OrderingType, CategorizationType } from "./MatchingType/index.js";
|
|
12
|
+
import { ScoreDistributionType } from "./ScoreDistributionType/index.js";
|
|
11
13
|
import { afsFlags, answerSummaryPropType } from "../propTypes.js";
|
|
12
14
|
export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
|
|
13
15
|
_inherits(AnswerFrequencySummary, _Component);
|
|
@@ -62,6 +64,18 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
|
|
|
62
64
|
if (afsFlags.fillInTheBlankEnabled) {
|
|
63
65
|
_this.afsTableComponentMap.set('rich-fill-blank', RichFillBlankType);
|
|
64
66
|
}
|
|
67
|
+
|
|
68
|
+
if (afsFlags.numericEnabled) {
|
|
69
|
+
_this.afsTableComponentMap.set('numeric', NumericType);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (afsFlags.essayEnabled) {
|
|
73
|
+
_this.afsTableComponentMap.set('essay', ScoreDistributionType);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (afsFlags.fileUploadEnabled) {
|
|
77
|
+
_this.afsTableComponentMap.set('file-upload', ScoreDistributionType);
|
|
78
|
+
}
|
|
65
79
|
};
|
|
66
80
|
|
|
67
81
|
_this.render = function () {
|
|
@@ -28,6 +28,11 @@ export var AfsTableWrapper = (_dec = withStyle(generateStyle, null), _dec(_class
|
|
|
28
28
|
|
|
29
29
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
30
30
|
|
|
31
|
+
_this.getHeader = function () {
|
|
32
|
+
var tableHeader = _this.props.tableHeader;
|
|
33
|
+
return tableHeader || t('Answer Frequency Summary');
|
|
34
|
+
};
|
|
35
|
+
|
|
31
36
|
_this.render = function () {
|
|
32
37
|
return jsx(Flex, {
|
|
33
38
|
direction: "row",
|
|
@@ -41,7 +46,7 @@ export var AfsTableWrapper = (_dec = withStyle(generateStyle, null), _dec(_class
|
|
|
41
46
|
level: "h3",
|
|
42
47
|
weight: "bold",
|
|
43
48
|
color: "primary"
|
|
44
|
-
},
|
|
49
|
+
}, _this.getHeader()), _this.props.children)));
|
|
45
50
|
};
|
|
46
51
|
|
|
47
52
|
return _this;
|
|
@@ -50,5 +55,6 @@ export var AfsTableWrapper = (_dec = withStyle(generateStyle, null), _dec(_class
|
|
|
50
55
|
return AfsTableWrapper;
|
|
51
56
|
}(Component), _class2.propTypes = {
|
|
52
57
|
children: PropTypes.node.isRequired,
|
|
53
|
-
styles: PropTypes.object
|
|
58
|
+
styles: PropTypes.object,
|
|
59
|
+
tableHeader: PropTypes.string
|
|
54
60
|
}, _temp)) || _class);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ExpandableCard as default } from "./presenter.js";
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
3
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
4
|
+
|
|
5
|
+
var _dec, _class, _class2, _temp;
|
|
6
|
+
|
|
7
|
+
/** @jsx jsx */
|
|
8
|
+
import { Component } from 'react';
|
|
9
|
+
import Card from "../../../../../../../common/components/shared/Card/index.js";
|
|
10
|
+
import { Flex } from '@instructure/ui-flex';
|
|
11
|
+
import { jsx, withStyle } from '@instructure/emotion';
|
|
12
|
+
import ExpandButton from "../../../../../../../common/components/shared/ExpandButton/index.js";
|
|
13
|
+
import t from '@instructure/quiz-i18n/es/format-message';
|
|
14
|
+
import generateStyle from "./styles.js";
|
|
15
|
+
import generateComponentTheme from "./theme.js";
|
|
16
|
+
import PropTypes from 'prop-types';
|
|
17
|
+
export var ExpandableCard = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
18
|
+
_inherits(ExpandableCard, _Component);
|
|
19
|
+
|
|
20
|
+
var _super = _createSuper(ExpandableCard);
|
|
21
|
+
|
|
22
|
+
function ExpandableCard() {
|
|
23
|
+
var _this;
|
|
24
|
+
|
|
25
|
+
_classCallCheck(this, ExpandableCard);
|
|
26
|
+
|
|
27
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
28
|
+
args[_key] = arguments[_key];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
32
|
+
_this.state = {
|
|
33
|
+
bodyExpanded: false
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
_this.handleBodyToggle = function () {
|
|
37
|
+
_this.setState({
|
|
38
|
+
bodyExpanded: !_this.state.bodyExpanded
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
_this.renderGroup = function () {
|
|
43
|
+
var headLine = _this.props.headLine;
|
|
44
|
+
return jsx(Flex, {
|
|
45
|
+
direction: "row",
|
|
46
|
+
alignItems: "start"
|
|
47
|
+
}, jsx(Flex.Item, {
|
|
48
|
+
shouldShrink: true,
|
|
49
|
+
shouldGrow: true,
|
|
50
|
+
margin: "xx-small none none none"
|
|
51
|
+
}, headLine), jsx(Flex.Item, {
|
|
52
|
+
margin: "none none none x-small"
|
|
53
|
+
}, jsx(ExpandButton, {
|
|
54
|
+
onClick: _this.handleBodyToggle,
|
|
55
|
+
title: _this.state.bodyExpanded ? t('collapse group result') : t('expand group result'),
|
|
56
|
+
isExpanded: _this.state.bodyExpanded
|
|
57
|
+
})));
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
_this.renderBody = function () {
|
|
61
|
+
var _this$props = _this.props,
|
|
62
|
+
content = _this$props.content,
|
|
63
|
+
styles = _this$props.styles;
|
|
64
|
+
var bodyContainer = styles.bodyContainer;
|
|
65
|
+
return jsx(Flex.Item, {
|
|
66
|
+
shouldShrink: true,
|
|
67
|
+
padding: "x-small small x-small small"
|
|
68
|
+
}, jsx("div", {
|
|
69
|
+
css: bodyContainer
|
|
70
|
+
}, content));
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
_this.render = function () {
|
|
74
|
+
var styles = _this.props.styles;
|
|
75
|
+
var groupWrapper = styles.groupWrapper;
|
|
76
|
+
var bodyExpanded = _this.state.bodyExpanded;
|
|
77
|
+
return jsx("div", {
|
|
78
|
+
css: groupWrapper
|
|
79
|
+
}, jsx(Card, null, jsx(Flex, {
|
|
80
|
+
direction: "column",
|
|
81
|
+
justifyItems: "start"
|
|
82
|
+
}, jsx(Flex.Item, {
|
|
83
|
+
shouldGrow: true,
|
|
84
|
+
shouldShrink: true,
|
|
85
|
+
overflowY: "visible"
|
|
86
|
+
}, jsx(Flex, {
|
|
87
|
+
direction: "column",
|
|
88
|
+
justifyItems: "start"
|
|
89
|
+
}, jsx(Flex.Item, {
|
|
90
|
+
shouldShrink: true,
|
|
91
|
+
padding: "x-small small x-small small",
|
|
92
|
+
overflowY: "hidden"
|
|
93
|
+
}, _this.renderGroup()), bodyExpanded && _this.renderBody())))));
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
return _this;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return ExpandableCard;
|
|
100
|
+
}(Component), _class2.propTypes = {
|
|
101
|
+
headLine: PropTypes.node,
|
|
102
|
+
content: PropTypes.node,
|
|
103
|
+
styles: PropTypes.object
|
|
104
|
+
}.isRequired, _temp)) || _class);
|
|
@@ -6,8 +6,9 @@ var generateStyle = function generateStyle(componentTheme) {
|
|
|
6
6
|
minWidth: componentTheme.cardMinWidth,
|
|
7
7
|
maxWidth: '100%'
|
|
8
8
|
},
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
bodyContainer: {
|
|
10
|
+
overflow: 'auto',
|
|
11
|
+
maxHeight: '600px'
|
|
11
12
|
}
|
|
12
13
|
};
|
|
13
14
|
};
|
|
@@ -13,7 +13,10 @@ function mapStateToProps(_state) {
|
|
|
13
13
|
trueFalseEnabled: featureOn('ia_true_false_afs'),
|
|
14
14
|
choiceEnabled: featureOn('ia_choice_afs'),
|
|
15
15
|
multiAnswerEnabled: featureOn('ia_multi_answer_afs'),
|
|
16
|
-
fillInTheBlankEnabled: featureOn('ia_rich_fill_blank_afs')
|
|
16
|
+
fillInTheBlankEnabled: featureOn('ia_rich_fill_blank_afs'),
|
|
17
|
+
essayEnabled: featureOn('ia_essay_afs'),
|
|
18
|
+
fileUploadEnabled: featureOn('ia_file_upload_afs'),
|
|
19
|
+
numericEnabled: featureOn('ia_numeric_afs')
|
|
17
20
|
}
|
|
18
21
|
};
|
|
19
22
|
}
|
|
@@ -50,6 +50,17 @@ export var choiceTypeAnswerSummaryPropType = PropTypes.shape({
|
|
|
50
50
|
no_answer: aggregateDetailPropType,
|
|
51
51
|
aggregate: aggregatePropType
|
|
52
52
|
});
|
|
53
|
+
export var scoreDistributionTypeAnswerSummaryPropType = PropTypes.shape({
|
|
54
|
+
no_answer: aggregateDetailPropType.isRequired,
|
|
55
|
+
aggregate: aggregatePropType.isRequired,
|
|
56
|
+
graded: aggregateDetailPropType.isRequired,
|
|
57
|
+
score_distribution: PropTypes.arrayOf(scoreDistributionType).isRequired
|
|
58
|
+
});
|
|
59
|
+
export var scoreDistributionType = PropTypes.shape({
|
|
60
|
+
count: PropTypes.number.isRequired,
|
|
61
|
+
score: PropTypes.number.isRequired,
|
|
62
|
+
percentage: PropTypes.number.isRequired
|
|
63
|
+
});
|
|
53
64
|
export var matchingTypeAnswerSummaryPropType = PropTypes.shape({
|
|
54
65
|
questions: PropTypes.objectOf(PropTypes.shape({
|
|
55
66
|
body: PropTypes.string,
|
|
@@ -77,7 +88,43 @@ export var richFillBlankTypeAnswerSummaryPropType = PropTypes.shape({
|
|
|
77
88
|
no_answer: aggregateDetailPropType,
|
|
78
89
|
aggregate: aggregatePropType
|
|
79
90
|
});
|
|
80
|
-
|
|
91
|
+
var withinARangeTypeObject = PropTypes.shape({
|
|
92
|
+
end: PropTypes.string.isRequired,
|
|
93
|
+
start: PropTypes.string.isRequired,
|
|
94
|
+
choices: PropTypes.arrayOf(choiceTypeObject).isRequired,
|
|
95
|
+
type: PropTypes.string.isRequired
|
|
96
|
+
});
|
|
97
|
+
var marginOfErrorTypeObject = PropTypes.shape({
|
|
98
|
+
margin: PropTypes.string.isRequired,
|
|
99
|
+
margin_type: PropTypes.string.isRequired,
|
|
100
|
+
value: PropTypes.string.isRequired,
|
|
101
|
+
type: PropTypes.string.isRequired,
|
|
102
|
+
choices: PropTypes.arrayOf(choiceTypeObject).isRequired
|
|
103
|
+
});
|
|
104
|
+
var exactResponseTypeObject = PropTypes.shape({
|
|
105
|
+
value: PropTypes.string.isRequired,
|
|
106
|
+
type: PropTypes.string.isRequired,
|
|
107
|
+
choices: PropTypes.arrayOf(choiceTypeObject).isRequired
|
|
108
|
+
});
|
|
109
|
+
var preciseResponseTypeObject = PropTypes.shape({
|
|
110
|
+
value: PropTypes.string.isRequired,
|
|
111
|
+
precision: PropTypes.string.isRequired,
|
|
112
|
+
precision_type: PropTypes.string.isRequired,
|
|
113
|
+
type: PropTypes.string.isRequired,
|
|
114
|
+
choices: PropTypes.arrayOf(choiceTypeObject).isRequired
|
|
115
|
+
});
|
|
116
|
+
var uncategorizedTypeObject = PropTypes.shape({
|
|
117
|
+
type: PropTypes.string.isRequired,
|
|
118
|
+
choices: PropTypes.arrayOf(choiceTypeObject).isRequired
|
|
119
|
+
});
|
|
120
|
+
var numericRequirementTypeObject = PropTypes.oneOfType([withinARangeTypeObject, marginOfErrorTypeObject, exactResponseTypeObject, preciseResponseTypeObject, uncategorizedTypeObject]);
|
|
121
|
+
export var numericTypeAnswerSummaryPropType = PropTypes.shape({
|
|
122
|
+
requirement: PropTypes.shape({
|
|
123
|
+
correct_answers: PropTypes.arrayOf(numericRequirementTypeObject).isRequired,
|
|
124
|
+
incorrect_answer_choices: PropTypes.arrayOf(choiceTypeObject).isRequired
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType, scoreDistributionTypeAnswerSummaryPropType]);
|
|
81
128
|
export var itemAnalysisPropType = PropTypes.shape({
|
|
82
129
|
attempts: PropTypes.shape({
|
|
83
130
|
students_responded: PropTypes.number,
|
|
@@ -109,5 +156,8 @@ export var afsFlags = PropTypes.shape({
|
|
|
109
156
|
trueFalseEnabled: PropTypes.bool.isRequired,
|
|
110
157
|
choiceEnabled: PropTypes.bool.isRequired,
|
|
111
158
|
multiAnswerEnabled: PropTypes.bool.isRequired,
|
|
112
|
-
fillInTheBlankEnabled: PropTypes.bool.isRequired
|
|
159
|
+
fillInTheBlankEnabled: PropTypes.bool.isRequired,
|
|
160
|
+
numericEnabled: PropTypes.bool.isRequired,
|
|
161
|
+
essayEnabled: PropTypes.bool.isRequired,
|
|
162
|
+
fileUploadEnabled: PropTypes.bool.isRequired
|
|
113
163
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _presenter.ChoiceTypeWithInfo;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _presenter = require("./presenter.js");
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.ChoiceTypeWithInfo = void 0;
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
|
|
16
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
21
|
+
|
|
22
|
+
var _propTypes2 = require("../../../propTypes.js");
|
|
23
|
+
|
|
24
|
+
var _uiFlex = require("@instructure/ui-flex");
|
|
25
|
+
|
|
26
|
+
var _index = _interopRequireDefault(require("../../shared/ChoiceTypeTable/index.js"));
|
|
27
|
+
|
|
28
|
+
var _uiText = require("@instructure/ui-text");
|
|
29
|
+
|
|
30
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
31
|
+
|
|
32
|
+
var ChoiceTypeWithInfo = /*#__PURE__*/function (_Component) {
|
|
33
|
+
(0, _inherits2.default)(ChoiceTypeWithInfo, _Component);
|
|
34
|
+
|
|
35
|
+
var _super = (0, _createSuper2.default)(ChoiceTypeWithInfo);
|
|
36
|
+
|
|
37
|
+
function ChoiceTypeWithInfo() {
|
|
38
|
+
var _this;
|
|
39
|
+
|
|
40
|
+
(0, _classCallCheck2.default)(this, ChoiceTypeWithInfo);
|
|
41
|
+
|
|
42
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
43
|
+
args[_key] = arguments[_key];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
47
|
+
|
|
48
|
+
_this.renderTable = function () {
|
|
49
|
+
var _this$props = _this.props,
|
|
50
|
+
itemId = _this$props.itemId,
|
|
51
|
+
choices = _this$props.choices,
|
|
52
|
+
index = _this$props.index;
|
|
53
|
+
var tableId = "".concat(itemId, "_").concat(index, "_choiceGroup");
|
|
54
|
+
var tableContainerSizeClass = '';
|
|
55
|
+
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
56
|
+
itemId: tableId,
|
|
57
|
+
choices: choices,
|
|
58
|
+
tableContainerSizeClass: tableContainerSizeClass
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
_this.renderEmptyRequirement = function () {
|
|
63
|
+
return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, null, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
64
|
+
padding: "medium none none none"
|
|
65
|
+
}, /*#__PURE__*/_react.default.createElement(_uiText.Text, null, (0, _formatMessage.default)('There are no entries for this requirement.'))));
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
_this.render = function () {
|
|
69
|
+
var _this$props2 = _this.props,
|
|
70
|
+
headLine = _this$props2.headLine,
|
|
71
|
+
choices = _this$props2.choices;
|
|
72
|
+
var areThereChoices = Array.isArray(choices) && choices.length > 0;
|
|
73
|
+
return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
74
|
+
direction: "column",
|
|
75
|
+
justifyItems: "start"
|
|
76
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
77
|
+
overflowY: "visible",
|
|
78
|
+
shouldGrow: true,
|
|
79
|
+
shouldShrink: true
|
|
80
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
81
|
+
direction: "column",
|
|
82
|
+
justifyItems: "start"
|
|
83
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
84
|
+
shouldShrink: true,
|
|
85
|
+
padding: "none none none none",
|
|
86
|
+
overflowY: "hidden"
|
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
|
|
88
|
+
direction: "row",
|
|
89
|
+
alignItems: "start"
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
91
|
+
shouldShrink: true,
|
|
92
|
+
shouldGrow: true,
|
|
93
|
+
margin: "none none none none"
|
|
94
|
+
}, headLine))), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
|
|
95
|
+
shouldShrink: true,
|
|
96
|
+
padding: "none none medium none"
|
|
97
|
+
}, areThereChoices ? _this.renderTable() : _this.renderEmptyRequirement()))));
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
return _this;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return ChoiceTypeWithInfo;
|
|
104
|
+
}(_react.Component);
|
|
105
|
+
|
|
106
|
+
exports.ChoiceTypeWithInfo = ChoiceTypeWithInfo;
|
|
107
|
+
ChoiceTypeWithInfo.propTypes = {
|
|
108
|
+
itemId: _propTypes.default.number.isRequired,
|
|
109
|
+
index: _propTypes.default.number.isRequired,
|
|
110
|
+
choices: _propTypes2.choiceTypeObject.isRequired,
|
|
111
|
+
headLine: _propTypes.default.node,
|
|
112
|
+
styles: _propTypes.default.object
|
|
113
|
+
}.isRequired;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _presenter.NumericType;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _presenter = require("./presenter.js");
|