@instructure/quiz-core 18.3.1-rc.18 → 18.3.1-rc.20

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 (41) hide show
  1. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/ChoiceTypeTableRow/index.js +1 -0
  2. package/es/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable/AnswerSummaryTableRow → AnswerFrequencySummary/ChoiceType/ChoiceTypeTableRow}/presenter.js +6 -6
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/index.js +1 -0
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable/ChoiceInfo → AnswerFrequencySummary/ChoiceType}/presenter.js +46 -28
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/index.js +1 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +54 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +1 -0
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +22 -26
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/downForRepair.svg +58 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +1 -1
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +16 -12
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +92 -30
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +8 -6
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +11 -3
  15. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/ChoiceTypeTableRow/index.js +13 -0
  16. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable/AnswerSummaryTableRow → AnswerFrequencySummary/ChoiceType/ChoiceTypeTableRow}/presenter.js +8 -8
  17. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/index.js +13 -0
  18. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable/ChoiceInfo → AnswerFrequencySummary/ChoiceType}/presenter.js +53 -32
  19. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/index.js +13 -0
  20. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +75 -0
  21. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +1 -0
  22. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +21 -25
  23. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/downForRepair.svg +58 -0
  24. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +1 -1
  25. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/fetchReports.js +16 -12
  26. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/presenter.js +95 -30
  27. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +12 -6
  28. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +11 -2
  29. package/package.json +12 -11
  30. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/AnswerSummaryTableRow/index.js +0 -2
  31. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +0 -2
  32. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +0 -2
  33. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +0 -65
  34. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/AnswerSummaryTableRow/index.js +0 -11
  35. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +0 -11
  36. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +0 -11
  37. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +0 -87
  38. /package/es/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable/AnswerSummaryTableRow → AnswerFrequencySummary/ChoiceType/ChoiceTypeTableRow}/theme.js +0 -0
  39. /package/es/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable → AnswerFrequencySummary/ChoiceType}/theme.js +0 -0
  40. /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable/AnswerSummaryTableRow → AnswerFrequencySummary/ChoiceType/ChoiceTypeTableRow}/theme.js +0 -0
  41. /package/lib/reporting/components/resources/NewQuizAndItemAnalysis/{AnswerSummaryTable → AnswerFrequencySummary/ChoiceType}/theme.js +0 -0
@@ -15,6 +15,18 @@ import { QuizzesSpinner } from "../../../../common/components/shared/spinner/Spi
15
15
  import { Spinner } from '@instructure/ui-spinner';
16
16
  import { Button } from '@instructure/ui-buttons';
17
17
  import { Text } from '@instructure/ui-text';
18
+ import { getFailedToFetchReports } from "./errorMessages.js";
19
+ import { Img } from '@instructure/ui-img';
20
+ import errorImage from './downForRepair.svg';
21
+ import { PresentationContent, ScreenReaderContent } from '@instructure/ui-a11y-content';
22
+
23
+ var _ref = /*#__PURE__*/React.createElement(Flex.Item, {
24
+ align: "center"
25
+ }, /*#__PURE__*/React.createElement(PresentationContent, null, /*#__PURE__*/React.createElement(Img, {
26
+ src: errorImage,
27
+ alt: ""
28
+ })));
29
+
18
30
  export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component) {
19
31
  _inherits(NewQuizAndItemAnalysisPresenter, _Component);
20
32
 
@@ -32,13 +44,16 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
32
44
  _this = _super.call.apply(_super, [this].concat(args));
33
45
 
34
46
  _this.renderItemAnalyses = function () {
35
- var itemAnalyses = _this.props.itemAnalyses;
36
- return /*#__PURE__*/React.createElement("div", null, itemAnalyses.map(function (itemAnalysis) {
47
+ var itemAnalyses = _this.props.itemAnalyses || [];
48
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Heading, {
49
+ level: "h2",
50
+ color: "primary"
51
+ }, t('Item Analysis')), /*#__PURE__*/React.createElement("div", null, itemAnalyses.map(function (itemAnalysis) {
37
52
  return /*#__PURE__*/React.createElement(NewItemAnalysis, {
38
53
  key: itemAnalysis.metadata.item_id,
39
54
  itemAnalysis: itemAnalysis
40
55
  });
41
- }));
56
+ })));
42
57
  };
