perf(top): fix unnecessary drawing on top page

This commit is contained in:
Alexey Kasyanchuk 2018-08-26 16:22:59 +03:00
parent 1e09243756
commit ff4b98bd1f
7 changed files with 82 additions and 34 deletions

90
package-lock.json generated
View File

@ -1082,6 +1082,21 @@
"@babel/plugin-syntax-import-meta": "7.0.0-beta.49"
}
},
"@babel/runtime": {
"version": "7.0.0-rc.1",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-rc.1.tgz",
"integrity": "sha512-Nifv2kwP/nwR39cAOasNxzjYfpeuf/ZbZNtQz5eYxWTC9yHARU9wItFnAwz1GTZ62MU+AtSjzZPMbLK5Q9hmbg==",
"requires": {
"regenerator-runtime": "^0.12.0"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
"integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
}
}
},
"@babel/template": {
"version": "7.0.0-beta.49",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.49.tgz",
@ -4245,9 +4260,9 @@
}
},
"bowser": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.1.tgz",
"integrity": "sha512-UXti1JB6oK8hO983AImunnV6j/fqAEeDlPXh99zhsP5g32oLbxJJ6qcOaUesR+tqqhnUVQHlRJyD0dfiV0Hxaw=="
"version": "1.9.4",
"resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz",
"integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ=="
},
"boxen": {
"version": "1.3.0",
@ -4871,9 +4886,9 @@
}
},
"chain-function": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.0.tgz",
"integrity": "sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w="
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.1.tgz",
"integrity": "sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg=="
},
"chalk": {
"version": "2.3.0",
@ -6129,11 +6144,19 @@
"dev": true
},
"css-in-js-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz",
"integrity": "sha512-yuWmPMD9FLi50Xf3k8W8oO3WM1eVnxEGCldCLyfusQ+CgivFk0s23yst4ooW6tfxMuSa03S6uUEga9UhX6GRrA==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz",
"integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==",
"requires": {
"hyphenate-style-name": "^1.0.2"
"hyphenate-style-name": "^1.0.2",
"isobject": "^3.0.1"
},
"dependencies": {
"isobject": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
}
}
},
"css-loader": {
@ -9970,9 +9993,9 @@
"integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
},
"hoist-non-react-statics": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz",
"integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA="
"version": "2.5.5",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
"integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
},
"home-or-tmp": {
"version": "2.0.0",
@ -11079,9 +11102,9 @@
}
},
"keycode": {
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.9.tgz",
"integrity": "sha1-lkojxU5IiUBbSGGlyfBIDUUUHfo="
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.0.tgz",
"integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ="
},
"keyv": {
"version": "3.0.0",
@ -11509,9 +11532,9 @@
"dev": true
},
"lodash.merge": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz",
"integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU="
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
"integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ=="
},
"lodash.template": {
"version": "4.4.0",
@ -11709,9 +11732,9 @@
"integrity": "sha1-GZTfLTr0gR3lmmcUk0wrIpJzRRg="
},
"material-ui": {
"version": "0.20.0",
"resolved": "https://registry.npmjs.org/material-ui/-/material-ui-0.20.0.tgz",
"integrity": "sha512-wkHkeU1SaGfCrtwIzBOl5vynNNNzVGW27ql0Ue5HZLB4WyRQ3YohJBdKa5lBrH5JD/Cgae7IzrP7cVWDyKpeLQ==",
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/material-ui/-/material-ui-0.20.2.tgz",
"integrity": "sha512-VeqgQkdvtK193w+FFvXDEwlVxI4rWk83eWbpYLeOIHDPWr3rbB9B075JRnJt/8IsI2X8q5Aia5W3+7m4KkleDg==",
"requires": {
"babel-runtime": "^6.23.0",
"inline-style-prefixer": "^3.0.8",
@ -11719,7 +11742,7 @@
"lodash.merge": "^4.6.0",
"lodash.throttle": "^4.1.1",
"prop-types": "^15.5.7",
"react-event-listener": "^0.5.1",
"react-event-listener": "^0.6.2",
"react-transition-group": "^1.2.1",
"recompose": "^0.26.0",
"simple-assign": "^0.1.0",
@ -14701,14 +14724,23 @@
}
},
"react-event-listener": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.5.3.tgz",
"integrity": "sha512-fTGYvhe7eTsqq0m664Km0rxKQcqLIGZWZINmy1LU0fu312tay8Mt3Twq2P5Xj1dfDVvvzT1Ql3/FDkiMPJ1MOg==",
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/react-event-listener/-/react-event-listener-0.6.3.tgz",
"integrity": "sha512-21ubz0vpzPL/8YPGkcDs/LFIemxMFPhpXnFKvrm15IA7x/kYzh1Bru3ww/lsZJJ0hCqyhJGjv7Txl/U00Je5SA==",
"requires": {
"babel-runtime": "^6.26.0",
"fbjs": "^0.8.16",
"@babel/runtime": "7.0.0-rc.1",
"prop-types": "^15.6.0",
"warning": "^3.0.0"
"warning": "^4.0.1"
},
"dependencies": {
"warning": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz",
"integrity": "sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug==",
"requires": {
"loose-envify": "^1.0.0"
}
}
}
},
"react-input-range": {

View File

@ -128,7 +128,7 @@
"is-running": "^2.1.0",
"json-socket": "^0.3.0",
"lodash": "^4.17.5",
"material-ui": "^0.20.0",
"material-ui": "^0.20.2",
"mime": "^2.3.1",
"moment": "^2.20.1",
"mysql": "^2.15.0",

10
src/app/LinearProgress.js Normal file
View File

@ -0,0 +1,10 @@
import LinearProgressOriginal from 'material-ui/LinearProgress';
export default class LinearProgress extends LinearProgressOriginal
{
barUpdate(id, ...args)
{
super.barUpdate(id, ...args)
return this.timers[id]
}
}

View File

@ -4,7 +4,7 @@ import TorrentLine from './torrent'
import {List, ListItem} from 'material-ui/List';
import Subheader from 'material-ui/Subheader';
import Divider from 'material-ui/Divider';
import LinearProgress from 'material-ui/LinearProgress';
import LinearProgress from './LinearProgress';
export default class SearchResults extends Component {
render() {

View File

@ -6,7 +6,7 @@ import {List, ListItem} from 'material-ui/List';
import Divider from 'material-ui/Divider';
import Subheader from 'material-ui/Subheader';
import RaisedButton from 'material-ui/RaisedButton';
import LinearProgress from 'material-ui/LinearProgress';
import LinearProgress from './LinearProgress';
import {Tabs, Tab} from 'material-ui/Tabs';
import _ from 'lodash'
@ -150,6 +150,12 @@ export default class TopPage extends Page {
Object.keys(this.times).map((time, index) => {
const {torrents} = this.topTorrents[type][time] || {torrents: undefined};
// dont draw top on other page rather than focused
if(this.state.type !== type || this.state.time !== time)
{
return <Tab buttonStyle={time === this.state.time ? {fontWeight: 'bold'} : undefined} style={{minWidth: 150}} key={index} label={this.times[time]} value={time}></Tab>
}
if(!torrents)
return (
<Tab buttonStyle={time === this.state.time ? {fontWeight: 'bold'} : undefined} style={{minWidth: 150}} key={index} label={this.times[time]} value={time}>

View File

@ -14,7 +14,7 @@ import NoImage from './images/no-image-icon.png'
var moment = require('moment');
import RefreshIndicator from 'material-ui/RefreshIndicator';
let rating = require('./rating');
import LinearProgress from 'material-ui/LinearProgress';
import LinearProgress from './LinearProgress';
import FlatButton from 'material-ui/FlatButton';
import {fileTypeDetect} from './content'
import {contentIcon} from './torrent'

View File

@ -7,7 +7,7 @@ import ToolTip from './tooltip';
import PagesPie from './pages-pie.js';
import TorrentPage from './torrent-page'
import LinearProgress from 'material-ui/LinearProgress';
import LinearProgress from './LinearProgress';
let rating = require('./rating');
import scrollBack from './remember-scroll'
import TrackersImages from './trackers-images'