refactor: ETA calculation (#2055)
* Refactor ETA calculation * Update src/renderer/pages/player-page.js Co-authored-by: Alex <alxmorais8@msn.com> * Fix lint issue Co-authored-by: Alex <alxmorais8@msn.com>
This commit is contained in:
20
src/renderer/lib/time.js
Normal file
20
src/renderer/lib/time.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
module.exports = {
|
||||||
|
calculateEta
|
||||||
|
}
|
||||||
|
|
||||||
|
function calculateEta (missing, downloadSpeed) {
|
||||||
|
if (downloadSpeed === 0 || missing === 0) return
|
||||||
|
|
||||||
|
const rawEta = missing / downloadSpeed
|
||||||
|
const hours = Math.floor(rawEta / 3600) % 24
|
||||||
|
const minutes = Math.floor(rawEta / 60) % 60
|
||||||
|
const seconds = Math.floor(rawEta % 60)
|
||||||
|
|
||||||
|
// Only display hours and minutes if they are greater than 0 but always
|
||||||
|
// display minutes if hours is being displayed
|
||||||
|
const hoursStr = hours ? hours + ' h' : ''
|
||||||
|
const minutesStr = (hours || minutes) ? minutes + ' min' : ''
|
||||||
|
const secondsStr = seconds + ' s'
|
||||||
|
|
||||||
|
return `${hoursStr} ${minutesStr} ${secondsStr} remaining`
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ const TorrentSummary = require('../lib/torrent-summary')
|
|||||||
const Playlist = require('../lib/playlist')
|
const Playlist = require('../lib/playlist')
|
||||||
const { dispatch, dispatcher } = require('../lib/dispatcher')
|
const { dispatch, dispatcher } = require('../lib/dispatcher')
|
||||||
const config = require('../../config')
|
const config = require('../../config')
|
||||||
|
const { calculateEta } = require('../lib/time')
|
||||||
|
|
||||||
// Shows a streaming video player. Standard features + Chromecast + Airplay
|
// Shows a streaming video player. Standard features + Chromecast + Airplay
|
||||||
module.exports = class Player extends React.Component {
|
module.exports = class Player extends React.Component {
|
||||||
@@ -446,16 +447,9 @@ function renderCastScreen (state) {
|
|||||||
const downloadSpeed = prog.downloadSpeed || 0
|
const downloadSpeed = prog.downloadSpeed || 0
|
||||||
if (downloadSpeed === 0 || missing === 0) return
|
if (downloadSpeed === 0 || missing === 0) return
|
||||||
|
|
||||||
const rawEta = missing / downloadSpeed
|
const etaStr = calculateEta(missing, downloadSpeed)
|
||||||
const hours = Math.floor(rawEta / 3600) % 24
|
|
||||||
const minutes = Math.floor(rawEta / 60) % 60
|
|
||||||
const seconds = Math.floor(rawEta % 60)
|
|
||||||
|
|
||||||
const hoursStr = hours ? hours + ' h' : ''
|
return (<span>{etaStr}</span>)
|
||||||
const minutesStr = (hours || minutes) ? minutes + ' min' : ''
|
|
||||||
const secondsStr = seconds + ' s'
|
|
||||||
|
|
||||||
return (<span>{hoursStr} {minutesStr} {secondsStr} remaining</span>)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderDownloadProgress () {
|
function renderDownloadProgress () {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const LinearProgress = require('material-ui/LinearProgress').default
|
|||||||
const TorrentSummary = require('../lib/torrent-summary')
|
const TorrentSummary = require('../lib/torrent-summary')
|
||||||
const TorrentPlayer = require('../lib/torrent-player')
|
const TorrentPlayer = require('../lib/torrent-player')
|
||||||
const { dispatcher } = require('../lib/dispatcher')
|
const { dispatcher } = require('../lib/dispatcher')
|
||||||
|
const { calculateEta } = require('../lib/time')
|
||||||
|
|
||||||
module.exports = class TorrentList extends React.Component {
|
module.exports = class TorrentList extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
@@ -195,18 +196,9 @@ module.exports = class TorrentList extends React.Component {
|
|||||||
const downloadSpeed = prog.downloadSpeed
|
const downloadSpeed = prog.downloadSpeed
|
||||||
if (downloadSpeed === 0 || missing === 0) return
|
if (downloadSpeed === 0 || missing === 0) return
|
||||||
|
|
||||||
const rawEta = missing / downloadSpeed
|
const etaStr = calculateEta(missing, downloadSpeed)
|
||||||
const hours = Math.floor(rawEta / 3600) % 24
|
|
||||||
const minutes = Math.floor(rawEta / 60) % 60
|
|
||||||
const seconds = Math.floor(rawEta % 60)
|
|
||||||
|
|
||||||
// Only display hours and minutes if they are greater than 0 but always
|
return (<span key='eta'>{etaStr}</span>)
|
||||||
// display minutes if hours is being displayed
|
|
||||||
const hoursStr = hours ? hours + ' h' : ''
|
|
||||||
const minutesStr = (hours || minutes) ? minutes + ' min' : ''
|
|
||||||
const secondsStr = seconds + ' s'
|
|
||||||
|
|
||||||
return (<span key='eta'>{hoursStr} {minutesStr} {secondsStr} remaining</span>)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderTorrentStatus () {
|
function renderTorrentStatus () {
|
||||||
|
|||||||
Reference in New Issue
Block a user