trc-client-core
Version:
The core of the TRC Client
142 lines (132 loc) • 5.03 kB
JSX
import React from 'react';
import Reflux from 'reflux';
import moment from 'moment';
import {Link} from 'react-router';
import Icon from 'trc-client-core/src/components/Icon';
import DataTable from 'bd-stampy/components/DataTable';
import {Tab, TabView, TabContent} from 'bd-stampy/components/Tabs';
import Loader from 'trc-client-core/src/components/Loader';
import ModalManager from 'trc-client-core/src/Modal/ModalManager';
import RequiredRoleQAReportInfo from '../Modal/ModalRequiredRoleQAReportInfo';
import RequiredRolesActions from 'trc-client-core/src/requiredRoles/RequiredRolesActions';
import RequiredRolesStore from 'trc-client-core/src/requiredRoles/RequiredRolesStore';
var RequiredRolesQAReport = React.createClass({
displayName: 'RequiredRolesQAReport',
mixins: [
require('bd-stampy/mixins/FormMixin'),
Reflux.listenTo(RequiredRolesStore, 'onStoreUpdate')
],
getStoreState() {
return {
reportDetails: RequiredRolesStore.getQAReport()
};
},
getInitialState: function () {
return this.getStoreState();
},
componentDidMount: function () {
this.getData();
},
getData: function () {
RequiredRolesActions.fetchQAReport(this.state.formData);
},
onStoreUpdate() {
this.setState(this.getStoreState());
},
showInfo: function () {
ModalManager.showModal(RequiredRoleQAReportInfo);
},
render: function () {
if(!this.state.reportDetails){
return <Loader></Loader>;
}
return (
<div>
<h1>QA Report <span className="t-muted">Required Roles</span><Icon name="circleinfo" className="push-left" onClick={this.showInfo}/></h1>
<TabView transition={false} >
<Tab>Unapproved</Tab>
<TabContent>
{this.renderReportTableUnapproved()}
</TabContent>
<Tab>Incorrect Job Description</Tab>
<TabContent>
{this.renderReportTableIncorrect()}
</TabContent>
</TabView>
</div>
);
},
renderReportTableUnapproved(){
if(!this.state.reportDetails.unapprovedParticipants){
return <Loader></Loader>;
}
var tableSchema = [{
heading: 'Name',
filter: (item) => item.firstName,
width: '10%',
render: (item) => <Link to={`/portal/${item.participantId}`} className="readmore">{item.firstName + " " + item.lastName}</Link>
}, {
heading: 'Job Description',
filter: (item) => item.jobPositionDesc,
width: '10%',
render: (item) => item.jobPositionDesc
}, {
heading: 'Department',
filter: (item) => item.department,
render: (item) => item.department
}, {
heading: 'Region',
filter: (item) => item.regionCode,
render: (item) => item.regionCode
}, {
heading: 'Dealership',
filter: (item) => item.dealerName,
render: (item) => item.dealerName
}, {
heading: 'Nominated By Date',
filter: (item) => item.id.date,
render: (item) => moment(new Date(item.id.date || 0)).format('DD/MM/YYYY')
}];
return <DataTable
schema={tableSchema}
data={this.state.reportDetails.unapprovedParticipants}
modifier="data"
empty={<div className="Table_empty">No Data to display</div>}
/>;
},
renderReportTableIncorrect(){
if(!this.state.reportDetails.incorrectJobDescriprion){
return <Loader></Loader>;
}
var tableSchema = [{
heading: 'Name',
filter: (item) => item.firstName,
width: '15%',
render: (item) => <Link to={`/portal/${item.participantId}`} className="readmore">{item.firstName + " " + item.lastName}</Link>
}, {
heading: 'Job Description',
filter: (item) => item.jobPositionDesc,
width: '25%',
render: (item) => item.jobPositionDesc
}, {
heading: 'Department',
filter: (item) => item.department,
render: (item) => item.department
}, {
heading: 'Region',
filter: (item) => item.regionCode,
render: (item) => item.regionCode
}, {
heading: 'Dealership',
filter: (item) => item.dealerName,
render: (item) => item.dealerName
}];
return <DataTable
schema={tableSchema}
data={this.state.reportDetails.incorrectJobDescriprion}
modifier="data"
empty={<div className="Table_empty">No Data to display</div>}
/>;
}
});
module.exports = RequiredRolesQAReport;