43
58
 
44
59
  _this.renderSpinner = function () {
@@ -51,6 +66,58 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
51
66
  }));
52
67
  };
53
68
 
69
+ _this.renderErrorBody = function () {
70
+ return /*#__PURE__*/React.createElement(Flex, {
71
+ alignItems: "end",
72
+ width: "82.5rem",
73
+ margin: "auto",
74
+ direction: "column"
75
+ }, _ref, /*#__PURE__*/React.createElement(Flex.Item, {
76
+ align: "center"
77
+ }, /*#__PURE__*/React.createElement(Text, {
78
+ size: "x-large",
79
+ color: "primary"
80
+ }, t('Error'))), /*#__PURE__*/React.createElement(Flex.Item, {
81
+ align: "center"
82
+ }, /*#__PURE__*/React.createElement(ScreenReaderContent, null, getFailedToFetchReports()), /*#__PURE__*/React.createElement(Text, {
83
+ size: "x-small",
84
+ color: "primary"
85
+ }, getFailedToFetchReports())));
86
+ };
87
+
88
+ _this.renderTop = function () {
89
+ var _this$props = _this.props,
90
+ analysisError = _this$props.analysisError,
91
+ generationInProgress = _this$props.generationInProgress,
92
+ quizAnalysis = _this$props.quizAnalysis;
93
+ var shouldShowError = analysisError && !generationInProgress;
94
+ return /*#__PURE__*/React.createElement(Flex, {
95
+ alignItems: "end",
96
+ width: "82.5rem",
97
+ margin: "auto",
98
+ direction: "column"
99
+ }, /*#__PURE__*/React.createElement(Flex.Item, {
100
+ overflowY: "visible"
101
+ }, _this.renderGenerationButton()), /*#__PURE__*/React.createElement(Flex.Item, null, shouldShowError && /*#__PURE__*/React.createElement(Text, {
102
+ size: "x-small",
103
+ weight: "bold",
104
+ color: "danger"
105
+ }, analysisError)), /*#__PURE__*/React.createElement(Flex.Item, null, /*#__PURE__*/React.createElement(AnalysisUpdateDate, {
106
+ date: quizAnalysis === null || quizAnalysis === void 0 ? void 0 : quizAnalysis.created_timestamp
107
+ })));
108
+ };
109
+
110
+ _this.renderTopOnFailedFetch = function () {
111
+ return /*#__PURE__*/React.createElement(Flex, {
112
+ alignItems: "end",
113
+ width: "82.5rem",
114
+ margin: "auto",
115
+ direction: "column"
116
+ }, /*#__PURE__*/React.createElement(Flex.Item, {
117
+ overflowY: "visible"
118
+ }, _this.renderGenerationButton()));
119
+ };
120
+
54
121
  _this.renderOngoingGenerationButton = function () {
55
122
  return /*#__PURE__*/React.createElement(Button, {
56
123
  color: "primary-inverse",
@@ -79,7 +146,23 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
79
146
  };
80
147
 
81
148
  _this.renderGenerationButton = function () {
82
- return _this.props.generationInProgress ? _this.renderOngoingGenerationButton() : _this.renderStartGenerationButton();
149
+ var generationInProgress = _this.props.generationInProgress;
150
+ var buttonVariant = generationInProgress ? _this.renderOngoingGenerationButton() : _this.renderStartGenerationButton();
151
+ return /*#__PURE__*/React.createElement(Flex.Item, {
152
+ align: "end",
153
+ padding: "xx-small"
154
+ }, buttonVariant);
155
+ };
156
+
157
+ _this.renderBody = function () {
158
+ var _this$props2 = _this.props,
159
+ fetchInProgress = _this$props2.fetchInProgress,
160
+ quizAnalysis = _this$props2.quizAnalysis; // TODO need to refactor the NewQuizAnalysis to move out spinner logic
161
+
162
+ return /*#__PURE__*/React.createElement(React.Fragment, null, (fetchInProgress || quizAnalysis) && /*#__PURE__*/React.createElement(NewQuizAnalysis, {
163
+ quizAnalysis: quizAnalysis,
164
+ fetchInProgress: fetchInProgress
165
+ }), fetchInProgress ? _this.renderSpinner() : _this.renderItemAnalyses());
83
166
  };
84
167
 
85
168
  _this.handleGeneration = function (_event) {
@@ -94,34 +177,12 @@ export var NewQuizAndItemAnalysisPresenter = /*#__PURE__*/function (_Component)
94
177
  _createClass(NewQuizAndItemAnalysisPresenter, [{
95
178
  key: "render",
96
179
  value: function render() {
97
- var _this$props = this.props,
98
- analysisError = _this$props.analysisError,
99
- fetchInProgress = _this$props.fetchInProgress,
100
- generationInProgress = _this$props.generationInProgress,
101
- quizAnalysis = _this$props.quizAnalysis;
102
- var shouldShowError = analysisError && !fetchInProgress && !generationInProgress;
180
+ var _this$props3 = this.props,
181
+ analysisFetchError = _this$props3.analysisFetchError,
182
+ fetchInProgress = _this$props3.fetchInProgress;
103
183
  return /*#__PURE__*/React.createElement("div", {
104
184
  className: "fs-mask"
105
- }, /*#__PURE__*/React.createElement(Flex, {
106
- alignItems: "end",
107
- width: "82.5rem",
108
- margin: "auto",
109
- direction: "column"
110
- }, /*#__PURE__*/React.createElement(Flex.Item, {
111
- overflowY: "visible"
112
- }, !fetchInProgress && this.renderGenerationButton()), /*#__PURE__*/React.createElement(Flex.Item, null, shouldShowError && /*#__PURE__*/React.createElement(Text, {
113
- size: "x-small",
114
- weight: "bold",
115
- color: "danger"
116
- }, analysisError)), /*#__PURE__*/React.createElement(Flex.Item, null, !fetchInProgress && /*#__PURE__*/React.createElement(AnalysisUpdateDate, {
117
- date: quizAnalysis.created_timestamp
118
- }))), /*#__PURE__*/React.createElement(NewQuizAnalysis, {
119
- quizAnalysis: quizAnalysis,
120
- fetchInProgress: fetchInProgress
121
- }), !fetchInProgress && /*#__PURE__*/React.createElement(Heading, {
122
- level: "h2",
123
- color: "primary"
124
- }, t('Item Analysis')), fetchInProgress ? this.renderSpinner() : this.renderItemAnalyses());
185
+ }, !fetchInProgress && (analysisFetchError ? this.renderTopOnFailedFetch() : this.renderTop()), analysisFetchError ? this.renderErrorBody() : this.renderBody());
125
186
  }
126
187
  }]);
127
188
 
@@ -133,6 +194,7 @@ NewQuizAndItemAnalysisPresenter.propTypes = {
133
194
  itemAnalyses: PropTypes.arrayOf(itemAnalysisPropType),
134
195
  fetchInProgress: PropTypes.bool.isRequired,
135
196
  generationInProgress: PropTypes.bool.isRequired,
197
+ analysisFetchError: PropTypes.bool.isRequired,
136
198
  analysisError: PropTypes.string,
137
199
  generateReports: PropTypes.func.isRequired
138
200
  };
@@ -43,15 +43,17 @@ export var itemAnalysisPropType = PropTypes.shape({
43
43
  }),
44
44
  answer_summary: answerSummaryPropType
45
45
  });
