UNPKG

trc-client-core

Version:
142 lines (132 loc) 5.03 kB
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;