@instructure/quiz-core 18.5.1-rc.1 → 18.5.1-rc.11
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.
- package/es/common/util/Fetcher.js +15 -3
- package/es/reporting/api/getAnalysesExport.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +8 -5
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +46 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +10 -19
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +57 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +183 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +7 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +87 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +2 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/utils/matchingTypeOrderer.js +42 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +21 -4
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +73 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +58 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/theme.js +5 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/index.js +1 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +186 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +10 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +3 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +5 -7
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +20 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +9 -9
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +16 -3
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +3 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/exportReports.js +65 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +33 -8
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +4 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +2 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +41 -1
- package/es/reporting/components/resources/ReportCard/theme.js +1 -1
- package/lib/common/util/Fetcher.js +15 -2
- package/lib/reporting/api/getAnalysesExport.js +1 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js +8 -5
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/AggregationType/presenter.js +68 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/ChoiceType/presenter.js +12 -21
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingType.js +83 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/presenter.js +209 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/MatchingTypeTable/theme.js +14 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/OrderingType.js +115 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/index.js +21 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/MatchingType/utils/matchingTypeOrderer.js +52 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js +26 -7
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsPartsContainer/presenter.js +92 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/presenter.js +79 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AfsTableWrapper/theme.js +12 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/index.js +13 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/presenter.js +212 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/shared/AggregationTable/theme.js +17 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/index.js +3 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +6 -8
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewQuizAnalysis/presenter.js +20 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/presenter.js +9 -9
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/ReportCard/theme.js +1 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/charts/ScoreDistribution/presenter.js +16 -3
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/errorMessages.js +7 -1
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/exportReports.js +80 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +44 -9
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/utils.js +10 -2
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisState.js +3 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/withAnalysisStatePresenter.js +43 -1
- package/lib/reporting/components/resources/ReportCard/theme.js +1 -1
- 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
|
-
|
|
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",
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnalysisMetric/presenter.js
CHANGED
|
@@ -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: '
|
|
11
|
+
componentId: 'fKESK',
|
|
12
12
|
template: function template(theme) {
|
|
13
|
-
return "\n\n.
|
|
13
|
+
return "\n\n.fKESK_eckF{margin:0;max-width:159px;text-transform:capitalize}\n\n.fKESK_CIyo{width:90px}";
|
|
14
14
|
},
|
|
15
|
-
'metricLabel': '
|
|
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(
|
|
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,46 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
3
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
4
|
+
import React, { Component } from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import AggregationTable from "../shared/AggregationTable/index.js";
|
|
7
|
+
import { onlyAggregatePropType } from "../../propTypes.js";
|
|
8
|
+
import { AfsTableWrapper } from "../shared/AfsTableWrapper/presenter.js";
|
|
9
|
+
import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
|
|
10
|
+
export var AggregationType = /*#__PURE__*/function (_Component) {
|
|
11
|
+
_inherits(AggregationType, _Component);
|
|
12
|
+
|
|
13
|
+
var _super = _createSuper(AggregationType);
|
|
14
|
+
|
|
15
|
+
function AggregationType() {
|
|
16
|
+
var _this;
|
|
17
|
+
|
|
18
|
+
_classCallCheck(this, AggregationType);
|
|
19
|
+
|
|
20
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
21
|
+
args[_key] = arguments[_key];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
25
|
+
|
|
26
|
+
_this.render = function () {
|
|
27
|
+
var _this$props = _this.props,
|
|
28
|
+
answerSummary = _this$props.answerSummary,
|
|
29
|
+
itemId = _this$props.itemId;
|
|
30
|
+
return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(AfsPartsContainer, {
|
|
31
|
+
aggregationTable: /*#__PURE__*/React.createElement(AggregationTable, {
|
|
32
|
+
itemId: itemId,
|
|
33
|
+
answerSummary: answerSummary
|
|
34
|
+
})
|
|
35
|
+
}));
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
return _this;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return AggregationType;
|
|
42
|
+
}(Component);
|
|
43
|
+
AggregationType.propTypes = {
|
|
44
|
+
itemId: PropTypes.number.isRequired,
|
|
45
|
+
answerSummary: onlyAggregatePropType
|
|
46
|
+
}.isRequired;
|
|
@@ -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: '
|
|
17
|
+
componentId: 'dCEWT',
|
|
20
18
|
template: function template(theme) {
|
|
21
|
-
return "\n\n.
|
|
19
|
+
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)}");
|
|
22
20
|
},
|
|
23
|
-
'tableWrapper': '
|
|
21
|
+
'tableWrapper': 'dCEWT_rMrG',
|
|
22
|
+
'tableContainer': 'dCEWT_SVtU'
|
|
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(
|
|
81
|
-
|
|
82
|
-
}, /*#__PURE__*/React.createElement(
|
|
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.tableContainer)
|
|
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,57 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
3
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
4
|
+
import React, { Component } from 'react';
|
|
5
|
+
import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
|
|
6
|
+
import MatchingTypeTable from "./MatchingTypeTable/index.js";
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import { matchingTypeAnswerSummaryPropType } from "../../propTypes.js";
|
|
9
|
+
import MatchingTypeOrderer from "./utils/matchingTypeOrderer.js";
|
|
10
|
+
import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
|
|
11
|
+
export var MatchingType = /*#__PURE__*/function (_Component) {
|
|
12
|
+
_inherits(MatchingType, _Component);
|
|
13
|
+
|
|
14
|
+
var _super = _createSuper(MatchingType);
|
|
15
|
+
|
|
16
|
+
function MatchingType() {
|
|
17
|
+
var _this;
|
|
18
|
+
|
|
19
|
+
_classCallCheck(this, MatchingType);
|
|
20
|
+
|
|
21
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
22
|
+
args[_key] = arguments[_key];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
26
|
+
|
|
27
|
+
_this.render = function () {
|
|
28
|
+
var _this$props = _this.props,
|
|
29
|
+
itemId = _this$props.itemId,
|
|
30
|
+
answerSummary = _this$props.answerSummary;
|
|
31
|
+
var questions = answerSummary.questions;
|
|
32
|
+
var questionKeys = Object.keys(questions);
|
|
33
|
+
var exampleAnswers = questions[questionKeys[0]].answers;
|
|
34
|
+
var answerKeys = Object.keys(exampleAnswers);
|
|
35
|
+
var orderedAnswerKeys = MatchingTypeOrderer.orderAnswerKeysForDiagonal(answerSummary, answerKeys);
|
|
36
|
+
var orderedQuestionKeys = MatchingTypeOrderer.orderQuestionKeysForDiagonal(answerSummary, questionKeys, orderedAnswerKeys);
|
|
37
|
+
var tableHalfWidth = orderedAnswerKeys.length <= 3;
|
|
38
|
+
return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(AfsPartsContainer, {
|
|
39
|
+
tableHalfWidth: tableHalfWidth,
|
|
40
|
+
afsTable: /*#__PURE__*/React.createElement(MatchingTypeTable, {
|
|
41
|
+
itemId: itemId,
|
|
42
|
+
answerSummary: answerSummary,
|
|
43
|
+
orderedAnswerKeys: orderedAnswerKeys,
|
|
44
|
+
orderedQuestionKeys: orderedQuestionKeys
|
|
45
|
+
})
|
|
46
|
+
}));
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
return _this;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return MatchingType;
|
|
53
|
+
}(Component);
|
|
54
|
+
MatchingType.propTypes = {
|
|
55
|
+
itemId: PropTypes.number,
|
|
56
|
+
answerSummary: matchingTypeAnswerSummaryPropType
|
|
57
|
+
}.isRequired;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MatchingTypeTable as default } from "./presenter.js";
|
|
@@ -0,0 +1,183 @@
|
|
|
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
|
+
import { extractTextFromHtml } from '@instructure/quiz-interactions';
|
|
31
|
+
|
|
32
|
+
var _ref = /*#__PURE__*/React.createElement(IconCheckSolid, null);
|
|
33
|
+
|
|
34
|
+
var _ref2 = /*#__PURE__*/React.createElement(Flex.Item, {
|
|
35
|
+
width: "46px",
|
|
36
|
+
textAlign: "center"
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export var MatchingTypeTable = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
40
|
+
_inherits(MatchingTypeTable, _Component);
|
|
41
|
+
|
|
42
|
+
var _super = _createSuper(MatchingTypeTable);
|
|
43
|
+
|
|
44
|
+
function MatchingTypeTable() {
|
|
45
|
+
var _this;
|
|
46
|
+
|
|
47
|
+
_classCallCheck(this, MatchingTypeTable);
|
|
48
|
+
|
|
49
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
50
|
+
args[_key] = arguments[_key];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
54
|
+
|
|
55
|
+
_this.renderIcon = function () {
|
|
56
|
+
var classes = classNames(styles.iconWrapper, styles.iconCorrect);
|
|
57
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
58
|
+
className: classes
|
|
59
|
+
}, _ref);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
_this.renderHeaderCell = function (key) {
|
|
63
|
+
var _this$props = _this.props,
|
|
64
|
+
answerSummary = _this$props.answerSummary,
|
|
65
|
+
itemId = _this$props.itemId;
|
|
66
|
+
var questions = answerSummary.questions;
|
|
67
|
+
var questionKeys = Object.keys(questions);
|
|
68
|
+
var exampleAnswers = questions[questionKeys[0]].answers;
|
|
69
|
+
var answer = exampleAnswers[key];
|
|
70
|
+
var answerNumberHeaderId = "answer-number-header-".concat(key, "-").concat(itemId);
|
|
71
|
+
return /*#__PURE__*/React.createElement(Table.ColHeader, {
|
|
72
|
+
id: answerNumberHeaderId,
|
|
73
|
+
key: answerNumberHeaderId,
|
|
74
|
+
theme: {
|
|
75
|
+
padding: '0 0 15px 0'
|
|
76
|
+
},
|
|
77
|
+
textAlign: "center"
|
|
78
|
+
}, /*#__PURE__*/React.createElement(Flex, {
|
|
79
|
+
direction: "row"
|
|
80
|
+
}, _ref2, /*#__PURE__*/React.createElement(Flex.Item, {
|
|
81
|
+
shouldShrink: true,
|
|
82
|
+
shouldGrow: true,
|
|
83
|
+
textAlign: "center"
|
|
84
|
+
}, answer.body)));
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
_this.renderCell = function (questionKey, answerKey) {
|
|
88
|
+
var _classNames;
|
|
89
|
+
|
|
90
|
+
var _this$props2 = _this.props,
|
|
91
|
+
answerSummary = _this$props2.answerSummary,
|
|
92
|
+
itemId = _this$props2.itemId;
|
|
93
|
+
var questions = answerSummary.questions;
|
|
94
|
+
var question = questions[questionKey];
|
|
95
|
+
var answer = question.answers[answerKey];
|
|
96
|
+
var correct = answer.correct,
|
|
97
|
+
count = answer.count;
|
|
98
|
+
var answerNumberCellId = "answer-number-cell-".concat(questionKey, "-").concat(answerKey, "-").concat(itemId);
|
|
99
|
+
var containerClassNames = classNames((_classNames = {}, _defineProperty(_classNames, styles.correctRowBorder, answer.correct), _defineProperty(_classNames, styles.correctRowBorderRadius, answer.correct), _classNames));
|
|
100
|
+
return /*#__PURE__*/React.createElement(Table.Cell, {
|
|
101
|
+
id: answerNumberCellId,
|
|
102
|
+
key: answerNumberCellId,
|
|
103
|
+
theme: {
|
|
104
|
+
padding: '0 0 0 0'
|
|
105
|
+
}
|
|
106
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
107
|
+
className: containerClassNames
|
|
108
|
+
}, /*#__PURE__*/React.createElement(Flex, {
|
|
109
|
+
direction: "row"
|
|
110
|
+
}, /*#__PURE__*/React.createElement(Flex.Item, {
|
|
111
|
+
width: "46px",
|
|
112
|
+
textAlign: "center"
|
|
113
|
+
}, correct && _this.renderIcon()), /*#__PURE__*/React.createElement(Flex.Item, {
|
|
114
|
+
shouldShrink: true,
|
|
115
|
+
shouldGrow: true,
|
|
116
|
+
width: "46px",
|
|
117
|
+
textAlign: "center"
|
|
118
|
+
}, count))));
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
_this.renderHeaderRow = function (orderedAnswerKeys) {
|
|
122
|
+
var itemId = _this.props.itemId;
|
|
123
|
+
var headerCells = orderedAnswerKeys.map(_this.renderHeaderCell);
|
|
124
|
+
var categoryHeaderId = "category-header-".concat(itemId);
|
|
125
|
+
var rowKey = "header-row-".concat(itemId);
|
|
126
|
+
return /*#__PURE__*/React.createElement(Table.Row, {
|
|
127
|
+
key: rowKey
|
|
128
|
+
}, /*#__PURE__*/React.createElement(Table.ColHeader, {
|
|
129
|
+
id: categoryHeaderId,
|
|
130
|
+
key: categoryHeaderId,
|
|
131
|
+
theme: {
|
|
132
|
+
padding: '0 0 15px 0'
|
|
133
|
+
},
|
|
134
|
+
textAlign: "start",
|
|
135
|
+
width: "250px"
|
|
136
|
+
}, t('Question')), headerCells);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
_this.renderRow = function (orderedQuestionKey, orderedAnswerKeys) {
|
|
140
|
+
var _this$props3 = _this.props,
|
|
141
|
+
answerSummary = _this$props3.answerSummary,
|
|
142
|
+
itemId = _this$props3.itemId;
|
|
143
|
+
var questions = answerSummary.questions;
|
|
144
|
+
var question = questions[orderedQuestionKey];
|
|
145
|
+
var answerCells = orderedAnswerKeys.map(function (answerKey) {
|
|
146
|
+
return _this.renderCell(orderedQuestionKey, answerKey);
|
|
147
|
+
});
|
|
148
|
+
var questionRowHeaderId = "question-row-header-id-".concat(orderedQuestionKey, "-").concat(itemId);
|
|
149
|
+
var rowKey = "row-".concat(orderedQuestionKey, "-").concat(itemId);
|
|
150
|
+
var extractedQuestionBody = extractTextFromHtml(question.body);
|
|
151
|
+
var questionBody = extractedQuestionBody.trim().length > 0 ? extractedQuestionBody : question.body;
|
|
152
|
+
return /*#__PURE__*/React.createElement(Table.Row, {
|
|
153
|
+
key: rowKey
|
|
154
|
+
}, /*#__PURE__*/React.createElement(Table.Cell, {
|
|
155
|
+
id: questionRowHeaderId,
|
|
156
|
+
key: questionRowHeaderId,
|
|
157
|
+
theme: {
|
|
158
|
+
padding: '0 0 1px 0'
|
|
159
|
+
}
|
|
160
|
+
}, questionBody), answerCells);
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
_this.render = function () {
|
|
164
|
+
var _this$props4 = _this.props,
|
|
165
|
+
orderedAnswerKeys = _this$props4.orderedAnswerKeys,
|
|
166
|
+
orderedQuestionKeys = _this$props4.orderedQuestionKeys;
|
|
167
|
+
return /*#__PURE__*/React.createElement(Table, {
|
|
168
|
+
caption: t('Answer Frequency Summary')
|
|
169
|
+
}, /*#__PURE__*/React.createElement(Table.Head, null, _this.renderHeaderRow(orderedAnswerKeys)), /*#__PURE__*/React.createElement(Table.Body, null, orderedQuestionKeys.map(function (orderedQuestionKey) {
|
|
170
|
+
return _this.renderRow(orderedQuestionKey, orderedAnswerKeys);
|
|
171
|
+
})));
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
return _this;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return MatchingTypeTable;
|
|
178
|
+
}(Component), _class2.propTypes = {
|
|
179
|
+
itemId: PropTypes.number,
|
|
180
|
+
answerSummary: matchingTypeAnswerSummaryPropType,
|
|
181
|
+
orderedAnswerKeys: PropTypes.array.isRequired,
|
|
182
|
+
orderedQuestionKeys: PropTypes.array.isRequired
|
|
183
|
+
}.isRequired, _temp)) || _class);
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
3
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
4
|
+
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
5
|
+
import React, { Component } from 'react';
|
|
6
|
+
import MatchingTypeOrderer from "./utils/matchingTypeOrderer.js";
|
|
7
|
+
import AfsTableWrapper from "../shared/AfsTableWrapper/index.js";
|
|
8
|
+
import MatchingTypeTable from "./MatchingTypeTable/index.js";
|
|
9
|
+
import PropTypes from 'prop-types';
|
|
10
|
+
import { matchingTypeAnswerSummaryPropType } from "../../propTypes.js";
|
|
11
|
+
import t from '@instructure/quiz-i18n/es/format-message';
|
|
12
|
+
import AggregationTable from "../shared/AggregationTable/index.js";
|
|
13
|
+
import { AfsPartsContainer } from "../shared/AfsPartsContainer/presenter.js";
|
|
14
|
+
export var OrderingType = /*#__PURE__*/function (_Component) {
|
|
15
|
+
_inherits(OrderingType, _Component);
|
|
16
|
+
|
|
17
|
+
var _super = _createSuper(OrderingType);
|
|
18
|
+
|
|
19
|
+
function OrderingType() {
|
|
20
|
+
var _this;
|
|
21
|
+
|
|
22
|
+
_classCallCheck(this, OrderingType);
|
|
23
|
+
|
|
24
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
25
|
+
args[_key] = arguments[_key];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
29
|
+
|
|
30
|
+
_this.updateAnswerBody = function (answerSummary) {
|
|
31
|
+
var translateBody = function translateBody(index) {
|
|
32
|
+
return "".concat(t('Order'), " ").concat(index);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var answerSummaryCopy = _objectSpread({}, answerSummary);
|
|
36
|
+
|
|
37
|
+
Object.keys(answerSummaryCopy.questions).forEach(function (questionKey) {
|
|
38
|
+
Object.keys(answerSummaryCopy.questions[questionKey].answers).forEach(function (answerKey) {
|
|
39
|
+
var detail = answerSummaryCopy.questions[questionKey].answers[answerKey];
|
|
40
|
+
answerSummaryCopy.questions[questionKey].answers[answerKey] = _objectSpread(_objectSpread({}, detail), {}, {
|
|
41
|
+
// Body cannot be used because because re-render of the component add Order
|
|
42
|
+
// as many time we have to re-render. Only re-assignment works.
|
|
43
|
+
body: translateBody(Number(answerKey) + 1)
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
return answerSummaryCopy;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
_this.render = function () {
|
|
51
|
+
var _this$props = _this.props,
|
|
52
|
+
itemId = _this$props.itemId,
|
|
53
|
+
answerSummary = _this$props.answerSummary;
|
|
54
|
+
|
|
55
|
+
var updatedAnswerSummary = _this.updateAnswerBody(answerSummary);
|
|
56
|
+
|
|
57
|
+
var questions = updatedAnswerSummary.questions;
|
|
58
|
+
var questionKeys = Object.keys(questions);
|
|
59
|
+
var exampleAnswers = questions[questionKeys[0]].answers;
|
|
60
|
+
var answerKeys = Object.keys(exampleAnswers).sort();
|
|
61
|
+
var orderedAnswerKeys = MatchingTypeOrderer.orderAnswerKeysForDiagonal(updatedAnswerSummary, answerKeys);
|
|
62
|
+
var orderedQuestionKeys = MatchingTypeOrderer.orderQuestionKeysForDiagonal(updatedAnswerSummary, questionKeys, orderedAnswerKeys);
|
|
63
|
+
var tableHalfWidth = orderedAnswerKeys.length <= 3;
|
|
64
|
+
return /*#__PURE__*/React.createElement(AfsTableWrapper, null, /*#__PURE__*/React.createElement(AfsPartsContainer, {
|
|
65
|
+
tableHalfWidth: tableHalfWidth,
|
|
66
|
+
afsTable: /*#__PURE__*/React.createElement(MatchingTypeTable, {
|
|
67
|
+
itemId: itemId,
|
|
68
|
+
answerSummary: updatedAnswerSummary,
|
|
69
|
+
orderedAnswerKeys: orderedAnswerKeys,
|
|
70
|
+
orderedQuestionKeys: orderedQuestionKeys
|
|
71
|
+
}),
|
|
72
|
+
aggregationTable: /*#__PURE__*/React.createElement(AggregationTable, {
|
|
73
|
+
itemId: itemId,
|
|
74
|
+
answerSummary: updatedAnswerSummary
|
|
75
|
+
})
|
|
76
|
+
}));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
return _this;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return OrderingType;
|
|
83
|
+
}(Component);
|
|
84
|
+
OrderingType.propTypes = {
|
|
85
|
+
itemId: PropTypes.number,
|
|
86
|
+
answerSummary: matchingTypeAnswerSummaryPropType
|
|
87
|
+
}.isRequired;
|
|
@@ -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();
|
package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerFrequencySummary/presenter.js
CHANGED
|
@@ -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
|
|
6
|
+
import ChoiceType from "./ChoiceType/index.js";
|
|
7
|
+
import AggregationType from "./AggregationType/index.js";
|
|
8
|
+
import { MatchingType, OrderingType } 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,20 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
|
|
|
23
25
|
_this.afsTableComponentMap = new Map();
|
|
24
26
|
|
|
25
27
|
_this.addAfsComponentsByFlags = function (afsFlags) {
|
|
26
|
-
if (afsFlags.formulaEnabled) {
|
|
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);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (afsFlags.orderingEnabled) {
|
|
41
|
+
_this.afsTableComponentMap.set('ordering', OrderingType);
|
|
27
42
|
}
|
|
28
43
|
};
|
|
29
44
|
|
|
@@ -37,7 +52,7 @@ export var AnswerFrequencySummary = /*#__PURE__*/function (_Component) {
|
|
|
37
52
|
|
|
38
53
|
var AfsTableComponent = _this.afsTableComponentMap.get(interactionType);
|
|
39
54
|
|
|
40
|
-
if (!AfsTableComponent) {
|
|
55
|
+
if (!AfsTableComponent || !answerSummary) {
|
|
41
56
|
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
42
57
|
}
|
|
43
58
|
|
|
@@ -64,6 +79,8 @@ AnswerFrequencySummary.propTypes = {
|
|
|
64
79
|
interactionType: PropTypes.string.isRequired,
|
|
65
80
|
afsFlags: PropTypes.shape({
|
|
66
81
|
formulaEnabled: PropTypes.bool.isRequired,
|
|
67
|
-
matchingEnabled: PropTypes.bool.isRequired
|
|
82
|
+
matchingEnabled: PropTypes.bool.isRequired,
|
|
83
|
+
hotSpotEnabled: PropTypes.bool.isRequired,
|
|
84
|
+
orderingEnabled: PropTypes.bool.isRequired
|
|
68
85
|
})
|
|
69
86
|
}.isRequired;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AfsPartsContainer as default } from "./presenter.js";
|