@instructure/quiz-core 18.5.1-rc.1 → 18.5.1-rc.10

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 (67) hide show
  1. package/es/common/util/Fetcher.js +15 -3
  2. package/es/reporting/api/getAnalysesExport.js +1 -0
  3. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +8 -5
  4. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/index.js +1 -0
  5. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +56 -0
  6. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/theme.js +5 -0
  7. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +10 -19
  8. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +67 -0
  9. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/index.js +1 -0
  10. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +180 -0
  11. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +7 -0
  12. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +1 -0
  13. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/utils/matchingTypeOrderer.js +42 -0
  14. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +14 -3
  15. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/index.js +1 -0
  16. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +58 -0
  17. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/theme.js +5 -0
  18. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/index.js +1 -0
  19. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +186 -0
  20. package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +10 -0
  21. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -1
  22. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +5 -7
  23. package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +20 -1
  24. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +9 -9
  25. package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
  26. package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +16 -3
  27. package/es/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +3 -0
  28. package/es/reporting/components/resources/NewQuizAndItemAnalysis/exportReports.js +65 -0
  29. package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +33 -8
  30. package/es/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +4 -0
  31. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +2 -0
  32. package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +41 -1
  33. package/es/reporting/components/resources/ReportCard/theme.js +1 -1
  34. package/lib/common/util/Fetcher.js +15 -2
  35. package/lib/reporting/api/getAnalysesExport.js +1 -0
  36. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +8 -5
  37. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/index.js +13 -0
  38. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +77 -0
  39. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/theme.js +12 -0
  40. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +12 -21
  41. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +93 -0
  42. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/index.js +13 -0
  43. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +205 -0
  44. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +14 -0
  45. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +13 -0
  46. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/utils/matchingTypeOrderer.js +52 -0
  47. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +19 -6
  48. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/index.js +13 -0
  49. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +79 -0
  50. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/theme.js +12 -0
  51. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/index.js +13 -0
  52. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +212 -0
  53. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +17 -0
  54. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +2 -1
  55. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +6 -8
  56. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +20 -1
  57. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +9 -9
  58. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
  59. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +16 -3
  60. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +7 -1
  61. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/exportReports.js +80 -0
  62. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +44 -9
  63. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +10 -2
  64. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +3 -0
  65. package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +43 -1
  66. package/lib/reporting/components/resources/ReportCard/theme.js +1 -1
  67. package/package.json +10 -9
@@ -1,5 +1,6 @@
1
1
  import _regeneratorRuntime from "@babel/runtime/regenerator";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
4
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
5
  import _createClass from "@babel/runtime/helpers/esm/createClass";
5
6
  import { decamelizeKeys } from 'humps';
@@ -7,7 +8,7 @@ import queryString from 'query-string';
7
8
  import fetch from 'isomorphic-fetch';
8
9
  import t from '@instructure/quiz-i18n/es/format-message';
9
10
  import jsonify from "./jsonify.js";
10
- import { httpHeaders } from "./httpHeaders.js";
11
+ import { httpHeaders, jwtHeader } from "./httpHeaders.js";
11
12
  import store from "../../reduxStore.js";
12
13
  import { callbacksCompleteForCall, errorCallFor, startCallFor, successCallFor } from "./callHelpers.js";
13
14
  import { addError, addSuccess } from "../actions/alerts.js";
