Fix for loading
This commit is contained in:
53
client/src/components/GenerateFeesInORDButton/index.js
Normal file
53
client/src/components/GenerateFeesInORDButton/index.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import React, { Component } from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
import { Button, Modal } from 'semantic-ui-react';
|
||||
|
||||
import { addFeesToOrd } from '../../store/actions';
|
||||
|
||||
class GenerateFeesInORDButton extends Component {
|
||||
state = { open: false };
|
||||
|
||||
show = size => () => this.setState({ size, open: true });
|
||||
close = () => this.setState({ open: false });
|
||||
confirm = () => {
|
||||
const { addFeesToOrd, dateRange, memberIds } = this.props;
|
||||
|
||||
if (dateRange){
|
||||
addFeesToOrd(dateRange, memberIds);
|
||||
}
|
||||
|
||||
this.close();
|
||||
};
|
||||
|
||||
render() {
|
||||
const { open, size } = this.state;
|
||||
const { singleMember, disabled } = this.props;
|
||||
|
||||
const modalContent = singleMember ?
|
||||
'This will remove all existing fees in ORD for selected member in selected date range and generate new fees based on shown incident tables. Do you want to continue ?':
|
||||
'This will remove all existing fees in ORD for all members in selected date range and generate new fees based on shown incident tables. Do you want to continue ?';
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Button disabled={disabled} onClick={this.show('tiny')}>Generate fees in ORD</Button>
|
||||
|
||||
<Modal size={size} open={open} onClose={this.close}>
|
||||
<Modal.Header>Add fees to the ORD</Modal.Header>
|
||||
<Modal.Content>
|
||||
<p>{modalContent}</p>
|
||||
</Modal.Content>
|
||||
<Modal.Actions>
|
||||
<Button negative onClick={this.close}>No</Button>
|
||||
<Button positive icon='checkmark' onClick={this.confirm} labelPosition='right' content='Yes' />
|
||||
</Modal.Actions>
|
||||
</Modal>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
addFeesToOrd: (dateRange, memberIds) => addFeesToOrd(dispatch, dateRange, memberIds),
|
||||
});
|
||||
|
||||
export default connect(null, mapDispatchToProps)(GenerateFeesInORDButton);
|
||||
@@ -1,111 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Loader } from 'semantic-ui-react';
|
||||
import ReactTable from 'react-table';
|
||||
import 'react-table/react-table.css';
|
||||
import { NavLink } from 'react-router-dom';
|
||||
|
||||
import {incidentsReportHeaderTitles} from '../../constants/menuItems';
|
||||
import {
|
||||
incidentDescriptions,
|
||||
incidentLevelDescriptions,
|
||||
UNLOCKED_INCIDENT,
|
||||
UNSCHEDULED_INCIDENT
|
||||
} from '../../constants/enums';
|
||||
|
||||
|
||||
const MemberIncidentsTable = props => {
|
||||
const { loading, title, openMemberSummaryOnMemberClick } = props;
|
||||
const incidents = props.incidents ? props.incidents : [];
|
||||
|
||||
const columns = [];
|
||||
if (incidents && incidents.length > 0){
|
||||
const incidentHeaders = Object.keys(incidentsReportHeaderTitles);
|
||||
|
||||
incidentHeaders.forEach((header) => {
|
||||
const columnTitle = incidentsReportHeaderTitles[header];
|
||||
|
||||
if (columnTitle){
|
||||
const columnAlignments = {
|
||||
left: 'left',
|
||||
right: 'right',
|
||||
};
|
||||
let columnContentsAlignment = columnAlignments.left;
|
||||
|
||||
columns.push({
|
||||
Header: incidentsReportHeaderTitles[header],
|
||||
accessor: header,
|
||||
Cell: props => {
|
||||
let cellValue = '';
|
||||
let urlValue = undefined;
|
||||
|
||||
switch (props.column.id) {
|
||||
case 'memberName':
|
||||
const memberId = props.row['_original'].memberId;
|
||||
urlValue = `/practice-summary-report/${memberId}`;
|
||||
cellValue = props.value;
|
||||
break;
|
||||
case 'incidentType':
|
||||
cellValue = incidentDescriptions[props.value];
|
||||
break;
|
||||
case 'incidentLevel':
|
||||
cellValue = incidentLevelDescriptions[props.value];
|
||||
break;
|
||||
case 'feeDescription':
|
||||
const { incidentType, incidentLevel, timeIntervalsToCharge } = props.row['_original'];
|
||||
|
||||
switch (incidentType) {
|
||||
case UNLOCKED_INCIDENT:
|
||||
cellValue = `${incidentLevelDescriptions[incidentLevel]}`;
|
||||
break;
|
||||
case UNSCHEDULED_INCIDENT:
|
||||
cellValue = `${timeIntervalsToCharge} x 5 min`;
|
||||
break;
|
||||
default:
|
||||
cellValue = '';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'totalChargeFee':
|
||||
const totalFee = props.value ? props.value : props.row['_original'].incidentPrice;
|
||||
const totalFeeFormatted = parseFloat(totalFee).toFixed(2);
|
||||
cellValue = `$ ${totalFeeFormatted}`;
|
||||
columnContentsAlignment = columnAlignments.right;
|
||||
break;
|
||||
default:
|
||||
cellValue = props.value;
|
||||
}
|
||||
|
||||
if (openMemberSummaryOnMemberClick && urlValue){
|
||||
return <NavLink to={urlValue}>{cellValue}</NavLink>
|
||||
}else{
|
||||
return <div style={{ textAlign: columnContentsAlignment }}>{cellValue}</div>
|
||||
}
|
||||
|
||||
// return <NavLink to={urlValue}>
|
||||
// <div>{cellValue}</div>
|
||||
// </NavLink>
|
||||
|
||||
// return <div style={{ textAlign: columnContentsAlignment }}><a href={'www.gogole.com'} >{cellValue}</a></div>
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h4>{title}</h4>
|
||||
<Loader active={loading} />
|
||||
{
|
||||
!loading && incidents &&
|
||||
<ReactTable
|
||||
data={incidents}
|
||||
multiSort={false}
|
||||
columns={columns}
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default MemberIncidentsTable;
|
||||
Reference in New Issue
Block a user