UNPKG

@instructure/quiz-taking

Version:
93 lines (92 loc) 3.52 kB
function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } 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 _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } import { connect } from '@instructure/quiz-core/common/react-redux'; import { getQuizSessions } from '@instructure/quiz-core/moderating/api/quizSessions'; import { getQuizSessionById } from '@instructure/quiz-core/common/selectors/quizSessions'; import { AttemptHistory as AttemptHistoryPresenter } from './presenter'; function getAttemptData(state, attempt) { var authoritativeResult, quizSession; var resultObject = {}; if (attempt.quizSessionId) { quizSession = getQuizSessionById(state, attempt.quizSessionId); authoritativeResult = quizSession.findAuthoritativeResult(); resultObject = authoritativeResult.toObject(); } return _object_spread_props(_object_spread({}, attempt), { score: resultObject.score, pointsPossible: resultObject.pointsPossible }); } export function mapStateToProps(state, ownProps) { var attemptHistory = ownProps.attemptHistory; if (!attemptHistory || attemptHistory.length === 0) return {}; var attemptHistoryWithData = attemptHistory.map(function(attempt) { return getAttemptData(state, attempt); }); if (ownProps.findAuthoritativeAttempt) { var authoritativeAttempt = ownProps.findAuthoritativeAttempt(attemptHistoryWithData); attemptHistoryWithData = attemptHistoryWithData.map(function(attempt) { return _object_spread_props(_object_spread({}, attempt), { authoritative: attempt === authoritativeAttempt }); }); } return { attemptHistory: attemptHistoryWithData }; } export var mapDispatchToProps = { getQuizSessions: getQuizSessions }; export var AttemptHistory = connect(mapStateToProps, mapDispatchToProps)(AttemptHistoryPresenter); export default AttemptHistory;