ih-portal
Version:
A project for connecting interaction hub services with catalyst-ui components
87 lines (68 loc) • 2.21 kB
JSX
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,
};