46
- export var answerSummaryPropType = PropTypes.shape({
46
+ var noAnswerPropType = PropTypes.shape({
47
+ count: PropTypes.number,
48
+ percentage: PropTypes.number
49
+ });
50
+ export var choiceTypeAnswerSummaryPropType = PropTypes.shape({
47
51
  choices: PropTypes.arrayOf(PropTypes.shape({
48
52
  body: PropTypes.string,
49
53
  correct: PropTypes.bool,
50
54
  count: PropTypes.number,
51
55
  percentage: PropTypes.number
52
56
  })),
53
- no_answer: PropTypes.shape({
54
- count: PropTypes.number,
55
- percentage: PropTypes.number
56
- })
57
- });
57
+ no_answer: noAnswerPropType
58
+ });
59
+ export var answerSummaryPropType = PropTypes.oneOfType([choiceTypeAnswerSummaryPropType]);
@@ -1,7 +1,8 @@
1
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- import React, { useEffect } from 'react';
5
+ import React, { useEffect, useState } from 'react';
5
6
  import PropTypes from 'prop-types';
6
7
  import { itemAnalysisPropType, quizAnalysisPropType } from "./propTypes.js";
7
8
  import { fetchReports } from "./fetchReports.js";
@@ -33,6 +34,11 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
33
34
 
