@instructure/quiz-core 20.7.1-rc.10 → 20.7.1-rc.11

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.
Files changed (17) hide show
  1. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +120 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/styles.js +38 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/theme.js +11 -0
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +55 -0
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +9 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +8 -2
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +3 -1
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +15 -2
  9. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/index.js +140 -0
  10. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/styles.js +46 -0
  11. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/Table/theme.js +19 -0
  12. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ScoreDistributionType/index.js +80 -0
  13. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +10 -0
  14. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +8 -2
  15. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +3 -1
  16. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +22 -3
  17. package/package.json +9 -9
@@ -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;
@@ -8,6 +8,7 @@ import ChoiceType from "./ChoiceType/index.js";
8
8
  import RichFillBlankType from "./RichFillBlankType/index.js";
9
9
  import AggregationType from "./AggregationType/index.js";
10
10
  import { MatchingType, OrderingType, CategorizationType } from "./MatchingType/index.js";
11
+ import { ScoreDistributionType } from "./ScoreDistributionType/index.js";
11
12
  import { afsFlags, answerSummaryPropType } from "../propTypes.js";
12
13
  export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
13
14
  _inherits(AnswerFrequencySummary, _Component);
@@ -62,6 +63,14 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
62
63
  if (afsFlags.fillInTheBlankEnabled) {
63
64
  _this.afsTableComponentMap.set('rich-fill-blank', RichFillBlankType);
64
65
  }
66
+
67
+ if (afsFlags.essayEnabled) {
68
+ _this.afsTableComponentMap.set('essay', ScoreDistributionType);
69
+ }
70
+
71
+ if (afsFlags.fileUploadEnabled) {
72
+ _this.afsTableComponentMap.set('file-upload', ScoreDistributionType);
73
+ }
65
74
  };
66
75
 
67
76
  _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
- }, t('Answer Frequency Summary')), _this.props.children)));
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);
@@ -13,7 +13,9 @@ 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')
17
19
  }
18
20
  };
19
21
  }
@@ -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,7 @@ export var richFillBlankTypeAnswerSummaryPropType = PropTypes.shape({
77
88
  no_answer: aggregateDetailPropType,
78
89
  aggregate: aggregatePropType
79
90
  });
