Merge pull request #1217 from cezar-carneiro/show-progress-on-cast-screen
This commit is contained in:
@@ -427,22 +427,77 @@ function renderCastScreen (state) {
|
||||
|
||||
const isStarting = state.playing.location.endsWith('-pending')
|
||||
const castName = state.playing.castName
|
||||
const fileName = state.getPlayingFileSummary().name || ''
|
||||
let castStatus
|
||||
if (isCast && isStarting) castStatus = 'Connecting to ' + castName + '...'
|
||||
else if (isCast && !isStarting) castStatus = 'Connected to ' + castName
|
||||
else castStatus = ''
|
||||
|
||||
const prog = state.getPlayingTorrentSummary().progress || {}
|
||||
|
||||
// Show a nice title image, if possible
|
||||
const style = {
|
||||
backgroundImage: cssBackgroundImagePoster(state)
|
||||
}
|
||||
|
||||
function renderEta (total, downloaded) {
|
||||
const missing = (total || 0) - (downloaded || 0)
|
||||
const downloadSpeed = prog.downloadSpeed || 0
|
||||
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)
|
||||
|
||||
const hoursStr = hours ? hours + 'h' : ''
|
||||
const minutesStr = (hours || minutes) ? minutes + 'm' : ''
|
||||
const secondsStr = seconds + 's'
|
||||
|
||||
return (<span>{hoursStr} {minutesStr} {secondsStr} remaining</span>)
|
||||
}
|
||||
|
||||
function renderDownloadProgress () {
|
||||
if (!prog.files) return
|
||||
|
||||
const fileProg = prog.files[state.playing.fileIndex]
|
||||
const fileProgress = fileProg.numPiecesPresent / fileProg.numPieces
|
||||
const fileLength = state.getPlayingFileSummary().length
|
||||
const fileDownloaded = fileProgress * fileLength
|
||||
|
||||
const progress = Math.round(100 * fileProgress)
|
||||
const total = prettyBytes(fileLength)
|
||||
const completed = prettyBytes(fileDownloaded)
|
||||
|
||||
const downloadSpeed = prettyBytes(prog.downloadSpeed || 0)
|
||||
const uploadSpeed = prettyBytes(prog.uploadSpeed || 0)
|
||||
|
||||
let sizes
|
||||
if (fileProgress < 1) {
|
||||
sizes = <span> | {completed} / {total}</span>
|
||||
} else {
|
||||
sizes = <span> | {completed}</span>
|
||||
}
|
||||
|
||||
return (
|
||||
<div key='download-progress'>
|
||||
<span className='progress'>{progress}% downloaded {sizes}</span>
|
||||
<br />
|
||||
<span>↓ {downloadSpeed}/s ↑ {uploadSpeed}/s | {prog.numPeers || 0} peer(s)</span>
|
||||
<br />
|
||||
{renderEta(fileLength, fileDownloaded)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<div key='cast' className='letterbox' style={style}>
|
||||
<div className='cast-screen'>
|
||||
<i className='icon'>{castIcon}</i>
|
||||
<div key='type' className='cast-type'>{castType}</div>
|
||||
<div key='status' className='cast-status'>{castStatus}</div>
|
||||
<div key='name' className='name'>{fileName}</div>
|
||||
{renderDownloadProgress()}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -558,6 +558,13 @@ body.drag .app::after {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.player .name {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
line-height: 1.5em;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
/*
|
||||
* PLAYER CONTROLS
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user