@instructure/quiz-core 18.6.1-rc.0 → 18.6.1-rc.2

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 (25) hide show
  1. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +1 -1
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/CategorizationType.js +74 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +4 -15
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +23 -17
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +5 -16
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +2 -1
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +7 -8
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +5 -11
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +9 -2
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -1
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +36 -23
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +4 -1
  13. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +2 -2
  14. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/CategorizationType.js +99 -0
  15. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +5 -20
  16. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +28 -18
  17. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +9 -24
  18. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +9 -1
  19. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +5 -6
  20. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +5 -11
  21. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +9 -2
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -1
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +36 -23
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +4 -1
  25. package/package.json +9 -9
@@ -3,10 +3,10 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
3
3
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
4
4
  import React, { Component } from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import AggregationTable from "../shared/AggregationTable/index.js";
7
6
  import { onlyAggregatePropType } from "../../propTypes.js";
8
7
  import { AfsTableWrapper } from "../shared/AfsTableWrapper/presenter.js";
9
8
  import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
9
+ import AggregationTable from "../shared/AggregationTable/index.js";
10
10
  export var AggregationType = /*#__PURE__*/function (_Component) {
11
11
  _inherits(AggregationType, _Component);
12
12
 
@@ -0,0 +1,74 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React, { Component } from 'react';
6
+ import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
7
+ import PropTypes from 'prop-types';
8
+ import { matchingTypeAnswerSummaryPropType } from "../../propTypes.js";
9
+ import t from '@instructure/quiz-i18n/es/format-message';
10
+ import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
11
+ import MatchingTypeTable from "./MatchingTypeTable/index.js";
12
+ import AggregationTable from "../shared/AggregationTable/index.js";
13
+ var distractorKey = 'distractor';
14
+ var distractorTranslation = t('Distractors');
15
+ export var CategorizationType = /*#__PURE__*/function (_Component) {
16
+ _inherits(CategorizationType, _Component);
17
+
18
+ var _super = _createSuper(CategorizationType);
19
+
20
+ function CategorizationType() {
21
+ var _this;
22
+
23
+ _classCallCheck(this, CategorizationType);
24
+
25
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
26
+ args[_key] = arguments[_key];
27
+ }
28
+
29
+ _this = _super.call.apply(_super, [this].concat(args));
30
+
31
+ _this.updateAnswerBody = function (answerSummary) {
32
+ var answerSummaryCopy = _objectSpread({}, answerSummary);
33
+
34
+ Object.keys(answerSummaryCopy.questions).forEach(function (questionKey) {
35
+ Object.keys(answerSummaryCopy.questions[questionKey].answers).forEach(function (answerKey) {
36
+ if (distractorKey === answerKey) {
37
+ var detail = answerSummaryCopy.questions[questionKey].answers[answerKey];
38
+ answerSummaryCopy.questions[questionKey].answers[answerKey] = _objectSpread(_objectSpread({}, detail), {}, {
39
+ body: distractorTranslation
40
+ });
41
+ }
42
+ });
43
+ });
44
+ return answerSummaryCopy;
45
+ };
46
+
47
+ _this.render = function () {
48
+ var _this$props = _this.props,
49
+ itemId = _this$props.itemId,
50
+ answerSummary = _this$props.answerSummary;
51
+
52
+ var updatedAnswerSummary = _this.updateAnswerBody(answerSummary);
53
+
54
+ return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(AfsPartsContainer, {
55
+ afsTable: /*#__PURE__*/React.createElement(MatchingTypeTable, {
56
+ itemId: itemId,
57
+ answerSummary: updatedAnswerSummary
58
+ }),
59
+ aggregationTable: /*#__PURE__*/React.createElement(AggregationTable, {
60
+ itemId: itemId,
61
+ answerSummary: updatedAnswerSummary
62
+ })
63
+ }));
64
+ };
65
+
66
+ return _this;
67
+ }
68
+
69
+ return CategorizationType;
70
+ }(Component);
71
+ CategorizationType.propTypes = {
72
+ itemId: PropTypes.number.isRequired,
73
+ answerSummary: matchingTypeAnswerSummaryPropType.isRequired
74
+ }.isRequired;
@@ -3,11 +3,10 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
3
3
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
4
4
  import React, { Component } from 'react';
5
5
  import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
6
- import MatchingTypeTable from "./MatchingTypeTable/index.js";
7
6
  import PropTypes from 'prop-types';
8
7
  import { matchingTypeAnswerSummaryPropType } from "../../propTypes.js";
9
- import MatchingTypeOrderer from "./utils/matchingTypeOrderer.js";
10
8
  import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
9
+ import MatchingTypeTable from "./MatchingTypeTable/index.js";
11
10
  import AggregationTable from "../shared/AggregationTable/index.js";
