/* global gettext */ import PropTypes from 'prop-types'; import React from 'react'; import ReactDOM from 'react-dom'; import classNames from 'classnames'; // eslint-disable-next-line import/no-named-as-default, import/no-named-as-default-member import CircleChart from './CircleChart'; import CircleChartLegend from './CircleChartLegend'; import GradeTable from './GradeTable'; // eslint-disable-next-line import/no-named-as-default, import/no-named-as-default-member import DueDates from './DueDates'; import Discussions from './Discussions'; function arrayToObject(array) { return array.reduce((accumulator, obj) => { const key = Object.keys(obj)[0]; accumulator[key] = obj[key]; return accumulator; }, {}); } function countByType(type, assignments) { let count = 0; // eslint-disable-next-line array-callback-return assignments.map(({format}) => { if (format === type) { count += 1; } }); return count; } function getActiveUserString(count) { const users = (count === 1) ? 'User' : 'Users'; return `${users} active in this course right now`; } function getAssignmentCounts(types, assignments) { const countsArray = types.map((type) => ({ [type]: countByType(type, assignments) })); return arrayToObject(countsArray); } function getStreakIcons(count) { // eslint-disable-next-line prefer-spread return Array.apply(null, {length: count}).map((e, i) => ( // eslint-disable-next-line react/no-array-index-key