@instructure/quiz-core 18.5.1-rc.1 → 18.5.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 (27) hide show
  1. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/index.js +1 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +43 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/theme.js +5 -0
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +3 -16
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +5 -3
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/index.js +1 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +55 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/theme.js +5 -0
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/index.js +1 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +186 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +10 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +4 -4
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +14 -5
  14. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/index.js +13 -0
  15. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +64 -0
  16. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/theme.js +12 -0
  17. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +4 -18
  18. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +9 -6
  19. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/index.js +13 -0
  20. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +75 -0
  21. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/theme.js +12 -0
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/index.js +13 -0
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +212 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +17 -0
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +5 -5
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +19 -6
  27. package/package.json +9 -9
@@ -0,0 +1 @@
1
+ export { AggregationType as default } from "./presenter.js";
@@ -0,0 +1,43 @@
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 AggregationTable from "../shared/AggregationTable/index.js";
7
+ import { onlyAggregatePropType } from "../../propTypes.js";
8
+ import { AfsTableWrapper } from "../shared/AfsTableWrapper/presenter.js";
9
+ export var AggregationType = /*#__PURE__*/function (_Component) {
10
+ _inherits(AggregationType, _Component);
11
+
12
+ var _super = _createSuper(AggregationType);
13
+
14
+ function AggregationType() {
15
+ var _this;
16
+
17
+ _classCallCheck(this, AggregationType);
18
+
19
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
20
+ args[_key] = arguments[_key];
21
+ }
22
+
23
+ _this = _super.call.apply(_super, [this].concat(args));
24
+
25
+ _this.render = function () {
26
+ var _this$props = _this.props,
27
+ answerSummary = _this$props.answerSummary,
28
+ itemId = _this$props.itemId;
29
+ return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(AggregationTable, {
30
+ itemId: itemId,
31
+ answerSummary: answerSummary
32
+ }));
33
+ };
34
+
35
+ return _this;
36
+ }
37
+
38
+ return AggregationType;
39
+ }(Component);
40
+ AggregationType.propTypes = {
41
+ itemId: PropTypes.number.isRequired,
42
+ answerSummary: onlyAggregatePropType
43
+ }.isRequired;
@@ -0,0 +1,5 @@
1
+ export default function generator() {
2
+ return {
3
+ tableBottomPadding: 0
4
+ };
5
+ }
@@ -8,8 +8,6 @@ var _dec, _class, _class2, _temp;
8
8
  import React, { Component } from 'react';
9
9
  import t from '@instructure/quiz-i18n/es/format-message';
10
10
  import { Table } from '@instructure/ui-table';
11
- import { Flex } from '@instructure/ui-flex';
12
- import { Heading } from '@instructure/ui-heading';
13
11
  import { themeable } from '@instructure/ui-themeable';
14
12
  import { ScreenReaderContent } from '@instructure/ui-a11y-content';
15
13
  import PropTypes from 'prop-types';
@@ -23,6 +21,7 @@ var styles = {
23
21
  'tableWrapper': 'ZuPLN_rMrG'
24
22
  };
25
23
  import theme from "./theme.js";
24
+ import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
26
25
  export var ChoiceType = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
27
26
  _inherits(ChoiceType, _Component);
28
27
 
@@ -77,19 +76,7 @@ export var ChoiceType = (_dec = themeable(theme, styles), _dec(_class = (_temp =
77
76
  var answerHeaderId = "answer-frequency-summary-answer-".concat(itemId);
78
77
  var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
79
78
  var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
80
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Flex, {
81
- direction: "row"
82
- }, /*#__PURE__*/React.createElement(Flex.Item, {
83
- shouldGrow: true
84
- }, /*#__PURE__*/React.createElement("div", {
85
- className: styles.tableWrapper
86
- }, /*#__PURE__*/React.createElement(Heading, {
87
- margin: "large 0 small 0",
88
- level: "h4",
89
- theme: {
90
- h4FontWeight: 'normal'
91
- }
92
- }, t('Answer Frequency Summary')), /*#__PURE__*/React.createElement(Table, {
79
+ return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(Table, {
93
80
  caption: t('Answer Frequency Summary')
94
81
  }, /*#__PURE__*/React.createElement(Table.Head, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.ColHeader, {
95
82
  id: spacingHeaderId,
@@ -104,7 +91,7 @@ export var ChoiceType = (_dec = themeable(theme, styles), _dec(_class = (_temp =
104
91
  id: percentageHeaderId,
105
92
  height: "47px",
106
93
  textAlign: "center"
107
- }, t('%')))), /*#__PURE__*/React.createElement(Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices)))))));
94
+ }, t('%')))), /*#__PURE__*/React.createElement(Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices))));
108
95
  }
109
96
  }]);
110
97
 
@@ -3,7 +3,8 @@ 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 '@instructure/quiz-interactions';
6
- import { ChoiceType } from "./ChoiceType/presenter.js";
6
+ import ChoiceType from "./ChoiceType/index.js";
7
+ import AggregationType from "./AggregationType/index.js";
7
8
  import { answerSummaryPropType } from "../propTypes.js";
8
9
  export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
9
10
  _inherits(AnswerFrequencySummary, _Component);
@@ -23,7 +24,8 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
23
24
  _this.afsTableComponentMap = new Map();
24
25
 
