@instructure/quiz-core 18.5.1-rc.8 → 18.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +8 -5
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +11 -21
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +5 -5
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +15 -25
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +4 -1
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +87 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +2 -1
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +8 -2
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/index.js +1 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +73 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +1 -0
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +9 -9
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +3 -0
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/exportReports.js +65 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +4 -0
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +2 -0
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +41 -1
  20. package/es/reporting/components/resources/ReportCard/theme.js +1 -1
  21. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +8 -5
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +15 -24
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +5 -5
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +19 -29
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +5 -1
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +115 -0
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +9 -1
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +7 -1
  29. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/index.js +13 -0
  30. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +92 -0
  31. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +1 -0
  32. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +9 -9
  33. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
  34. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +7 -1
  35. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/exportReports.js +80 -0
  36. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +10 -2
  37. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +3 -0
  38. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +43 -1
  39. package/lib/reporting/components/resources/ReportCard/theme.js +1 -1
  40. package/package.json +11 -10
  41. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/theme.js +0 -5
  42. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/theme.js +0 -12
@@ -9,6 +9,8 @@ import { fetchReports } from "./fetchReports.js";
9
9
  import { fetchReportsStatus } from "./fetchReportsStatus.js";
10
10
  import { getErrorMessageForCode } from "./errorCodes.js";
11
11
  import { generateReports as triggerReportGeneration } from "./generateReports.js";
12
+ import { exportReports as triggerExportReports } from "./exportReports.js";
13
+ import { saveFile } from "./utils.js";
12
14
  export var withAnalysisStatePresenter = function withAnalysisStatePresenter(OriginalComponent) {
13
15
  var WithAnalysisStatePresenter = function WithAnalysisStatePresenter(_ref) {
14
16
  var quizAnalysis = _ref.quizAnalysis,
@@ -26,11 +28,12 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
26
28
  generateAnalysis = _ref.generateAnalysis,
27
29
  fetchQuizAnalysis = _ref.fetchQuizAnalysis,
28
30
  fetchItemAnalyses = _ref.fetchItemAnalyses,
31
+ getAnalysesExport = _ref.getAnalysesExport,
29
32
  fetchAnalysesStatus = _ref.fetchAnalysesStatus,
30
33
  statusPollingInProgress = _ref.statusPollingInProgress,
31
34
  setStatusPollingInProgress = _ref.setStatusPollingInProgress,
32
35
  pollingInterval = _ref.pollingInterval,
33
- passThroughProps = _objectWithoutProperties(_ref, ["quizAnalysis", "itemAnalyses", "fetchInProgress", "generationInProgress", "analysisError", "setQuizAnalysis", "addError", "setItemAnalyses", "setFetchInProgress", "setGenerationInProgress", "setAnalysisError", "activeQuizId", "generateAnalysis", "fetchQuizAnalysis", "fetchItemAnalyses", "fetchAnalysesStatus", "statusPollingInProgress", "setStatusPollingInProgress", "pollingInterval"]);
36
+ passThroughProps = _objectWithoutProperties(_ref, ["quizAnalysis", "itemAnalyses", "fetchInProgress", "generationInProgress", "analysisError", "setQuizAnalysis", "addError", "setItemAnalyses", "setFetchInProgress", "setGenerationInProgress", "setAnalysisError", "activeQuizId", "generateAnalysis", "fetchQuizAnalysis", "fetchItemAnalyses", "getAnalysesExport", "fetchAnalysesStatus", "statusPollingInProgress", "setStatusPollingInProgress", "pollingInterval"]);
34
37
 
35
38
  WithAnalysisStatePresenter.displayName = "WithAnalysisStatePresenter(".concat(OriginalComponent.displayName || OriginalComponent.name, ")");
36
39
 
@@ -101,6 +104,41 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
101
104
  return _generateReports.apply(this, arguments);
102
105
  }
103
106
 
107
+ function exportReports(_x) {
108
+ return _exportReports.apply(this, arguments);
109
+ }
110
+
111
+ function _exportReports() {
112
+ _exportReports = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(format) {
113
+ var filter,
114
+ exportConfig,
115
+ _args4 = arguments;
116
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
117
+ while (1) {
118
+ switch (_context4.prev = _context4.next) {
119
+ case 0:
120
+ filter = _args4.length > 1 && _args4[1] !== void 0 ? _args4[1] : 'last_attempt';
121
+ exportConfig = {
122
+ getAnalysesExport: getAnalysesExport,
123
+ format: format,
124
+ filter: filter,
125
+ activeQuizId: activeQuizId,
126
+ addError: addError,
127
+ saveFile: saveFile
128
+ };
129
+ _context4.next = 4;
130
+ return triggerExportReports(exportConfig);
131
+
132
+ case 4:
133
+ case "end":
134
+ return _context4.stop();
135
+ }
136
+ }
137
+ }, _callee4);
138
+ }));
139
+ return _exportReports.apply(this, arguments);
140
+ }
141
+
104
142
  useEffect(function () {
105
143
  var fetchIfNeeded = /*#__PURE__*/function () {
106
144
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
@@ -172,6 +210,7 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
172
210
  generationInProgress: generationInProgress,
173
211
  analysisError: analysisError,
174
212
  generateReports: generateReports,
213
+ exportReports: exportReports,
175
214
  analysisFetchError: analysisFetchError
176
215
  }, passThroughProps));