@@ -33,7 +34,8 @@ export var Fetcher = /*#__PURE__*/function () {
33
34
  successMessage = _ref.successMessage,
34
35
  onError = _ref.onError,
35
36
  cloneResponseForError = _ref.cloneResponseForError,
36
- asyncResponseHandler = _ref.asyncResponseHandler;
37
+ asyncResponseHandler = _ref.asyncResponseHandler,
38
+ injectMissingUserToken = _ref.injectMissingUserToken;
37
39
 
38
40
  _classCallCheck(this, Fetcher);
39
41
 
@@ -43,6 +45,7 @@ export var Fetcher = /*#__PURE__*/function () {
43
45
  this.cloneResponseForError = cloneResponseForError || false;
44
46
  this.callType = callType;
45
47
  this.headers = headers;
48
+ this.injectMissingUserToken = injectMissingUserToken || false;
46
49
  this.successMessage = successMessage;
47
50
  this.onError = onError;
48
51
  this.asyncResponseHandler = asyncResponseHandler || jsonify;
@@ -91,7 +94,16 @@ export var Fetcher = /*#__PURE__*/function () {
91
94
  }, {
92
95
  key: "callHeaders",
93
96
  value: function callHeaders() {
94
- return this.headers || httpHeaders(this.getState().getIn(['config', 'userToken']));
97
+ if (!this.headers) {
98
+ return httpHeaders(this.getState().getIn(['config', 'userToken']));
99
+ }
100
+
101
+ if (!this.injectMissingUserToken) {
102
+ return this.headers;
103
+ }
104
+
105
+ var userToken = this.getState().getIn(['config', 'userToken']);
106
+ return _objectSpread(_objectSpread({}, jwtHeader(userToken)), this.headers);
95
107
  }
96
108
  }, {
97
109
  key: "handleSuccess",
@@ -13,6 +13,7 @@ var getFetcher = function getFetcher(format) {
13
13
  headers: {
14
14
  'Accept': mimeType
15
15
  },
16
+ injectUserToken: true,
16
17
  asyncResponseHandler: function asyncResponseHandler(response) {
17
18
  return response;
18
19
  }
@@ -8,11 +8,12 @@ var _dec, _class, _class2, _temp;
8
8
  import { themeable } from '@instructure/ui-themeable';
9
9
  import theme from "./theme.js";
10
10
  var styles = {
11
- componentId: 'ethsC',
11
+ componentId: 'fKESK',
12
12
  template: function template(theme) {
13
- return "\n\n.ethsC_eckF{margin:0;max-width:159px;text-transform:capitalize}";
13
+ return "\n\n.fKESK_eckF{margin:0;max-width:159px;text-transform:capitalize}\n\n.fKESK_CIyo{width:90px}";
14
14
  },
15
- 'metricLabel': 'ethsC_eckF'
15
+ 'metricLabel': 'fKESK_eckF',
16
+ 'metricWrapper': 'fKESK_CIyo'
16
17
  };
17
18
  import React, { Component } from 'react';
18
19
  import { getSanitizedMetricValue } from "../utils.js";
@@ -37,7 +38,9 @@ export var AnalysisMetric = (_dec = themeable(theme, styles), _dec(_class = (_te
37
38
  label = _this$props.label,
38
39
  value = _this$props.value,
39
40
  suffix = _this$props.suffix;
40
- return /*#__PURE__*/React.createElement(Metric, {
41
+ return /*#__PURE__*/React.createElement("div", {
42
+ className: styles.metricWrapper
43
+ }, /*#__PURE__*/React.createElement(Metric, {
41
44
  theme: {
42
45
  valueFontWeight: 500,
43
46
  padding: '0'
@@ -48,7 +51,7 @@ export var AnalysisMetric = (_dec = themeable(theme, styles), _dec(_class = (_te
48
51
  className: styles.metricLabel
49
52
  }, label),
50
53
  renderValue: getSanitizedMetricValue(value, suffix)
51
- });
54
+ }));
52
55
  }
53
56
  }]);
54
57
 
@@ -0,0 +1 @@
1
+ export { AggregationType as default } from "./presenter.js";
@@ -0,0 +1,56 @@
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 PropTypes from 'prop-types';
9
+ import AggregationTable from "../shared/AggregationTable/index.js";
10
+ import { onlyAggregatePropType } from "../../propTypes.js";
11
+ import { AfsTableWrapper } from "../shared/AfsTableWrapper/presenter.js";
12
+ import classNames from 'classnames';
13
+ var styles = {
14
+ componentId: 'JFhmr',
15
+ template: function template(theme) {
16
+ return "\n\n.JFhmr_cVld{max-width:100%;width:calc(25% + 350px)}";
17
+ },
18
+ 'answerFrequencySummaryContainer': 'JFhmr_cVld'
19
+ };
20
+ import { themeable } from '@instructure/ui-themeable';
21
+ export var AggregationType = (_dec = themeable({}, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
22
+ _inherits(AggregationType, _Component);
23
+
24
+ var _super = _createSuper(AggregationType);
25
+
26
+ function AggregationType() {
27
+ var _this;
28
+
29
+ _classCallCheck(this, AggregationType);
30
+
31
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
32
+ args[_key] = arguments[_key];
33
+ }
34
+
35
+ _this = _super.call.apply(_super, [this].concat(args));
36
+
37
+ _this.render = function () {
38
+ var _this$props = _this.props,
39
+ answerSummary = _this$props.answerSummary,
40
+ itemId = _this$props.itemId;
41
+ return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement("div", {
42
+ className: classNames(styles.answerFrequencySummaryContainer)
43
+ }, /*#__PURE__*/React.createElement(AggregationTable, {
44
+ itemId: itemId,
45
+ answerSummary: answerSummary
46
+ })));
47
+ };
48
+
49
+ return _this;
50
+ }
51
+
52
+ return AggregationType;
53
+ }(Component), _class2.propTypes = {
54
+ itemId: PropTypes.number.isRequired,
55
+ answerSummary: onlyAggregatePropType
56
+ }.isRequired, _temp)) || _class);
@@ -0,0 +1,5 @@
1
+ export default function generator() {
2
+ return {
3
+ tableBottomPadding: 0
4
+ };
5
+ }
@@ -8,21 +8,22 @@ 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';
16
14
  import ChoiceTypeTableRow from "./ChoiceTypeTableRow/index.js";
17
15
  import { choiceTypeAnswerSummaryPropType } from "../../propTypes.js";
18
16
  var styles = {
19
- componentId: 'ZuPLN',
17
+ componentId: 'cEPQa',
20
18
  template: function template(theme) {
21
- return "\n\n.ZuPLN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}");
19
+ 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)}");
22
20
  },