80
- export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType]);
91
+ export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType, scoreDistributionTypeAnswerSummaryPropType]);
81
92
  export var itemAnalysisPropType = PropTypes.shape({
82
93
  attempts: PropTypes.shape({
83
94
  students_responded: PropTypes.number,
@@ -109,5 +120,7 @@ export var afsFlags = PropTypes.shape({
109
120
  trueFalseEnabled: PropTypes.bool.isRequired,
110
121
  choiceEnabled: PropTypes.bool.isRequired,
111
122
  multiAnswerEnabled: PropTypes.bool.isRequired,
112
- fillInTheBlankEnabled: PropTypes.bool.isRequired
123
+ fillInTheBlankEnabled: PropTypes.bool.isRequired,
124
+ essayEnabled: PropTypes.bool.isRequired,
125
+ fileUploadEnabled: PropTypes.bool.isRequired
113
126
  });
@@ -0,0 +1,140 @@
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 = exports.ScoreDistributionTypeTable = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
17
+
18
+ var _propTypes = require("../../../propTypes.js");
19
+
20
+ var _react = require("react");
21
+
22
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
23
+
24
+ var _uiTable = require("@instructure/ui-table");
25
+
26
+ var _propTypes2 = _interopRequireDefault(require("prop-types"));
27
+
28
+ var _emotion = require("@instructure/emotion");
29
+
30
+ var _styles = _interopRequireDefault(require("./styles.js"));
31
+
32
+ var _theme = _interopRequireDefault(require("./theme.js"));
33
+
34
+ var _dec, _class, _class2, _temp;
35
+
36
+ var ScoreDistributionTypeTable = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
37
+ (0, _inherits2.default)(ScoreDistributionTypeTable, _Component);
38
+
39
+ var _super = (0, _createSuper2.default)(ScoreDistributionTypeTable);
40
+
41
+ function ScoreDistributionTypeTable() {
42
+ var _this;
43
+
44
+ (0, _classCallCheck2.default)(this, ScoreDistributionTypeTable);
45
+
46
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
47
+ args[_key] = arguments[_key];
48
+ }
49
+
50
+ _this = _super.call.apply(_super, [this].concat(args));
51
+
52
+ _this.renderFirstCell = function (content) {
53
+ return (0, _emotion.jsx)("div", {
54
+ css: _this.props.styles.firstTextContainer
55
+ }, content);
56
+ };
57
+
58
+ _this.renderCell = function (content) {
59
+ return (0, _emotion.jsx)("div", {
60
+ css: _this.props.styles.textContainer
61
+ }, content);
62
+ };
63
+
64
+ _this.renderRow = function (choice, choiceIndex) {
65
+ var count = choice.count,
66
+ score = choice.score,
67
+ percentage = choice.percentage;
68
+ return (0, _emotion.jsx)(_uiTable.Table.Row, {
69
+ key: choiceIndex
70
+ }, (0, _emotion.jsx)(_uiTable.Table.Cell, {
71
+ themeOverride: {
72
+ padding: '0'
73
+ }
74
+ }, _this.renderFirstCell(score)), (0, _emotion.jsx)(_uiTable.Table.Cell, {
75
+ themeOverride: {
76
+ padding: '0'
77
+ }
78
+ }, _this.renderCell(count)), (0, _emotion.jsx)(_uiTable.Table.Cell, {
79
+ themeOverride: {
80
+ padding: '0'
81
+ },
82
+ textAlign: "center"
83
+ }, _this.renderCell("".concat(percentage, "%"))));
84
+ };
85
+
86
+ return _this;
87
+ }
88
+
89
+ (0, _createClass2.default)(ScoreDistributionTypeTable, [{
90
+ key: "componentDidMount",
91
+ value: function componentDidMount() {
92
+ this.props.makeStyles();
93
+ }
94
+ }, {
95
+ key: "componentDidUpdate",
96
+ value: function componentDidUpdate() {
97
+ this.props.makeStyles();
98
+ }
99
+ }, {
100
+ key: "render",
101
+ value: function render() {
102
+ var _this$props = this.props,
103
+ scores = _this$props.scores,
104
+ itemId = _this$props.itemId,
105
+ styles = _this$props.styles;
106
+ var pointsHeaderId = "answer-frequency-summary-points-".concat(itemId);
107
+ var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
108
+ var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
109
+ return (0, _emotion.jsx)("div", {
110
+ css: styles.tableContainer
111
+ }, (0, _emotion.jsx)(_uiTable.Table, {
112
+ caption: (0, _formatMessage.default)('Score Frequency Summary'),
113
+ elementRef: this.setTableRef
114
+ }, (0, _emotion.jsx)(_uiTable.Table.Head, null, (0, _emotion.jsx)(_uiTable.Table.Row, null, (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
115
+ id: pointsHeaderId,
116
+ height: "47px"
117
+ }, (0, _formatMessage.default)('Points')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
118
+ id: respondentsHeaderId,
119
+ height: "47px",
120
+ textAlign: "center"
121
+ }, (0, _formatMessage.default)('Respondents')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
122
+ id: percentageHeaderId,
123
+ height: "47px",
124
+ textAlign: "center"
125
+ }, (0, _formatMessage.default)('%')))), (0, _emotion.jsx)(_uiTable.Table.Body, null, scores.map(this.renderRow))));
126
+ }
127
+ }]);
128
+ ScoreDistributionTypeTable.displayName = "ScoreDistributionTypeTable";
129
+ return ScoreDistributionTypeTable;
130
+ }(_react.Component), _class2.propTypes = {
131
+ itemId: _propTypes2.default.number.isRequired,
132
+ scores: _propTypes2.default.arrayOf(_propTypes.scoreDistributionType).isRequired,
133
+ // eslint-disable-next-line react/require-default-props
134
+ makeStyles: _propTypes2.default.func,
135
+ // eslint-disable-next-line react/require-default-props,react/forbid-prop-types
136
+ styles: _propTypes2.default.object
137
+ }, _temp)) || _class);
138
+ exports.ScoreDistributionTypeTable = ScoreDistributionTypeTable;
139
+ var _default = ScoreDistributionTypeTable;
140
+ exports.default = _default;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var generateStyle = function generateStyle(componentTheme) {
9
+ var borderBottom = "solid 0.0625rem ".concat(componentTheme.colorGray);
10
+ return {
11
+ tableContainer: {
12
+ width: 'calc(25% + 350px)',
13
+ maxWidth: '100%',
14
+ '& table': {
15
+ borderCollapse: 'separate',
16
+ borderSpacing: '0 1px',
17
+ '& thead tr': {
18
+ '& th, & td': {
19
+ borderBottom: borderBottom
20
+ }
21
+ },
22
+ '& tbody tr': {
23
+ '& th, & td': {
24
+ width: '33.33%',
25
+ borderBottom: borderBottom
26
+ },
27
+ '& th': {
28
+ fontWeight: 400
29
+ }
30
+ }
31
+ }
32
+ },
33
+ textContainer: {
34
+ height: 'calc(100% - 4px)',
35
+ display: 'flex',
36
+ alignItems: 'center',
37
+ justifyContent: 'center'
38
+ },
39
+ firstTextContainer: {
40
+ padding: componentTheme.cellPadding
41
+ }
42
+ };
43
+ };
44
+
45
+ var _default = generateStyle;
46
+ exports.default = _default;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var generateComponentTheme = function generateComponentTheme(_ref) {
9
+ var spacing = _ref.spacing,
10
+ colors = _ref.colors;
11
+ return {
12
+ tableBottomPadding: spacing === null || spacing === void 0 ? void 0 : spacing.medium,
13
+ colorGray: colors === null || colors === void 0 ? void 0 : colors.tiara,
14
+ cellPadding: "".concat(spacing === null || spacing === void 0 ? void 0 : spacing.small, " ").concat(spacing === null || spacing === void 0 ? void 0 : spacing.small)
15
+ };
16
+ };
17
+
18
+ var _default = generateComponentTheme;
19
+ exports.default = _default;
@@ -0,0 +1,80 @@
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.default = exports.ScoreDistributionType = 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 _index = _interopRequireDefault(require("./Table/index.js"));
23
+
24
+ var _propTypes2 = require("../../propTypes.js");
25
+
26
+ var _index2 = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
27
+
28
+ var _presenter = require("../shared/AfsPartsContainer/presenter.js");
29
+
30
+ var _index3 = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
31
+
32
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
33
+
34
+ var ScoreDistributionType = /*#__PURE__*/function (_Component) {
35
+ (0, _inherits2.default)(ScoreDistributionType, _Component);
36
+
37
+ var _super = (0, _createSuper2.default)(ScoreDistributionType);
38
+
39
+ function ScoreDistributionType() {
40
+ var _this;
41
+
42
+ (0, _classCallCheck2.default)(this, ScoreDistributionType);
43
+
44
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
45
+ args[_key] = arguments[_key];
46
+ }
47
+
48
+ _this = _super.call.apply(_super, [this].concat(args));
49
+
50
+ _this.render = function () {
51
+ var _this$props = _this.props,
52
+ answerSummary = _this$props.answerSummary,
53
+ itemId = _this$props.itemId;
54
+ return /*#__PURE__*/_react.default.createElement(_index3.default, {
55
+ tableHeader: (0, _formatMessage.default)('Score Frequency Summary')
56
+ }, /*#__PURE__*/_react.default.createElement(_presenter.AfsPartsContainer, {
57
+ afsTable: /*#__PURE__*/_react.default.createElement(_index.default, {
58
+ itemId: itemId,
59
+ scores: answerSummary.score_distribution
60
+ }),
61
+ aggregationTable: /*#__PURE__*/_react.default.createElement(_index2.default, {
62
+ itemId: itemId,
63
+ answerSummary: answerSummary
64
+ })
65
+ }));
66
+ };
67
+
68
+ return _this;
69
+ }
70
+
71
+ return ScoreDistributionType;
72
+ }(_react.Component);
73
+
74
+ exports.ScoreDistributionType = ScoreDistributionType;
75
+ ScoreDistributionType.propTypes = {
76
+ itemId: _propTypes.default.number,
77
+ answerSummary: _propTypes2.scoreDistributionTypeAnswerSummaryPropType
78
+ }.isRequired;
79
+ var _default = ScoreDistributionType;
80
+ exports.default = _default;
@@ -29,6 +29,8 @@ var _index4 = _interopRequireDefault(require("./AggregationType/index.js"));
29
29
 
