diff --git a/client/src/components/MemberIncidentsTable/index.js b/client/src/components/MemberIncidentsTables/components/SingleIncidentsTable.js similarity index 73% rename from client/src/components/MemberIncidentsTable/index.js rename to client/src/components/MemberIncidentsTables/components/SingleIncidentsTable.js index 6f79f59..5c1d91e 100644 --- a/client/src/components/MemberIncidentsTable/index.js +++ b/client/src/components/MemberIncidentsTables/components/SingleIncidentsTable.js @@ -4,17 +4,17 @@ import ReactTable from 'react-table'; import 'react-table/react-table.css'; import { NavLink } from 'react-router-dom'; -import {incidentsReportHeaderTitles} from '../../constants/menuItems'; +import {incidentsReportHeaderTitles} from '../../../constants/menuItems'; import { incidentDescriptions, incidentLevelDescriptions, - UNLOCKED_INCIDENT, - UNSCHEDULED_INCIDENT -} from '../../constants/enums'; + UNLOCKED_INCIDENT_RELATED_WITH_RESERVATION, UNLOCKED_INCIDENT_STANDALONE, UNSCHEDULED_INCIDENT_AFTER_RESERVATION, + UNSCHEDULED_INCIDENT_BEFORE_RESERVATION, UNSCHEDULED_INCIDENT_STANDALONE +} from '../../../constants/enums'; -const MemberIncidentsTable = props => { - const { loading, title, openMemberSummaryOnMemberClick } = props; +const SingleIncidentsTable = props => { + const { loading, title, openMemberSummaryOnMemberClick, showBookingTimes, showDoorLockEntryTimes, hideMemberName } = props; const incidents = props.incidents ? props.incidents : []; const columns = []; @@ -24,7 +24,18 @@ const MemberIncidentsTable = props => { incidentHeaders.forEach((header) => { const columnTitle = incidentsReportHeaderTitles[header]; - if (columnTitle){ + let showColumn = true; + if ((header === 'bookingStart' || header === 'bookingEnd') && !showBookingTimes){ + showColumn = false; + } + if ((header === 'unlockTimestamp' || header === 'lockTimestamp') && !showDoorLockEntryTimes){ + showColumn = false; + } + if (header === 'memberName' && hideMemberName){ + showColumn = false; + } + + if (columnTitle && showColumn){ const columnAlignments = { left: 'left', right: 'right', @@ -54,10 +65,13 @@ const MemberIncidentsTable = props => { const { incidentType, incidentLevel, timeIntervalsToCharge } = props.row['_original']; switch (incidentType) { - case UNLOCKED_INCIDENT: + case UNLOCKED_INCIDENT_RELATED_WITH_RESERVATION: + case UNLOCKED_INCIDENT_STANDALONE: cellValue = `${incidentLevelDescriptions[incidentLevel]}`; break; - case UNSCHEDULED_INCIDENT: + case UNSCHEDULED_INCIDENT_BEFORE_RESERVATION: + case UNSCHEDULED_INCIDENT_AFTER_RESERVATION: + case UNSCHEDULED_INCIDENT_STANDALONE: cellValue = `${timeIntervalsToCharge} x 5 min`; break; default: @@ -80,12 +94,6 @@ const MemberIncidentsTable = props => { }else{ return
{cellValue}
} - - // return - //
{cellValue}
- //
- - // return
{cellValue}
} }); } @@ -108,4 +116,4 @@ const MemberIncidentsTable = props => { ); }; -export default MemberIncidentsTable; +export default SingleIncidentsTable; diff --git a/client/src/components/MemberIncidentsTables/index.js b/client/src/components/MemberIncidentsTables/index.js new file mode 100644 index 0000000..ed05541 --- /dev/null +++ b/client/src/components/MemberIncidentsTables/index.js @@ -0,0 +1,78 @@ +import React from 'react'; +import {Accordion, Label} from 'semantic-ui-react'; +import SingleIncidentsTable from './components/SingleIncidentsTable'; +import { + UNLOCKED_INCIDENT_RELATED_WITH_RESERVATION, UNLOCKED_INCIDENT_STANDALONE, UNSCHEDULED_INCIDENT_AFTER_RESERVATION, + UNSCHEDULED_INCIDENT_BEFORE_RESERVATION, UNSCHEDULED_INCIDENT_STANDALONE +} from '../../constants/enums'; + +export default function MemberIncidentsTables (props) { + const { pendingIncidents, incidents, hideMemberName } = props; + + const incidentsRelatedToReservations = []; + const standaloneIncidents = []; + + if (Array.isArray(incidents)){ + incidents.forEach((incident) => { + if (incident && incident.incidentType){ + switch (incident.incidentType) { + case UNLOCKED_INCIDENT_RELATED_WITH_RESERVATION: + case UNSCHEDULED_INCIDENT_BEFORE_RESERVATION: + case UNSCHEDULED_INCIDENT_AFTER_RESERVATION: + incidentsRelatedToReservations.push(incident); + break; + case UNLOCKED_INCIDENT_STANDALONE: + case UNSCHEDULED_INCIDENT_STANDALONE: + standaloneIncidents.push(incident); + break; + } + } + }); + } + + const incidentsRelatedToReservationsTable = ( + + ); + + const standaloneIncidentsTable = ( + + ); + + const accordionPanels = [ + { + key: 'related-door-lock-incidents', + title : { content: