trc-client-core
Version:
The core of the TRC Client
99 lines (87 loc) • 3.58 kB
JSX
import React from 'react';
import {connect} from 'react-redux';
import moment from 'moment';
import {Link} from 'react-router';
import classnames from 'classnames';
import Page from 'trc-client-core/src/components/Page';
import Auth from 'trc-client-core/src/components/Auth';
import {staticUrl} from 'trc-client-core/src/constants/url';
import {vehiclesRequest} from 'trc-client-core/src/product/ProductActions';
function Tab(props) {
var {segment, children, activeSegment} = props;
var className = classnames({
"TabItem t-uppercase": true,
"is-active": segment === activeSegment || (!activeSegment && props.default)
});
return <li>
<Link className={className} to="/product/vehicles" query={{segment}}>{children}</Link>
</li>;
}
var ProductVehicles = React.createClass({
displayName: 'ProductVehicles',
render() {
if (!this.props.vehicles) {
return null;
}
var tabProps = {
activeSegment: this.props.location.query.segment
};
return <Page title="Vehicles">
<div>
<ul className="Tabs Tabs-product">
<Tab {...tabProps} default segment="All">All</Tab>
<Tab {...tabProps} segment="Cars">Cars</Tab>
<Tab {...tabProps} segment="Hybrid">Hybrid</Tab>
<Auth site="LEXUS">
<Tab {...tabProps} segment="performance">Performance</Tab>
<Tab {...tabProps} segment="LexusEnform">Lexus Enform</Tab>
</Auth>
<Tab {...tabProps} segment="SUV_4WD">SUVs & 4WDs</Tab>
<Auth site="TOYOTA">
<Tab {...tabProps} segment="UTES_VANS">Utes & Vans</Tab>
<Tab {...tabProps} segment="ToyotaLink">Toyota Link</Tab>
</Auth>
</ul>
<ul className="List List-inline">
{this.props.vehicles.map(this.renderVehicle).toJS()}
</ul>
</div>
</Page>
},
renderVehicle(vehicle) {
var {modelName, brand, segments, connectedMobility} = vehicle.toJS();
var launchDate = moment(new Date(vehicle.get('launchDate')));
var date = launchDate.format("YYYY_MM");
var {query} = this.props.location;
var flatName = modelName.toLowerCase().replace(' ', '');
var isDisabled = segments.indexOf(query.segment) < 0;
// Extra cases
switch (query.segment) {
case 'ToyotaLink':
case 'LexusEnform':
isDisabled = connectedMobility;
break;
case 'Cars':
if (segments.indexOf('Hybrid') >= 0) {
isDisabled = false;
}
break;
case 'All':
case undefined:
isDisabled = false;
break;
}
return <li key={key} className={classnames({'is-disabled': isDisabled})}>
<Link to={`/product/vehicles/${modelName}`}>
<img src={staticUrl(`img/ui/product/vehicles/${brand}/${flatName}-${date}.jpg`)} alt="" height="60" width="120"/>
<div className="t-center">{this.renderNew(launchDate)} {modelName}</div>
</Link>
</li>;
},
renderNew(launchDate) {
if(launchDate.add(1, 'month').isAfter(moment())) {
return <span className="t-red">new</span>;
}
}
});
export default ProductVehicles;