12
11
  export var MatchingType = /*#__PURE__*/function (_Component) {
13
12
  _inherits(MatchingType, _Component);
@@ -29,20 +28,10 @@ export var MatchingType = /*#__PURE__*/function (_Component) {
29
28
  var _this$props = _this.props,
30
29
  itemId = _this$props.itemId,
31
30
  answerSummary = _this$props.answerSummary;
32
- var questions = answerSummary.questions;
33
- var questionKeys = Object.keys(questions);
34
- var exampleAnswers = questions[questionKeys[0]].answers;
35
- var answerKeys = Object.keys(exampleAnswers);
36
- var orderedAnswerKeys = MatchingTypeOrderer.orderAnswerKeysForDiagonal(answerSummary, answerKeys);
37
- var orderedQuestionKeys = MatchingTypeOrderer.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
38
- var tableHalfWidth = orderedAnswerKeys.length <= 3;
39
31
  return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(AfsPartsContainer, {
40
- tableHalfWidth: tableHalfWidth,
41
32
  afsTable: /*#__PURE__*/React.createElement(MatchingTypeTable, {
42
33
  itemId: itemId,
43
- answerSummary: answerSummary,
44
- orderedAnswerKeys: orderedAnswerKeys,
45
- orderedQuestionKeys: orderedQuestionKeys
34
+ answerSummary: answerSummary
46
35
  }),
47
36
  aggregationTable: /*#__PURE__*/React.createElement(AggregationTable, {
48
37
  itemId: itemId,
@@ -57,6 +46,6 @@ export var MatchingType = /*#__PURE__*/function (_Component) {
57
46
  return MatchingType;
58
47
  }(Component);
59
48
  MatchingType.propTypes = {
60
- itemId: PropTypes.number,
61
- answerSummary: matchingTypeAnswerSummaryPropType
49
+ itemId: PropTypes.number.isRequired,
50
+ answerSummary: matchingTypeAnswerSummaryPropType.isRequired
62
51
  }.isRequired;
@@ -8,16 +8,16 @@ var _dec, _class, _class2, _temp;
8
8
  import React, { Component } from 'react';
9
9
  import { Flex } from '@instructure/ui-flex';
10
10
  var styles = {
11
- componentId: 'daSNV',
11
+ componentId: 'bAOvu',
12
12
  template: function template(theme) {
13
- return "\n\n.daSNV_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.daSNV_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.daSNV_EKAb{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.daSNV_EKAb svg{fill:#fff}\n\n.daSNV_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0}\n\n.daSNV_fvqY{border-radius:4px 4px 4px 4px;border-width:2px 2px 2px 2px}\n\n.daSNV_cVld{max-width:100%;width:calc(25% + 350px)}");
13
+ return "\n\n.bAOvu_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.bAOvu_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.bAOvu_EKAb{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.bAOvu_EKAb svg{fill:#fff}\n\n.bAOvu_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0}\n\n.bAOvu_fvqY{border-radius:4px 4px 4px 4px;border-width:2px 2px 2px 2px}\n\n.bAOvu_SVtU{max-width:100%;width:calc(25% + 350px)}");
14
14
  },
15
- 'tableWrapper': 'daSNV_rMrG',
16
- 'iconWrapper': 'daSNV_cvRx',
17
- 'iconCorrect': 'daSNV_EKAb',
18
- 'correctRowBorder': 'daSNV_tnta',
19
- 'correctRowBorderRadius': 'daSNV_fvqY',
20
- 'answerFrequencySummaryContainer': 'daSNV_cVld'
15
+ 'tableWrapper': 'bAOvu_rMrG',
16
+ 'iconWrapper': 'bAOvu_cvRx',
17
+ 'iconCorrect': 'bAOvu_EKAb',
18
+ 'correctRowBorder': 'bAOvu_tnta',
19
+ 'correctRowBorderRadius': 'bAOvu_fvqY',
20
+ 'tableContainer': 'bAOvu_SVtU'
21
21
  };
22
22
  import t from '@instructure/quiz-i18n/es/format-message';
23
23
  import { Table } from '@instructure/ui-table';
@@ -25,9 +25,10 @@ import { themeable } from '@instructure/ui-themeable';
25
25
  import PropTypes from 'prop-types';
26
26
  import { IconCheckSolid } from '@instructure/ui-icons';
27
27
  import { matchingTypeAnswerSummaryPropType } from "../../../propTypes.js";
28
+ import MatchingTypeOrderer from "../utils/matchingTypeOrderer.js";
29
+ import { extractTextFromHtml } from '@instructure/quiz-interactions';
28
30
  import classNames from 'classnames';
29
31
  import theme from "./theme.js";
30
- import { extractTextFromHtml } from '@instructure/quiz-interactions';
31
32
 
32
33
  var _ref = /*#__PURE__*/React.createElement(IconCheckSolid, null);
33
34
 
@@ -161,14 +162,21 @@ export var MatchingTypeTable = (_dec = themeable(theme, styles), _dec(_class = (
161
162
  };
162
163
 
163
164
  _this.render = function () {
164
- var _this$props4 = _this.props,
165
- orderedAnswerKeys = _this$props4.orderedAnswerKeys,
166
- orderedQuestionKeys = _this$props4.orderedQuestionKeys;
167
- return /*#__PURE__*/React.createElement(Table, {
165
+ var answerSummary = _this.props.answerSummary;
166
+ var questions = answerSummary.questions;
167
+ var questionKeys = Object.keys(questions);
168
+ var exampleAnswers = questions[questionKeys[0]].answers;
169
+ var answerKeys = Object.keys(exampleAnswers).sort();
170
+ var tableHalfWidth = answerKeys.length <= 3;
171
+ var orderedAnswerKeys = MatchingTypeOrderer.orderAnswerKeysForDiagonal(answerSummary, answerKeys);
172
+ var orderedQuestionKeys = MatchingTypeOrderer.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
173
+ return /*#__PURE__*/React.createElement("div", {
174
+ className: classNames(_defineProperty({}, styles.tableContainer, tableHalfWidth))
175
+ }, /*#__PURE__*/React.createElement(Table, {
168
176
  caption: t('Answer Frequency Summary')
169
177
  }, /*#__PURE__*/React.createElement(Table.Head, null, _this.renderHeaderRow(orderedAnswerKeys)), /*#__PURE__*/React.createElement(Table.Body, null, orderedQuestionKeys.map(function (orderedQuestionKey) {
170
178
  return _this.renderRow(orderedQuestionKey, orderedAnswerKeys);
171
- })));
179
+ }))));
172
180
  };
173
181
 
174
182
  return _this;
@@ -177,7 +185,5 @@ export var MatchingTypeTable = (_dec = themeable(theme, styles), _dec(_class = (
177
185
  return MatchingTypeTable;
178
186
  }(Component), _class2.propTypes = {
179
187
  itemId: PropTypes.number,
180
- answerSummary: matchingTypeAnswerSummaryPropType,
181
- orderedAnswerKeys: PropTypes.array.isRequired,
182
- orderedQuestionKeys: PropTypes.array.isRequired
188
+ answerSummary: matchingTypeAnswerSummaryPropType
183
189
  }.isRequired, _temp)) || _class);
@@ -3,14 +3,13 @@ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
3
  import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React, { Component } from 'react';
6
- import MatchingTypeOrderer from "./utils/matchingTypeOrderer.js";
7
6
  import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
8
- import MatchingTypeTable from "./MatchingTypeTable/index.js";
9
7
  import PropTypes from 'prop-types';
10
8
  import { matchingTypeAnswerSummaryPropType } from "../../propTypes.js";
11
9
  import t from '@instructure/quiz-i18n/es/format-message';
12
- import AggregationTable from "../shared/AggregationTable/index.js";
13
10
  import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
11
+ import AggregationTable from "../shared/AggregationTable/index.js";
12
+ import MatchingTypeTable from "./MatchingTypeTable/index.js";
14
13
  export var OrderingType = /*#__PURE__*/function (_Component) {
15
14
  _inherits(OrderingType, _Component);
16
15
 
@@ -54,20 +53,10 @@ export var OrderingType = /*#__PURE__*/function (_Component) {
54
53
 
55
54
  var updatedAnswerSummary = _this.updateAnswerBody(answerSummary);
56
55
 
57
- var questions = updatedAnswerSummary.questions;
58
- var questionKeys = Object.keys(questions);
59
- var exampleAnswers = questions[questionKeys[0]].answers;
60
- var answerKeys = Object.keys(exampleAnswers).sort();
61
- var orderedAnswerKeys = MatchingTypeOrderer.orderAnswerKeysForDiagonal(updatedAnswerSummary, answerKeys);
62
- var orderedQuestionKeys = MatchingTypeOrderer.orderQuestionKeysForDiagonal(updatedAnswerSummary, questionKeys, orderedAnswerKeys);
63
- var tableHalfWidth = orderedAnswerKeys.length <= 3;
64
56
  return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(AfsPartsContainer, {
65
- tableHalfWidth: tableHalfWidth,
66
57
  afsTable: /*#__PURE__*/React.createElement(MatchingTypeTable, {
67
58
  itemId: itemId,
68
- answerSummary: updatedAnswerSummary,
69
- orderedAnswerKeys: orderedAnswerKeys,
70
- orderedQuestionKeys: orderedQuestionKeys
59
+ answerSummary: updatedAnswerSummary
71
60
  }),
72
61
  aggregationTable: /*#__PURE__*/React.createElement(AggregationTable, {
73
62
  itemId: itemId,
@@ -82,6 +71,6 @@ export var OrderingType = /*#__PURE__*/function (_Component) {
82
71
  return OrderingType;
83
72
  }(Component);
84
73
  OrderingType.propTypes = {
85
- itemId: PropTypes.number,
86
- answerSummary: matchingTypeAnswerSummaryPropType
74
+ itemId: PropTypes.number.isRequired,
75
+ answerSummary: matchingTypeAnswerSummaryPropType.isRequired
87
76
  }.isRequired;
@@ -1,2 +1,3 @@
1
1
  export { MatchingType } from "./MatchingType.js";
2
- export { OrderingType } from "./OrderingType.js";
2
+ export { OrderingType } from "./OrderingType.js";
3
+ export { CategorizationType } from "./CategorizationType.js";
@@ -5,8 +5,8 @@ import React, { Component } from 'react';
5
5
  import { PropTypes } from '@instructure/quiz-interactions';
6
6
  import ChoiceType from "./ChoiceType/index.js";
7
7
  import AggregationType from "./AggregationType/index.js";
8
- import { MatchingType, OrderingType } from "./MatchingType/index.js";
9
- import { answerSummaryPropType } from "../propTypes.js";
8
+ import { MatchingType, OrderingType, CategorizationType } from "./MatchingType/index.js";
9
+ import { afsFlags, answerSummaryPropType } from "../propTypes.js";
10
10
  export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
11
11
  _inherits(AnswerFrequencySummary, _Component);
12
12
 
@@ -40,6 +40,10 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
40
40
  if (afsFlags.orderingEnabled) {
41
41
  _this.afsTableComponentMap.set('ordering', OrderingType);
42
42
  }
43
+
44
+ if (afsFlags.categorizationEnabled) {
45
+ _this.afsTableComponentMap.set('categorization', CategorizationType);
46
+ }
43
47
  };
44
48
 
45
49
  _this.render = function () {
@@ -77,10 +81,5 @@ AnswerFrequencySummary.propTypes = {
77
81
  itemId: PropTypes.number.isRequired,
78
82
  answerSummary: answerSummaryPropType.isRequired,
79
83
  interactionType: PropTypes.string.isRequired,
80
- afsFlags: PropTypes.shape({
81
- formulaEnabled: PropTypes.bool.isRequired,
82
- matchingEnabled: PropTypes.bool.isRequired,
83
- hotSpotEnabled: PropTypes.bool.isRequired,
84
- orderingEnabled: PropTypes.bool.isRequired
85
- })
84
+ afsFlags: afsFlags
86
85
  }.isRequired;
@@ -43,18 +43,14 @@ export var AfsPartsContainer = (_dec = themeable({}, styles), _dec(_class = (_te
43
43
  };
44
44
 
45
45
  _this.renderAfsTable = function () {
46
- var _this$props2 = _this.props,
47
- afsTable = _this$props2.afsTable,
48
- tableHalfWidth = _this$props2.tableHalfWidth;
49
- return /*#__PURE__*/React.createElement("div", {
50
- className: classNames(_defineProperty({}, styles.tableContainer, tableHalfWidth))
51
- }, afsTable);
46
+ var afsTable = _this.props.afsTable;
47
+ return /*#__PURE__*/React.createElement("div", null, afsTable);
52
48
  };
53
49
 
54
50
  _this.render = function () {
55
- var _this$props3 = _this.props,
56
- afsTable = _this$props3.afsTable,
57
- aggregationTable = _this$props3.aggregationTable;
51
+ var _this$props2 = _this.props,
52
+ afsTable = _this$props2.afsTable,
53
+ aggregationTable = _this$props2.aggregationTable;
58
54
  return /*#__PURE__*/React.createElement(React.Fragment, null, afsTable && _this.renderAfsTable(), aggregationTable && _this.renderAggregationTable());
59
55
  };
60
56
 
@@ -63,11 +59,9 @@ export var AfsPartsContainer = (_dec = themeable({}, styles), _dec(_class = (_te
63
59
 
64
60
  return AfsPartsContainer;
65
61
  }(Component), _class2.propTypes = {
66
- tableHalfWidth: PropTypes.bool,
67
62
  afsTable: PropTypes.node,
68
63
  aggregationTable: PropTypes.node
69
64
  }.isRequired, _class2.defaultProps = {
70
- tableHalfWidth: true,
71
65
  afsTable: null,
72
66
  aggregationTable: null
73
67
  }, _temp)) || _class);
@@ -43,6 +43,7 @@ var noAnswerKey = 'noAnswer';
43
43
  var incorrectKey = 'incorrect';
44
44
  var correctKey = 'correct';
45
45
  var partialCorrectKey = 'partialCorrect';
46
+ var tableLayout = 'fixed';
46
47
 
47
48
  var _ref = /*#__PURE__*/React.createElement(IconCheckSolid, null);
48
49
 
@@ -133,6 +134,11 @@ export var AggregationTable = (_dec = themeable(theme, styles), _dec(_class = (_
133
134
  return !!(aggregate === null || aggregate === void 0 ? void 0 : aggregate.partial_correct);
134
135
  };
135
136
 
137
+ _this.isNoAnswerExist = function () {
138
+ var no_answer = _this.props.answerSummary.no_answer;
139
+ return !!no_answer;
140
+ };
141
+
136
142
  _this.renderCorrect = function () {
137
143
  var aggregate = _this.props.answerSummary.aggregate;
138
144
  var correct = aggregate.correct;
@@ -172,8 +178,9 @@ export var AggregationTable = (_dec = themeable(theme, styles), _dec(_class = (_
172
178
  return /*#__PURE__*/React.createElement("div", {
173
179
  className: classNames(styles.collapsingTable)
174
180
  }, /*#__PURE__*/React.createElement(Table, {
175
- caption: t('Answer Frequency Summary Aggregates')
176
- }, _this.renderHeaderRow(), /*#__PURE__*/React.createElement(Table.Body, null, _this.renderCorrect(), _this.isPartialCorrectExist() && _this.renderPartialCorrect(), _this.renderIncorrect(), _this.renderNoAnswer())));
181
+ caption: t('Answer Frequency Summary Aggregates'),
182
+ layout: tableLayout
183
+ }, _this.renderHeaderRow(), /*#__PURE__*/React.createElement(Table.Body, null, _this.renderCorrect(), _this.isPartialCorrectExist() && _this.renderPartialCorrect(), _this.renderIncorrect(), _this.isNoAnswerExist() && _this.renderNoAnswer())));
177
184
  };
178
185
 
179
186
  return _this;
@@ -10,7 +10,8 @@ function mapStateToProps(_state) {
10
10
  formulaEnabled: featureOn('ia_formula_afs'),
11
11
  matchingEnabled: featureOn('ia_matching_afs'),
12
12
  orderingEnabled: featureOn('ia_ordering_afs'),
13
- hotSpotEnabled: featureOn('ia_hot_spot_afs')
13
+ hotSpotEnabled: featureOn('ia_hot_spot_afs'),
14
+ categorizationEnabled: featureOn('ia_categorization_afs')
14
15
  }
15
16
  };
16
17
  }
@@ -95,7 +95,7 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
95
95
  return /*#__PURE__*/React.createElement(Flex, {
96
96
  alignItems: "center",
97
97
  width: "auto",
98
- margin: "auto",
98
+ margin: "small auto",
99
99
  direction: "column"
100
100
  }, /*#__PURE__*/React.createElement(Flex.Item, {
101
101
  overflowY: "hidden"
@@ -109,37 +109,50 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
109
109
  }, quizAnalysis === null || quizAnalysis === void 0 ? void 0 : (_quizAnalysis$metadat = quizAnalysis.metadata) === null || _quizAnalysis$metadat === void 0 ? void 0 : _quizAnalysis$metadat.quiz_title)));
110
110
  };
111
111
 
112
- _this.renderTop = function () {
112
+ _this.renderUpdateDateWithError = function () {
113
113
  var _this$props = _this.props,
114
114
  analysisError = _this$props.analysisError,
115
115
  generationInProgress = _this$props.generationInProgress,
116
116
  quizAnalysis = _this$props.quizAnalysis;
117
117
  var shouldShowError = analysisError && !generationInProgress;
118
118
  return /*#__PURE__*/React.createElement(Flex, {
119
- justifyItems: "space-between",
120
- alignItems: "center",
121
- wrap: "wrap",
122
- width: "auto",
123
- margin: "auto",
124
- direction: "row"
125
- }, /*#__PURE__*/React.createElement(Flex.Item, null, _this.renderHeader()), /*#__PURE__*/React.createElement(Flex.Item, {
126
- margin: "0 0 0 auto"
127
- }, /*#__PURE__*/React.createElement(Flex, {
128
- alignItems: "center",
129
- justifyItems: "end",
119
+ alignItems: "end",
130
120
  width: "auto",
131
- direction: "row",
132
- wrap: "wrap-reverse"
121
+ margin: "small auto",
122
+ direction: "column"
133
123
  }, /*#__PURE__*/React.createElement(Flex.Item, null, /*#__PURE__*/React.createElement(AnalysisUpdateDate, {
134
124
  date: quizAnalysis === null || quizAnalysis === void 0 ? void 0 : quizAnalysis.created_timestamp
135
- })), /*#__PURE__*/React.createElement(Flex.Item, {
136
- overflowY: "visible",
137
- margin: "0 0 0 small"
138
- }, _this.renderGenerationButton()), /*#__PURE__*/React.createElement(Flex.Item, null, shouldShowError && /*#__PURE__*/React.createElement(Text, {
125
+ })), /*#__PURE__*/React.createElement(Flex.Item, null, shouldShowError && /*#__PURE__*/React.createElement(Text, {
139
126
  size: "x-small",
140
- weight: "bold",
127
+ weight: "400",
141
128
  color: "danger"
142
- }, analysisError)))));
129
+ }, analysisError)));
130
+ };
131
+
132
+ _this.renderRightSide = function () {
133
+ return /*#__PURE__*/React.createElement(Flex, {
134
+ alignItems: "center",
135
+ justifyItems: "space-between",
136
+ width: "auto",
137
+ direction: "row",
138
+ wrap: "wrap-reverse"
139
+ }, /*#__PURE__*/React.createElement(Flex.Item, {
140
+ padding: "0 small 0 0",
141
+ margin: "0 0 0 auto"
142
+ }, _this.renderUpdateDateWithError()), /*#__PURE__*/React.createElement(Flex.Item, {
143
+ margin: "0 0 0 auto"
144
+ }, _this.renderGenerationButton()));
145
+ };
146
+
147
+ _this.renderTop = function () {
148
+ return /*#__PURE__*/React.createElement(Flex, {
149
+ justifyItems: "space-between",
150
+ alignItems: "center",
151
+ wrap: "wrap",
152
+ width: "auto",
153
+ margin: "0 auto small 0",
154
+ direction: "row"
155
+ }, /*#__PURE__*/React.createElement(Flex.Item, null, _this.renderHeader()), /*#__PURE__*/React.createElement(Flex.Item, null, _this.renderRightSide()));
143
156
  };
144
157
 
145
158
  _this.renderTopOnFailedFetch = function () {
@@ -157,7 +170,7 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
157
170
  return /*#__PURE__*/React.createElement(Button, {
158
171
  color: "primary-inverse",
159
172
  interaction: "disabled",
160
- margin: "0 0 x-small 0"
173
+ margin: "auto"
161
174
  }, /*#__PURE__*/React.createElement(QuizzesSpinner, {
162
175
  size: "x-small",
163
176
  color: "brand",
@@ -170,7 +183,7 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
170
183
  _this.renderStartGenerationButton = function () {
171
184
  return /*#__PURE__*/React.createElement(Button, {
172
185
  color: "secondary",
173
- margin: "0 0 x-small 0",
186
+ margin: "auto",
174
187
  onClick: _this.handleGeneration,
175
188
  theme: {
176
189
  lineHeight: '24px'
@@ -84,5 +84,8 @@ export var matchingTypeAnswerSummaryPropType = PropTypes.shape({
84
84
  export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType, matchingTypeAnswerSummaryPropType]);
85
85
  export var afsFlags = PropTypes.shape({
86
86
  formulaEnabled: PropTypes.bool.isRequired,
87
- matchingEnabled: PropTypes.bool.isRequired
87
+ matchingEnabled: PropTypes.bool.isRequired,
88
+ hotSpotEnabled: PropTypes.bool.isRequired,
89
+ orderingEnabled: PropTypes.bool.isRequired,
90
+ categorizationEnabled: PropTypes.bool.isRequired
88
91
  });
@@ -19,14 +19,14 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
- var _index = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
23
-
24
22
  var _propTypes2 = require("../../propTypes.js");
25
23
 
26
24
  var _presenter = require("../shared/AfsTableWrapper/presenter.js");
27
25
 
28
26
  var _presenter2 = require("../shared/AfsPartsContainer/presenter.js");
29
27
 
28
+ var _index = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
29
+
30
30
  var AggregationType = /*#__PURE__*/function (_Component) {
31
31
  (0, _inherits2.default)(AggregationType, _Component);
32
32
 
@@ -0,0 +1,99 @@
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.CategorizationType = void 0;
11
+
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _index = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
23
+
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
25
+
26
+ var _propTypes2 = require("../../propTypes.js");
27
+
28
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
29
+
30
+ var _presenter = require("../shared/AfsPartsContainer/presenter.js");
31
+
32
+ var _index2 = _interopRequireDefault(require("./MatchingTypeTable/index.js"));
33
+
34
+ var _index3 = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
35
+
36
+ var distractorKey = 'distractor';
37
+ var distractorTranslation = (0, _formatMessage.default)('Distractors');
38
+
39
+ var CategorizationType = /*#__PURE__*/function (_Component) {
40
+ (0, _inherits2.default)(CategorizationType, _Component);
41
+
42
+ var _super = (0, _createSuper2.default)(CategorizationType);
43
+
44
+ function CategorizationType() {
45
+ var _this;
46
+
47
+ (0, _classCallCheck2.default)(this, CategorizationType);
48
+
49
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
50
+ args[_key] = arguments[_key];
51
+ }
52
+
53
+ _this = _super.call.apply(_super, [this].concat(args));
54
+
55
+ _this.updateAnswerBody = function (answerSummary) {
56
+ var answerSummaryCopy = (0, _objectSpread2.default)({}, answerSummary);
57
+ Object.keys(answerSummaryCopy.questions).forEach(function (questionKey) {
58
+ Object.keys(answerSummaryCopy.questions[questionKey].answers).forEach(function (answerKey) {
59
+ if (distractorKey === answerKey) {
60
+ var detail = answerSummaryCopy.questions[questionKey].answers[answerKey];
61
+ answerSummaryCopy.questions[questionKey].answers[answerKey] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, detail), {}, {
62
+ body: distractorTranslation
63
+ });
64
+ }
65
+ });
66
+ });
67
+ return answerSummaryCopy;
68
+ };
69
+
70
+ _this.render = function () {
71
+ var _this$props = _this.props,
72
+ itemId = _this$props.itemId,
73
+ answerSummary = _this$props.answerSummary;
74
+
75
+ var updatedAnswerSummary = _this.updateAnswerBody(answerSummary);
76
+
77
+ return /*#__PURE__*/_react.default.createElement(_index.default, null, /*#__PURE__*/_react.default.createElement(_presenter.AfsPartsContainer, {
78
+ afsTable: /*#__PURE__*/_react.default.createElement(_index2.default, {
79
+ itemId: itemId,
80
+ answerSummary: updatedAnswerSummary
81
+ }),
82
+ aggregationTable: /*#__PURE__*/_react.default.createElement(_index3.default, {
83
+ itemId: itemId,
84
+ answerSummary: updatedAnswerSummary
85
+ })
86
+ }));
87
+ };
88
+
89
+ return _this;
90
+ }
91
+
92
+ return CategorizationType;
93
+ }(_react.Component);
94
+
95
+ exports.CategorizationType = CategorizationType;
96
+ CategorizationType.propTypes = {
97
+ itemId: _propTypes.default.number.isRequired,
98
+ answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType.isRequired
99
+ }.isRequired;
@@ -19,16 +19,14 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _index = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
21
21
 
22
- var _index2 = _interopRequireDefault(require("./MatchingTypeTable/index.js"));
23
-
24
22
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
23
 
26
24
  var _propTypes2 = require("../../propTypes.js");
27
25
 
28
- var _matchingTypeOrderer = _interopRequireDefault(require("./utils/matchingTypeOrderer.js"));
29
-
30
26
  var _presenter = require("../shared/AfsPartsContainer/presenter.js");
31
27
 
28
+ var _index2 = _interopRequireDefault(require("./MatchingTypeTable/index.js"));
29
+
32
30
  var _index3 = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
33
31
 
34
32
  var MatchingType = /*#__PURE__*/function (_Component) {
@@ -51,23 +49,10 @@ var MatchingType = /*#__PURE__*/function (_Component) {
51
49
  var _this$props = _this.props,
52
50
  itemId = _this$props.itemId,
53
51
  answerSummary = _this$props.answerSummary;
54
- var questions = answerSummary.questions;
55
- var questionKeys = Object.keys(questions);
56
- var exampleAnswers = questions[questionKeys[0]].answers;
57
- var answerKeys = Object.keys(exampleAnswers);
58
-
59
- var orderedAnswerKeys = _matchingTypeOrderer.default.orderAnswerKeysForDiagonal(answerSummary, answerKeys);
60
-
61
- var orderedQuestionKeys = _matchingTypeOrderer.default.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
62
-
63
- var tableHalfWidth = orderedAnswerKeys.length <= 3;
64
52
  return /*#__PURE__*/_react.default.createElement(_index.default, null, /*#__PURE__*/_react.default.createElement(_presenter.AfsPartsContainer, {
65
- tableHalfWidth: tableHalfWidth,
66
53
  afsTable: /*#__PURE__*/_react.default.createElement(_index2.default, {
67
54
  itemId: itemId,
68
- answerSummary: answerSummary,
69
- orderedAnswerKeys: orderedAnswerKeys,
70
- orderedQuestionKeys: orderedQuestionKeys
55
+ answerSummary: answerSummary
71
56
  }),
72
57
  aggregationTable: /*#__PURE__*/_react.default.createElement(_index3.default, {
73
58
  itemId: itemId,
@@ -84,6 +69,6 @@ var MatchingType = /*#__PURE__*/function (_Component) {
84
69
 
85
70
  exports.MatchingType = MatchingType;
86
71
  MatchingType.propTypes = {
87
- itemId: _propTypes.default.number,
88
- answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType
72
+ itemId: _propTypes.default.number.isRequired,
73
+ answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType.isRequired
89
74
  }.isRequired;
@@ -33,25 +33,27 @@ var _uiIcons = require("@instructure/ui-icons");
33
33
 
34
34
  var _propTypes2 = require("../../../propTypes.js");
35
35
 
36
+ var _matchingTypeOrderer = _interopRequireDefault(require("../utils/matchingTypeOrderer.js"));
37
+
38
+ var _quizInteractions = require("@instructure/quiz-interactions");
39
+
36
40
  var _classnames = _interopRequireDefault(require("classnames"));
37
41
 
38
42
  var _theme = _interopRequireDefault(require("./theme.js"));
39
43
 
40
- var _quizInteractions = require("@instructure/quiz-interactions");
41
-
42
44
  var _dec, _class, _class2, _temp;
43
45
 
44
46
  var styles = {
45
- componentId: 'daSNV',
47
+ componentId: 'bAOvu',
46
48
  template: function template(theme) {
47
- return "\n\n.daSNV_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.daSNV_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.daSNV_EKAb{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.daSNV_EKAb svg{fill:#fff}\n\n.daSNV_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0}\n\n.daSNV_fvqY{border-radius:4px 4px 4px 4px;border-width:2px 2px 2px 2px}\n\n.daSNV_cVld{max-width:100%;width:calc(25% + 350px)}");
49
+ return "\n\n.bAOvu_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.bAOvu_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.bAOvu_EKAb{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.bAOvu_EKAb svg{fill:#fff}\n\n.bAOvu_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0}\n\n.bAOvu_fvqY{border-radius:4px 4px 4px 4px;border-width:2px 2px 2px 2px}\n\n.bAOvu_SVtU{max-width:100%;width:calc(25% + 350px)}");
48
50
  },
49
- 'tableWrapper': 'daSNV_rMrG',
50
- 'iconWrapper': 'daSNV_cvRx',
51
- 'iconCorrect': 'daSNV_EKAb',
52
- 'correctRowBorder': 'daSNV_tnta',
53
- 'correctRowBorderRadius': 'daSNV_fvqY',
54
- 'answerFrequencySummaryContainer': 'daSNV_cVld'
51
+ 'tableWrapper': 'bAOvu_rMrG',
52
+ 'iconWrapper': 'bAOvu_cvRx',
53
+ 'iconCorrect': 'bAOvu_EKAb',
54
+ 'correctRowBorder': 'bAOvu_tnta',
55
+ 'correctRowBorderRadius': 'bAOvu_fvqY',
56
+ 'tableContainer': 'bAOvu_SVtU'
55
57
  };
56
58
 
57
59
  var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
@@ -186,14 +188,24 @@ var MatchingTypeTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
186
188
  };
187
189
 
188
190
  _this.render = function () {
189
- var _this$props4 = _this.props,
190
- orderedAnswerKeys = _this$props4.orderedAnswerKeys,
191
- orderedQuestionKeys = _this$props4.orderedQuestionKeys;
192
- return /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
191
+ var answerSummary = _this.props.answerSummary;
192
+ var questions = answerSummary.questions;
193
+ var questionKeys = Object.keys(questions);
194
+ var exampleAnswers = questions[questionKeys[0]].answers;
195
+ var answerKeys = Object.keys(exampleAnswers).sort();
196
+ var tableHalfWidth = answerKeys.length <= 3;
197
+
198
+ var orderedAnswerKeys = _matchingTypeOrderer.default.orderAnswerKeysForDiagonal(answerSummary, answerKeys);
199
+
200
+ var orderedQuestionKeys = _matchingTypeOrderer.default.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
201
+
202
+ return /*#__PURE__*/_react.default.createElement("div", {
203
+ className: (0, _classnames.default)((0, _defineProperty2.default)({}, styles.tableContainer, tableHalfWidth))
204
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
193
205
  caption: (0, _formatMessage.default)('Answer Frequency Summary')
194
206
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, _this.renderHeaderRow(orderedAnswerKeys)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, orderedQuestionKeys.map(function (orderedQuestionKey) {
195
207
  return _this.renderRow(orderedQuestionKey, orderedAnswerKeys);
196
- })));
208
+ }))));
197
209
  };
198
210
 
199
211
  return _this;
@@ -202,8 +214,6 @@ var MatchingTypeTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
202
214
  return MatchingTypeTable;
203
215
  }(_react.Component), _class2.propTypes = {
204
216
  itemId: _propTypes.default.number,
205
- answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType,
206
- orderedAnswerKeys: _propTypes.default.array.isRequired,
207
- orderedQuestionKeys: _propTypes.default.array.isRequired
217
+ answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType
208
218
  }.isRequired, _temp)) || _class);
209
219
  exports.MatchingTypeTable = MatchingTypeTable;
@@ -19,22 +19,20 @@ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
19
19
 
20
20
  var _react = _interopRequireWildcard(require("react"));
21
21
 
22
- var _matchingTypeOrderer = _interopRequireDefault(require("./utils/matchingTypeOrderer.js"));
23
-
24
22
  var _index = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
25
23
 
26
- var _index2 = _interopRequireDefault(require("./MatchingTypeTable/index.js"));
27
-
28
24
  var _propTypes = _interopRequireDefault(require("prop-types"));
29
25
 
30
26
  var _propTypes2 = require("../../propTypes.js");
31
27
 
32
28
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
33
29
 
34
- var _index3 = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
35
-
36
30
  var _presenter = require("../shared/AfsPartsContainer/presenter.js");
37
31
 
32
+ var _index2 = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
33
+
34
+ var _index3 = _interopRequireDefault(require("./MatchingTypeTable/index.js"));
35
+
38
36
  var OrderingType = /*#__PURE__*/function (_Component) {
39
37
  (0, _inherits2.default)(OrderingType, _Component);
40
38
 
@@ -77,25 +75,12 @@ var OrderingType = /*#__PURE__*/function (_Component) {
77
75
 
78
76
  var updatedAnswerSummary = _this.updateAnswerBody(answerSummary);
79
77
 
80
- var questions = updatedAnswerSummary.questions;
81
- var questionKeys = Object.keys(questions);
82
- var exampleAnswers = questions[questionKeys[0]].answers;
83
- var answerKeys = Object.keys(exampleAnswers).sort();
84
-
85
- var orderedAnswerKeys = _matchingTypeOrderer.default.orderAnswerKeysForDiagonal(updatedAnswerSummary, answerKeys);
86
-
87
- var orderedQuestionKeys = _matchingTypeOrderer.default.orderQuestionKeysForDiagonal(updatedAnswerSummary, questionKeys, orderedAnswerKeys);
88
-
89
- var tableHalfWidth = orderedAnswerKeys.length <= 3;
90
78
  return /*#__PURE__*/_react.default.createElement(_index.default, null, /*#__PURE__*/_react.default.createElement(_presenter.AfsPartsContainer, {
91
- tableHalfWidth: tableHalfWidth,
92
- afsTable: /*#__PURE__*/_react.default.createElement(_index2.default, {
79
+ afsTable: /*#__PURE__*/_react.default.createElement(_index3.default, {
93
80
  itemId: itemId,
94
- answerSummary: updatedAnswerSummary,
95
- orderedAnswerKeys: orderedAnswerKeys,
96
- orderedQuestionKeys: orderedQuestionKeys
81
+ answerSummary: updatedAnswerSummary
97
82
  }),
98
- aggregationTable: /*#__PURE__*/_react.default.createElement(_index3.default, {
83
+ aggregationTable: /*#__PURE__*/_react.default.createElement(_index2.default, {
99
84
  itemId: itemId,
100
85
  answerSummary: updatedAnswerSummary
101
86
  })
@@ -110,6 +95,6 @@ var OrderingType = /*#__PURE__*/function (_Component) {
110
95
 
111
96
  exports.OrderingType = OrderingType;
112
97
  OrderingType.propTypes = {
113
- itemId: _propTypes.default.number,
114
- answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType
98
+ itemId: _propTypes.default.number.isRequired,
99
+ answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType.isRequired
115
100
  }.isRequired;
@@ -15,7 +15,15 @@ Object.defineProperty(exports, "OrderingType", {
15
15
  return _OrderingType.OrderingType;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "CategorizationType", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _CategorizationType.CategorizationType;
22
+ }
23
+ });
18
24
 
19
25
  var _MatchingType = require("./MatchingType.js");
20
26
 
21
- var _OrderingType = require("./OrderingType.js");
27
+ var _OrderingType = require("./OrderingType.js");
28
+
29
+ var _CategorizationType = require("./CategorizationType.js");
@@ -60,6 +60,10 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
60
60
  if (afsFlags.orderingEnabled) {
61
61
  _this.afsTableComponentMap.set('ordering', _index3.OrderingType);
62
62
  }
63
+
64
+ if (afsFlags.categorizationEnabled) {
65
+ _this.afsTableComponentMap.set('categorization', _index3.CategorizationType);
66
+ }
63
67
  };
64
68
 
65
69
  _this.render = function () {
@@ -99,10 +103,5 @@ AnswerFrequencySummary.propTypes = {
99
103
  itemId: _quizInteractions.PropTypes.number.isRequired,
100
104
  answerSummary: _propTypes.answerSummaryPropType.isRequired,
101
105
  interactionType: _quizInteractions.PropTypes.string.isRequired,
102
- afsFlags: _quizInteractions.PropTypes.shape({
103
- formulaEnabled: _quizInteractions.PropTypes.bool.isRequired,
104
- matchingEnabled: _quizInteractions.PropTypes.bool.isRequired,
105
- hotSpotEnabled: _quizInteractions.PropTypes.bool.isRequired,
106
- orderingEnabled: _quizInteractions.PropTypes.bool.isRequired
107
- })
106
+ afsFlags: _propTypes.afsFlags
108
107
  }.isRequired;
@@ -61,18 +61,14 @@ var AfsPartsContainer = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_c
61
61
  };
62
62
 
63
63
  _this.renderAfsTable = function () {
64
- var _this$props2 = _this.props,
65
- afsTable = _this$props2.afsTable,
66
- tableHalfWidth = _this$props2.tableHalfWidth;
67
- return /*#__PURE__*/_react.default.createElement("div", {
68
- className: (0, _classnames.default)((0, _defineProperty2.default)({}, styles.tableContainer, tableHalfWidth))
69
- }, afsTable);
64
+ var afsTable = _this.props.afsTable;
65
+ return /*#__PURE__*/_react.default.createElement("div", null, afsTable);
70
66
  };
71
67
 
72
68
  _this.render = function () {
73
- var _this$props3 = _this.props,
74
- afsTable = _this$props3.afsTable,
75
- aggregationTable = _this$props3.aggregationTable;
69
+ var _this$props2 = _this.props,
70
+ afsTable = _this$props2.afsTable,
71
+ aggregationTable = _this$props2.aggregationTable;
76
72
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, afsTable && _this.renderAfsTable(), aggregationTable && _this.renderAggregationTable());
77
73
  };
78
74
 
@@ -81,11 +77,9 @@ var AfsPartsContainer = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_c
81
77
 
82
78
  return AfsPartsContainer;
83
79
  }(_react.Component), _class2.propTypes = {
84
- tableHalfWidth: _propTypes.default.bool,
85
80
  afsTable: _propTypes.default.node,
86
81
  aggregationTable: _propTypes.default.node
87
82
  }.isRequired, _class2.defaultProps = {
88
- tableHalfWidth: true,
89
83
  afsTable: null,
90
84
  aggregationTable: null
91
85
  }, _temp)) || _class);
@@ -68,6 +68,7 @@ var noAnswerKey = 'noAnswer';
68
68
  var incorrectKey = 'incorrect';
69
69
  var correctKey = 'correct';
70
70
  var partialCorrectKey = 'partialCorrect';
71
+ var tableLayout = 'fixed';
71
72
 
72
73
  var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
73
74
 
@@ -158,6 +159,11 @@ var AggregationTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
158
159
  return !!(aggregate === null || aggregate === void 0 ? void 0 : aggregate.partial_correct);
159
160
  };
160
161
 
162
+ _this.isNoAnswerExist = function () {
163
+ var no_answer = _this.props.answerSummary.no_answer;
164
+ return !!no_answer;
165
+ };
166
+
161
167
  _this.renderCorrect = function () {
162
168
  var aggregate = _this.props.answerSummary.aggregate;
163
169
  var correct = aggregate.correct;
@@ -197,8 +203,9 @@ var AggregationTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
197
203
  return /*#__PURE__*/_react.default.createElement("div", {
198
204
  className: (0, _classnames.default)(styles.collapsingTable)
199
205
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
200
- caption: (0, _formatMessage.default)('Answer Frequency Summary Aggregates')
201
- }, _this.renderHeaderRow(), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, _this.renderCorrect(), _this.isPartialCorrectExist() && _this.renderPartialCorrect(), _this.renderIncorrect(), _this.renderNoAnswer())));
206
+ caption: (0, _formatMessage.default)('Answer Frequency Summary Aggregates'),
207
+ layout: tableLayout
208
+ }, _this.renderHeaderRow(), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, _this.renderCorrect(), _this.isPartialCorrectExist() && _this.renderPartialCorrect(), _this.renderIncorrect(), _this.isNoAnswerExist() && _this.renderNoAnswer())));
202
209
  };
203
210
 
204
211
  return _this;
@@ -19,7 +19,8 @@ function mapStateToProps(_state) {
19
19
  formulaEnabled: (0, _featureCheck.featureOn)('ia_formula_afs'),
20
20
  matchingEnabled: (0, _featureCheck.featureOn)('ia_matching_afs'),
21
21
  orderingEnabled: (0, _featureCheck.featureOn)('ia_ordering_afs'),
22
- hotSpotEnabled: (0, _featureCheck.featureOn)('ia_hot_spot_afs')
22
+ hotSpotEnabled: (0, _featureCheck.featureOn)('ia_hot_spot_afs'),
23
+ categorizationEnabled: (0, _featureCheck.featureOn)('ia_categorization_afs')
23
24
  }
24
25
  };
25
26
  }
@@ -126,7 +126,7 @@ var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
126
126
  return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
127
127
  alignItems: "center",
128
128
  width: "auto",
129
- margin: "auto",
129
+ margin: "small auto",
130
130
  direction: "column"
131
131
  }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