177
216
  };
@@ -193,6 +232,7 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
193
232
  fetchQuizAnalysis: PropTypes.func.isRequired,
194
233
  fetchItemAnalyses: PropTypes.func.isRequired,
195
234
  fetchAnalysesStatus: PropTypes.func.isRequired,
235
+ getAnalysesExport: PropTypes.func.isRequired,
196
236
  addError: PropTypes.func.isRequired,
197
237
  pollingInterval: PropTypes.number.isRequired,
198
238
  generateAnalysis: PropTypes.func.isRequired // from LTI, f(filter: string, onError?: func(error))
@@ -3,7 +3,7 @@ export default function generator(_ref) {
3
3
  borders = _ref.borders;
4
4
  return {
5
5
  cardHeight: '6rem',
6
- cardWidth: '16rem',
6
+ cardWidth: '19.5rem',
7
7
  cardPadding: spacing.medium,
8
8
  cardMargin: spacing.xSmall,
9
9
  cardBoxShadow: '1px 1px 3px 0 #ddd',
@@ -32,11 +32,12 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
32
32
  var _dec, _class, _class2, _temp;
33
33
 
34
34
  var styles = {
35
- componentId: 'ethsC',
35
+ componentId: 'fKESK',
36
36
  template: function template(theme) {
37
- return "\n\n.ethsC_eckF{margin:0;max-width:159px;text-transform:capitalize}";
37
+ return "\n\n.fKESK_eckF{margin:0;max-width:159px;text-transform:capitalize}\n\n.fKESK_CIyo{width:90px}";
38
38
  },
39
- 'metricLabel': 'ethsC_eckF'
39
+ 'metricLabel': 'fKESK_eckF',
40
+ 'metricWrapper': 'fKESK_CIyo'
40
41
  };
41
42
  var AnalysisMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
42
43
  (0, _inherits2.default)(AnalysisMetric, _Component);
@@ -56,7 +57,9 @@ var AnalysisMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles)
56
57
  label = _this$props.label,
57
58
  value = _this$props.value,
58
59
  suffix = _this$props.suffix;
59
- return /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
60
+ return /*#__PURE__*/_react.default.createElement("div", {
61
+ className: styles.metricWrapper
62
+ }, /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
60
63
  theme: {
61
64
  valueFontWeight: 500,
62
65
  padding: '0'
@@ -67,7 +70,7 @@ var AnalysisMetric = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles)
67
70
  className: styles.metricLabel
68
71
  }, label),
69
72
  renderValue: (0, _utils.getSanitizedMetricValue)(value, suffix)
70
- });
73
+ }));
71
74
  }
72
75
  }]);
73
76
  AnalysisMetric.displayName = "AnalysisMetric";
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
4
 
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -25,20 +25,9 @@ var _propTypes2 = require("../../propTypes.js");
25
25
 
26
26
  var _presenter = require("../shared/AfsTableWrapper/presenter.js");
27
27
 
28
- var _classnames = _interopRequireDefault(require("classnames"));
28
+ var _presenter2 = require("../shared/AfsPartsContainer/presenter.js");
29
29
 