23
- 'tableWrapper': 'ZuPLN_rMrG'
21
+ 'tableWrapper': 'cEPQa_rMrG',
22
+ 'answerFrequencySummaryContainer': 'cEPQa_cVld'
24
23
  };
25
24
  import theme from "./theme.js";
25
+ import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
26
+ import classNames from 'classnames';
26
27
  export var ChoiceType = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
27
28
  _inherits(ChoiceType, _Component);
28
29
 
@@ -77,19 +78,9 @@ export var ChoiceType = (_dec = themeable(theme, styles), _dec(_class = (_temp =
77
78
  var answerHeaderId = "answer-frequency-summary-answer-".concat(itemId);
78
79
  var respondentsHeaderId = "answer-frequency-summary-respondents-".concat(itemId);
79
80
  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, {
81
+ return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement("div", {
82
+ className: classNames(styles.answerFrequencySummaryContainer)
83
+ }, /*#__PURE__*/React.createElement(Table, {
93
84
  caption: t('Answer Frequency Summary')
94
85
  }, /*#__PURE__*/React.createElement(Table.Head, null, /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.ColHeader, {
95
86
  id: spacingHeaderId,
@@ -104,7 +95,7 @@ export var ChoiceType = (_dec = themeable(theme, styles), _dec(_class = (_temp =
104
95
  id: percentageHeaderId,
105
96
  height: "47px",
106
97
  textAlign: "center"
107
- }, t('%')))), /*#__PURE__*/React.createElement(Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices)))))));
98
+ }, t('%')))), /*#__PURE__*/React.createElement(Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices)))));
108
99
  }
109
100
  }]);
110
101
 