25
26
  _this.addAfsComponentsByFlags = function (afsFlags) {
26
- if (afsFlags.formulaEnabled) {// this.afsTableComponentMap.set('formula', Formula)
27
+ if (afsFlags.formulaEnabled) {
28
+ _this.afsTableComponentMap.set('formula', AggregationType);
27
29
  }
28
30
  };
29
31
 
@@ -37,7 +39,7 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
37
39
 
38
40
  var AfsTableComponent = _this.afsTableComponentMap.get(interactionType);
39
41
 
40
- if (!AfsTableComponent) {
42
+ if (!AfsTableComponent || !answerSummary) {
41
43
  return /*#__PURE__*/React.createElement(React.Fragment, null);
42
44
  }
43
45
 
@@ -0,0 +1 @@
1
+ export { AfsTableWrapper as default } from "./presenter.js";
@@ -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
+
5
+ var _dec, _class, _temp;
6
+
7
+ import React, { Component } from 'react';
8
+ import t from '@instructure/quiz-i18n/es/format-message';
9
+ import theme from "./theme.js";
10
+ var styles = {
11
+ componentId: 'bmsWU',
12
+ template: function template(theme) {
13
+ return "\n\n.bmsWU_rMrG{display:flex;flex-basis:100%;flex-direction:column}";
14
+ },
15
+ 'tableWrapper': 'bmsWU_rMrG'
16
+ };
17
+ import { themeable } from '@instructure/ui-themeable';
18
+ import { Flex } from '@instructure/ui-flex';
19
+ import { Heading } from '@instructure/ui-heading';
20
+ export var AfsTableWrapper = (_dec = themeable(theme, styles), _dec(_class = (_temp = /*#__PURE__*/function (_Component) {
21
+ _inherits(AfsTableWrapper, _Component);
22
+
23
+ var _super = _createSuper(AfsTableWrapper);
24
+
25
+ function AfsTableWrapper() {
26
+ var _this;
27
+
28
+ _classCallCheck(this, AfsTableWrapper);
29
+
30
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
31
+ args[_key] = arguments[_key];
32
+ }
33
+
34
+ _this = _super.call.apply(_super, [this].concat(args));
35
+
36
+ _this.render = function () {
37
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Flex, {
38
+ direction: "row"
39
+ }, /*#__PURE__*/React.createElement(Flex.Item, {
40
+ shouldGrow: true
41
+ }, /*#__PURE__*/React.createElement("div", {
42
+ className: styles.tableWrapper
43
+ }, /*#__PURE__*/React.createElement(Heading, {
44
+ margin: "0 x-large small 0",
45
+ level: "h3",
46
+ weight: "bold",
47
+ color: "primary"
48
+ }, t('Answer Frequency Summary')), _this.props.children))));
49
+ };
50
+
51
+ return _this;
52
+ }
53
+
54
+ return AfsTableWrapper;
55
+ }(Component), _temp)) || _class);
@@ -0,0 +1,5 @@
1
+ export default function generator() {
2
+ return {
3
+ tableBottomPadding: 0
4
+ };
5
+ }
@@ -0,0 +1 @@
1
+ export { AggregationTable as default } from "./presenter.js";
@@ -0,0 +1,186 @@
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
+ import React, { Component } from 'react';
8
+ import t from '@instructure/quiz-i18n/es/format-message';
9
+ import { Table } from '@instructure/ui-table';
10
+ import { onlyAggregatePropType } from "../../../propTypes.js";
11
+ import { ScreenReaderContent } from '@instructure/ui-a11y-content';
12
+ import PropTypes from 'prop-types';
13
+ import { IconCheckSolid, IconXSolid, IconNoSolid, IconOvalHalfSolid } from '@instructure/ui-icons';
14
+ import { themeable } from '@instructure/ui-themeable';
15
+ import theme from "./theme.js";
16
+ var styles = {
17
+ componentId: 'eADot',
18
+ template: function template(theme) {
19
+ return "\n\n.eADot_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.eADot_fPIL table{border-collapse:separate;border-spacing:0 12px}\n\n.eADot_fPIL thead th{border-color:".concat(theme.colorHeaderBottomBorder || 'inherit', ";border-style:solid;border-width:0 0 1px 0}\n\n.eADot_euQM{padding-left:10px}\n\n.eADot_fuuc{padding-left:45px}\n\n.eADot_bTFA{border-color:").concat(theme.colorGreen || 'inherit', "}\n\n.eADot_bvau{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.eADot_dmcW{border-color:").concat(theme.colorRed || 'inherit', "}\n\n.eADot_cxOH{background-color:").concat(theme.colorRed || 'inherit', "}\n\n.eADot_xOeH{border-color:").concat(theme.colorBlue || 'inherit', "}\n\n.eADot_eRkO{background-color:").concat(theme.colorBlue || 'inherit', "}\n\n.eADot_dlLI{border-color:").concat(theme.colorGrey || 'inherit', "}\n\n.eADot_eKcq{background-color:").concat(theme.colorGrey || 'inherit', "}\n\n.eADot_vDgC svg{fill:#fff}\n\n.eADot_fHMm{border-color:").concat(theme.colorHeaderBottomBorder || 'inherit', ";border-style:solid;border-width:0 0 1px 0}\n\n.eADot_WspM{border-radius:4px 0 0 4px;border-style:solid;border-width:2px 0 2px 2px}\n\n.eADot_fAnT{border-width:2px 0 2px 0}\n\n.eADot_bMPk,.eADot_fAnT{border-style:solid;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.eADot_bMPk{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
20
+ },
21
+ 'iconWrapper': 'eADot_cvRx',
22
+ 'collapsingTable': 'eADot_fPIL',
23
+ 'labelWrapper': 'eADot_euQM',
24
+ 'firstHeaderCell': 'eADot_fuuc',
25
+ 'correctBorder': 'eADot_bTFA',
26
+ 'correctBackground': 'eADot_bvau',
27
+ 'incorrectBorder': 'eADot_dmcW',
28
+ 'incorrectBackground': 'eADot_cxOH',
29
+ 'partialCorrectBorder': 'eADot_xOeH',
30
+ 'partialCorrectBackground': 'eADot_eRkO',
31
+ 'noAnswerBorder': 'eADot_dlLI',
32
+ 'noAnswerBackground': 'eADot_eKcq',
33
+ 'iconWhite': 'eADot_vDgC',
34
+ 'headerCell': 'eADot_fHMm',
35
+ 'firstCell': 'eADot_WspM',
36
+ 'middleCell': 'eADot_fAnT',
37
+ 'lastCell': 'eADot_bMPk'
38
+ };
39
+ import { Flex } from '@instructure/ui-flex';
40
+ import classNames from 'classnames';
41
+ import { Text } from '@instructure/ui-text';
42
+ var noAnswerKey = 'noAnswer';
43
+ var incorrectKey = 'incorrect';
44
+ var correctKey = 'correct';
45
+ var partialCorrectKey = 'partialCorrect';
46
+
47
+ var _ref = /*#__PURE__*/React.createElement(IconCheckSolid, null);
48
+
49
+ var _ref2 = /*#__PURE__*/React.createElement(IconOvalHalfSolid, null);
50
+
51
+ var _ref3 = /*#__PURE__*/React.createElement(IconXSolid, null);
52
+
53
+ var _ref4 = /*#__PURE__*/React.createElement(IconNoSolid, null);
54
+
55
+ export var AggregationTable = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
56
+ _inherits(AggregationTable, _Component);
57
+
58
+ var _super = _createSuper(AggregationTable);
59
+
60
+ function AggregationTable() {
61
+ var _this;
62
+
63
+ _classCallCheck(this, AggregationTable);
64
+
65
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
66
+ args[_key] = arguments[_key];
67
+ }
68
+
69
+ _this = _super.call.apply(_super, [this].concat(args));
70
+
71
+ _this.renderHeaderRow = function () {
72
+ var itemId = _this.props.itemId;
73
+ var answerHeaderId = "answer-frequency-summary-aggregate-answer-".concat(itemId);
74
+ var respondentsHeaderId = "answer-frequency-summary-aggregate-respondents-".concat(itemId);
75
+ var percentageHeaderId = "answer-frequency-summary-aggregate-percentage-".concat(itemId);
76
+ return /*#__PURE__*/React.createElement(Table.Head, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.ColHeader, {
77
+ id: answerHeaderId
78
+ }, /*#__PURE__*/React.createElement("span", {
79
+ className: classNames(styles.firstHeaderCell)
80
+ }, t('Result'))), /*#__PURE__*/React.createElement(Table.ColHeader, {
81
+ id: respondentsHeaderId,
82
+ textAlign: "center"
83
+ }, t('Respondents')), /*#__PURE__*/React.createElement(Table.ColHeader, {
84
+ id: percentageHeaderId,
85
+ textAlign: "center"
86
+ }, t('%'))));
87
+ };
88
+
89
+ _this.renderRow = function (key, icon, label, count, percentage) {
90
+ var borderColor = styles["".concat(key, "Border")];
91
+ var backgroundColor = styles["".concat(key, "Background")];
92
+ var concatenatedPercentage = "".concat(percentage, "%");
93
+ return /*#__PURE__*/React.createElement(Table.Row, {
94
+ key: key
95
+ }, /*#__PURE__*/React.createElement(Table.Cell, {
96
+ theme: {
97
+ padding: '0px'
98
+ }
99
+ }, /*#__PURE__*/React.createElement("div", {
100
+ className: classNames(styles.firstCell, borderColor)
101
+ }, /*#__PURE__*/React.createElement(ScreenReaderContent, null, label), /*#__PURE__*/React.createElement(Flex, {
102
+ direction: "row",
103
+ alignItems: "center",
104
+ height: "47px"
105
+ }, /*#__PURE__*/React.createElement(Flex.Item, {
106
+ width: "46px",
107
+ textAlign: "center"
108
+ }, /*#__PURE__*/React.createElement("div", {
109
+ className: classNames(styles.iconWrapper, styles.iconWhite, backgroundColor)
110
+ }, icon)), /*#__PURE__*/React.createElement(Flex.Item, {
111
+ textAlign: "center"
112
+ }, /*#__PURE__*/React.createElement("div", {
113
+ className: classNames(styles.labelWrapper)
114
+ }, /*#__PURE__*/React.createElement(Text, null, label)))))), /*#__PURE__*/React.createElement(Table.Cell, {
115
+ theme: {
116
+ padding: '0px'
117
+ },
118
+ textAlign: "center"
119
+ }, /*#__PURE__*/React.createElement("div", {
120
+ className: classNames(styles.middleCell, borderColor)
121
+ }, /*#__PURE__*/React.createElement(Text, null, count))), /*#__PURE__*/React.createElement(Table.Cell, {
122
+ theme: {
123
+ padding: '0px'
124
+ },
125
+ textAlign: "center"
126
+ }, /*#__PURE__*/React.createElement("div", {
127
+ className: classNames(styles.lastCell, borderColor)
128
+ }, /*#__PURE__*/React.createElement(Text, null, concatenatedPercentage))));
129
+ };
130
+
131
+ _this.isPartialCorrectExist = function () {
132
+ var aggregate = _this.props.answerSummary.aggregate;
133
+ return !!(aggregate === null || aggregate === void 0 ? void 0 : aggregate.partial_correct);
134
+ };
135
+
136
+ _this.renderCorrect = function () {
137
+ var aggregate = _this.props.answerSummary.aggregate;
138
+ var correct = aggregate.correct;
139
+ var correctCount = correct.count || 0;
140
+ var correctPercentage = correct.percentage || 0;
141
+ var correctLabel = _this.isPartialCorrectExist() ? t('Answered fully correctly') : t('Answered correctly');
142
+ return _this.renderRow(correctKey, _ref, correctLabel, correctCount, correctPercentage);
143
+ };
144
+
145
+ _this.renderPartialCorrect = function () {
146
+ var aggregate = _this.props.answerSummary.aggregate;
147
+ var partial_correct = aggregate.partial_correct;
148
+ var partialCorrectCount = partial_correct.count || 0;
149
+ var partialCorrectPercentage = partial_correct.percentage || 0;
150
+ var partialCorrectLabel = t('Answered partially correct');
151
+ return _this.renderRow(partialCorrectKey, _ref2, partialCorrectLabel, partialCorrectCount, partialCorrectPercentage);
152
+ };
153
+
154
+ _this.renderIncorrect = function () {
155
+ var aggregate = _this.props.answerSummary.aggregate;
156
+ var incorrect = aggregate.incorrect;
157
+ var incorrectCount = incorrect.count || 0;
158
+ var incorrectPercentage = incorrect.percentage || 0;
159
+ var incorrectLabel = _this.isPartialCorrectExist() ? t('Answered fully incorrectly') : t('Answered incorrectly');
160
+ return _this.renderRow(incorrectKey, _ref3, incorrectLabel, incorrectCount, incorrectPercentage);
161
+ };
162
+
163
+ _this.renderNoAnswer = function () {
164
+ var no_answer = _this.props.answerSummary.no_answer;
165
+ var noAnswerCount = no_answer.count || 0;
166
+ var noAnswerPercentage = no_answer.percentage || 0;
167
+ var noAnswerLabel = t('No answer');
168
+ return _this.renderRow(noAnswerKey, _ref4, noAnswerLabel, noAnswerCount, noAnswerPercentage);
169
+ };
170
+
171
+ _this.render = function () {
172
+ return /*#__PURE__*/React.createElement("div", {
173
+ className: classNames(styles.collapsingTable)
174
+ }, /*#__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())));
177
+ };
178
+
179
+ return _this;
180
+ }
181
+
182
+ return AggregationTable;
183
+ }(Component), _class2.propTypes = {
184
+ itemId: PropTypes.number.isRequired,
185
+ answerSummary: onlyAggregatePropType
186
+ }.isRequired, _temp)) || _class);
@@ -0,0 +1,10 @@
1
+ export default function generator() {
2
+ return {
3
+ colorGreen: '#0b874b',
4
+ colorBlue: '#0574b5',
5
+ colorRed: '#e0061f',
6
+ colorGrey: '#6b7780',
7
+ colorHeaderBottomBorder: '#c7cdd1',
8
+ cellPadding: '13.5px 13.5px;'
9
+ };
10
+ }
@@ -101,7 +101,6 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
101
101
  return /*#__PURE__*/React.createElement(Heading, {
102
102
  margin: "0 x-large small 0",
103
103
  level: "h3",
104
- weight: "bold",
105
104
  color: "primary"
106
105
  }, title);
107
106
  };
@@ -193,7 +192,7 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
193
192
  }))))));