30
- var _uiThemeable = require("@instructure/ui-themeable");
31
-
32
- var _dec, _class, _class2, _temp;
33
-
34
- var styles = {
35
- componentId: 'JFhmr',
36
- template: function template(theme) {
37
- return "\n\n.JFhmr_cVld{max-width:100%;width:calc(25% + 350px)}";
38
- },
39
- 'answerFrequencySummaryContainer': 'JFhmr_cVld'
40
- };
41
- var AggregationType = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
30
+ var AggregationType = /*#__PURE__*/function (_Component) {
42
31
  (0, _inherits2.default)(AggregationType, _Component);
43
32
 
44
33
  var _super = (0, _createSuper2.default)(AggregationType);
@@ -58,20 +47,22 @@ var AggregationType = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_cla
58
47
  var _this$props = _this.props,
59
48
  answerSummary = _this$props.answerSummary,
60
49
  itemId = _this$props.itemId;
61
- return /*#__PURE__*/_react.default.createElement(_presenter.AfsTableWrapper, null, /*#__PURE__*/_react.default.createElement("div", {
62
- className: (0, _classnames.default)(styles.answerFrequencySummaryContainer)
63
- }, /*#__PURE__*/_react.default.createElement(_index.default, {
64
- itemId: itemId,
65
- answerSummary: answerSummary
66
- })));
50
+ return /*#__PURE__*/_react.default.createElement(_presenter.AfsTableWrapper, null, /*#__PURE__*/_react.default.createElement(_presenter2.AfsPartsContainer, {
51
+ aggregationTable: /*#__PURE__*/_react.default.createElement(_index.default, {
52
+ itemId: itemId,
53
+ answerSummary: answerSummary
54
+ })
55
+ }));
67
56
  };
68
57
 
69
58
  return _this;
70
59
  }
71
60
 
72
61
  return AggregationType;
73
- }(_react.Component), _class2.propTypes = {
62
+ }(_react.Component);
63
+
64
+ exports.AggregationType = AggregationType;
65
+ AggregationType.propTypes = {
74
66
  itemId: _propTypes.default.number.isRequired,
75
67
  answerSummary: _propTypes2.onlyAggregatePropType
76
- }.isRequired, _temp)) || _class);
77
- exports.AggregationType = AggregationType;
68
+ }.isRequired;
@@ -42,12 +42,12 @@ var _classnames = _interopRequireDefault(require("classnames"));
42
42
  var _dec, _class, _class2, _temp;
43
43
 
44
44
  var styles = {
45
- componentId: 'cEPQa',
45
+ componentId: 'dCEWT',
46
46
  template: function template(theme) {
47
- return "\n\n.cEPQa_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.cEPQa_cVld{max-width:100%;width:calc(25% + 350px)}");
47
+ return "\n\n.dCEWT_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.dCEWT_SVtU{max-width:100%;width:calc(25% + 350px)}");
48
48
  },
49
- 'tableWrapper': 'cEPQa_rMrG',
50
- 'answerFrequencySummaryContainer': 'cEPQa_cVld'
49
+ 'tableWrapper': 'dCEWT_rMrG',
50
+ 'tableContainer': 'dCEWT_SVtU'
51
51
  };
52
52
  var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
53
53
  (0, _inherits2.default)(ChoiceType, _Component);
@@ -104,7 +104,7 @@ var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _d
104
104
  var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
105
105
  var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
