@instructure/quiz-core 17.62.1-rc.0 → 17.62.1-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/banks/api/banks.js +15 -0
- package/es/banks/api/copyingBanksPoller.js +99 -0
- package/es/banks/components/Banks/presenter.js +1 -2
- package/es/banks/components/BanksList/index.js +3 -1
- package/es/banks/components/BanksList/presenter.js +36 -13
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +2 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +90 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/index.js +2 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +109 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +2 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +62 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/theme.js +8 -0
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +32 -17
- package/es/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +13 -0
- package/lib/banks/api/banks.js +19 -1
- package/lib/banks/api/copyingBanksPoller.js +116 -0
- package/lib/banks/components/Banks/presenter.js +1 -2
- package/lib/banks/components/BanksList/index.js +4 -1
- package/lib/banks/components/BanksList/presenter.js +36 -13
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/index.js +11 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/ChoiceInfo/presenter.js +110 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/index.js +11 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/Row/presenter.js +132 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/index.js +11 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js +83 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/theme.js +15 -0
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/NewItemAnalysis/presenter.js +33 -17
- package/lib/reporting/components/resources/NewQuizAndItemAnalysis/propTypes.js +18 -2
- package/package.json +9 -9
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.addToPolling = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
15
|
+
|
|
16
|
+
var _alerts = require("../../common/actions/alerts.js");
|
|
17
|
+
|
|
18
|
+
var _banks = require("./banks.js");
|
|
19
|
+
|
|
20
|
+
var pollingBanks = [];
|
|
21
|
+
var currentlyPolling = false;
|
|
22
|
+
|
|
23
|
+
var addToPolling = function addToPolling(bankId, bankTitle) {
|
|
24
|
+
var getSpecificBanksFn = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : _banks.getSpecificBanks;
|
|
25
|
+
return function (dispatch) {
|
|
26
|
+
pollingBanks.push({
|
|
27
|
+
id: bankId,
|
|
28
|
+
title: bankTitle
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
if (!currentlyPolling) {
|
|
32
|
+
currentlyPolling = true;
|
|
33
|
+
handlePollingBanks(dispatch, getSpecificBanksFn);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.addToPolling = addToPolling;
|
|
39
|
+
|
|
40
|
+
var handlePollingBanks = /*#__PURE__*/function () {
|
|
41
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dispatch) {
|
|
42
|
+
var getSpecificBanksFn,
|
|
43
|
+
updatedPollingBanks,
|
|
44
|
+
updatedPollingBankIds,
|
|
45
|
+
finishedCopying,
|
|
46
|
+
finishedCopyingIds,
|
|
47
|
+
_args = arguments;
|
|
48
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
49
|
+
while (1) {
|
|
50
|
+
switch (_context.prev = _context.next) {
|
|
51
|
+
case 0:
|
|
52
|
+
getSpecificBanksFn = _args.length > 1 && _args[1] !== void 0 ? _args[1] : _banks.getSpecificBanks;
|
|
53
|
+
_context.next = 3;
|
|
54
|
+
return getSpecificBanksFn(pollingBanks.map(function (bank) {
|
|
55
|
+
return bank.id;
|
|
56
|
+
}))(dispatch);
|
|
57
|
+
|
|
58
|
+
case 3:
|
|
59
|
+
updatedPollingBanks = _context.sent;
|
|
60
|
+
updatedPollingBankIds = updatedPollingBanks.map(function (updatedBank) {
|
|
61
|
+
return updatedBank.id;
|
|
62
|
+
}); // banks that now have status 'waiting' have finished successfully
|
|
63
|
+
// banks that are no longer in the updated list but were in the previous list have
|
|
64
|
+
// failed to copy and therefore were archived
|
|
65
|
+
|
|
66
|
+
finishedCopying = updatedPollingBanks.filter(function (bank) {
|
|
67
|
+
return bank.status === 'waiting';
|
|
68
|
+
}).concat(pollingBanks.filter(function (prevBank) {
|
|
69
|
+
return !updatedPollingBankIds.includes(prevBank.id);
|
|
70
|
+
}));
|
|
71
|
+
finishedCopying.forEach(function (bank) {
|
|
72
|
+
var bankInfo = updatedPollingBanks.find(function (info) {
|
|
73
|
+
return info.id == bank.id;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
if ((bankInfo === null || bankInfo === void 0 ? void 0 : bankInfo.status) === 'waiting') {
|
|
77
|
+
dispatch((0, _alerts.addSuccess)((0, _formatMessage.default)('Created "{name}" successfully! Duplicate can be seen in \'All Banks\' filter.', {
|
|
78
|
+
name: bank.title
|
|
79
|
+
})));
|
|
80
|
+
} else if (!bankInfo) {
|
|
81
|
+
dispatch((0, _alerts.addError)((0, _formatMessage.default)('Failed to create "{name}". Please try again.', {
|
|
82
|
+
name: bank.title
|
|
83
|
+
})));
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
finishedCopyingIds = finishedCopying.map(function (bank) {
|
|
87
|
+
return bank.id;
|
|
88
|
+
});
|
|
89
|
+
removeFinishedCopies(finishedCopyingIds);
|
|
90
|
+
|
|
91
|
+
if (pollingBanks.length > 0) {
|
|
92
|
+
setTimeout(function () {
|
|
93
|
+
handlePollingBanks(dispatch);
|
|
94
|
+
}, 3000);
|
|
95
|
+
} else {
|
|
96
|
+
currentlyPolling = false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
case 10:
|
|
100
|
+
case "end":
|
|
101
|
+
return _context.stop();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}, _callee);
|
|
105
|
+
}));
|
|
106
|
+
|
|
107
|
+
return function handlePollingBanks(_x) {
|
|
108
|
+
return _ref.apply(this, arguments);
|
|
109
|
+
};
|
|
110
|
+
}();
|
|
111
|
+
|
|
112
|
+
var removeFinishedCopies = function removeFinishedCopies(finishedCopyingIds) {
|
|
113
|
+
pollingBanks = pollingBanks.filter(function (bank) {
|
|
114
|
+
return !finishedCopyingIds.includes(bank.id);
|
|
115
|
+
});
|
|
116
|
+
};
|
|
@@ -211,8 +211,7 @@ var Banks = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_c
|
|
|
211
211
|
minChars: _this.props.minChars,
|
|
212
212
|
navigateToBank: _this.props.navigateToBank,
|
|
213
213
|
onShare: _this.props.onShare,
|
|
214
|
-
recordIds: recordIds
|
|
215
|
-
redirectAllBanks: _this.handleBankCreated
|
|
214
|
+
recordIds: recordIds
|
|
216
215
|
});
|
|
217
216
|
};
|
|
218
217
|
|
|
@@ -24,6 +24,8 @@ var _featureCheck = require("../../../common/util/featureCheck.js");
|
|
|
24
24
|
|
|
25
25
|
var _alerts = require("../../../common/actions/alerts.js");
|
|
26
26
|
|
|
27
|
+
var _copyingBanksPoller = require("../../api/copyingBanksPoller.js");
|
|
28
|
+
|
|
27
29
|
function mapStateToProps(state, props) {
|
|
28
30
|
return {
|
|
29
31
|
appContainer: state.getIn(['ui', 'appContainer']),
|
|
@@ -39,7 +41,8 @@ var _default = (0, _reactRedux.connect)(mapStateToProps, {
|
|
|
39
41
|
deleteBank: _banks.deleteBank,
|
|
40
42
|
withConfirm: _modal.withConfirm,
|
|
41
43
|
createBankCloneJob: _banks.createBankCloneJob,
|
|
42
|
-
addInfo: _alerts.addInfo
|
|
44
|
+
addInfo: _alerts.addInfo,
|
|
45
|
+
addToPolling: _copyingBanksPoller.addToPolling
|
|
43
46
|
})(_presenter.default);
|
|
44
47
|
|
|
45
48
|
exports.default = _default;
|
|
@@ -80,7 +80,7 @@ var styles = {
|
|
|
80
80
|
'deletePreface': 'dgJJi_eTBd'
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
-
var
|
|
83
|
+
var _ref4 = /*#__PURE__*/_react.default.createElement(_uiSpinner.Spinner, {
|
|
84
84
|
renderTitle: "Loading",
|
|
85
85
|
size: "x-small"
|
|
86
86
|
});
|
|
@@ -180,18 +180,41 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
|
|
|
180
180
|
|
|
181
181
|
_this.openDuplicateBankModal = function (bank) {
|
|
182
182
|
return function () {
|
|
183
|
-
|
|
184
|
-
|
|
183
|
+
var createCloneJob = /*#__PURE__*/function () {
|
|
184
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
185
|
+
var cloneJob;
|
|
186
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
187
|
+
while (1) {
|
|
188
|
+
switch (_context2.prev = _context2.next) {
|
|
189
|
+
case 0:
|
|
190
|
+
_context2.next = 2;
|
|
191
|
+
return _this.props.createBankCloneJob(bank.id, _this.props.currentUser.uuid);
|
|
192
|
+
|
|
193
|
+
case 2:
|
|
194
|
+
cloneJob = _context2.sent;
|
|
195
|
+
|
|
196
|
+
_this.props.addToPolling(cloneJob.cloned_bank_id, (0, _formatMessage.default)('{name} Copy', {
|
|
197
|
+
name: bank.title
|
|
198
|
+
}));
|
|
199
|
+
|
|
200
|
+
_this.props.addInfo((0, _formatMessage.default)('Creating "{name} Copy". Duplicate will appear in \'All Banks\' filter.', {
|
|
201
|
+
name: bank.title
|
|
202
|
+
}));
|
|
203
|
+
|
|
204
|
+
case 5:
|
|
205
|
+
case "end":
|
|
206
|
+
return _context2.stop();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}, _callee2);
|
|
210
|
+
}));
|
|
185
211
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
onClick: _this.props.redirectAllBanks
|
|
191
|
-
}, (0, _formatMessage.default)('\'All Banks\'')), (0, _formatMessage.default)(' filter.')));
|
|
192
|
-
};
|
|
212
|
+
return function createCloneJob() {
|
|
213
|
+
return _ref3.apply(this, arguments);
|
|
214
|
+
};
|
|
215
|
+
}();
|
|
193
216
|
|
|
194
|
-
_this.props.withConfirm((0, _partial.default)(
|
|
217
|
+
_this.props.withConfirm((0, _partial.default)(createCloneJob), {
|
|
195
218
|
text: (0, _formatMessage.default)('Are you sure you want to duplicate this item bank?'),
|
|
196
219
|
title: (0, _formatMessage.default)('Duplicate Bank'),
|
|
197
220
|
continueText: (0, _formatMessage.default)('Duplicate'),
|
|
@@ -330,7 +353,7 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
|
|
|
330
353
|
if (bank.status == 'copying') {
|
|
331
354
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
332
355
|
className: styles.bankOptions
|
|
333
|
-
},
|
|
356
|
+
}, _ref4);
|
|
334
357
|
} else {
|
|
335
358
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
336
359
|
className: styles.bankOptions
|
|
@@ -430,6 +453,7 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
|
|
|
430
453
|
return BanksList;
|
|
431
454
|
}((0, _quizCommon.withI18nSupport)(_react.Component)), _class2.propTypes = {
|
|
432
455
|
addInfo: _propTypes.default.func.isRequired,
|
|
456
|
+
addToPolling: _propTypes.default.func.isRequired,
|
|
433
457
|
appContainer: _CustomPropTypes.default.selectors.isRequired,
|
|
434
458
|
banks: _reactImmutableProptypes.default.list.isRequired,
|
|
435
459
|
createBankCloneJob: _propTypes.default.func.isRequired,
|
|
@@ -452,7 +476,6 @@ var BanksList = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
|
|
|
452
476
|
navigateToBank: _propTypes.default.func.isRequired,
|
|
453
477
|
onShare: _propTypes.default.func,
|
|
454
478
|
openModal: _propTypes.default.func.isRequired,
|
|
455
|
-
redirectAllBanks: _propTypes.default.func.isRequired,
|
|
456
479
|
withConfirm: _propTypes.default.func.isRequired,
|
|
457
480
|
locale: _propTypes.default.string,
|
|
458
481
|
timezone: _propTypes.default.string
|
|
@@ -0,0 +1,110 @@
|
|
|
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.ChoiceInfo = void 0;
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
23
|
+
|
|
24
|
+
var _uiTable = require("@instructure/ui-table");
|
|
25
|
+
|
|
26
|
+
var _index = _interopRequireDefault(require("../Row/index.js"));
|
|
27
|
+
|
|
28
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
+
|
|
30
|
+
var _ref = /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
|
|
31
|
+
width: "46px"
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
var ChoiceInfo = /*#__PURE__*/function (_Component) {
|
|
35
|
+
(0, _inherits2.default)(ChoiceInfo, _Component);
|
|
36
|
+
|
|
37
|
+
var _super = (0, _createSuper2.default)(ChoiceInfo);
|
|
38
|
+
|
|
39
|
+
function ChoiceInfo() {
|
|
40
|
+
var _this;
|
|
41
|
+
|
|
42
|
+
(0, _classCallCheck2.default)(this, ChoiceInfo);
|
|
43
|
+
|
|
44
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
45
|
+
args[_key] = arguments[_key];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
49
|
+
|
|
50
|
+
_this.renderRow = function (choice, choiceIndex) {
|
|
51
|
+
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
52
|
+
key: choiceIndex,
|
|
53
|
+
choice: choice,
|
|
54
|
+
choiceIndex: choiceIndex
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
_this.renderNoAnswer = function (payload, choiceIndex) {
|
|
59
|
+
var asChoice = {
|
|
60
|
+
body: (0, _formatMessage.default)('(No answer)'),
|
|
61
|
+
percentage: payload.percentage,
|
|
62
|
+
correct: false,
|
|
63
|
+
count: payload.count
|
|
64
|
+
};
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
66
|
+
key: choiceIndex,
|
|
67
|
+
choice: asChoice,
|
|
68
|
+
choiceIndex: choiceIndex
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
return _this;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
(0, _createClass2.default)(ChoiceInfo, [{
|
|
76
|
+
key: "render",
|
|
77
|
+
value: function render() {
|
|
78
|
+
var _this$props = this.props,
|
|
79
|
+
choices = _this$props.choices,
|
|
80
|
+
noAnswer = _this$props.noAnswer;
|
|
81
|
+
var numberOfChoices = choices.length;
|
|
82
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
|
|
83
|
+
caption: (0, _formatMessage.default)('Answer Frequency Summary')
|
|
84
|
+
}, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, _ref, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
|
|
85
|
+
height: "47px"
|
|
86
|
+
}, (0, _formatMessage.default)('Answer')), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
|
|
87
|
+
height: "47px"
|
|
88
|
+
}, (0, _formatMessage.default)('Respondents')), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
|
|
89
|
+
height: "47px",
|
|
90
|
+
textAlign: "center"
|
|
91
|
+
}, (0, _formatMessage.default)('%')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choices.map(this.renderRow), this.renderNoAnswer(noAnswer, numberOfChoices))));
|
|
92
|
+
}
|
|
93
|
+
}]);
|
|
94
|
+
ChoiceInfo.displayName = "ChoiceInfo";
|
|
95
|
+
return ChoiceInfo;
|
|
96
|
+
}(_react.Component);
|
|
97
|
+
|
|
98
|
+
exports.ChoiceInfo = ChoiceInfo;
|
|
99
|
+
ChoiceInfo.propTypes = {
|
|
100
|
+
choices: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
101
|
+
body: _propTypes.default.string,
|
|
102
|
+
correct: _propTypes.default.bool,
|
|
103
|
+
count: _propTypes.default.number,
|
|
104
|
+
percentage: _propTypes.default.number
|
|
105
|
+
})),
|
|
106
|
+
noAnswer: _propTypes.default.shape({
|
|
107
|
+
count: _propTypes.default.number,
|
|
108
|
+
percentage: _propTypes.default.number
|
|
109
|
+
})
|
|
110
|
+
}.isRequired;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.Row = void 0;
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
19
|
+
|
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
21
|
+
|
|
22
|
+
var _uiTable = require("@instructure/ui-table");
|
|
23
|
+
|
|
24
|
+
var _uiThemeable = require("@instructure/ui-themeable");
|
|
25
|
+
|
|
26
|
+
var _theme = _interopRequireDefault(require("../theme.js"));
|
|
27
|
+
|
|
28
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
+
|
|
30
|
+
var _uiIcons = require("@instructure/ui-icons");
|
|
31
|
+
|
|
32
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
33
|
+
|
|
34
|
+
var _quizInteractions = require("@instructure/quiz-interactions");
|
|
35
|
+
|
|
36
|
+
var _dec, _class, _class2, _temp;
|
|
37
|
+
|
|
38
|
+
var styles = {
|
|
39
|
+
componentId: 'fvXKN',
|
|
40
|
+
template: function template(theme) {
|
|
41
|
+
return "\n\n.fvXKN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.fvXKN_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.fvXKN_EKAb{background-color:").concat(theme.colorGreen || 'inherit', ";border-radius:4px 0 0 4px}\n\n.fvXKN_EKAb svg{filter:invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(102%) contrast(102%)}\n\n.fvXKN_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.fvXKN_fvqY{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
|
|
42
|
+
},
|
|
43
|
+
'tableWrapper': 'fvXKN_rMrG',
|
|
44
|
+
'iconWrapper': 'fvXKN_cvRx',
|
|
45
|
+
'iconCorrect': 'fvXKN_EKAb',
|
|
46
|
+
'correctRowBorder': 'fvXKN_tnta',
|
|
47
|
+
'correctRowBorderRadius': 'fvXKN_fvqY'
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
|
|
51
|
+
|
|
52
|
+
var _ref2 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconXSolid, null);
|
|
53
|
+
|
|
54
|
+
var Row = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
55
|
+
(0, _inherits2.default)(Row, _Component);
|
|
56
|
+
|
|
57
|
+
var _super = (0, _createSuper2.default)(Row);
|
|
58
|
+
|
|
59
|
+
function Row() {
|
|
60
|
+
var _this;
|
|
61
|
+
|
|
62
|
+
(0, _classCallCheck2.default)(this, Row);
|
|
63
|
+
|
|
64
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
65
|
+
args[_key] = arguments[_key];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
69
|
+
|
|
70
|
+
_this.renderIcon = function (correct) {
|
|
71
|
+
var className = (0, _classnames.default)(styles.iconWrapper, (0, _defineProperty2.default)({}, styles.iconCorrect, correct));
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
73
|
+
className: className
|
|
74
|
+
}, correct ? _ref : _ref2);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
_this.renderMiddleCell = function (correct, content) {
|
|
78
|
+
var className = (0, _classnames.default)((0, _defineProperty2.default)({}, styles.correctRowBorder, correct));
|
|
79
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
80
|
+
className: className
|
|
81
|
+
}, content);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
_this.renderLastCell = function (correct, content) {
|
|
85
|
+
var _classNames3;
|
|
86
|
+
|
|
87
|
+
var className = (0, _classnames.default)((_classNames3 = {}, (0, _defineProperty2.default)(_classNames3, styles.correctRowBorder, correct), (0, _defineProperty2.default)(_classNames3, styles.correctRowBorderRadius, correct), _classNames3));
|
|
88
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
89
|
+
className: className
|
|
90
|
+
}, content);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
_this.render = function () {
|
|
94
|
+
var correct = _this.props.choice.correct;
|
|
95
|
+
var cellPadding = correct ? '0' : _this.theme.cellPadding;
|
|
96
|
+
return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, {
|
|
97
|
+
key: _this.props.choiceIndex
|
|
98
|
+
}, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
99
|
+
theme: {
|
|
100
|
+
padding: '0px'
|
|
101
|
+
}
|
|
102
|
+
}, _this.renderIcon(correct)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.RowHeader, {
|
|
103
|
+
theme: {
|
|
104
|
+
padding: cellPadding
|
|
105
|
+
},
|
|
106
|
+
className: styles.tableBody
|
|
107
|
+
}, _this.renderMiddleCell(correct, (0, _quizInteractions.extractTextFromHtml)(_this.props.choice.body))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
108
|
+
theme: {
|
|
109
|
+
padding: cellPadding
|
|
110
|
+
}
|
|
111
|
+
}, _this.renderMiddleCell(correct, _this.props.choice.count)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
|
|
112
|
+
theme: {
|
|
113
|
+
padding: cellPadding
|
|
114
|
+
},
|
|
115
|
+
textAlign: "center"
|
|
116
|
+
}, _this.renderLastCell(correct, "".concat(_this.props.choice.percentage, "%"))));
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
return _this;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return Row;
|
|
123
|
+
}(_react.Component), _class2.propTypes = {
|
|
124
|
+
choice: _propTypes.default.shape({
|
|
125
|
+
body: _propTypes.default.string,
|
|
126
|
+
correct: _propTypes.default.bool,
|
|
127
|
+
count: _propTypes.default.number,
|
|
128
|
+
percentage: _propTypes.default.number
|
|
129
|
+
}),
|
|
130
|
+
choiceIndex: _propTypes.default.number
|
|
131
|
+
}.isRequired, _temp)) || _class);
|
|
132
|
+
exports.Row = Row;
|
package/lib/reporting/components/resources/NewQuizAndItemAnalysis/AnswerSummaryTable/presenter.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.AnswerSummaryTable = 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 _uiHeading = require("@instructure/ui-heading");
|
|
21
|
+
|
|
22
|
+
var _uiThemeable = require("@instructure/ui-themeable");
|
|
23
|
+
|
|
24
|
+
var _theme = _interopRequireDefault(require("./theme.js"));
|
|
25
|
+
|
|
26
|
+
var _presenter = require("./ChoiceInfo/presenter.js");
|
|
27
|
+
|
|
28
|
+
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
29
|
+
|
|
30
|
+
var _propTypes = require("../propTypes.js");
|
|
31
|
+
|
|
32
|
+
var _dec, _class, _class2, _temp;
|
|
33
|
+
|
|
34
|
+
var styles = {
|
|
35
|
+
componentId: 'fvXKN',
|
|
36
|
+
template: function template(theme) {
|
|
37
|
+
return "\n\n.fvXKN_rMrG{display:flex;flex-basis:100%;flex-direction:column;padding-bottom:".concat(theme.tableBottomPadding || 'inherit', "}\n\n.fvXKN_cvRx{align-items:center;display:flex;height:48px;justify-content:center;width:46px}\n\n.fvXKN_EKAb{background-color:").concat(theme.colorGreen || 'inherit', ";border-radius:4px 0 0 4px}\n\n.fvXKN_EKAb svg{filter:invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(102%) contrast(102%)}\n\n.fvXKN_tnta{border-color:").concat(theme.colorGreen || 'inherit', ";border-style:solid;border-width:2px 0;padding:").concat(theme.cellPadding || 'inherit', "}\n\n.fvXKN_fvqY{border-radius:0 4px 4px 0;border-width:2px 2px 2px 0}");
|
|
38
|
+
},
|
|
39
|
+
'tableWrapper': 'fvXKN_rMrG',
|
|
40
|
+
'iconWrapper': 'fvXKN_cvRx',
|
|
41
|
+
'iconCorrect': 'fvXKN_EKAb',
|
|
42
|
+
'correctRowBorder': 'fvXKN_tnta',
|
|
43
|
+
'correctRowBorderRadius': 'fvXKN_fvqY'
|
|
44
|
+
};
|
|
45
|
+
var AnswerSummaryTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
|
|
46
|
+
(0, _inherits2.default)(AnswerSummaryTable, _Component);
|
|
47
|
+
|
|
48
|
+
var _super = (0, _createSuper2.default)(AnswerSummaryTable);
|
|
49
|
+
|
|
50
|
+
function AnswerSummaryTable() {
|
|
51
|
+
var _this;
|
|
52
|
+
|
|
53
|
+
(0, _classCallCheck2.default)(this, AnswerSummaryTable);
|
|
54
|
+
|
|
55
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
56
|
+
args[_key] = arguments[_key];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
60
|
+
|
|
61
|
+
_this.render = function () {
|
|
62
|
+
var _this$props$answerSum = _this.props.answerSummary,
|
|
63
|
+
choices = _this$props$answerSum.choices,
|
|
64
|
+
no_answer = _this$props$answerSum.no_answer;
|
|
65
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
66
|
+
className: styles.tableWrapper
|
|
67
|
+
}, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
|
|
68
|
+
margin: "large 0 small 0",
|
|
69
|
+
level: "h3"
|
|
70
|
+
}, (0, _formatMessage.default)('Answer Frequency Summary')), /*#__PURE__*/_react.default.createElement(_presenter.ChoiceInfo, {
|
|
71
|
+
choices: choices,
|
|
72
|
+
noAnswer: no_answer
|
|
73
|
+
}));
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
return _this;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return AnswerSummaryTable;
|
|
80
|
+
}(_react.Component), _class2.propTypes = {
|
|
81
|
+
answerSummary: _propTypes.answerSummaryPropType
|
|
82
|
+
}.isRequired, _temp)) || _class);
|
|
83
|
+
exports.AnswerSummaryTable = AnswerSummaryTable;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = generator;
|
|
7
|
+
|
|
8
|
+
function generator(_ref) {
|
|
9
|
+
var spacing = _ref.spacing;
|
|
10
|
+
return {
|
|
11
|
+
colorGreen: '#0b874b',
|
|
12
|
+
cellPadding: ' 0.75rem 0.75rem',
|
|
13
|
+
tableBottomPadding: spacing.medium
|
|
14
|
+
};
|
|
15
|
+
}
|