194
193
  };
195
194
 
196
- _this.renderAnswerSummaryTable = function (itemId, answer_summary, metricsClass, interactionType) {
195
+ _this.renderAnswerSummaryTable = function (itemId, answer_summary, metricsClass, interactionType, afsFlags) {
197
196
  return /*#__PURE__*/React.createElement(Flex.Item, null, /*#__PURE__*/React.createElement("div", {
198
197
  className: metricsClass
199
198
  }, /*#__PURE__*/React.createElement("div", {
@@ -248,7 +247,8 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
248
247
 
249
248
  var _this$props = this.props,
250
249
  showFrequencyTable = _this$props.showFrequencyTable,
251
- itemAnalysis = _this$props.itemAnalysis;
250
+ itemAnalysis = _this$props.itemAnalysis,
251
+ afsFlags = _this$props.afsFlags;
252
252
  var answer_summary = itemAnalysis.answer_summary,
253
253
  metadata = itemAnalysis.metadata,
254
254
  scores = itemAnalysis.scores;
@@ -277,7 +277,7 @@ export var NewItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_t
277
277
  padding: "small xx-small none none",
278
278
  overflowY: "hidden",
279
279
  size: !this.state.bodyExpanded ? '60px' : void 0
280
- }, this.renderRichContent(metadata.item_body, itemBodyClass, itemId)))), /*#__PURE__*/React.createElement(Flex.Item, null, this.renderMetrics(scores, metricsClass)))), showFrequencyTable && this.renderAnswerSummaryTable(itemId, answer_summary, metricsClass, interactionType)));
280
+ }, this.renderRichContent(metadata.item_body, itemBodyClass, itemId)))), /*#__PURE__*/React.createElement(Flex.Item, null, this.renderMetrics(scores, metricsClass)))), showFrequencyTable && this.renderAnswerSummaryTable(itemId, answer_summary, metricsClass, interactionType, afsFlags)));
281
281
  }