34
35
  WithAnalysisStatePresenter.displayName = "WithAnalysisStatePresenter(".concat(OriginalComponent.displayName || OriginalComponent.name, ")");
35
36
 
37
+ var _useState = useState(false),
38
+ _useState2 = _slicedToArray(_useState, 2),
39
+ analysisFetchError = _useState2[0],
40
+ setAnalysisFetchError = _useState2[1];
41
+
36
42
  var instrumentedFetchReports = function instrumentedFetchReports() {
37
43
  return fetchReports({
38
44
  activeQuizId: activeQuizId,
@@ -45,7 +51,8 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
45
51
  setGenerationInProgress: setGenerationInProgress,
46
52
  setFetchInProgress: setFetchInProgress,
47
53
  setQuizAnalysis: setQuizAnalysis,
48
- getErrorMessageForCode: getErrorMessageForCode
54
+ getErrorMessageForCode: getErrorMessageForCode,
55
+ setAnalysisFetchError: setAnalysisFetchError
49
56
  });
50
57
  };
51
58
 
@@ -164,7 +171,8 @@ export var withAnalysisStatePresenter = function withAnalysisStatePresenter(Orig
164
171
  fetchInProgress: fetchInProgress,
165
172
  generationInProgress: generationInProgress,
166
173
  analysisError: analysisError,
167
- generateReports: generateReports
174
+ generateReports: generateReports,
175
+ analysisFetchError: analysisFetchError
168
176
  }, passThroughProps));
169
177
  };
170
178
 
@@ -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.ChoiceTypeTableRow;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -7,7 +7,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.AnswerSummaryTableRow = void 0;
10
+ exports.ChoiceTypeTableRow = void 0;
11
11
 
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
@@ -54,15 +54,15 @@ var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, nu
54
54
 
55
55
  var _ref2 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconXSolid, null);
56
56
 
57
- var AnswerSummaryTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
58
- (0, _inherits2.default)(AnswerSummaryTableRow, _Component);
57
+ var ChoiceTypeTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
58
+ (0, _inherits2.default)(ChoiceTypeTableRow, _Component);
59
59
 
60
- var _super = (0, _createSuper2.default)(AnswerSummaryTableRow);
60
+ var _super = (0, _createSuper2.default)(ChoiceTypeTableRow);
61
61
 
62
- function AnswerSummaryTableRow() {
62
+ function ChoiceTypeTableRow() {
63
63
  var _this;
64
64
 
65
- (0, _classCallCheck2.default)(this, AnswerSummaryTableRow);
65
+ (0, _classCallCheck2.default)(this, ChoiceTypeTableRow);
66
66
 
67
67
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
68
68
  args[_key] = arguments[_key];
@@ -136,7 +136,7 @@ var AnswerSummaryTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default,
136
136
  return _this;
137
137
  }
138
138
 
139
- return AnswerSummaryTableRow;
139
+ return ChoiceTypeTableRow;
140
140
  }(_react.Component), _class2.displayName = 'Row', _class2.propTypes = {
141
141
  choice: _propTypes.default.shape({
142
142
  body: _propTypes.default.string,
@@ -146,4 +146,4 @@ var AnswerSummaryTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default,
146
146
  }),
147
147
  choiceIndex: _propTypes.default.number
148
148
  }.isRequired, _temp)) || _class);
