UNPKG

ih-portal

Version:

A project for connecting interaction hub services with catalyst-ui components

87 lines (68 loc) 2.21 kB
import React, { Component, PropTypes } from 'react'; import { navColToArray } from '../utils/NavigationCollection.js'; import { AcademicProfile } from 'catalyst-ui'; /* global __ACADEMIC_PROFILE_URL__ */ export default class AcademicProfileProv extends Component { constructor() { super(...arguments); this.fetch = this.fetch.bind(this); this.invalidate = this.invalidate.bind(this); this.getDegreeAuditLink = this.getDegreeAuditLink.bind(this); } componentDidMount() { const { data } = this.props; if (!data || (data.lastAction && data.lastAction.status === 'error') || !data.data) { this.fetch(); } } getDegreeAuditLink() { const { degreeAuditNavCol } = this.props; if (!degreeAuditNavCol || (!degreeAuditNavCol.data && !degreeAuditNavCol.isFetching) || (degreeAuditNavCol.lastAction && degreeAuditNavCol.lastAction.status === 'error') || !degreeAuditNavCol.data[__DEGREE_AUDIT_PAGELET_NAME__]) { return ''; } const navCol = degreeAuditNavCol.data[__DEGREE_AUDIT_PAGELET_NAME__] const links = navColToArray(navCol); if (!links) { return ''; } const link = links.find(item => item.TargetCRefName === 'UCI_DEGREE_AUDIT1'); return link !== undefined ? link.AbsolutePortalURL : link; } fetch() { const requestParams = { url: __ACADEMIC_PROFILE_URL__, auth: [__USERNAME__, __PASSWORD__], }; this.props.fetch(requestParams); this.props.fetchNavCol(); } invalidate() { const requestParams = { url: __ACADEMIC_PROFILE_URL__, auth: [__USERNAME__, __PASSWORD__], }; this.props.invalidate(requestParams); } render() { const { data } = this.props; return ( <div className="piglet"> <AcademicProfile academicProfile={data.data} fetch={this.fetch} invalidate={this.invalidate} degreeAuditLink={this.getDegreeAuditLink()} /> </div> ); } } AcademicProfileProv.propTypes = { data: PropTypes.object, fetch: PropTypes.func.isRequired, invalidate: PropTypes.func.isRequired, fetchNavCol: PropTypes.func.isRequired, degreeAuditNavCol: PropTypes.object, };