@@ -0,0 +1,67 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+
6
+ var _dec, _class, _class2, _temp;
7
+
8
+ import React, { Component } from 'react';
9
+ import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
10
+ import MatchingTypeTable from "./MatchingTypeTable/index.js";
11
+ import PropTypes from 'prop-types';
12
+ import { matchingTypeAnswerSummaryPropType } from "../../propTypes.js";
13
+ import MatchingTypeOrderer from "./utils/matchingTypeOrderer.js";
14
+ import classNames from 'classnames';
15
+ var styles = {
16
+ componentId: 'JFhmr',
17
+ template: function template(theme) {
18
+ return "\n\n.JFhmr_cVld{max-width:100%;width:calc(25% + 350px)}";
19
+ },
20
+ 'answerFrequencySummaryContainer': 'JFhmr_cVld'
21
+ };
22
+ import { themeable } from '@instructure/ui-themeable';
23
+ export var MatchingType = (_dec = themeable({}, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
24
+ _inherits(MatchingType, _Component);
25
+
26
+ var _super = _createSuper(MatchingType);
27
+
28
+ function MatchingType() {
29
+ var _this;
30
+
31
+ _classCallCheck(this, MatchingType);
32
+
33
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ args[_key] = arguments[_key];
35
+ }
36
+
37
+ _this = _super.call.apply(_super, [this].concat(args));
38
+
39
+ _this.render = function () {
40
+ var _this$props = _this.props,
41
+ itemId = _this$props.itemId,
42
+ answerSummary = _this$props.answerSummary;
43
+ var questions = answerSummary.questions;
44
+ var questionKeys = Object.keys(questions);
45
+ var exampleAnswers = questions[questionKeys[0]].answers;
46
+ var answerKeys = Object.keys(exampleAnswers);
47
+ var orderedAnswerKeys = MatchingTypeOrderer.orderAnswerKeysForDiagonal(answerSummary, answerKeys);
48
+ var orderedQuestionKeys = MatchingTypeOrderer.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
49
+ var containerHalfWidth = orderedAnswerKeys.length <= 3;
50
+ return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement("div", {
51
+ className: classNames(_defineProperty({}, styles.answerFrequencySummaryContainer, containerHalfWidth))
52
+ }, /*#__PURE__*/React.createElement(MatchingTypeTable, {
53
+ itemId: itemId,
54
+ answerSummary: answerSummary,
55
+ orderedAnswerKeys: orderedAnswerKeys,
56
+ orderedQuestionKeys: orderedQuestionKeys
57
+ })));
58
+ };
59
+
60
+ return _this;
61
+ }
62
+
63
+ return MatchingType;
64
+ }(Component), _class2.propTypes = {
65
+ itemId: PropTypes.number,
66
+ answerSummary: matchingTypeAnswerSummaryPropType
67
+ }.isRequired, _temp)) || _class);
@@ -0,0 +1 @@
1
+ export { MatchingTypeTable as default } from "./presenter.js";
@@ -0,0 +1,180 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+
6
+ var _dec, _class, _class2, _temp;
7
+
8
+ import React, { Component } from 'react';
9
+ import { Flex } from '@instructure/ui-flex';
10
+ var styles = {
11
+ componentId: 'daSNV',
12
+ template: function template(theme) {
13
+ return "\n\n.daSNV_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.daSNV_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.daSNV_EKAb{background-color:").concat(theme.colorGreen || 'inherit', "}\n\n.daSNV_EKAb svg{fill:#fff}\n\n.daSNV_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0}\n\n.daSNV_fvqY{border-radius:4px 4px 4px 4px;border-width:2px 2px 2px 2px}\n\n.daSNV_cVld{max-width:100%;width:calc(25% + 350px)}");
14
+ },
15
+ 'tableWrapper': 'daSNV_rMrG',
16
+ 'iconWrapper': 'daSNV_cvRx',
17
+ 'iconCorrect': 'daSNV_EKAb',
18
+ 'correctRowBorder': 'daSNV_tnta',
19
+ 'correctRowBorderRadius': 'daSNV_fvqY',
20
+ 'answerFrequencySummaryContainer': 'daSNV_cVld'
21
+ };
22
+ import t from '@instructure/quiz-i18n/es/format-message';
23
+ import { Table } from '@instructure/ui-table';
24
+ import { themeable } from '@instructure/ui-themeable';
25
+ import PropTypes from 'prop-types';
26
+ import { IconCheckSolid } from '@instructure/ui-icons';
27
+ import { matchingTypeAnswerSummaryPropType } from "../../../propTypes.js";
28
+ import classNames from 'classnames';
29
+ import theme from "./theme.js";
30
+
31
+ var _ref = /*#__PURE__*/React.createElement(IconCheckSolid, null);
32
+
33
+ var _ref2 = /*#__PURE__*/React.createElement(Flex.Item, {
34
+ width: "46px",
35
+ textAlign: "center"
36
+ });
37
+
38
+ export var MatchingTypeTable = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
39
+ _inherits(MatchingTypeTable, _Component);
40
+
41
+ var _super = _createSuper(MatchingTypeTable);
42
+
43
+ function MatchingTypeTable() {
44
+ var _this;
45
+
46
+ _classCallCheck(this, MatchingTypeTable);
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.renderIcon = function () {
55
+ var classes = classNames(styles.iconWrapper, styles.iconCorrect);
56
+ return /*#__PURE__*/React.createElement("div", {
57
+ className: classes
58
+ }, _ref);
59
+ };
60
+
61
+ _this.renderHeaderCell = function (key) {
62
+ var _this$props = _this.props,
63
+ answerSummary = _this$props.answerSummary,
64
+ itemId = _this$props.itemId;
65
+ var questions = answerSummary.questions;
66
+ var questionKeys = Object.keys(questions);
67
+ var exampleAnswers = questions[questionKeys[0]].answers;
68
+ var answer = exampleAnswers[key];
69
+ var answerNumberHeaderId = "answer-number-header-".concat(key, "-").concat(itemId);
70
+ return /*#__PURE__*/React.createElement(Table.ColHeader, {
71
+ id: answerNumberHeaderId,
72
+ key: answerNumberHeaderId,
73
+ theme: {
74
+ padding: '0 0 15px 0'
75
+ },
76
+ textAlign: "center"
77
+ }, /*#__PURE__*/React.createElement(Flex, {
78
+ direction: "row"
79
+ }, _ref2, /*#__PURE__*/React.createElement(Flex.Item, {
80
+ shouldShrink: true,
81
+ shouldGrow: true,
82
+ textAlign: "center"
83
+ }, answer.body)));
84
+ };
85
+
86
+ _this.renderCell = function (questionKey, answerKey) {
87
+ var _classNames;
88
+
89
+ var _this$props2 = _this.props,
90
+ answerSummary = _this$props2.answerSummary,
91
+ itemId = _this$props2.itemId;
92
+ var questions = answerSummary.questions;
93
+ var question = questions[questionKey];
94
+ var answer = question.answers[answerKey];
95
+ var correct = answer.correct,
96
+ count = answer.count;
97
+ var answerNumberCellId = "answer-number-cell-".concat(questionKey, "-").concat(answerKey, "-").concat(itemId);
98
+ var containerClassNames = classNames((_classNames = {}, _defineProperty(_classNames, styles.correctRowBorder, answer.correct), _defineProperty(_classNames, styles.correctRowBorderRadius, answer.correct), _classNames));
99
+ return /*#__PURE__*/React.createElement(Table.Cell, {
100
+ id: answerNumberCellId,
101
+ key: answerNumberCellId,
102
+ theme: {
103
+ padding: '0 0 0 0'
104
+ }
105
+ }, /*#__PURE__*/React.createElement("div", {
106
+ className: containerClassNames
107
+ }, /*#__PURE__*/React.createElement(Flex, {
108
+ direction: "row"
109
+ }, /*#__PURE__*/React.createElement(Flex.Item, {
110
+ width: "46px",
111
+ textAlign: "center"
112
+ }, correct && _this.renderIcon()), /*#__PURE__*/React.createElement(Flex.Item, {
113
+ shouldShrink: true,
114
+ shouldGrow: true,
115
+ width: "46px",
116
+ textAlign: "center"
117
+ }, count))));
118
+ };
119
+
120
+ _this.renderHeaderRow = function (orderedAnswerKeys) {
121
+ var itemId = _this.props.itemId;
122
+ var headerCells = orderedAnswerKeys.map(_this.renderHeaderCell);
123
+ var categoryHeaderId = "category-header-".concat(itemId);
124
+ var rowKey = "header-row-".concat(itemId);
125
+ return /*#__PURE__*/React.createElement(Table.Row, {
126
+ key: rowKey
127
+ }, /*#__PURE__*/React.createElement(Table.ColHeader, {
128
+ id: categoryHeaderId,
129
+ key: categoryHeaderId,
130
+ theme: {
131
+ padding: '0 0 15px 0'
132
+ },
133
+ textAlign: "start",
134
+ width: "250px"
135
+ }, t('Question')), headerCells);
136
+ };
137
+
138
+ _this.renderRow = function (orderedQuestionKey, orderedAnswerKeys) {
139
+ var _this$props3 = _this.props,
140
+ answerSummary = _this$props3.answerSummary,
141
+ itemId = _this$props3.itemId;
142
+ var questions = answerSummary.questions;
143
+ var question = questions[orderedQuestionKey];
144
+ var answerCells = orderedAnswerKeys.map(function (answerKey) {
145
+ return _this.renderCell(orderedQuestionKey, answerKey);
146
+ });
147
+ var questionRowHeaderId = "question-row-header-id-".concat(orderedQuestionKey, "-").concat(itemId);
148
+ var rowKey = "row-".concat(orderedQuestionKey, "-").concat(itemId);
149
+ return /*#__PURE__*/React.createElement(Table.Row, {
150
+ key: rowKey
151
+ }, /*#__PURE__*/React.createElement(Table.Cell, {
152
+ id: questionRowHeaderId,
153
+ key: questionRowHeaderId,
154
+ theme: {
155
+ padding: '0 0 1px 0'
156
+ }
157
+ }, question.body), answerCells);
158
+ };
159
+
160
+ _this.render = function () {
161
+ var _this$props4 = _this.props,
162
+ orderedAnswerKeys = _this$props4.orderedAnswerKeys,
163
+ orderedQuestionKeys = _this$props4.orderedQuestionKeys;
164
+ return /*#__PURE__*/React.createElement(Table, {
165
+ caption: t('Answer Frequency Summary')
166
+ }, /*#__PURE__*/React.createElement(Table.Head, null, _this.renderHeaderRow(orderedAnswerKeys)), /*#__PURE__*/React.createElement(Table.Body, null, orderedQuestionKeys.map(function (orderedQuestionKey) {
167
+ return _this.renderRow(orderedQuestionKey, orderedAnswerKeys);
168
+ })));
169
+ };
170
+
171
+ return _this;
172
+ }
173
+
174
+ return MatchingTypeTable;
175
+ }(Component), _class2.propTypes = {
176
+ itemId: PropTypes.number,
177
+ answerSummary: matchingTypeAnswerSummaryPropType,
178
+ orderedAnswerKeys: PropTypes.array.isRequired,
179
+ orderedQuestionKeys: PropTypes.array.isRequired
180
+ }.isRequired, _temp)) || _class);
@@ -0,0 +1,7 @@
1
+ export default function generator(_ref) {
2
+ var spacing = _ref.spacing;
3
+ return {
4
+ tableBottomPadding: spacing.medium,
5
+ colorGreen: '#0b874b'
6
+ };
7
+ }
@@ -0,0 +1 @@
1
+ export { MatchingType } from "./MatchingType.js";
@@ -0,0 +1,42 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+
4
+ var MatchingTypeOrderer = function MatchingTypeOrderer() {
5
+ _classCallCheck(this, MatchingTypeOrderer);
6
+
7
+ this.orderAnswerKeysForDiagonal = function (answerSummary, answerKeys) {
8
+ var questions = answerSummary.questions;
9
+ var questionKeys = Object.keys(questions);
10
+
11
+ var orderedKeys = _toConsumableArray(answerKeys);
12
+
13
+ answerKeys.forEach(function (answerKey) {
14
+ questionKeys.forEach(function (questionKey) {
15
+ var question = questions[questionKey];
16
+
17
+ if (question.answers[answerKey].distractor) {
18
+ orderedKeys.splice(orderedKeys.indexOf(answerKey), 1);
19
+ orderedKeys.push(answerKey);
20
+ }
21
+ });
22
+ });
23
+ return orderedKeys;
24
+ };
25
+
26
+ this.orderQuestionKeysForDiagonal = function (answerSummary, questionKeys, orderedAnswerKeys) {
27
+ var questions = answerSummary.questions;
28
+ var orderedQuestionKeys = [];
29
+ orderedAnswerKeys.forEach(function (orderedAnswerKey) {
30
+ questionKeys.forEach(function (questionKey) {
31
+ var question = questions[questionKey];
32
+
33
+ if (question.answers[orderedAnswerKey].correct) {
34
+ orderedQuestionKeys.push(questionKey);
35
+ }
36
+ });
37
+ });
38
+ return orderedQuestionKeys;
39
+ };
40
+ };
41
+
42
+ export default new MatchingTypeOrderer();
@@ -3,7 +3,9 @@ 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";
8
+ import { MatchingType } from "./MatchingType/index.js";
7
9
  import { answerSummaryPropType } from "../propTypes.js";