282
282
  }]);
283
283
 
@@ -43,9 +43,18 @@ export var itemAnalysisPropType = PropTypes.shape({
43
43
  }),
44
44
  answer_summary: answerSummaryPropType
45
45
  });
46
- var noAnswerPropType = PropTypes.shape({
47
- count: PropTypes.number,
48
- percentage: PropTypes.number
46
+ var aggregateDetailPropType = PropTypes.shape({
47
+ count: PropTypes.number.isRequired,
48
+ percentage: PropTypes.number.isRequired
49
+ });
50
+ var aggregatePropType = PropTypes.shape({
51
+ correct: aggregateDetailPropType.isRequired,
52
+ incorrect: aggregateDetailPropType.isRequired,
53
+ partial_correct: aggregateDetailPropType
54
+ });
55
+ export var onlyAggregatePropType = PropTypes.shape({
56
+ no_answer: aggregateDetailPropType,
57
+ aggregate: aggregatePropType
49
58
  });
50
59
  export var choiceTypeAnswerSummaryPropType = PropTypes.shape({
51
60
  choices: PropTypes.arrayOf(PropTypes.shape({
@@ -54,9 +63,9 @@ export var choiceTypeAnswerSummaryPropType = PropTypes.shape({
54
63
  count: PropTypes.number,
55
64
  percentage: PropTypes.number
56
65
  })),
57
- no_answer: noAnswerPropType
66
+ no_answer: aggregateDetailPropType
58
67
  });
59
- export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType]);
68
+ export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType]);
60
69
  export var afsFlags = PropTypes.shape({
61
70
  formulaEnabled: PropTypes.bool.isRequired,
62
71
  matchingEnabled: PropTypes.bool.isRequired
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _presenter.AggregationType;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,64 @@
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.AggregationType = 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("../shared/AggregationTable/index.js"));
23
+
24
+ var _propTypes2 = require("../../propTypes.js");
25
+
26
+ var _presenter = require("../shared/AfsTableWrapper/presenter.js");
27
+
28
+ var AggregationType = /*#__PURE__*/function (_Component) {
29
+ (0, _inherits2.default)(AggregationType, _Component);
30
+
31
+ var _super = (0, _createSuper2.default)(AggregationType);
32
+
33
+ function AggregationType() {
34
+ var _this;
35
+
36
+ (0, _classCallCheck2.default)(this, AggregationType);
37
+
38
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
39
+ args[_key] = arguments[_key];
40
+ }
41
+
42
+ _this = _super.call.apply(_super, [this].concat(args));
43
+
44
+ _this.render = function () {
45
+ var _this$props = _this.props,
46
+ answerSummary = _this$props.answerSummary,
47
+ itemId = _this$props.itemId;
48
+ return /*#__PURE__*/_react.default.createElement(_presenter.AfsTableWrapper, null, /*#__PURE__*/_react.default.createElement(_index.default, {
49
+ itemId: itemId,
50
+ answerSummary: answerSummary
51
+ }));
52
+ };
53
+
54
+ return _this;
55
+ }
56
+
57
+ return AggregationType;
58
+ }(_react.Component);
59
+
60
+ exports.AggregationType = AggregationType;
61
+ AggregationType.propTypes = {
62
+ itemId: _propTypes.default.number.isRequired,
63
+ answerSummary: _propTypes2.onlyAggregatePropType
64
+ }.isRequired;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator() {
9
+ return {
10
+ tableBottomPadding: 0
11
+ };
12
+ }
@@ -23,10 +23,6 @@ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/f
23
23
 
