UNPKG

ih-pagelet-financial-aid

Version:

PS Financial Aid Pagelet

180 lines (159 loc) 6.25 kB
import React, { Component, PropTypes } from 'react'; import AppBar from 'material-ui/lib/app-bar'; import Paper from 'material-ui/lib/paper'; import Styles from 'material-ui/lib/styles/'; import DropDownMenu from 'material-ui/lib/drop-down-menu'; import List from 'material-ui/lib/lists/list'; import CircularProgress from 'material-ui/lib/circular-progress'; import UCdefaultTheme from 'ih-portal-theme/src/components/UCdefaultTheme.js'; import AwardDetailItem from './AwardDetailItem.jsx'; import AwardSummaryHeader from './AwardSummaryHeader.jsx'; import ThemeManager from 'material-ui/lib/styles/theme-manager.js'; import NoAwards from 'material-ui/lib/svg-icons/editor/money-off'; import RaisedButton from 'material-ui/lib/raised-button'; const { bool, func, node, object } = PropTypes; export default class FinancialAidAwards extends Component { constructor() { super(...arguments); this.state = { selectedIndex: 0, }; this.handleIconMenuChange = this.handleIconMenuChange.bind(this); this.handleYearChange = this.handleYearChange.bind(this); } getChildContext() { const theme = ThemeManager.getMuiTheme(UCdefaultTheme); theme.appBar.textColor = 'white'; theme.appBar.spacing = Styles.Spacing.desktopDropDownMenuItemHeight; return { muiTheme: theme, }; } handleIconMenuChange(ev, menuItem) { if (menuItem.props.primaryText === 'Refresh') { this.setState({selectedIndex: 0}); this.props.invalidate(); } } handleYearChange(ev, selectedIndex, menuItem) { this.setState({selectedIndex: selectedIndex}); this.props.fetch(menuItem.payload); } render() { let financialData = null; let awardDetailCard = []; let showAwards = false; if (this.props.isFetching) { financialData = this.props.children || <div style={{ textAlign: 'center' }}><CircularProgress mode="indeterminate" color="black" size={2} /></div>; } if (!this.props.isFetching && this.props.data && this.props.data.awardSummary) { const data = this.props.data; showAwards = true; if (data.awardSummary.sfaMsgLong === 'You have no financial aid awards available for viewing.') { awardDetailCard = <div style={{ textAlign: 'center' }}><br/>{data.awardSummary.sfaMsgLong}<br/><NoAwards style={{height: 205, width: 205}} color="#EEEEEE"/></div>; showAwards = false; } else { if (Array.isArray(data.awardSummary.studentAwardDetail)) { awardDetailCard = data.awardSummary.studentAwardDetail.map((award) => { return ( <AwardDetailItem key={award.itemTypeLovdescr} awardName={award.itemTypeLovdescr} statusDescription={award.sfaAwardStatusLovdescr} awardStatus={award.sfaAwardStatus} offeredBalance={award.offerBalance} acceptedBalance={award.acceptBalance} disbursedBalance={award.disbursedBalance} /> ); }); } else { const award = data.awardSummary.studentAwardDetail; awardDetailCard.push( <AwardDetailItem key={award.itemTypeLovdescr} awardName={award.itemTypeLovdescr} statusDescription={award.sfaAwardStatusLovdescr} awardStatus={award.sfaAwardStatus} offeredBalance={award.offerBalance} acceptedBalance={award.acceptBalance} disbursedBalance={award.disbursedBalance} /> ); } } let menuItems = []; let faYears = []; let awardSummaryHeader = null; let acceptDeclineButton = null; if (data.lov && data.lov.values) { if (Array.isArray(data.lov.values.value)) { menuItems = data.lov.values.value.map((lov) => {return { payload: lov.aidYear, text: lov.aidyeardescription };}); } else { const lov = data.lov.values.value; menuItems.push({ payload: lov.aidYear, text: lov.aidyeardescription }); } } if (data.awardSummary) { const summary = data.awardSummary; awardSummaryHeader = ( <AwardSummaryHeader offeredBalance={summary.offerBalance} acceptedBalance={summary.acceptBalance} disbursedBalance={summary.disbursedBalance} /> ); } if (data.lov && data.lov.values) { let i = 0; faYears = data.lov.values.value; for (i = 0; i < faYears.length; i++) { if (faYears[i].aidYear === this.props.data.awardSummary.aidYear && faYears[i].acceptdeclineawards === 'Y') { acceptDeclineButton = <div style={{paddingBottom: 20, textAlign: 'center'}}><RaisedButton label="Accept / Decline Awards" primary={true} linkButton={true} href={__ACCEPTDENY_URL__}/></div>; } } } if (!showAwards) { financialData = <div><div>{awardDetailCard}</div></div>; } else { financialData = ( <div> <DropDownMenu menuItems={menuItems} onChange={this.handleYearChange} selectedIndex={this.state.selectedIndex} /> <div> {awardSummaryHeader} <List subheader="Financial Aid Awards"> {awardDetailCard} </List> {acceptDeclineButton} </div> </div> ); } } if (!this.props.isFetching && this.props.data && this.props.data.faultMessages) { awardDetailCard = <div style={{ textAlign: 'center' }}><br/>{this.props.data.faultMessages[0].descr}<br/><NoAwards style={{height: 205, width: 205}} color="#EEEEEE"/></div>; showAwards = false; financialData = <div><div>{awardDetailCard}</div></div>; } return ( <Paper> <AppBar title="Financial Aid Awards" showMenuIconButton={false} className="ih-pagelet-title" /> {financialData} </Paper> ); } } FinancialAidAwards.propTypes = { children: node, data: object.isRequired, fetch: func.isRequired, invalidate: func.isRequired, isFetching: bool, }; FinancialAidAwards.childContextTypes = { muiTheme: object, };