132
132
  overflowY: "hidden"
@@ -140,37 +140,50 @@ var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
140
140
  }, quizAnalysis === null || quizAnalysis === void 0 ? void 0 : (_quizAnalysis$metadat = quizAnalysis.metadata) === null || _quizAnalysis$metadat === void 0 ? void 0 : _quizAnalysis$metadat.quiz_title)));
141
141
  };
142
142
 
143
- _this.renderTop = function () {
143
+ _this.renderUpdateDateWithError = function () {
144
144
  var _this$props = _this.props,
145
145
  analysisError = _this$props.analysisError,
146
146
  generationInProgress = _this$props.generationInProgress,
147
147
  quizAnalysis = _this$props.quizAnalysis;
148
148
  var shouldShowError = analysisError && !generationInProgress;
149
149
  return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
150
- justifyItems: "space-between",
151
- alignItems: "center",
152
- wrap: "wrap",
153
- width: "auto",
154
- margin: "auto",
155
- direction: "row"
156
- }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, _this.renderHeader()), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
157
- margin: "0 0 0 auto"
158
- }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
159
- alignItems: "center",
160
- justifyItems: "end",
150
+ alignItems: "end",
161
151
  width: "auto",
162
- direction: "row",
163
- wrap: "wrap-reverse"
152
+ margin: "small auto",
153
+ direction: "column"
164
154
  }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, /*#__PURE__*/_react.default.createElement(_index3.AnalysisUpdateDate, {
165
155
  date: quizAnalysis === null || quizAnalysis === void 0 ? void 0 : quizAnalysis.created_timestamp
166
- })), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
167
- overflowY: "visible",
168
- margin: "0 0 0 small"
169
- }, _this.renderGenerationButton()), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, shouldShowError && /*#__PURE__*/_react.default.createElement(_uiText.Text, {
156
+ })), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, shouldShowError && /*#__PURE__*/_react.default.createElement(_uiText.Text, {
170
157
  size: "x-small",
171
- weight: "bold",
158
+ weight: "400",
172
159
  color: "danger"
173
- }, analysisError)))));
160
+ }, analysisError)));
161
+ };
162
+
163
+ _this.renderRightSide = function () {
164
+ return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
165
+ alignItems: "center",
166
+ justifyItems: "space-between",
167
+ width: "auto",
168
+ direction: "row",
169
+ wrap: "wrap-reverse"
170
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
171
+ padding: "0 small 0 0",
172
+ margin: "0 0 0 auto"
173
+ }, _this.renderUpdateDateWithError()), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
174
+ margin: "0 0 0 auto"
175
+ }, _this.renderGenerationButton()));
176
+ };
177
+
178
+ _this.renderTop = function () {
179
+ return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
180
+ justifyItems: "space-between",
181
+ alignItems: "center",
182
+ wrap: "wrap",
183
+ width: "auto",
184
+ margin: "0 auto small 0",
185
+ direction: "row"
186
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, _this.renderHeader()), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, _this.renderRightSide()));
174
187
  };
