Skip to content
This repository was archived by the owner on Dec 9, 2021. It is now read-only.

Commit 991083f

Browse files
authored
Merge pull request #8 from codeBelt/map-breakout
move maps out of the render method
2 parents 5b50404 + 3cfa70f commit 991083f

File tree

9 files changed

+87
-48
lines changed

9 files changed

+87
-48
lines changed

src/views/episodes-page/EpisodesPage.jsx

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import * as React from 'react';
22
import { connect } from 'react-redux';
3-
import { Table, Header, Image } from 'semantic-ui-react';
43
import ShowsAction from '../../stores/shows/ShowsAction';
54
import { selectEpisodes } from '../../selectors/episodes/EpisodesSelector';
65
import LoadingIndicator from '../components/loading-indicator/LoadingIndicator';
76
import { selectRequesting } from '../../selectors/requesting/RequestingSelector';
7+
import EpisodesTable from './components/episodes-table/EpisodesTable';
88

99
const mapStateToProps = (state, ownProps) => ({
1010
episodeTables: selectEpisodes(state),
@@ -17,37 +17,13 @@ class EpisodesPage extends React.Component {
1717
}
1818

1919
render() {
20-
const { episodeTables, isRequesting } = this.props;
20+
const { isRequesting, episodeTables } = this.props;
2121

2222
return (
2323
<>
2424
<LoadingIndicator isActive={isRequesting} />
2525
{episodeTables.map((model) => (
26-
<div key={model.title}>
27-
<Header as="h2">{model.title}</Header>
28-
<Table>
29-
<Table.Header>
30-
<Table.Row>
31-
<Table.HeaderCell width={1}>Scene</Table.HeaderCell>
32-
<Table.HeaderCell>Episode</Table.HeaderCell>
33-
<Table.HeaderCell>Date</Table.HeaderCell>
34-
<Table.HeaderCell>Name</Table.HeaderCell>
35-
</Table.Row>
36-
</Table.Header>
37-
<Table.Body>
38-
{model.rows.map((row) => (
39-
<Table.Row key={row.episode}>
40-
<Table.Cell>
41-
<Image src={row.image} rounded={true} size="small" />
42-
</Table.Cell>
43-
<Table.Cell>{row.episode}</Table.Cell>
44-
<Table.Cell>{row.date}</Table.Cell>
45-
<Table.Cell>{row.name}</Table.Cell>
46-
</Table.Row>
47-
))}
48-
</Table.Body>
49-
</Table>
50-
</div>
26+
<EpisodesTable key={model.title} tableData={model} />
5127
))}
5228
</>
5329
);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import * as React from 'react';
2+
import { Image, Table } from 'semantic-ui-react';
3+
4+
export default class EpisodesTableRow extends React.PureComponent {
5+
render() {
6+
const { rowData } = this.props;
7+
8+
return (
9+
<Table.Row key={rowData.episode}>
10+
<Table.Cell>
11+
<Image src={rowData.image} rounded={true} size="small" />
12+
</Table.Cell>
13+
<Table.Cell>{rowData.episode}</Table.Cell>
14+
<Table.Cell>{rowData.date}</Table.Cell>
15+
<Table.Cell>{rowData.name}</Table.Cell>
16+
</Table.Row>
17+
);
18+
}
19+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.wrapper {
2+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import * as React from 'react';
2+
import { Header, Table } from 'semantic-ui-react';
3+
import EpisodesTableRow from '../episodes-table-row/EpisodesTableRow';
4+
5+
export default class EpisodesTable extends React.PureComponent {
6+
render() {
7+
const { tableData } = this.props;
8+
9+
return (
10+
<div key={tableData.title}>
11+
<Header as="h2">{tableData.title}</Header>
12+
<Table>
13+
<Table.Header>
14+
<Table.Row>
15+
<Table.HeaderCell width={1}>Scene</Table.HeaderCell>
16+
<Table.HeaderCell>Episode</Table.HeaderCell>
17+
<Table.HeaderCell>Date</Table.HeaderCell>
18+
<Table.HeaderCell>Name</Table.HeaderCell>
19+
</Table.Row>
20+
</Table.Header>
21+
<Table.Body>
22+
{tableData.rows.map((model) => (
23+
<EpisodesTableRow key={model.episode} rowData={model} />
24+
))}
25+
</Table.Body>
26+
</Table>
27+
</div>
28+
);
29+
}
30+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.wrapper {
2+
}

src/views/home-page/components/actors/Actors.jsx

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as React from 'react';
22
import { connect } from 'react-redux';
3-
import { Card, Image } from 'semantic-ui-react';
4-
import { oc } from 'ts-optchain';
3+
import { Card } from 'semantic-ui-react';
54
import ShowsAction from '../../../../stores/shows/ShowsAction';
5+
import ActorCard from './components/ActorCard';
66

77
const mapStateToProps = (state, ownProps) => ({
88
actors: state.shows.actors,
@@ -18,23 +18,9 @@ class Actors extends React.Component {
1818

1919
return (
2020
<Card.Group centered={true}>
21-
{actors.map((model) => {
22-
const image = oc(model).character.image.medium('');
23-
const missingImage = 'https://react.semantic-ui.com/images/wireframe/image.png';
24-
25-
return (
26-
<Card key={model.person.name}>
27-
<Card.Content>
28-
<Image floated="right" size="mini" src={image || missingImage} />
29-
<Card.Header>{model.person.name}</Card.Header>
30-
<Card.Meta>as {model.character.name}</Card.Meta>
31-
<Card.Description>
32-
<strong>Birth date:</strong> {model.person.birthday}
33-
</Card.Description>
34-
</Card.Content>
35-
</Card>
36-
);
37-
})}
21+
{actors.map((model) => (
22+
<ActorCard key={model.person.name} cardData={model} />
23+
))}
3824
</Card.Group>
3925
);
4026
}
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
11
.wrapper {
2-
display: flex;
3-
flex-wrap: wrap;
42
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import * as React from 'react';
2+
import { Card, Image } from 'semantic-ui-react';
3+
import { oc } from 'ts-optchain';
4+
5+
export default class ActorCard extends React.PureComponent {
6+
render() {
7+
const { cardData } = this.props;
8+
const image = oc(cardData).character.image.medium('');
9+
const missingImage = 'https://react.semantic-ui.com/images/wireframe/image.png';
10+
11+
return (
12+
<Card key={cardData.person.name}>
13+
<Card.Content>
14+
<Image floated="right" size="mini" src={image || missingImage} />
15+
<Card.Header>{cardData.person.name}</Card.Header>
16+
<Card.Meta>as {cardData.character.name}</Card.Meta>
17+
<Card.Description>
18+
<strong>Birth date:</strong> {cardData.person.birthday}
19+
</Card.Description>
20+
</Card.Content>
21+
</Card>
22+
);
23+
}
24+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.wrapper {
2+
}

0 commit comments

Comments
 (0)