SectionInfo.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Copyright (C) 2016 - present Instructure, Inc.
  3. *
  4. * This file is part of Canvas.
  5. *
  6. * Canvas is free software: you can redistribute it and/or modify it under
  7. * the terms of the GNU Affero General Public License as published by the Free
  8. * Software Foundation, version 3 of the License.
  9. *
  10. * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
  11. * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  12. * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
  13. * details.
  14. *
  15. * You should have received a copy of the GNU Affero General Public License along
  16. * with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. import React from 'react'
  19. import PropTypes from 'prop-types'
  20. import _ from 'underscore'
  21. import I18n from 'i18n!student_context_tray'
  22. const sectionShape = PropTypes.shape({
  23. name: PropTypes.string.isRequired
  24. });
  25. const enrollmentsShape = PropTypes.shape({
  26. section: sectionShape.isRequired
  27. });
  28. const userShape = PropTypes.shape({
  29. enrollments: PropTypes.arrayOf(enrollmentsShape).isRequired
  30. });
  31. class SectionInfo extends React.Component {
  32. static propTypes = {
  33. user: userShape.isRequired
  34. }
  35. render () {
  36. const sections = this.props.user.enrollments
  37. .map(e => e.section)
  38. .filter(s => s != null);
  39. if (sections.length > 0) {
  40. const sectionNames = sections.map((section) => {
  41. return section.name
  42. }).sort()
  43. return (
  44. <span>{I18n.t("Section: %{section_names}", { section_names: sectionNames.join(', ') })}</span>
  45. )
  46. } else { return null }
  47. }
  48. }
  49. export default SectionInfo