24
24
  var _uiTable = require("@instructure/ui-table");
25
25
 
26
- var _uiFlex = require("@instructure/ui-flex");
27
-
28
- var _uiHeading = require("@instructure/ui-heading");
29
-
30
26
  var _uiThemeable = require("@instructure/ui-themeable");
31
27
 
32
28
  var _uiA11yContent = require("@instructure/ui-a11y-content");
@@ -39,6 +35,8 @@ var _propTypes2 = require("../../propTypes.js");
39
35
 
40
36
  var _theme = _interopRequireDefault(require("./theme.js"));
41
37
 
38
+ var _index2 = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
39
+
42
40
  var _dec, _class, _class2, _temp;
43
41
 
44
42
  var styles = {
@@ -102,19 +100,7 @@ var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _d
102
100
  var answerHeaderId = "answer-frequency-summary-answer-".concat(itemId);
103
101
  var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
104
102
  var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
105
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
106
- direction: "row"
107
- }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
108
- shouldGrow: true
109
- }, /*#__PURE__*/_react.default.createElement("div", {
110
- className: styles.tableWrapper
111
- }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
112
- margin: "large 0 small 0",
113
- level: "h4",
114
- theme: {
115
- h4FontWeight: 'normal'
116
- }
117
- }, (0, _formatMessage.default)('Answer Frequency Summary')), /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
103
+ return /*#__PURE__*/_react.default.createElement(_index2.default, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
118
104
  caption: (0, _formatMessage.default)('Answer Frequency Summary')
119
105
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
120
106
  id: spacingHeaderId,
@@ -129,7 +115,7 @@ var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _d
129
115
  id: percentageHeaderId,
130
116
  height: "47px",
131
117
  textAlign: "center"
132
- }, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices)))))));
118
+ }, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices))));
133
119
  }
134
120
  }]);
135
121
  ChoiceType.displayName = "ChoiceType";
@@ -19,7 +19,9 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _quizInteractions = require("@instructure/quiz-interactions");
21
21
 
22
- var _presenter = require("./ChoiceType/presenter.js");
22
+ var _index = _interopRequireDefault(require("./ChoiceType/index.js"));
23
+
24
+ var _index2 = _interopRequireDefault(require("./AggregationType/index.js"));
23
25
 
24
26
  var _propTypes = require("../propTypes.js");
25
27
 
@@ -41,7 +43,8 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
41
43
  _this.afsTableComponentMap = new Map();
42
44
 
43
45
  _this.addAfsComponentsByFlags = function (afsFlags) {
44
- if (afsFlags.formulaEnabled) {// this.afsTableComponentMap.set('formula', Formula)
46
+ if (afsFlags.formulaEnabled) {
47
+ _this.afsTableComponentMap.set('formula', _index2.default);
45
48
  }
46
49
  };
47
50
 
@@ -55,7 +58,7 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
55
58
 
56
59
  var AfsTableComponent = _this.afsTableComponentMap.get(interactionType);
57
60
 
58
- if (!AfsTableComponent) {
61
+ if (!AfsTableComponent || !answerSummary) {
59
62
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
60
63
  }
61
64
 
@@ -65,11 +68,11 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
65
68
  });
66
69
  };
67
70
 
68
- _this.afsTableComponentMap.set('true-false', _presenter.ChoiceType);
71
+ _this.afsTableComponentMap.set('true-false', _index.default);
69
72
 
70
- _this.afsTableComponentMap.set('choice', _presenter.ChoiceType);
73
+ _this.afsTableComponentMap.set('choice', _index.default);
71
74
 
72
- _this.afsTableComponentMap.set('multi-answer', _presenter.ChoiceType);
75
+ _this.afsTableComponentMap.set('multi-answer', _index.default);
73
76
 
74
77
  return _this;
75
78
  }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _presenter.AfsTableWrapper;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.AfsTableWrapper = 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 _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