175
188
 
176
189
  _this.renderTopOnFailedFetch = function () {
@@ -188,7 +201,7 @@ var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
188
201
  return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
189
202
  color: "primary-inverse",
190
203
  interaction: "disabled",
191
- margin: "0 0 x-small 0"
204
+ margin: "auto"
192
205
  }, /*#__PURE__*/_react.default.createElement(_Spinner.QuizzesSpinner, {
193
206
  size: "x-small",
194
207
  color: "brand",
@@ -201,7 +214,7 @@ var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
201
214
  _this.renderStartGenerationButton = function () {
202
215
  return /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
203
216
  color: "secondary",
204
- margin: "0 0 x-small 0",
217
+ margin: "auto",
205
218
  onClick: _this.handleGeneration,
206
219
  theme: {
207
220
  lineHeight: '24px'
@@ -117,7 +117,10 @@ exports.answerSummaryPropType = answerSummaryPropType;
117
117
 
118
118
  var afsFlags = _propTypes.default.shape({
119
119
  formulaEnabled: _propTypes.default.bool.isRequired,
120
- matchingEnabled: _propTypes.default.bool.isRequired
120
+ matchingEnabled: _propTypes.default.bool.isRequired,
121
+ hotSpotEnabled: _propTypes.default.bool.isRequired,
122
+ orderingEnabled: _propTypes.default.bool.isRequired,
123
+ categorizationEnabled: _propTypes.default.bool.isRequired
121
124
  });
122
125
 
123
126
  exports.afsFlags = afsFlags;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "18.6.1-rc.0+a1790dfdf",
3
+ "version": "18.6.1-rc.2+ac66a4360",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -43,11 +43,11 @@
43
43
  "dependencies": {
44
44
  "@instructure/grading-utils": "^1.0.0",
45
45
  "@instructure/outcomes-ui": "^2.1.9",
46
- "@instructure/quiz-common": "18.6.1-rc.0+a1790dfdf",
47
- "@instructure/quiz-i18n": "18.6.1-rc.0+a1790dfdf",
48
- "@instructure/quiz-interactions": "18.6.1-rc.0+a1790dfdf",
49
- "@instructure/quiz-number-input": "18.6.1-rc.0+a1790dfdf",
50
- "@instructure/quiz-rce": "18.6.1-rc.0+a1790dfdf",
46
+ "@instructure/quiz-common": "18.6.1-rc.2+ac66a4360",
47
+ "@instructure/quiz-i18n": "18.6.1-rc.2+ac66a4360",
48
+ "@instructure/quiz-interactions": "18.6.1-rc.2+ac66a4360",
49
+ "@instructure/quiz-number-input": "18.6.1-rc.2+ac66a4360",
50
+ "@instructure/quiz-rce": "18.6.1-rc.2+ac66a4360",
51
51
  "@instructure/ui-a11y-content": "^7.22.1",
52
52
  "@instructure/ui-alerts": "^7.22.1",
53
53
  "@instructure/ui-avatar": "^7.22.1",
@@ -109,7 +109,7 @@
109
109
  "file-saver": "~2.0.5",
110
110
  "humps": "^2.0.0",
111
111
  "immutable": "^3.8.1",
112
- "instructure-validations": "18.6.1-rc.0+a1790dfdf",
112
+ "instructure-validations": "18.6.1-rc.2+ac66a4360",
113
113
  "ipaddr.js": "^1.5.4",
114
114
  "isomorphic-fetch": "^2.2.0",
115
115
  "isuuid": "^0.1.0",
@@ -160,7 +160,7 @@
160
160
  "intl": "^1.2.4",
161
161
  "jquery": "^2.2.3",
162
162
  "most-subject": "^5.3.0",
163
- "quiz-presets": "18.6.1-rc.0+a1790dfdf",
163
+ "quiz-presets": "18.6.1-rc.2+ac66a4360",
164
164
  "react": "^16.8.6",
165
165
  "react-addons-test-utils": "^15.6.2",
166
166
  "react-dom": "^16.8.6",
@@ -176,5 +176,5 @@
176
176
  "publishConfig": {
177
177
  "access": "public"
178
178
  },
179
- "gitHead": "a1790dfdfd701dbef77c71e7a231b796fb734635"
179
+ "gitHead": "ac66a43604b7238d95451f873c5ed673e35e51f8"
180
180
  }