8
10
  export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
9
11
  _inherits(AnswerFrequencySummary, _Component);
@@ -23,7 +25,16 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
23
25
  _this.afsTableComponentMap = new Map();
24
26
 
25
27
  _this.addAfsComponentsByFlags = function (afsFlags) {
26
- if (afsFlags.formulaEnabled) {// this.afsTableComponentMap.set('formula', Formula)
28
+ if (afsFlags.formulaEnabled) {
29
+ _this.afsTableComponentMap.set('formula', AggregationType);
30
+ }
31
+
32
+ if (afsFlags.hotSpotEnabled) {
33
+ _this.afsTableComponentMap.set('hot-spot', AggregationType);
34
+ }
35
+
36
+ if (afsFlags.matchingEnabled) {
37
+ _this.afsTableComponentMap.set('matching', MatchingType);
27
38
  }
28
39
  };
29
40
 
@@ -37,7 +48,7 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
37
48
 
38
49
  var AfsTableComponent = _this.afsTableComponentMap.get(interactionType);
39
50
 
40
- if (!AfsTableComponent) {
51
+ if (!AfsTableComponent || !answerSummary) {
41
52
  return /*#__PURE__*/React.createElement(React.Fragment, null);
42
53
  }
43
54
 
@@ -0,0 +1 @@
1
+ export { AfsTableWrapper as default } from "./presenter.js";
@@ -0,0 +1,58 @@
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 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
+ import PropTypes from 'prop-types';
21
+ export var AfsTableWrapper = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
22
+ _inherits(AfsTableWrapper, _Component);
23
+
24
+ var _super = _createSuper(AfsTableWrapper);
25
+
26
+ function AfsTableWrapper() {
27
+ var _this;
28
+
29
+ _classCallCheck(this, AfsTableWrapper);
30
+
31
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
32
+ args[_key] = arguments[_key];
33
+ }
34
+
35
+ _this = _super.call.apply(_super, [this].concat(args));
36
+
37
+ _this.render = function () {
38
+ return /*#__PURE__*/React.createElement(Flex, {
39
+ direction: "row"
40
+ }, /*#__PURE__*/React.createElement(Flex.Item, {
41
+ shouldGrow: true
42
+ }, /*#__PURE__*/React.createElement("div", {
43
+ className: styles.tableWrapper
44
+ }, /*#__PURE__*/React.createElement(Heading, {
45
+ margin: "x-large x-large x-large 0",
46
+ level: "h3",
47
+ weight: "bold",
48
+ color: "primary"
49
+ }, t('Answer Frequency Summary')), _this.props.children)));
50
+ };
51
+
52
+ return _this;
53
+ }
54
+
55
+ return AfsTableWrapper;
56
+ }(Component), _class2.propTypes = {
57
+ children: PropTypes.node.isRequired
58
+ }, _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";