in source/console/src/views/Client.tsx [1222:1372]
render() {
const nonAutomatedEvents = this.state.events.filter(e => e.eventType !== 'automated');
return (
<div className="view">
<Container>
<Row>
<Col>
<Breadcrumb>
<Breadcrumb.Item active>{I18n.get('menu.client')}</Breadcrumb.Item>
</Breadcrumb>
</Col>
</Row>
<Row>
<Col>
<Card>
<Card.Body>
<Form>
<Form.Row>
<Form.Group as={Col} xs={6} sm={3} md={2} controlId="siteSelect">
<Form.Label>{I18n.get('text.site.name')}</Form.Label>
<Form.Control as="select" value={this.state.selectedSite.name} onChange={this.handleSiteChange}>
<option data-key="" key="none-site" value="" disabled>{I18n.get('text.select.site')}</option>
{
this.state.sites.map((site: IGeneralQueryData) => {
return (
<option data-key={site.id} key={site.id} value={site.name}>{site.name}</option>
);
})
}
</Form.Control>
</Form.Group>
<Form.Group as={Col} xs={6} sm={3} md={2} controlId="areaSelect">
<Form.Label>{I18n.get('text.area.name')}</Form.Label>
<Form.Control as="select" value={this.state.selectedArea.name} onChange={this.handleAreaChange}>
<option data-key="" key="none-area" value="" disabled>{I18n.get('text.select.area')}</option>
{
this.state.areas.map((area: IGeneralQueryData) => {
return (
<option data-key={area.id} key={area.id} value={area.name}>{area.name}</option>
);
})
}
</Form.Control>
</Form.Group>
<Form.Group as={Col} xs={6} sm={3} md={2} controlId="processSelect">
<Form.Label>{I18n.get('text.process.name')}</Form.Label>
<Form.Control as="select" value={this.state.selectedProcess.name} onChange={this.handleProcessChange}>
<option data-key="" key="none-process" value="" disabled>{I18n.get('text.select.process')}</option>
{
this.state.processes.map((process: IGeneralQueryData) => {
return (
<option data-key={process.id} key={process.id} value={process.name}>{process.name}</option>
);
})
}
</Form.Control>
</Form.Group>
<Form.Group as={Col} xs={6} sm={3} md={2} controlId="stationSelect">
<Form.Label>{I18n.get('text.station.name')}</Form.Label>
<Form.Control as="select" value={this.state.selectedStation.name} onChange={this.handleStationChange}>
<option data-key="" key="none-station" value="" disabled>{I18n.get('text.select.station')}</option>
{
this.state.stations.map((station: IGeneralQueryData) => {
return (
<option data-key={station.id} key={station.id} value={station.name}>{station.name}</option>
);
})
}
</Form.Control>
</Form.Group>
<Form.Group as={Col} xs={6} sm={3} md={2} controlId="deviceSelect">
<Form.Label>{I18n.get('text.device.name')}</Form.Label>
<Form.Control as="select" value={this.state.selectedDevice.name} onChange={this.handleDeviceChange}>
<option data-key="" key="none-device" value="" disabled>{I18n.get('text.select.device')}</option>
{
this.state.devices.map((device: IGeneralQueryData) => {
return (
<option data-key={device.id} key={device.id} value={device.name}>{device.name}</option>
);
})
}
</Form.Control>
</Form.Group>
</Form.Row>
</Form>
</Card.Body>
</Card>
</Col>
</Row>
<EmptyRow />
<Row>
<Col>
{
this.state.showEvent && this.state.events.length === 0 && !this.state.isLoading &&
<Jumbotron>
<p>{I18n.get('text.no.events.for.process')}</p>
</Jumbotron>
}
{
nonAutomatedEvents.some(e => e.parentId === this.state.selectedProcess.id) &&
<Card className="custom-card-big">
<Row>
{
nonAutomatedEvents
.filter(e => e.parentId === this.state.selectedProcess.id)
.map((event: IEvent) => {
let className = 'custom-card-event';
if (event.isOpen || this.hasOpenSubEvents(event.id!)) {
className = className.concat(' ', 'event-open');
} else if (event.isAcknowledged || this.hasAcknowledgedSubEvents(event.id!)) {
className = className.concat(' ', 'event-acknowledged');
} else if (event.isClosedRejected) {
className = className.concat(' ', 'event-closed-rejected');
}
let eventImg;
if (event.eventImgKey) {
eventImg = (
<div className='client-event-img-container'>
<AmplifyS3Image
className='amplify-s3-image client-event-img'
key={event.eventImgKey}
imgKey={event.eventImgKey}>
</AmplifyS3Image>
</div>
);
} else {
eventImg = '';
}
return (
<Col xs={6} sm={3} md={3} key={event.id} className='custom-card-event-col'>
<Card className={className} onClick={async () => this.handleEventClick(event)}>
<Card.Body className='client-event-card-body'>
<Card.Title>
{this.outputEventNameForCardTitle(event)}
</Card.Title>
<Card.Text>
{event.description}
</Card.Text>
{eventImg}
</Card.Body>
</Card>
</Col>
);
})
}
</Row>
</Card>
}