149
- exports.AnswerSummaryTableRow = AnswerSummaryTableRow;
149
+ exports.ChoiceTypeTableRow = ChoiceTypeTableRow;
@@ -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.ChoiceType;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.ChoiceInfo = void 0;
10
+ exports.ChoiceType = void 0;
11
11
 
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
 
@@ -23,21 +23,40 @@ var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/f
23
23
 
24
24
  var _uiTable = require("@instructure/ui-table");
25
25
 
26
- var _uiA11yContent = require("@instructure/ui-a11y-content");
26
+ var _uiFlex = require("@instructure/ui-flex");
27
+
28
+ var _uiHeading = require("@instructure/ui-heading");
27
29
 
28
- var _index = _interopRequireDefault(require("../AnswerSummaryTableRow/index.js"));
30
+ var _uiThemeable = require("@instructure/ui-themeable");
31
+
32
+ var _uiA11yContent = require("@instructure/ui-a11y-content");
29
33
 
30
34
  var _propTypes = _interopRequireDefault(require("prop-types"));
31
35
 
32
- var ChoiceInfo = /*#__PURE__*/function (_Component) {
33
- (0, _inherits2.default)(ChoiceInfo, _Component);
36
+ var _index = _interopRequireDefault(require("./ChoiceTypeTableRow/index.js"));
37
+
38
+ var _propTypes2 = require("../../propTypes.js");
39
+
40
+ var _theme = _interopRequireDefault(require("./theme.js"));
34
41
 
35
- var _super = (0, _createSuper2.default)(ChoiceInfo);
42
+ var _dec, _class, _class2, _temp;
36
43
 
37
- function ChoiceInfo() {
44
+ var styles = {
45
+ componentId: 'ZuPLN',
46
+ template: function template(theme) {
47
+ return "\n\n.ZuPLN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}");
48
+ },
49
+ 'tableWrapper': 'ZuPLN_rMrG'
50
+ };
51
+ var ChoiceType = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
52
+ (0, _inherits2.default)(ChoiceType, _Component);
53
+
54
+ var _super = (0, _createSuper2.default)(ChoiceType);
55
+
56
+ function ChoiceType() {
38
57
  var _this;
39
58
 
40
- (0, _classCallCheck2.default)(this, ChoiceInfo);
59
+ (0, _classCallCheck2.default)(this, ChoiceType);
41
60
 
42
61
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43
62
  args[_key] = arguments[_key];
@@ -70,19 +89,32 @@ var ChoiceInfo = /*#__PURE__*/function (_Component) {
70
89
  return _this;
71
90
  }
72
91
 
73
- (0, _createClass2.default)(ChoiceInfo, [{
92
+ (0, _createClass2.default)(ChoiceType, [{
74
93
  key: "render",
75
94
  value: function render() {
76
95
  var _this$props = this.props,
77
- choices = _this$props.choices,
78
- noAnswer = _this$props.noAnswer,
96
+ answerSummary = _this$props.answerSummary,
79
97
  itemId = _this$props.itemId;
98
+ var choices = answerSummary.choices,
99
+ noAnswer = answerSummary.no_answer;
80
100
  var numberOfChoices = choices.length;
81
101
  var spacingHeaderId = "answer-frequency-summary-spacing-".concat(itemId);
82
102
  var answerHeaderId = "answer-frequency-summary-answer-".concat(itemId);
83
103
  var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
84
104
  var percentageHeaderId = "answer-frequency-summary-percentage-".concat(itemId);
85
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
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, {
86
118
  caption: (0, _formatMessage.default)('Answer Frequency Summary')
87
119
  }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
88
120
  id: spacingHeaderId,
@@ -97,24 +129,13 @@ var ChoiceInfo = /*#__PURE__*/function (_Component) {
97
129
  id: percentageHeaderId,
98
130
  height: "47px",
99
131
  textAlign: "center"
100
- }, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices))));
132
+ }, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices)))))));
101
133
  }