21
+
22
+ var _theme = _interopRequireDefault(require("./theme.js"));
23
+
24
+ var _uiThemeable = require("@instructure/ui-themeable");
25
+
26
+ var _uiFlex = require("@instructure/ui-flex");
27
+
28
+ var _uiHeading = require("@instructure/ui-heading");
29
+
30
+ var _dec, _class, _temp;
31
+
32
+ var styles = {
33
+ componentId: 'bmsWU',
34
+ template: function template(theme) {
35
+ return "\n\n.bmsWU_rMrG{display:flex;flex-basis:100%;flex-direction:column}";
36
+ },
37
+ 'tableWrapper': 'bmsWU_rMrG'
38
+ };
39
+ var AfsTableWrapper = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = /*#__PURE__*/function (_Component) {
40
+ (0, _inherits2.default)(AfsTableWrapper, _Component);
41
+
42
+ var _super = (0, _createSuper2.default)(AfsTableWrapper);
43
+
44
+ function AfsTableWrapper() {
45
+ var _this;
46
+
47
+ (0, _classCallCheck2.default)(this, AfsTableWrapper);
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.render = function () {
56
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
57
+ direction: "row"
58
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
59
+ shouldGrow: true
60
+ }, /*#__PURE__*/_react.default.createElement("div", {
61
+ className: styles.tableWrapper
62
+ }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
63
+ margin: "0 x-large small 0",
64
+ level: "h3",
65
+ weight: "bold",
66
+ color: "primary"
67
+ }, (0, _formatMessage.default)('Answer Frequency Summary')), _this.props.children))));
68
+ };
69
+
70
+ return _this;
71
+ }
72
+
73
+ return AfsTableWrapper;
74
+ }(_react.Component), _temp)) || _class);
75
+ exports.AfsTableWrapper = AfsTableWrapper;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator() {
9
+ return {
10
+ tableBottomPadding: 0
11
+ };
12
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _presenter.AggregationTable;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.AggregationTable = 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 _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
21
+
22
+ var _uiTable = require("@instructure/ui-table");
23
+
24
+ var _propTypes = require("../../../propTypes.js");
25
+
26
+ var _uiA11yContent = require("@instructure/ui-a11y-content");
27
+
28
+ var _propTypes2 = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _uiIcons = require("@instructure/ui-icons");
31
+
32
+ var _uiThemeable = require("@instructure/ui-themeable");
33
+
34
+ var _theme = _interopRequireDefault(require("./theme.js"));
35
+
36
+ var _uiFlex = require("@instructure/ui-flex");
37
+
38
+ var _classnames = _interopRequireDefault(require("classnames"));
39
+
40
+ var _uiText = require("@instructure/ui-text");
41
+
42
+ var _dec, _class, _class2, _temp;
43
+
44
+ var styles = {
45
+ componentId: 'eADot',
46
+ template: function template(theme) {
47
+ return "\n\n.eADot_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.eADot_fPIL table{border-collapse:separate;border-spacing:0 12px}\n\n.eADot_fPIL thead th{border-color:".concat(theme.colorHeaderBottomBorder || 'inherit', ";border-style:solid;border-width:0 0 1px 0}\n\n.eADot_euQM{padding-left:10px}\n\n.eADot_fuuc{padding-left:45px}\n\n.eADot_bTFA{border-color:").concat(theme.colorGreen || 'inherit', "}\n\n.eADot_bvau{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.eADot_dmcW{border-color:").concat(theme.colorRed || 'inherit', "}\n\n.eADot_cxOH{background-color:").concat(theme.colorRed || 'inherit', "}\n\n.eADot_xOeH{border-color:").concat(theme.colorBlue || 'inherit', "}\n\n.eADot_eRkO{background-color:").concat(theme.colorBlue || 'inherit', "}\n\n.eADot_dlLI{border-color:").concat(theme.colorGrey || 'inherit', "}\n\n.eADot_eKcq{background-color:").concat(theme.colorGrey || 'inherit', "}\n\n.eADot_vDgC svg{fill:#fff}\n\n.eADot_fHMm{border-color:").concat(theme.colorHeaderBottomBorder || 'inherit', ";border-style:solid;border-width:0 0 1px 0}\n\n.eADot_WspM{border-radius:4px 0 0 4px;border-style:solid;border-width:2px 0 2px 2px}\n\n.eADot_fAnT{border-width:2px 0 2px 0}\n\n.eADot_bMPk,.eADot_fAnT{border-style:solid;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.eADot_bMPk{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
48
+ },
49
+ 'iconWrapper': 'eADot_cvRx',
50
+ 'collapsingTable': 'eADot_fPIL',
51
+ 'labelWrapper': 'eADot_euQM',
52
+ 'firstHeaderCell': 'eADot_fuuc',
53
+ 'correctBorder': 'eADot_bTFA',
54
+ 'correctBackground': 'eADot_bvau',
55
+ 'incorrectBorder': 'eADot_dmcW',
56
+ 'incorrectBackground': 'eADot_cxOH',
57
+ 'partialCorrectBorder': 'eADot_xOeH',
58
+ 'partialCorrectBackground': 'eADot_eRkO',
59
+ 'noAnswerBorder': 'eADot_dlLI',
60
+ 'noAnswerBackground': 'eADot_eKcq',
61
+ 'iconWhite': 'eADot_vDgC',
62
+ 'headerCell': 'eADot_fHMm',
63
+ 'firstCell': 'eADot_WspM',
64
+ 'middleCell': 'eADot_fAnT',
65
+ 'lastCell': 'eADot_bMPk'
66
+ };
67
+ var noAnswerKey = 'noAnswer';
68
+ var incorrectKey = 'incorrect';
69
+ var correctKey = 'correct';
70
+ var partialCorrectKey = 'partialCorrect';
71
+
72
+ var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
73
+
74
+ var _ref2 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconOvalHalfSolid, null);
75
+
76
+ var _ref3 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconXSolid, null);
77
+
78
+ var _ref4 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconNoSolid, null);
79
+
80
+ var AggregationTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
81
+ (0, _inherits2.default)(AggregationTable, _Component);
82
+
83
+ var _super = (0, _createSuper2.default)(AggregationTable);
84
+
85
+ function AggregationTable() {
86
+ var _this;
87
+
88
+ (0, _classCallCheck2.default)(this, AggregationTable);
89
+
90
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
91
+ args[_key] = arguments[_key];
92
+ }
93
+
94
+ _this = _super.call.apply(_super, [this].concat(args));
95
+
96
+ _this.renderHeaderRow = function () {
97
+ var itemId = _this.props.itemId;
98
+ var answerHeaderId = "answer-frequency-summary-aggregate-answer-".concat(itemId);
99
+ var respondentsHeaderId = "answer-frequency-summary-aggregate-respondents-".concat(itemId);
100
+ var percentageHeaderId = "answer-frequency-summary-aggregate-percentage-".concat(itemId);
101
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
102
+ id: answerHeaderId
103
+ }, /*#__PURE__*/_react.default.createElement("span", {
104
+ className: (0, _classnames.default)(styles.firstHeaderCell)
105
+ }, (0, _formatMessage.default)('Result'))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
106
+ id: respondentsHeaderId,
107
+ textAlign: "center"
108
+ }, (0, _formatMessage.default)('Respondents')), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
109
+ id: percentageHeaderId,
110
+ textAlign: "center"
111
+ }, (0, _formatMessage.default)('%'))));
112
+ };
113
+
114
+ _this.renderRow = function (key, icon, label, count, percentage) {
115
+ var borderColor = styles["".concat(key, "Border")];
116
+ var backgroundColor = styles["".concat(key, "Background")];
117
+ var concatenatedPercentage = "".concat(percentage, "%");
118
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, {
119
+ key: key
120
+ }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
121
+ theme: {
122
+ padding: '0px'
123
+ }
124
+ }, /*#__PURE__*/_react.default.createElement("div", {
125
+ className: (0, _classnames.default)(styles.firstCell, borderColor)
126
+ }, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, label), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
127
+ direction: "row",
128
+ alignItems: "center",
129
+ height: "47px"
130
+ }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
131
+ width: "46px",
132
+ textAlign: "center"
133
+ }, /*#__PURE__*/_react.default.createElement("div", {
134
+ className: (0, _classnames.default)(styles.iconWrapper, styles.iconWhite, backgroundColor)
135
+ }, icon)), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
136
+ textAlign: "center"
137
+ }, /*#__PURE__*/_react.default.createElement("div", {
138
+ className: (0, _classnames.default)(styles.labelWrapper)
139
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, null, label)))))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
140
+ theme: {
141
+ padding: '0px'
142
+ },
143
+ textAlign: "center"
144
+ }, /*#__PURE__*/_react.default.createElement("div", {
145
+ className: (0, _classnames.default)(styles.middleCell, borderColor)
146
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, null, count))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
147
+ theme: {
148
+ padding: '0px'
149
+ },
150
+ textAlign: "center"
151
+ }, /*#__PURE__*/_react.default.createElement("div", {
152
+ className: (0, _classnames.default)(styles.lastCell, borderColor)
153
+ }, /*#__PURE__*/_react.default.createElement(_uiText.Text, null, concatenatedPercentage))));
154
+ };
155
+
156
+ _this.isPartialCorrectExist = function () {
157
+ var aggregate = _this.props.answerSummary.aggregate;
158
+ return !!(aggregate === null || aggregate === void 0 ? void 0 : aggregate.partial_correct);
159
+ };
160
+
161
+ _this.renderCorrect = function () {
162
+ var aggregate = _this.props.answerSummary.aggregate;
163
+ var correct = aggregate.correct;
164
+ var correctCount = correct.count || 0;
165
+ var correctPercentage = correct.percentage || 0;
166
+ var correctLabel = _this.isPartialCorrectExist() ? (0, _formatMessage.default)('Answered fully correctly') : (0, _formatMessage.default)('Answered correctly');
167
+ return _this.renderRow(correctKey, _ref, correctLabel, correctCount, correctPercentage);
168
+ };
169
+
170
+ _this.renderPartialCorrect = function () {
171
+ var aggregate = _this.props.answerSummary.aggregate;
172
+ var partial_correct = aggregate.partial_correct;
173
+ var partialCorrectCount = partial_correct.count || 0;
174
+ var partialCorrectPercentage = partial_correct.percentage || 0;
175
+ var partialCorrectLabel = (0, _formatMessage.default)('Answered partially correct');
176
+ return _this.renderRow(partialCorrectKey, _ref2, partialCorrectLabel, partialCorrectCount, partialCorrectPercentage);
177
+ };
178
+
179
+ _this.renderIncorrect = function () {
180
+ var aggregate = _this.props.answerSummary.aggregate;
181
+ var incorrect = aggregate.incorrect;
182
+ var incorrectCount = incorrect.count || 0;
183
+ var incorrectPercentage = incorrect.percentage || 0;
184
+ var incorrectLabel = _this.isPartialCorrectExist() ? (0, _formatMessage.default)('Answered fully incorrectly') : (0, _formatMessage.default)('Answered incorrectly');
185
+ return _this.renderRow(incorrectKey, _ref3, incorrectLabel, incorrectCount, incorrectPercentage);
186
+ };
187
+
188
+ _this.renderNoAnswer = function () {
189
+ var no_answer = _this.props.answerSummary.no_answer;
190
+ var noAnswerCount = no_answer.count || 0;
191
+ var noAnswerPercentage = no_answer.percentage || 0;
192
+ var noAnswerLabel = (0, _formatMessage.default)('No answer');
193
+ return _this.renderRow(noAnswerKey, _ref4, noAnswerLabel, noAnswerCount, noAnswerPercentage);
194
+ };
195
+
196
+ _this.render = function () {
197
+ return /*#__PURE__*/_react.default.createElement("div", {
198
+ className: (0, _classnames.default)(styles.collapsingTable)
199
+ }, /*#__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())));
202
+ };
203
+
204
+ return _this;
205
+ }
206
+
207
+ return AggregationTable;
208
+ }(_react.Component), _class2.propTypes = {
209
+ itemId: _propTypes2.default.number.isRequired,
210
+ answerSummary: _propTypes.onlyAggregatePropType
211
+ }.isRequired, _temp)) || _class);
212
+ exports.AggregationTable = AggregationTable;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = generator;
7
+
8
+ function generator() {
9
+ return {
10
+ colorGreen: '#0b874b',
11
+ colorBlue: '#0574b5',
12
+ colorRed: '#e0061f',
13
+ colorGrey: '#6b7780',
14
+ colorHeaderBottomBorder: '#c7cdd1',
15
+ cellPadding: '13.5px 13.5px;'
16
+ };
17
+ }
@@ -136,7 +136,6 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
136
136
  return /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
137
137
  margin: "0 x-large small 0",
138
138
  level: "h3",
139
- weight: "bold",
140
139
  color: "primary"
141
140
  }, title);
142
141
  };
@@ -228,7 +227,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
228
227
  }))))));
229
228
  };
230
229
 
231
- _this.renderAnswerSummaryTable = function (itemId, answer_summary, metricsClass, interactionType) {
230
+ _this.renderAnswerSummaryTable = function (itemId, answer_summary, metricsClass, interactionType, afsFlags) {
232
231
  return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, /*#__PURE__*/_react.default.createElement("div", {
233
232
  className: metricsClass
234
233
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -237,7 +236,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
237
236
  itemId: itemId,
238
237
  answerSummary: answer_summary,
239
238
  interactionType: interactionType,
240
- afsFlags: _propTypes.afsFlags
239
+ afsFlags: afsFlags
241
240
  }))));