106
106
  return /*#__PURE__*/_react.default.createElement(_index2.default, null, /*#__PURE__*/_react.default.createElement("div", {
107
- className: (0, _classnames.default)(styles.answerFrequencySummaryContainer)
107
+ className: (0, _classnames.default)(styles.tableContainer)
108
108
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
109
109
  caption: (0, _formatMessage.default)('Answer Frequency Summary')
110
110
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
4
 
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports.MatchingType = void 0;
11
11
 
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
13
 
16
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
@@ -29,20 +27,9 @@ var _propTypes2 = require("../../propTypes.js");
29
27
 
30
28
  var _matchingTypeOrderer = _interopRequireDefault(require("./utils/matchingTypeOrderer.js"));
31
29
 
32
- var _classnames = _interopRequireDefault(require("classnames"));
33
-
34
- var _uiThemeable = require("@instructure/ui-themeable");
30
+ var _presenter = require("../shared/AfsPartsContainer/presenter.js");
35
31
 
36
- var _dec, _class, _class2, _temp;
37
-
38
- var styles = {
39
- componentId: 'JFhmr',
40
- template: function template(theme) {
41
- return "\n\n.JFhmr_cVld{max-width:100%;width:calc(25% + 350px)}";
42
- },
43
- 'answerFrequencySummaryContainer': 'JFhmr_cVld'
44
- };
45
- var MatchingType = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
32
+ var MatchingType = /*#__PURE__*/function (_Component) {
46
33
  (0, _inherits2.default)(MatchingType, _Component);
47
34
 
48
35
  var _super = (0, _createSuper2.default)(MatchingType);
@@ -71,23 +58,26 @@ var MatchingType = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_class
71
58
 
72
59
  var orderedQuestionKeys = _matchingTypeOrderer.default.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
73
60
 
74
- var containerHalfWidth = orderedAnswerKeys.length <= 3;
75
- return /*#__PURE__*/_react.default.createElement(_index.default, null, /*#__PURE__*/_react.default.createElement("div", {
76
- className: (0, _classnames.default)((0, _defineProperty2.default)({}, styles.answerFrequencySummaryContainer, containerHalfWidth))
77
- }, /*#__PURE__*/_react.default.createElement(_index2.default, {
78
- itemId: itemId,
79
- answerSummary: answerSummary,
80
- orderedAnswerKeys: orderedAnswerKeys,
81
- orderedQuestionKeys: orderedQuestionKeys
82
- })));
61
+ var tableHalfWidth = orderedAnswerKeys.length <= 3;
62
+ return /*#__PURE__*/_react.default.createElement(_index.default, null, /*#__PURE__*/_react.default.createElement(_presenter.AfsPartsContainer, {
63
+ tableHalfWidth: tableHalfWidth,
64
+ afsTable: /*#__PURE__*/_react.default.createElement(_index2.default, {
65
+ itemId: itemId,
66
+ answerSummary: answerSummary,
67
+ orderedAnswerKeys: orderedAnswerKeys,
68
+ orderedQuestionKeys: orderedQuestionKeys
69
+ })
70
+ }));
83
71
  };
84
72
 
85
73
  return _this;
86
74
  }
87
75
 
88
76
  return MatchingType;
89
- }(_react.Component), _class2.propTypes = {
77
+ }(_react.Component);
78
+
79
+ exports.MatchingType = MatchingType;
80
+ MatchingType.propTypes = {
90
81
  itemId: _propTypes.default.number,
91
82
  answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType
92
- }.isRequired, _temp)) || _class);
93
- exports.MatchingType = MatchingType;
83
+ }.isRequired;
@@ -37,6 +37,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
37
37
 
38
38
  var _theme = _interopRequireDefault(require("./theme.js"));
39
39
 
40
+ var _quizInteractions = require("@instructure/quiz-interactions");
41
+
40
42
  var _dec, _class, _class2, _temp;
41
43
 
42
44
  var styles = {
@@ -170,6 +172,8 @@ var MatchingTypeTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
170
172
  });
171
173
  var questionRowHeaderId = "question-row-header-id-".concat(orderedQuestionKey, "-").concat(itemId);
172
174
  var rowKey = "row-".concat(orderedQuestionKey, "-").concat(itemId);
175
+ var extractedQuestionBody = (0, _quizInteractions.extractTextFromHtml)(question.body);
176
+ var questionBody = extractedQuestionBody.trim().length > 0 ? extractedQuestionBody : question.body;
173
177
  return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, {
174
178
  key: rowKey
175
179
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
@@ -178,7 +182,7 @@ var MatchingTypeTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
178
182
  theme: {
179
183
  padding: '0 0 1px 0'
180
184
  }
181
- }, question.body), answerCells);
185
+ }, questionBody), answerCells);
182
186
  };
183
187
 