102
134
  }]);
103
- ChoiceInfo.displayName = "ChoiceInfo";
104
- return ChoiceInfo;
105
- }(_react.Component);
106
-
107
- exports.ChoiceInfo = ChoiceInfo;
108
- ChoiceInfo.propTypes = {
135
+ ChoiceType.displayName = "ChoiceType";
136
+ return ChoiceType;
137
+ }(_react.Component), _class2.propTypes = {
109
138
  itemId: _propTypes.default.number,
110
- choices: _propTypes.default.arrayOf(_propTypes.default.shape({
111
- body: _propTypes.default.string,
112
- correct: _propTypes.default.bool,
113
- count: _propTypes.default.number,
114
- percentage: _propTypes.default.number
115
- })),
116
- noAnswer: _propTypes.default.shape({
117
- count: _propTypes.default.number,
118
- percentage: _propTypes.default.number
119
- })
120
- }.isRequired;
139
+ answerSummary: _propTypes2.choiceTypeAnswerSummaryPropType
140
+ }.isRequired, _temp)) || _class);
141
+ exports.ChoiceType = ChoiceType;
@@ -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.AnswerFrequencySummary;
10
+ }
11
+ });
12
+
13
+ var _presenter = require("./presenter.js");
@@ -0,0 +1,75 @@
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.AnswerFrequencySummary = 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 _quizInteractions = require("@instructure/quiz-interactions");
21
+
22
+ var _presenter = require("./ChoiceType/presenter.js");
23
+
24
+ var _propTypes = require("../propTypes.js");
25
+
26
+ var afsTableComponentMap = new Map();
27
+ afsTableComponentMap.set('true-false', _presenter.ChoiceType);
28
+ afsTableComponentMap.set('choice', _presenter.ChoiceType);
29
+ afsTableComponentMap.set('multi-answer', _presenter.ChoiceType);
30
+
31
+ var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
32
+ (0, _inherits2.default)(AnswerFrequencySummary, _Component);
33
+
34
+ var _super = (0, _createSuper2.default)(AnswerFrequencySummary);
35
+
36
+ function AnswerFrequencySummary() {
37
+ var _this;
38
+
39
+ (0, _classCallCheck2.default)(this, AnswerFrequencySummary);
40
+
41
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
42
+ args[_key] = arguments[_key];
43
+ }
44
+
45
+ _this = _super.call.apply(_super, [this].concat(args));
46
+
47
+ _this.render = function () {
48
+ var _this$props = _this.props,
49
+ itemId = _this$props.itemId,
50
+ answerSummary = _this$props.answerSummary,
51
+ interactionType = _this$props.interactionType;
52
+ var AfsTableComponent = afsTableComponentMap.get(interactionType);
53
+
54
+ if (!AfsTableComponent) {
55
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
56
+ }
57
+
58
+ return /*#__PURE__*/_react.default.createElement(AfsTableComponent, {
59
+ itemId: itemId,
60
+ answerSummary: answerSummary
61
+ });
62
+ };
63
+
64
+ return _this;
65
+ }
66
+
67
+ return AnswerFrequencySummary;
68
+ }(_react.Component);
69
+
70
+ exports.AnswerFrequencySummary = AnswerFrequencySummary;
71
+ AnswerFrequencySummary.propTypes = {
72
+ itemId: _quizInteractions.PropTypes.number,
73
+ answerSummary: _propTypes.answerSummaryPropType,
74
+ interactionType: _quizInteractions.PropTypes.string
75
+ }.isRequired;
@@ -13,6 +13,7 @@ var _presenter = require("./presenter.js");
13
13
 
