trc-client-core
Version:
The core of the TRC Client
119 lines (103 loc) • 4.37 kB
JSX
import React from 'react';
import {Link} from 'react-router';
import UserStore from 'trc-client-core/src/user/UserStore';
import Icon from 'trc-client-core/src/components/Icon';
import Auth from 'trc-client-core/src/components/Auth';
import NavigationHeading from 'trc-client-core/src/components/NavigationHeading';
import {connect} from 'react-redux';
import {trainingActivitySummaryRequest} from 'trc-client-core/src/participant/DealerActions';
var NavigationHeadingUser = React.createClass({
displayName: 'NavigationHeadingUser',
getInitialState() {
return {
data: null
};
},
componentDidMount() {
if(UserStore.isnt('ROLE_MEGA_ADMIN')){
this.fetchData(this.props);
}
},
fetchData() {
this.props.dispatch(trainingActivitySummaryRequest());
},
render() {
return (
<NavigationHeading>
<ul className="NavigationView_heading_userBar">
<li>{(UserStore.get('isSwitched')) ? <Icon modifier="small shift" hexCode="E110"/> : ''}</li>
<li><Link to="/portal">{UserStore.get('fullName')}</Link><Auth isPermission="TRAINING_ACTIVITY_SUMMARY">{this.renderRequestCount()}</Auth></li>
{this.renderSwitchDealership()}
<li><Link to="/portal">My {UserStore.get('site') === 'TOYOTA' ? 'TIA' : 'Academy'}</Link></li>
<li>{this.renderSwitchUserOrLogout()}</li>
</ul>
</NavigationHeading>
);
},
renderRequestCount() {
var colorClass = '';
var notifications = '';
var data = this.props;
if(data){
var evalRequests = 0
var requestList = 0
if(data.evaluationRequests){
evalRequests = data.evaluationRequests.size;
}
if(data.evaluationRequests){
requestList = data.requestList.size;
}
var requestCount = evalRequests + requestList;
if(requestCount > 0 || requestCount === null){
colorClass = 't-red';
notifications = requestCount;
}
return <Link to="/portal/training_activity_summary" className={`${colorClass} margin-left05`}>
<Icon modifier="small" className="shift-3 margin-right05" hexCode={String.fromCharCode(9993)}/>
{notifications}
</Link>;
} else {
return null
}
},
renderSwitchDealership() {
var branches = UserStore.get('dealershipBranches');
if(branches.size < 2 || !UserStore.isAny(['ROLE_MANAGER', 'ROLE_TECH_MANAGER'])) {
return null;
}
function isCurrent(branch) {
return branch.get('code') === UserStore.get('currentBranchCode');
}
function isntCurrent(branch) {
return !isCurrent(branch);
}
return (
<li className="Dropdown">
<a className="Dropdown_button" href="/">
{branches.filter(isCurrent).map(bb => <span key={bb.get('code')}>{bb.get('name')}</span>)}
<span key="arrow" className="Icon Icon-small Icon-shift margin-left05" data-icon={String.fromCharCode(57620)}></span>
</a>
<ul className="Dropdown_list" id="dealer_select_options">
{branches.filter(isntCurrent).map(bb => <a key={bb.get('code')}
href={`http://${bb.get('url')}/admin/switch-dealer-branch?dealer=${bb.get('code')}&j_username=${UserStore.get('participantId')}`}
title={bb.get('name')}>{bb.get('name')}</a>)}
</ul>
</li>
);
},
renderSwitchUserOrLogout() {
if(UserStore.get('isSwitched')) {
return <a className="Button Button-small Button-grey" href="/admin/tmca/switch-user-exit" title="Switch Back">Switch Back</a>;
} else {
return <a href="/sso/saml/logout">Log Out</a>;
}
}
});
export default connect(
(state) => {
return {
evaluationRequests: state.dealer.trainingActivitySummary.get('evaluationRequests'),
requestList: state.dealer.trainingActivitySummary.get('requestList')
}
}
)(NavigationHeadingUser);