184
188
  _this.render = function () {
@@ -0,0 +1,115 @@
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.OrderingType = 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 _matchingTypeOrderer = _interopRequireDefault(require("./utils/matchingTypeOrderer.js"));
23
+
24
+ var _index = _interopRequireDefault(require("../shared/AfsTableWrapper/index.js"));
25
+
26
+ var _index2 = _interopRequireDefault(require("./MatchingTypeTable/index.js"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _propTypes2 = require("../../propTypes.js");
31
+
32
+ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
33
+
34
+ var _index3 = _interopRequireDefault(require("../shared/AggregationTable/index.js"));
35
+
36
+ var _presenter = require("../shared/AfsPartsContainer/presenter.js");
37
+
38
+ var OrderingType = /*#__PURE__*/function (_Component) {
39
+ (0, _inherits2.default)(OrderingType, _Component);
40
+
41
+ var _super = (0, _createSuper2.default)(OrderingType);
42
+
43
+ function OrderingType() {
44
+ var _this;
45
+
46
+ (0, _classCallCheck2.default)(this, OrderingType);
47
+
48
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
49
+ args[_key] = arguments[_key];
50
+ }
51
+
52
+ _this = _super.call.apply(_super, [this].concat(args));
53
+
54
+ _this.updateAnswerBody = function (answerSummary) {
55
+ var translateBody = function translateBody(index) {
56
+ return "".concat((0, _formatMessage.default)('Order'), " ").concat(index);
57
+ };
58
+
59
+ var answerSummaryCopy = (0, _objectSpread2.default)({}, answerSummary);
60
+ Object.keys(answerSummaryCopy.questions).forEach(function (questionKey) {
61
+ Object.keys(answerSummaryCopy.questions[questionKey].answers).forEach(function (answerKey) {
62
+ var detail = answerSummaryCopy.questions[questionKey].answers[answerKey];
63
+ answerSummaryCopy.questions[questionKey].answers[answerKey] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, detail), {}, {
64
+ // Body cannot be used because because re-render of the component add Order
65
+ // as many time we have to re-render. Only re-assignment works.
66
+ body: translateBody(Number(answerKey) + 1)
67
+ });
68
+ });
69
+ });
70
+ return answerSummaryCopy;
71
+ };
72
+
73
+ _this.render = function () {
74
+ var _this$props = _this.props,
75
+ itemId = _this$props.itemId,
76
+ answerSummary = _this$props.answerSummary;
77
+
78
+ var updatedAnswerSummary = _this.updateAnswerBody(answerSummary);
79
+
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
+ 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, {
93
+ itemId: itemId,
94
+ answerSummary: updatedAnswerSummary,
95
+ orderedAnswerKeys: orderedAnswerKeys,
96
+ orderedQuestionKeys: orderedQuestionKeys
97
+ }),
98
+ aggregationTable: /*#__PURE__*/_react.default.createElement(_index3.default, {
99
+ itemId: itemId,
100
+ answerSummary: updatedAnswerSummary
101
+ })
102
+ }));
103
+ };
104
+
105
+ return _this;
106
+ }
107
+
108
+ return OrderingType;
109
+ }(_react.Component);
110
+
111
+ exports.OrderingType = OrderingType;
112
+ OrderingType.propTypes = {
113
+ itemId: _propTypes.default.number,
114
+ answerSummary: _propTypes2.matchingTypeAnswerSummaryPropType
115
+ }.isRequired;
@@ -9,5 +9,13 @@ Object.defineProperty(exports, "MatchingType", {
9
9
  return _MatchingType.MatchingType;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "OrderingType", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _OrderingType.OrderingType;
16
+ }
17
+ });
18
+
19
+ var _MatchingType = require("./MatchingType.js");
12
20
 
13
- var _MatchingType = require("./MatchingType.js");
21
+ var _OrderingType = require("./OrderingType.js");
@@ -56,6 +56,10 @@ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
56
56
  if (afsFlags.matchingEnabled) {
57
57
  _this.afsTableComponentMap.set('matching', _index3.MatchingType);
58
58
  }
59
+
60
+ if (afsFlags.orderingEnabled) {
61
+ _this.afsTableComponentMap.set('ordering', _index3.OrderingType);
62
+ }
59
63
  };
60
64
 
