Merge pull request #32 from Luminarys/master
Implement shouldComponentUpdate for torrent table
This commit is contained in:
commit
82e607d3ed
|
@ -5,15 +5,16 @@ import { formatBitrate } from '../bitrate';
|
||||||
import Ratio from './ratio';
|
import Ratio from './ratio';
|
||||||
import TorrentProgress from './torrent_progress';
|
import TorrentProgress from './torrent_progress';
|
||||||
|
|
||||||
class TorrentTable extends Component {
|
const name_style = {
|
||||||
render() {
|
|
||||||
const { selection, torrents, dispatch } = this.props;
|
|
||||||
const name_style = {
|
|
||||||
maxWidth: `${window.innerWidth * 0.25}px`,
|
maxWidth: `${window.innerWidth * 0.25}px`,
|
||||||
textOverflow: 'ellipsis',
|
textOverflow: 'ellipsis',
|
||||||
overflowX: 'hidden',
|
overflowX: 'hidden',
|
||||||
whiteSpace: 'nowrap'
|
whiteSpace: 'nowrap'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TorrentTable extends Component {
|
||||||
|
render() {
|
||||||
|
const { selection, torrents, dispatch } = this.props;
|
||||||
return (
|
return (
|
||||||
<table className="table torrents">
|
<table className="table torrents">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -46,8 +47,37 @@ class TorrentTable extends Component {
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{Object.values(torrents).slice().sort((a, b) => a.name.localeCompare(b.name)).map(t =>
|
{Object.values(torrents).slice().sort((a, b) => a.name.localeCompare(b.name)).map(t =>
|
||||||
<tr
|
<Torrent
|
||||||
|
dispatch={dispatch}
|
||||||
|
torrent={t}
|
||||||
|
selection={selection}
|
||||||
key={t.id}
|
key={t.id}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Torrent extends Component {
|
||||||
|
shouldComponentUpdate(nextProps, _) {
|
||||||
|
const { selection, torrent } = this.props;
|
||||||
|
const nt = nextProps.torrent;
|
||||||
|
const active = selection.indexOf(torrent.id);
|
||||||
|
const nActive = nextProps.selection.indexOf(torrent.id);
|
||||||
|
return active !== nActive
|
||||||
|
|| torrent.id !== nt.id
|
||||||
|
|| torrent.status !== nt.status
|
||||||
|
|| torrent.rate_down !== nt.rate_down
|
||||||
|
|| torrent.rate_up !== nt.rate_up;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { dispatch, selection, torrent } = this.props;
|
||||||
|
const t = torrent;
|
||||||
|
return (
|
||||||
|
<tr
|
||||||
className={`torrent ${
|
className={`torrent ${
|
||||||
t.status
|
t.status
|
||||||
} ${
|
} ${
|
||||||
|
@ -77,9 +107,6 @@ class TorrentTable extends Component {
|
||||||
<td><Ratio up={t.transferred_up} down={t.transferred_down} /></td>
|
<td><Ratio up={t.transferred_up} down={t.transferred_down} /></td>
|
||||||
<td><TorrentProgress torrent={t} /></td>
|
<td><TorrentProgress torrent={t} /></td>
|
||||||
</tr>
|
</tr>
|
||||||
)}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user