242
241
  };
243
242
 
@@ -283,7 +282,8 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
283
282
 
284
283
  var _this$props = this.props,
285
284
  showFrequencyTable = _this$props.showFrequencyTable,
286
- itemAnalysis = _this$props.itemAnalysis;
285
+ itemAnalysis = _this$props.itemAnalysis,
286
+ afsFlags = _this$props.afsFlags;
287
287
  var answer_summary = itemAnalysis.answer_summary,
288
288
  metadata = itemAnalysis.metadata,
289
289
  scores = itemAnalysis.scores;
@@ -312,7 +312,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
312
312
  padding: "small xx-small none none",
313
313
  overflowY: "hidden",
314
314
  size: !this.state.bodyExpanded ? '60px' : void 0
315
- }, this.renderRichContent(metadata.item_body, itemBodyClass, itemId)))), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, this.renderMetrics(scores, metricsClass)))), showFrequencyTable && this.renderAnswerSummaryTable(itemId, answer_summary, metricsClass, interactionType)));
315
+ }, this.renderRichContent(metadata.item_body, itemBodyClass, itemId)))), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, this.renderMetrics(scores, metricsClass)))), showFrequencyTable && this.renderAnswerSummaryTable(itemId, answer_summary, metricsClass, interactionType, afsFlags)));
316
316
  }