61
65
  _this.render = function () {
@@ -97,6 +101,8 @@ AnswerFrequencySummary.propTypes = {
97
101
  interactionType: _quizInteractions.PropTypes.string.isRequired,
98
102
  afsFlags: _quizInteractions.PropTypes.shape({
99
103
  formulaEnabled: _quizInteractions.PropTypes.bool.isRequired,
100
- matchingEnabled: _quizInteractions.PropTypes.bool.isRequired
104
+ matchingEnabled: _quizInteractions.PropTypes.bool.isRequired,
105
+ hotSpotEnabled: _quizInteractions.PropTypes.bool.isRequired,
106
+ orderingEnabled: _quizInteractions.PropTypes.bool.isRequired
101
107
  })
102
108
  }.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.AfsPartsContainer;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,92 @@
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.AfsPartsContainer = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
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 _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _uiThemeable = require("@instructure/ui-themeable");
25
+
26
+ var _classnames = _interopRequireDefault(require("classnames"));
27
+
28
+ var _dec, _class, _class2, _temp;
29
+
30
+ var styles = {
31
+ componentId: 'dApXZ',
32
+ template: function template(theme) {
33
+ return "\n\n.dApXZ_SVtU{max-width:100%;width:calc(25% + 350px)}\n\n.dApXZ_ellB{margin-top:13px}";
34
+ },
35
+ 'tableContainer': 'dApXZ_SVtU',
36
+ 'aggregateContainer': 'dApXZ_ellB'
37
+ };
38
+ var AfsPartsContainer = (_dec = (0, _uiThemeable.themeable)({}, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
39
+ (0, _inherits2.default)(AfsPartsContainer, _Component);
40
+
41
+ var _super = (0, _createSuper2.default)(AfsPartsContainer);
42
+
43
+ function AfsPartsContainer() {
44
+ var _this;
45
+
46
+ (0, _classCallCheck2.default)(this, AfsPartsContainer);
47
+
48
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
49
+ args[_key] = arguments[_key];
50
+ }
51
+
52
+ _this = _super.call.apply(_super, [this].concat(args));
53
+
54
+ _this.renderAggregationTable = function () {
55
+ var _this$props = _this.props,
56
+ afsTable = _this$props.afsTable,
57
+ aggregationTable = _this$props.aggregationTable;
58
+ return /*#__PURE__*/_react.default.createElement("div", {
59
+ className: (0, _classnames.default)(styles.tableContainer, (0, _defineProperty2.default)({}, styles.aggregateContainer, afsTable))
60
+ }, aggregationTable);
61
+ };
62
+
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);
70
+ };
71
+
72
+ _this.render = function () {
73
+ var _this$props3 = _this.props,
74
+ afsTable = _this$props3.afsTable,
75
+ aggregationTable = _this$props3.aggregationTable;
76
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, afsTable && _this.renderAfsTable(), aggregationTable && _this.renderAggregationTable());
77
+ };
78
+
79
+ return _this;
80
+ }
81
+
82
+ return AfsPartsContainer;
83
+ }(_react.Component), _class2.propTypes = {
84
+ tableHalfWidth: _propTypes.default.bool,
85
+ afsTable: _propTypes.default.node,
86
+ aggregationTable: _propTypes.default.node
87
+ }.isRequired, _class2.defaultProps = {
88
+ tableHalfWidth: true,
89
+ afsTable: null,
90
+ aggregationTable: null
91
+ }, _temp)) || _class);
92
+ exports.AfsPartsContainer = AfsPartsContainer;
@@ -18,6 +18,7 @@ function mapStateToProps(_state) {
18
18
  afsFlags: {
19
19
  formulaEnabled: (0, _featureCheck.featureOn)('ia_formula_afs'),
20
20
  matchingEnabled: (0, _featureCheck.featureOn)('ia_matching_afs'),
21
+ orderingEnabled: (0, _featureCheck.featureOn)('ia_ordering_afs'),
21
22
  hotSpotEnabled: (0, _featureCheck.featureOn)('ia_hot_spot_afs')
22
23
  }
23
24
  };
@@ -52,17 +52,17 @@ var _propTypes2 = require("../propTypes.js");
52
52
  var _dec, _class, _class2, _temp;
53
53
 
