@instructure/quiz-core 20.7.1-rc.7 → 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/AggregationTable/presenter.js +34 -39
- 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 +54 -4
- 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/AggregationTable/presenter.js +33 -38
- 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 +70 -5
- 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);
|
|
@@ -9,28 +9,28 @@ import t from '@instructure/quiz-i18n/es/format-message';
|
|
|
9
9
|
import { Table } from '@instructure/ui-table';
|
|
10
10
|
import { onlyAggregatePropType } from "../../../propTypes.js";
|
|
11
11
|
import PropTypes from 'prop-types';
|
|
12
|
-
import { IconCheckSolid, IconXSolid, IconNoSolid,
|
|
12
|
+
import { IconCheckSolid, IconXSolid, IconNoSolid, IconGradebookSolid } from '@instructure/ui-icons';
|
|
13
13
|
import { themeable } from '@instructure/ui-themeable';
|
|
14
14
|
import theme from "./theme.js";
|
|
15
15
|
var styles = {
|
|
16
|
-
componentId: '
|
|
16
|
+
componentId: 'fMmrG',
|
|
17
17
|
template: function template(theme) {
|
|
18
|
-
return "\n\n.
|
|
18
|
+
return "\n\n.fMmrG_cvRx{align-items:center;display:flex;height:100%;justify-content:center;min-height:47px;width:46px}\n\n.fMmrG_fPIL{min-width:500px}\n\n.fMmrG_fPIL table{border-collapse:separate;border-spacing:0 12px}\n\n.fMmrG_fPIL thead th{border-color:".concat(theme.colorHeaderBottomBorder || 'inherit', ";border-style:solid;border-width:0 0 1px 0}\n\n.fMmrG_fPIL table tbody tr td{border-style:solid;border-width:2px 0 2px 0;width:33.33%}\n\n.fMmrG_fPIL table tbody tr th:first-child{border-radius:4px 0 0 4px;border-style:solid;border-width:2px 0 2px 2px;font-weight:400}\n\n.fMmrG_fPIL table tbody tr td:last-child{border-radius:0 4px 4px 0;border-style:solid;border-width:2px 2px 2px 0}\n\n.fMmrG_dzqP table tbody tr:first-child td,.fMmrG_dzqP table tbody tr:first-child th{border-color:").concat(theme.colorGrey || 'inherit', "}\n\n.fMmrG_fZpZ table tbody tr:first-child td,.fMmrG_fZpZ table tbody tr:first-child th{border-color:").concat(theme.colorGreen || 'inherit', "}\n\n.fMmrG_fZpZ table tbody tr:nth-child(2) td,.fMmrG_fZpZ table tbody tr:nth-child(2) th{border-color:").concat(theme.colorRed || 'inherit', "}\n\n.fMmrG_dgTJ table tbody tr:first-child td,.fMmrG_dgTJ table tbody tr:first-child th{border-color:").concat(theme.colorGreen || 'inherit', "}\n\n.fMmrG_dgTJ table tbody tr:nth-child(2) td,.fMmrG_dgTJ table tbody tr:nth-child(2) th{border-color:").concat(theme.colorRed || 'inherit', "}\n\n.fMmrG_dgTJ table tbody tr:nth-child(3) td,.fMmrG_dgTJ table tbody tr:nth-child(3) th{border-color:").concat(theme.colorGrey || 'inherit', "}\n\n.fMmrG_bYLj table tbody tr:first-child td,.fMmrG_bYLj table tbody tr:first-child th{border-color:").concat(theme.colorGreen || 'inherit', "}\n\n.fMmrG_bYLj table tbody tr:nth-child(2) td,.fMmrG_bYLj table tbody tr:nth-child(2) th{border-color:").concat(theme.colorBlue || 'inherit', "}\n\n.fMmrG_bYLj table tbody tr:nth-child(3) td,.fMmrG_bYLj table tbody tr:nth-child(3) th{border-color:").concat(theme.colorRed || 'inherit', "}\n\n.fMmrG_bYLj table tbody tr:nth-child(4) td,.fMmrG_bYLj table tbody tr:nth-child(4) th{border-color:").concat(theme.colorGrey || 'inherit', "}\n\n.fMmrG_bvau{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.fMmrG_cxOH{background-color:").concat(theme.colorRed || 'inherit', "}\n\n.fMmrG_dsqS{background-color:").concat(theme.colorBlue || 'inherit', "}\n\n.fMmrG_eKcq{background-color:").concat(theme.colorGrey || 'inherit', "}\n\n.fMmrG_euQM{padding:12px 0 12px 10px}\n\n.fMmrG_fuuc{padding-left:45px}\n\n.fMmrG_vDgC svg{fill:#fff}\n\n.fMmrG_fHMm{border-color:").concat(theme.colorHeaderBottomBorder || 'inherit', ";border-style:solid;border-width:0 0 1px 0}");
|
|
19
19
|
},
|
|
20
|
-
'iconWrapper': '
|
|
21
|
-
'collapsingTable': '
|
|
22
|
-
'onlyNoanswer': '
|
|
23
|
-
'correctIncorrect': '
|
|
24
|
-
'correctIncorrectNoanswer': '
|
|
25
|
-
'
|
|
26
|
-
'correctBackground': '
|
|
27
|
-
'incorrectBackground': '
|
|
28
|
-
'
|
|
29
|
-
'noAnswerBackground': '
|
|
30
|
-
'labelWrapper': '
|
|
31
|
-
'firstHeaderCell': '
|
|
32
|
-
'iconWhite': '
|
|
33
|
-
'headerCell': '
|
|
20
|
+
'iconWrapper': 'fMmrG_cvRx',
|
|
21
|
+
'collapsingTable': 'fMmrG_fPIL',
|
|
22
|
+
'onlyNoanswer': 'fMmrG_dzqP',
|
|
23
|
+
'correctIncorrect': 'fMmrG_fZpZ',
|
|
24
|
+
'correctIncorrectNoanswer': 'fMmrG_dgTJ',
|
|
25
|
+
'correctIncorrectNoanswerGraded': 'fMmrG_bYLj',
|
|
26
|
+
'correctBackground': 'fMmrG_bvau',
|
|
27
|
+
'incorrectBackground': 'fMmrG_cxOH',
|
|
28
|
+
'gradedBackground': 'fMmrG_dsqS',
|
|
29
|
+
'noAnswerBackground': 'fMmrG_eKcq',
|
|
30
|
+
'labelWrapper': 'fMmrG_euQM',
|
|
31
|
+
'firstHeaderCell': 'fMmrG_fuuc',
|
|
32
|
+
'iconWhite': 'fMmrG_vDgC',
|
|
33
|
+
'headerCell': 'fMmrG_fHMm'
|
|
34
34
|
};
|
|
35
35
|
import { Flex } from '@instructure/ui-flex';
|
|
36
36
|
import classNames from 'classnames';
|
|
@@ -40,11 +40,11 @@ import { noAnswerMissing } from "./popoverContent.js";
|
|
|
40
40
|
var noAnswerKey = 'noAnswer';
|
|
41
41
|
var incorrectKey = 'incorrect';
|
|
42
42
|
var correctKey = 'correct';
|
|
43
|
-
var
|
|
43
|
+
var gradedKey = 'graded';
|
|
44
44
|
|
|
45
45
|
var _ref = /*#__PURE__*/React.createElement(IconCheckSolid, null);
|
|
46
46
|
|
|
47
|
-
var _ref2 = /*#__PURE__*/React.createElement(
|
|
47
|
+
var _ref2 = /*#__PURE__*/React.createElement(IconGradebookSolid, null);
|
|
48
48
|
|
|
49
49
|
var _ref3 = /*#__PURE__*/React.createElement(IconXSolid, null);
|
|
50
50
|
|
|
@@ -122,9 +122,9 @@ export var AggregationTable = (_dec = themeable(theme, styles), _dec(_class = (_
|
|
|
122
122
|
}, /*#__PURE__*/React.createElement(Text, null, concatenatedPercentage)));
|
|
123
123
|
};
|
|
124
124
|
|
|
125
|
-
_this.
|
|
126
|
-
var
|
|
127
|
-
return !!
|
|
125
|
+
_this.gradedExist = function () {
|
|
126
|
+
var graded = _this.props.answerSummary.graded;
|
|
127
|
+
return !!graded;
|
|
128
128
|
};
|
|
129
129
|
|
|
130
130
|
_this.correctExist = function () {
|
|
@@ -142,24 +142,19 @@ export var AggregationTable = (_dec = themeable(theme, styles), _dec(_class = (_
|
|
|
142
142
|
return !!no_answer;
|
|
143
143
|
};
|
|
144
144
|
|
|
145
|
-
_this.getCorrectLabel = function () {
|
|
146
|
-
return _this.partialCorrectExist() ? t('Fully correct') : t('Correct');
|
|
147
|
-
};
|
|
148
|
-
|
|
149
145
|
_this.renderCorrect = function () {
|
|
150
146
|
var aggregate = _this.props.answerSummary.aggregate;
|
|
151
147
|
var correct = aggregate.correct;
|
|
152
148
|
var correctCount = correct.count || 0;
|
|
153
149
|
var correctPercentage = correct.percentage || 0;
|
|
154
|
-
return _this.renderRow(correctKey, _ref,
|
|
150
|
+
return _this.renderRow(correctKey, _ref, t('Correct'), correctCount, correctPercentage);
|
|
155
151
|
};
|
|
156
152
|
|
|
157
|
-
_this.
|
|
158
|
-
var
|
|
159
|
-
var
|
|
160
|
-
var
|
|
161
|
-
|
|
162
|
-
return _this.renderRow(partialCorrectKey, _ref2, t('Partially correct'), partialCorrectCount, partialCorrectPercentage);
|
|
153
|
+
_this.renderGraded = function () {
|
|
154
|
+
var graded = _this.props.answerSummary.graded;
|
|
155
|
+
var gradedCount = graded.count || 0;
|
|
156
|
+
var gradedPercentage = graded.percentage || 0;
|
|
157
|
+
return _this.renderRow(gradedKey, _ref2, t('Graded'), gradedCount, gradedPercentage);
|
|
163
158
|
};
|
|
164
159
|
|
|
165
160
|
_this.renderIncorrect = function () {
|
|
@@ -180,16 +175,16 @@ export var AggregationTable = (_dec = themeable(theme, styles), _dec(_class = (_
|
|
|
180
175
|
_this.getColorProfile = function () {
|
|
181
176
|
var colorProfile;
|
|
182
177
|
|
|
183
|
-
var
|
|
178
|
+
var correctIncorrectNoAnswerGraded = _this.gradedExist() && _this.noAnswerExist() && _this.correctExist() && _this.incorrectExist();
|
|
184
179
|
|
|
185
|
-
var correctIncorrectNoAnswer = !_this.
|
|
180
|
+
var correctIncorrectNoAnswer = !_this.gradedExist() && _this.noAnswerExist() && _this.correctExist() && _this.incorrectExist();
|
|
186
181
|
|
|
187
|
-
var onlyNoAnswer = _this.noAnswerExist() && !_this.
|
|
182
|
+
var onlyNoAnswer = _this.noAnswerExist() && !_this.gradedExist() && !_this.correctExist() && !_this.incorrectExist();
|
|
188
183
|
|
|
189
184
|
if (correctIncorrectNoAnswer) {
|
|
190
185
|
colorProfile = 'correctIncorrectNoanswer';
|
|
191
|
-
} else if (
|
|
192
|
-
colorProfile = '
|
|
186
|
+
} else if (correctIncorrectNoAnswerGraded) {
|
|
187
|
+
colorProfile = 'correctIncorrectNoanswerGraded';
|
|
193
188
|
} else if (onlyNoAnswer) {
|
|
194
189
|
colorProfile = 'onlyNoanswer';
|
|
195
190
|
} else {
|
|
@@ -205,7 +200,7 @@ export var AggregationTable = (_dec = themeable(theme, styles), _dec(_class = (_
|
|
|
205
200
|
className: classNames(styles.collapsingTable, styles[_this.getColorProfile()])
|
|
206
201
|
}, /*#__PURE__*/React.createElement(Table, {
|
|
207
202
|
caption: t('Answer Frequency Summary Aggregates')
|
|
208
|
-
}, _this.renderHeaderRow(popover), /*#__PURE__*/React.createElement(Table.Body, null, _this.correctExist() && _this.renderCorrect(), _this.
|
|
203
|
+
}, _this.renderHeaderRow(popover), /*#__PURE__*/React.createElement(Table.Body, null, _this.correctExist() && _this.renderCorrect(), _this.gradedExist() && _this.renderGraded(), _this.incorrectExist() && _this.renderIncorrect(), _this.noAnswerExist() && _this.renderNoAnswer())));
|
|
209
204
|
};
|
|
210
205
|
|
|
211
206
|
return _this;
|
|
@@ -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
|
}
|
|
@@ -32,11 +32,11 @@ export var aggregateDetailPropType = PropTypes.shape({
|
|
|
32
32
|
});
|
|
33
33
|
export var aggregatePropType = PropTypes.shape({
|
|
34
34
|
correct: aggregateDetailPropType.isRequired,
|
|
35
|
-
incorrect: aggregateDetailPropType.isRequired
|
|
36
|
-
partial_correct: aggregateDetailPropType
|
|
35
|
+
incorrect: aggregateDetailPropType.isRequired
|
|
37
36
|
});
|
|
38
37
|
export var onlyAggregatePropType = PropTypes.shape({
|
|
39
38
|
no_answer: aggregateDetailPropType,
|
|
39
|
+
graded: aggregateDetailPropType,
|
|
40
40
|
aggregate: aggregatePropType
|
|
41
41
|
});
|
|
42
42
|
export var choiceTypeObject = PropTypes.shape({
|
|
@@ -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
|
});
|