30
30
  var _index5 = require("./MatchingType/index.js");
31
31
 
32
+ var _index6 = require("./ScoreDistributionType/index.js");
33
+
32
34
  var _propTypes = require("../propTypes.js");
33
35
 
34
36
  var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
@@ -84,6 +86,14 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
84
86
  if (afsFlags.fillInTheBlankEnabled) {
85
87
  _this.afsTableComponentMap.set('rich-fill-blank', _index3.default);
86
88
  }
89
+
90
+ if (afsFlags.essayEnabled) {
91
+ _this.afsTableComponentMap.set('essay', _index6.ScoreDistributionType);
92
+ }
93
+
94
+ if (afsFlags.fileUploadEnabled) {
95
+ _this.afsTableComponentMap.set('file-upload', _index6.ScoreDistributionType);
96
+ }
87
97
  };
88
98
 
89
99
  _this.render = function () {
@@ -45,6 +45,11 @@ var AfsTableWrapper = (_dec = (0, _emotion.withStyle)(_styles.default, null), _d
45
45
 
46
46
  _this = _super.call.apply(_super, [this].concat(args));
47
47
 
48
+ _this.getHeader = function () {
49
+ var tableHeader = _this.props.tableHeader;
50
+ return tableHeader || (0, _formatMessage.default)('Answer Frequency Summary');
51
+ };
52
+
48
53
  _this.render = function () {
49
54
  return (0, _emotion.jsx)(_uiFlex.Flex, {
50
55
  direction: "row",
@@ -58,7 +63,7 @@ var AfsTableWrapper = (_dec = (0, _emotion.withStyle)(_styles.default, null), _d
58
63
  level: "h3",
59
64
  weight: "bold",
60
65
  color: "primary"
61
- }, (0, _formatMessage.default)('Answer Frequency Summary')), _this.props.children)));
66
+ }, _this.getHeader()), _this.props.children)));
62
67
  };