14
14
  function mapStateToProps(_state) {
15
15
  return {
16
+ // This would be able to switch of all AFS Tables
16
17
  showFrequencyTable: (0, _featureCheck.featureOn)('show_improved_item_analysis_frequency_table')
17
18
  };
18
19
  }
@@ -47,7 +47,7 @@ var _classnames3 = _interopRequireDefault(require("classnames"));
47
47
 
48
48
  var _interactionTypeMetadata = require("../../../../../common/util/interactionTypeMetadata.js");
49
49
 
50
- var _index5 = _interopRequireDefault(require("../AnswerSummaryTable/index.js"));
50
+ var _index5 = _interopRequireDefault(require("../AnswerFrequencySummary/index.js"));
51
51
 
52
52
  var _propTypes = require("../propTypes.js");
53
53
 
@@ -62,22 +62,21 @@ var _quizInteractions = require("@instructure/quiz-interactions");
62
62
  var _dec, _class, _class2, _temp;
63
63
 
64
64
  var styles = {
65
- componentId: 'bQIMq',
65
+ componentId: 'ewlJT',
66
66
  template: function template(theme) {
67
- return "\n\n.bQIMq_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', "}\n\n.bQIMq_bwlc{gap:24px;justify-content:space-between;position:relative;row-gap:32px}\n\n.bQIMq_bwlc,.bQIMq_bqdH{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap}\n\n.bQIMq_bqdH{row-gap:24px}\n\n.bQIMq_NpIG{position:absolute;right:").concat(theme.viewPaddingRight || 'inherit', ";top:0}\n\n.bQIMq_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.bQIMq_fFDJ{display:none}\n\n.bQIMq_fxkJ{margin-top:-8px}\n\n.bQIMq_esVF{min-height:48px}\n\n.bQIMq_eTZq{position:relative}\n\n.bQIMq_eTZq:after{background:linear-gradient(180deg,hsla(0,0%,100%,0),#fff);content:\"\";height:48px;left:0;position:absolute;top:0;width:100%}\n\n.bQIMq_fkgx{max-width:100%;width:calc(25% + 350px)}");
67
+ return "\n\n.ewlJT_eKXQ{padding:".concat(theme.cardWrapperPadding || 'inherit', "}\n\n.ewlJT_bwlc{gap:24px;justify-content:space-between;position:relative;row-gap:32px}\n\n.ewlJT_bwlc,.ewlJT_bqdH{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap}\n\n.ewlJT_bqdH{row-gap:24px}\n\n.ewlJT_NpIG{position:absolute;right:").concat(theme.viewPaddingRight || 'inherit', ";top:0}\n\n.ewlJT_eoBe{font-size:").concat(theme.metricNumberContextFontSize || 'inherit', ";font-weight:").concat(theme.metricNumberContextFontWeight || 'inherit', "}\n\n.ewlJT_fFDJ{display:none}\n\n.ewlJT_fxkJ{margin-top:-8px}\n\n.ewlJT_esVF{min-height:48px}\n\n.ewlJT_eTZq{position:relative}\n\n.ewlJT_eTZq:after{background:linear-gradient(180deg,hsla(0,0%,100%,0),#fff);content:\"\";height:48px;left:0;position:absolute;top:0;width:100%}\n\n.ewlJT_cVld{max-width:100%;width:calc(25% + 350px)}");
68
68
  },
69
- 'cardWrapper': 'bQIMq_eKXQ',
70
- 'itemCardInnerContainer': 'bQIMq_bwlc',
71
- 'metricsContainer': 'bQIMq_bqdH',
72
- 'itemCardToggleButtonWrapper': 'bQIMq_NpIG',
73
- 'metricNumberContext': 'bQIMq_eoBe',
74
- 'hiddenMetrics': 'bQIMq_fFDJ',
75
- 'itemBodyToggleButtonWrapper': 'bQIMq_fxkJ',
76
- 'itemBody': 'bQIMq_esVF',
77
- 'hiddenItemBody': 'bQIMq_eTZq',
78
- 'answerSummaryTableContainer': 'bQIMq_fkgx'
69
+ 'cardWrapper': 'ewlJT_eKXQ',
70
+ 'itemCardInnerContainer': 'ewlJT_bwlc',
71
+ 'metricsContainer': 'ewlJT_bqdH',
72
+ 'itemCardToggleButtonWrapper': 'ewlJT_NpIG',
73
+ 'metricNumberContext': 'ewlJT_eoBe',
74
+ 'hiddenMetrics': 'ewlJT_fFDJ',
75
+ 'itemBodyToggleButtonWrapper': 'ewlJT_fxkJ',
76
+ 'itemBody': 'ewlJT_esVF',
77
+ 'hiddenItemBody': 'ewlJT_eTZq',
78
+ 'answerFrequencySummaryContainer': 'ewlJT_cVld'
79
79
  };
80
- var supportedTables = ['choice', 'true-false', 'multi-answer'];
81
80
  var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
82
81
  (0, _inherits2.default)(NewItemAnalysis, _Component);
83
82
 
@@ -229,19 +228,16 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
229
228
  }))))));
