import React from 'react'; import PropTypes from 'prop-types'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import messages from './messages'; import DueDateTime from './DueDateTime'; import ProblemScores from './ProblemScores'; function Subsection({ intl, subsection, }) { const scoreName = subsection.graded ? 'problem' : 'practice'; const { earned, possible } = subsection.gradedTotal; const showTotalScore = ((possible > 0) || (earned > 0)) && subsection.showGrades; // screen reader information const totalScoreSr = intl.formatMessage(messages.pointsEarned, { earned, total: possible }); return (
{/* eslint-disable-next-line react/no-danger */}
{showTotalScore && {totalScoreSr}} {showTotalScore && ({earned}/{possible}) {subsection.percentGraded}%}
{subsection.format &&
{subsection.format}
} {subsection.due !== null && }
{subsection.problemScores.length > 0 && subsection.showGrades && ( )} {subsection.problemScores.length > 0 && !subsection.showGrades && subsection.showCorrectness === 'past_due' && (
{intl.formatMessage(messages[`${scoreName}HiddenUntil`])}
)} {subsection.problemScores.length > 0 && !subsection.showGrades && !(subsection.showCorrectness === 'past_due') &&
{intl.formatMessage(messages[`${scoreName}Hidden`])}
} {(subsection.problemScores.length === 0) && (
{intl.formatMessage(messages.noScores)}
)}
); } Subsection.propTypes = { intl: intlShape.isRequired, subsection: PropTypes.shape({ graded: PropTypes.bool.isRequired, url: PropTypes.string.isRequired, showGrades: PropTypes.bool.isRequired, gradedTotal: PropTypes.shape({ possible: PropTypes.number, earned: PropTypes.number, graded: PropTypes.bool, }).isRequired, showCorrectness: PropTypes.string.isRequired, due: PropTypes.string, problemScores: PropTypes.arrayOf(PropTypes.shape({ possible: PropTypes.number, earned: PropTypes.number, id: PropTypes.string, })).isRequired, format: PropTypes.string, // override: PropTypes.object, displayName: PropTypes.string.isRequired, percentGraded: PropTypes.number.isRequired, }).isRequired, }; export default injectIntl(Subsection);