display/src/Tcl.tsx

49 lines
1.2 KiB
TypeScript
Raw Normal View History

2021-11-12 16:41:27 +01:00
import React from "react";
2021-11-12 17:24:16 +01:00
import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'
import {faBus} from '@fortawesome/free-solid-svg-icons'
import {Card, Col, ListGroup} from "react-bootstrap";
2021-11-13 15:53:10 +01:00
import {placeholder} from "./utils";
2021-11-12 17:24:16 +01:00
2021-11-13 15:53:10 +01:00
export type PassageType = string | undefined;
2021-11-12 16:41:27 +01:00
2021-11-13 15:53:10 +01:00
export interface ILigne {
ligne?: string;
delais: PassageType[];
}
export default class Tcl extends React.Component<ILigne> {
2021-11-12 16:41:27 +01:00
render() {
return <Col>
<Card>
<Card.Header>
<FontAwesomeIcon icon={faBus}/> {placeholder(this.props.ligne)}
</Card.Header>
2021-11-12 17:24:16 +01:00
<Passages passages={this.props.delais}/>
</Card>
</Col>
2021-11-12 16:41:27 +01:00
}
}
interface IPassagesProps {
passages: PassageType[];
}
class Passages extends React.Component<IPassagesProps> {
render() {
return <ListGroup variant="flush">
2021-11-12 16:41:27 +01:00
{this.props.passages?.map((passage, index) => <Passage key={index} passage={passage}/>)}
</ListGroup>
2021-11-12 16:41:27 +01:00
}
}
interface IPassageProps {
passage: PassageType;
}
class Passage extends React.Component<IPassageProps> {
render() {
return <ListGroup.Item>{placeholder(this.props.passage)}</ListGroup.Item>
2021-11-12 16:41:27 +01:00
}
}