63
68
 
64
69
  return _this;
@@ -67,6 +72,7 @@ var AfsTableWrapper = (_dec = (0, _emotion.withStyle)(_styles.default, null), _d
67
72
  return AfsTableWrapper;
68
73
  }(_react.Component), _class2.propTypes = {
69
74
  children: _propTypes.default.node.isRequired,
70
- styles: _propTypes.default.object
75
+ styles: _propTypes.default.object,
76
+ tableHeader: _propTypes.default.string
71
77
  }, _temp)) || _class);
72
78
  exports.AfsTableWrapper = AfsTableWrapper;
@@ -22,7 +22,9 @@ function mapStateToProps(_state) {
22
22
  trueFalseEnabled: (0, _featureCheck.featureOn)('ia_true_false_afs'),
23
23
  choiceEnabled: (0, _featureCheck.featureOn)('ia_choice_afs'),
24
24
  multiAnswerEnabled: (0, _featureCheck.featureOn)('ia_multi_answer_afs'),
25
- fillInTheBlankEnabled: (0, _featureCheck.featureOn)('ia_rich_fill_blank_afs')
25
+ fillInTheBlankEnabled: (0, _featureCheck.featureOn)('ia_rich_fill_blank_afs'),
26
+ essayEnabled: (0, _featureCheck.featureOn)('ia_essay_afs'),
27
+ fileUploadEnabled: (0, _featureCheck.featureOn)('ia_file_upload_afs')
26
28
  }
27
29
  };
