quiz-interactions
Version:
A React UI component Library for quiz interaction types.
121 lines (99 loc) • 4.41 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _instructureValidations = require("instructure-validations");
var _validationHelpers = require("../util/validationHelpers");
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/lib/format-message"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var InteractionType =
/*#__PURE__*/
function () {
function InteractionType(obj) {
(0, _classCallCheck2.default)(this, InteractionType);
this.defaultProperties = {};
this.getDefaultInteractionData = function () {
return {};
};
this.getDefaultScoringData = function () {
return {};
};
this.getReadableResponseText = function () {};
this.hideResultStem = false;
this.id = 0;
this.itemBody = null;
this.translatedName = null;
this.rawName = null;
this.scoringAlgorithmDefault = null;
this.scoringAlgorithmOptions = [];
this.slug = 'choice';
this.userResponseTypeOptions = [];
this.isSubjective = false;
if (obj !== void 0) {
this.initializeProps(obj);
}
}
(0, _createClass2.default)(InteractionType, [{
key: "initializeProps",
value: function initializeProps(obj) {
var jsObj = obj; // May be constructed from an immutable.js map
if (obj && typeof obj.toJS === 'function') {
jsObj = obj.toJS();
}
Object.assign(this, jsObj);
}
}, {
key: "hasResponse",
value: function hasResponse(resp) {
// NOTE: resp is userResponse.value
// This function is to determine whether the userResponse
// actually indicates that a response was given.
// Interaction types with more complex userResponse data
// can override this function.
return resp !== null && resp !== void 0 && resp !== '';
}
}, {
key: "getErrors",
value: function getErrors() {
var objectToValidate = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this;
var target = objectToValidate; // the target is likely an immutable js objct
if (typeof target.toJS === 'function') {
target = objectToValidate.toJS();
}
return this.constructor.getErrors(target);
}
}, {
key: "getDefaultUserResponse",
value: function getDefaultUserResponse(intData) {
return void 0;
}
}, {
key: "name",
set: function set(val) {
this.rawName = val;
},
get: function get() {
// Prefer the localized name over static name from database
return this.translatedName || this.rawName;
}
}], [{
key: "getErrors",
value: function getErrors(objectToValidate) {
return _objectSpread({}, (0, _instructureValidations.validate)(objectToValidate, this.baseValidations), {}, (0, _instructureValidations.validate)(objectToValidate, this.validations));
}
}]);
return InteractionType;
}();
exports.default = InteractionType;
InteractionType.baseValidations = {
itemBody: [(0, _instructureValidations.rule)('presence', {
message: (0, _validationHelpers.presenceMessage)((0, _formatMessage.default)('Question Stem'))
})]
};
InteractionType.validations = {};