230
229
  };
231
230
 
232
- _this.renderAnswerSummaryTable = function (itemId, answer_summary, isSupportedTable, metricsClass) {
233
- return /*#__PURE__*/_react.default.createElement("div", {
231
+ _this.renderAnswerSummaryTable = function (itemId, answer_summary, metricsClass, interactionType) {
232
+ return /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, /*#__PURE__*/_react.default.createElement("div", {
234
233
  className: metricsClass
235
234
  }, /*#__PURE__*/_react.default.createElement("div", {
236
- className: styles.answerSummaryTableContainer
237
- }, isSupportedTable && /*#__PURE__*/_react.default.createElement(_uiFlex.Flex, {
238
- direction: "row"
239
- }, /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, {
240
- shouldGrow: true
235
+ className: styles.answerFrequencySummaryContainer
241
236
  }, /*#__PURE__*/_react.default.createElement(_index5.default, {
242
237
  itemId: itemId,
243
- answerSummary: answer_summary
244
- })))));
238
+ answerSummary: answer_summary,
239
+ interactionType: interactionType
240
+ }))));
245
241
  };
246
242
 
247
243
  return _this;
@@ -291,7 +287,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
291
287
  metadata = itemAnalysis.metadata,
292
288
  scores = itemAnalysis.scores;
293
289
  var itemId = metadata.item_id;
294
- var isSupportedTable = supportedTables.includes(metadata.interaction_type);
290
+ var interactionType = metadata.interaction_type;
295
291
  var metricsClass = (0, _classnames3.default)((0, _defineProperty2.default)({}, styles.hiddenMetrics, !this.state.metricsExpanded));
296
292
  var itemBodyClass = (0, _classnames3.default)(styles.itemBody, (0, _defineProperty2.default)({}, styles.hiddenItemBody, this.isBodyHigherThanContainer() && !this.state.bodyExpanded));
297
293
  var title = (_metadata$item_title = metadata.item_title) !== null && _metadata$item_title !== void 0 ? _metadata$item_title : (0, _formatMessage.default)('Untitled item');
@@ -315,7 +311,7 @@ var NewItemAnalysis = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
315
311
  padding: "small xx-small none none",
316
312
  overflowY: "hidden",
317
313
  size: !this.state.bodyExpanded ? '60px' : void 0
318
- }, this.renderRichContent(metadata.item_body, itemBodyClass, itemId)))), /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, this.renderMetrics(scores, metricsClass)))), showFrequencyTable && /*#__PURE__*/_react.default.createElement(_uiFlex.Flex.Item, null, this.renderAnswerSummaryTable(itemId, answer_summary, isSupportedTable, metricsClass))));
314
+ }, 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)));
319
315
  }
320
316
  }]);
321
317
  NewItemAnalysis.displayName = "NewItemAnalysis";