28
30
  }
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.afsFlags = exports.itemAnalysisPropType = exports.answerSummaryPropType = exports.richFillBlankTypeAnswerSummaryPropType = exports.matchingTypeAnswerSummaryPropType = exports.choiceTypeAnswerSummaryPropType = exports.choiceTypeObject = exports.onlyAggregatePropType = exports.aggregatePropType = exports.aggregateDetailPropType = exports.quizAnalysisPropType = exports.quizAnalysisMetadata = void 0;
8
+ exports.afsFlags = exports.itemAnalysisPropType = exports.answerSummaryPropType = exports.richFillBlankTypeAnswerSummaryPropType = exports.matchingTypeAnswerSummaryPropType = exports.scoreDistributionType = exports.scoreDistributionTypeAnswerSummaryPropType = exports.choiceTypeAnswerSummaryPropType = exports.choiceTypeObject = exports.onlyAggregatePropType = exports.aggregatePropType = exports.aggregateDetailPropType = exports.quizAnalysisPropType = exports.quizAnalysisMetadata = void 0;
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
@@ -81,6 +81,23 @@ var choiceTypeAnswerSummaryPropType = _propTypes.default.shape({
81
81
 
82
82
  exports.choiceTypeAnswerSummaryPropType = choiceTypeAnswerSummaryPropType;
83
83
 
84
+ var scoreDistributionTypeAnswerSummaryPropType = _propTypes.default.shape({
85
+ no_answer: aggregateDetailPropType.isRequired,
86
+ aggregate: aggregatePropType.isRequired,
87
+ graded: aggregateDetailPropType.isRequired,
88
+ score_distribution: _propTypes.default.arrayOf(scoreDistributionType).isRequired
89
+ });
90
+
91
+ exports.scoreDistributionTypeAnswerSummaryPropType = scoreDistributionTypeAnswerSummaryPropType;
92
+
93
+ var scoreDistributionType = _propTypes.default.shape({
94
+ count: _propTypes.default.number.isRequired,
95
+ score: _propTypes.default.number.isRequired,
96
+ percentage: _propTypes.default.number.isRequired
97
+ });
98
+
99
+ exports.scoreDistributionType = scoreDistributionType;
100
+
84
101
  var matchingTypeAnswerSummaryPropType = _propTypes.default.shape({
85
102
  questions: _propTypes.default.objectOf(_propTypes.default.shape({
86
103
  body: _propTypes.default.string,
@@ -114,7 +131,7 @@ var richFillBlankTypeAnswerSummaryPropType = _propTypes.default.shape({
114
131
 
115
132
  exports.richFillBlankTypeAnswerSummaryPropType = richFillBlankTypeAnswerSummaryPropType;
116
133
 
117
- var answerSummaryPropType = _propTypes.default.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType]);
134
+ var answerSummaryPropType = _propTypes.default.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType, richFillBlankTypeAnswerSummaryPropType, scoreDistributionTypeAnswerSummaryPropType]);
118
135
 
119
136
  exports.answerSummaryPropType = answerSummaryPropType;
120
137
 
@@ -152,7 +169,9 @@ var afsFlags = _propTypes.default.shape({
152
169
  trueFalseEnabled: _propTypes.default.bool.isRequired,
153
170
  choiceEnabled: _propTypes.default.bool.isRequired,
154
171
  multiAnswerEnabled: _propTypes.default.bool.isRequired,
155
- fillInTheBlankEnabled: _propTypes.default.bool.isRequired
172
+ fillInTheBlankEnabled: _propTypes.default.bool.isRequired,
173
+ essayEnabled: _propTypes.default.bool.isRequired,
174
+ fileUploadEnabled: _propTypes.default.bool.isRequired
156
175
  });
157
176
 
158
177
  exports.afsFlags = afsFlags;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "20.7.1-rc.10+a3e4051d4",
3
+ "version": "20.7.1-rc.11+fa1890974",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -44,11 +44,11 @@
44
44
  "@instructure/emotion": "^8.51.0",
45
45
  "@instructure/grading-utils": "^1.0.0",
46
46
  "@instructure/outcomes-ui": "^3.1.0",
47
- "@instructure/quiz-common": "20.7.1-rc.10+a3e4051d4",
48
- "@instructure/quiz-i18n": "20.7.1-rc.10+a3e4051d4",
49
- "@instructure/quiz-interactions": "20.7.1-rc.10+a3e4051d4",
50
- "@instructure/quiz-number-input": "20.7.1-rc.10+a3e4051d4",
51
- "@instructure/quiz-rce": "20.7.1-rc.10+a3e4051d4",
47
+ "@instructure/quiz-common": "20.7.1-rc.11+fa1890974",
48
+ "@instructure/quiz-i18n": "20.7.1-rc.11+fa1890974",
49
+ "@instructure/quiz-interactions": "20.7.1-rc.11+fa1890974",
50
+ "@instructure/quiz-number-input": "20.7.1-rc.11+fa1890974",
51
+ "@instructure/quiz-rce": "20.7.1-rc.11+fa1890974",
52
52
  "@instructure/ui-a11y-content": "^8.51.0",
53
53
  "@instructure/ui-alerts": "^8.51.0",
54
54
  "@instructure/ui-avatar": "^8.51.0",
@@ -112,7 +112,7 @@
112
112
  "file-saver": "~2.0.5",
113
113
  "humps": "^2.0.0",
114
114
  "immutable": "^3.8.1",
115
- "instructure-validations": "20.7.1-rc.10+a3e4051d4",
115
+ "instructure-validations": "20.7.1-rc.11+fa1890974",
116
116
  "ipaddr.js": "^1.5.4",
117
117
  "isomorphic-fetch": "^2.2.0",
118
118
  "isuuid": "^0.1.0",
@@ -163,7 +163,7 @@
163
163
  "intl": "^1.2.4",
164
164
  "jquery": "^2.2.3",
165
165
  "most-subject": "^5.3.0",
166
- "quiz-presets": "20.7.1-rc.10+a3e4051d4",
166
+ "quiz-presets": "20.7.1-rc.11+fa1890974",
167
167
  "react": "^16.8.6",
168
168
  "react-addons-test-utils": "^15.6.2",
169
169
  "react-dom": "^16.8.6",
@@ -179,5 +179,5 @@
179
179
  "publishConfig": {
180
180
  "access": "public"
181
181
  },
182
- "gitHead": "a3e4051d458e873dfa874b1b77d9ec85565e0b34"
182
+ "gitHead": "fa1890974baa639fabfc8e64371fef39cfc57bc8"
183
183
  }