317
317
  }]);
318
318
  NewItemAnalysis.displayName = "NewItemAnalysis";
@@ -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.answerSummaryPropType = exports.choiceTypeAnswerSummaryPropType = exports.itemAnalysisPropType = exports.quizAnalysisPropType = void 0;
8
+ exports.afsFlags = exports.answerSummaryPropType = exports.choiceTypeAnswerSummaryPropType = exports.onlyAggregatePropType = exports.itemAnalysisPropType = exports.quizAnalysisPropType = void 0;
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
@@ -59,11 +59,24 @@ var itemAnalysisPropType = _propTypes.default.shape({
59
59
 
60
60
  exports.itemAnalysisPropType = itemAnalysisPropType;
61
61
 
62
- var noAnswerPropType = _propTypes.default.shape({
63
- count: _propTypes.default.number,
64
- percentage: _propTypes.default.number
62
+ var aggregateDetailPropType = _propTypes.default.shape({
63
+ count: _propTypes.default.number.isRequired,
64
+ percentage: _propTypes.default.number.isRequired
65
65
  });
66
66
 
67
+ var aggregatePropType = _propTypes.default.shape({
68
+ correct: aggregateDetailPropType.isRequired,
69
+ incorrect: aggregateDetailPropType.isRequired,
70
+ partial_correct: aggregateDetailPropType
71
+ });
72
+
73
+ var onlyAggregatePropType = _propTypes.default.shape({
74
+ no_answer: aggregateDetailPropType,
75
+ aggregate: aggregatePropType
76
+ });
77
+
78
+ exports.onlyAggregatePropType = onlyAggregatePropType;
79
+
67
80
  var choiceTypeAnswerSummaryPropType = _propTypes.default.shape({
68
81
  choices: _propTypes.default.arrayOf(_propTypes.default.shape({
69
82
  body: _propTypes.default.string,
@@ -71,12 +84,12 @@ var choiceTypeAnswerSummaryPropType = _propTypes.default.shape({
71
84
  count: _propTypes.default.number,
72
85
  percentage: _propTypes.default.number
73
86
  })),
74
- no_answer: noAnswerPropType
87
+ no_answer: aggregateDetailPropType
75
88
  });
76
89
 
77
90
  exports.choiceTypeAnswerSummaryPropType = choiceTypeAnswerSummaryPropType;
78
91
 
79
- var answerSummaryPropType = _propTypes.default.oneOfType([choiceTypeAnswerSummaryPropType]);
92
+ var answerSummaryPropType = _propTypes.default.oneOfType([choiceTypeAnswerSummaryPropType, onlyAggregatePropType]);
80
93
 
81
94
  exports.answerSummaryPropType = answerSummaryPropType;
82
95
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "18.5.1-rc.1+9f64fe102",
3
+ "version": "18.5.1-rc.2+7e05172cf",
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.5.1-rc.1+9f64fe102",
47
- "@instructure/quiz-i18n": "18.5.1-rc.1+9f64fe102",
48
- "@instructure/quiz-interactions": "18.5.1-rc.1+9f64fe102",
49
- "@instructure/quiz-number-input": "18.5.1-rc.1+9f64fe102",
50
- "@instructure/quiz-rce": "18.5.1-rc.1+9f64fe102",
46
+ "@instructure/quiz-common": "18.5.1-rc.2+7e05172cf",
47
+ "@instructure/quiz-i18n": "18.5.1-rc.2+7e05172cf",
48
+ "@instructure/quiz-interactions": "18.5.1-rc.2+7e05172cf",
49
+ "@instructure/quiz-number-input": "18.5.1-rc.2+7e05172cf",
50
+ "@instructure/quiz-rce": "18.5.1-rc.2+7e05172cf",
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",
@@ -108,7 +108,7 @@
108
108
  "eventemitter3": "^3.1.0",
109
109
  "humps": "^2.0.0",
110
110
  "immutable": "^3.8.1",
111
- "instructure-validations": "18.5.1-rc.1+9f64fe102",
111
+ "instructure-validations": "18.5.1-rc.2+7e05172cf",
112
112
  "ipaddr.js": "^1.5.4",
113
113
  "isomorphic-fetch": "^2.2.0",
114
114
  "isuuid": "^0.1.0",
@@ -159,7 +159,7 @@
159
159
  "intl": "^1.2.4",
160
160
  "jquery": "^2.2.3",
161
161
  "most-subject": "^5.3.0",
162
- "quiz-presets": "18.5.1-rc.1+9f64fe102",
162
+ "quiz-presets": "18.5.1-rc.2+7e05172cf",
163
163
  "react": "^16.8.6",
164
164
  "react-addons-test-utils": "^15.6.2",
165
165
  "react-dom": "^16.8.6",
@@ -175,5 +175,5 @@
175
175
  "publishConfig": {
176
176
  "access": "public"
177
177
  },
178
- "gitHead": "9f64fe1029e0029cb999b0d8255369562691241f"
178
+ "gitHead": "7e05172cfb3460af3f9231c0e072898116415f40"
179
179
  }