54
54
  var styles = {
55
- componentId: 'bLTgQ',
55
+ componentId: 'cnjis',
56
56
  template: function template(theme) {
57
- return "\n\n.bLTgQ_bqdH{column-gap:5px;display:flex;justify-content:space-between;padding-bottom:".concat(theme.metricsPadding || 'inherit', ";row-gap:8px}\n\n.bLTgQ_PFlN{border-radius:").concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.bLTgQ_dJIh{height:").concat(theme.cardHeight || 'inherit', "}\n\n.bLTgQ_eWEX{align-items:flex-end;align-self:flex-end;display:flex;height:100%;justify-content:flex-end}\n\n.bLTgQ_blRb{max-width:160px;padding-right:10px}\n\n.bLTgQ_bxzy{border-bottom:1px solid ").concat(theme.quizSummaryBorderBottomColor || 'inherit', ";margin-bottom:15px;padding-bottom:15px}\n\n.bLTgQ_dKIc{padding-bottom:15px}\n\n@media only screen and (max-width:25rem){.bLTgQ_dJIh{height:auto}.bLTgQ_PFlN{max-width:").concat(theme.cardWidth || 'inherit', ";width:auto}.bLTgQ_bqdH{flex-wrap:wrap}}");
57
+ return "\n\n.cnjis_bqdH{column-gap:26px;display:flex;justify-content:flex-start;padding-bottom:".concat(theme.metricsPadding || 'inherit', ";row-gap:8px}\n\n.cnjis_PFlN{border-radius:").concat(theme.cardBorderRadius || 'inherit', ";box-shadow:").concat(theme.cardBoxShadow || 'inherit', ";display:inline-flex;flex-direction:column;margin:").concat(theme.cardMargin || 'inherit', ";padding:").concat(theme.cardPadding || 'inherit', ";width:").concat(theme.cardWidth || 'inherit', "}\n\n.cnjis_dJIh{height:").concat(theme.cardHeight || 'inherit', "}\n\n.cnjis_eWEX{align-items:flex-end;align-self:flex-end;display:flex;height:100%;justify-content:flex-end}\n\n.cnjis_blRb{max-width:160px;padding-right:10px}\n\n.cnjis_bxzy{border-bottom:1px solid ").concat(theme.quizSummaryBorderBottomColor || 'inherit', ";margin-bottom:15px;padding-bottom:15px}\n\n.cnjis_dKIc{padding-bottom:15px}\n\n@media only screen and (max-width:25rem){.cnjis_dJIh{height:auto}.cnjis_PFlN{max-width:").concat(theme.cardWidth || 'inherit', ";width:auto}.cnjis_bqdH{flex-wrap:wrap}}");
58
58
  },
59
- 'metricsContainer': 'bLTgQ_bqdH',
60
- 'reportCard': 'bLTgQ_PFlN',
61
- 'emptyReportCard': 'bLTgQ_dJIh',
62
- 'emptyCardBodyContainer': 'bLTgQ_eWEX',
63
- 'dateContainer': 'bLTgQ_blRb',
64
- 'quizAnalysisSummary': 'bLTgQ_bxzy',
65
- 'titleContainer': 'bLTgQ_dKIc'
59
+ 'metricsContainer': 'cnjis_bqdH',
60
+ 'reportCard': 'cnjis_PFlN',
61
+ 'emptyReportCard': 'cnjis_dJIh',
62
+ 'emptyCardBodyContainer': 'cnjis_eWEX',
63
+ 'dateContainer': 'cnjis_blRb',
64
+ 'quizAnalysisSummary': 'cnjis_bxzy',
65
+ 'titleContainer': 'cnjis_dKIc'
66
66
  };
67
67
  var NewQuizAndItemAnalysisReportCardPresenter = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
68
68
  (0, _inherits2.default)(NewQuizAndItemAnalysisReportCardPresenter, _Component);
@@ -12,7 +12,7 @@ function generator(_ref) {
12
12
  return {
13
13
  metricsPadding: spacing.medium,
14
14
  cardHeight: '6rem',
15
- cardWidth: '16rem',
15
+ cardWidth: '19.5rem',
16
16
  cardPadding: spacing.medium,
17
17
  cardMargin: spacing.xSmall,
18
18
  cardBoxShadow: '1px 1px 3px 0 #ddd',