UX: Improve torrent status line
The goal of this commit is to merge the two torrent status lines onto a single, concise line which has high signal and information density. - Hide download speed, upload speed, and number of peers when 0, because that's just noise. - Remove number of files, because that information can be found by expanding the torrent. This also allowed the further reduction of the torrent item height from 110px to 100px.
This commit is contained in:
@@ -80,7 +80,7 @@ function createWebTorrentHiddenWindow () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var HEADER_HEIGHT = 37
|
var HEADER_HEIGHT = 37
|
||||||
var TORRENT_HEIGHT = 110
|
var TORRENT_HEIGHT = 100
|
||||||
|
|
||||||
function createMainWindow () {
|
function createMainWindow () {
|
||||||
if (windows.main) {
|
if (windows.main) {
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ input {
|
|||||||
|
|
||||||
.torrent,
|
.torrent,
|
||||||
.torrent-placeholder {
|
.torrent-placeholder {
|
||||||
height: 110px;
|
height: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.torrent:not(:last-child) {
|
.torrent:not(:last-child) {
|
||||||
@@ -446,9 +446,9 @@ input {
|
|||||||
|
|
||||||
.torrent .metadata {
|
.torrent .metadata {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 20px;
|
top: 25px;
|
||||||
left: 20px;
|
left: 15px;
|
||||||
right: 20px;
|
right: 15px;
|
||||||
width: calc(100% - 40px);
|
width: calc(100% - 40px);
|
||||||
text-shadow: rgba(0, 0, 0, 0.5) 0 0 4px;
|
text-shadow: rgba(0, 0, 0, 0.5) 0 0 4px;
|
||||||
}
|
}
|
||||||
@@ -458,12 +458,15 @@ input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.torrent .metadata span:not(:last-child)::after {
|
.torrent .metadata span:not(:last-child)::after {
|
||||||
content: ' — ';
|
content: ' • ';
|
||||||
|
opacity: 0.7;
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-right: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.torrent .buttons {
|
.torrent .buttons {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 34px;
|
top: 29px;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: none;
|
display: none;
|
||||||
@@ -551,12 +554,6 @@ input {
|
|||||||
line-height: 1.5em;
|
line-height: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.torrent .status,
|
|
||||||
.torrent .status2 {
|
|
||||||
/* font-size: 14px;
|
|
||||||
line-height: 1.5em;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TORRENT LIST: DRAG-DROP TARGET
|
* TORRENT LIST: DRAG-DROP TARGET
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -67,39 +67,49 @@ function TorrentList (state) {
|
|||||||
// If it's downloading/seeding then show progress info
|
// If it's downloading/seeding then show progress info
|
||||||
var prog = torrentSummary.progress
|
var prog = torrentSummary.progress
|
||||||
if (torrentSummary.status !== 'paused' && prog) {
|
if (torrentSummary.status !== 'paused' && prog) {
|
||||||
var progress = Math.floor(100 * prog.progress)
|
|
||||||
var downloaded = prettyBytes(prog.downloaded)
|
|
||||||
var total = prettyBytes(prog.length || 0)
|
|
||||||
if (downloaded !== total) downloaded += ` / ${total}`
|
|
||||||
|
|
||||||
elements.push(hx`
|
elements.push(hx`
|
||||||
<div class='ellipsis'>
|
<div class='ellipsis'>
|
||||||
${getFilesLength()}
|
${renderPercentProgress()}
|
||||||
<span>${getPeers()}</span>
|
${renderTotalProgress()}
|
||||||
<span>↓ ${prettyBytes(prog.downloadSpeed || 0)}/s</span>
|
${renderDownloadSpeed()}
|
||||||
<span>↑ ${prettyBytes(prog.uploadSpeed || 0)}/s</span>
|
${renderUploadSpeed()}
|
||||||
</div>
|
${renderPeers()}
|
||||||
`)
|
|
||||||
elements.push(hx`
|
|
||||||
<div class='ellipsis'>
|
|
||||||
<span class='progress'>${progress}%</span>
|
|
||||||
<span>${downloaded}</span>
|
|
||||||
</div>
|
</div>
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
return hx`<div class='metadata'>${elements}</div>`
|
return hx`<div class='metadata'>${elements}</div>`
|
||||||
|
|
||||||
function getPeers () {
|
function renderPercentProgress () {
|
||||||
var count = prog.numPeers === 1 ? 'peer' : 'peers'
|
var progress = Math.floor(100 * prog.progress)
|
||||||
return `${prog.numPeers} ${count}`
|
return hx`<span>${progress}%</span>`
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFilesLength () {
|
function renderTotalProgress () {
|
||||||
if (torrentSummary.files && torrentSummary.files.length > 1) {
|
var downloaded = prettyBytes(prog.downloaded)
|
||||||
return hx`<span class='files'>${torrentSummary.files.length} files</span>`
|
var total = prettyBytes(prog.length || 0)
|
||||||
|
if (downloaded === total) {
|
||||||
|
return hx`<span>${downloaded}</span>`
|
||||||
|
} else {
|
||||||
|
return hx`<span>${downloaded} / ${total}</span>`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderDownloadSpeed () {
|
||||||
|
if (prog.downloadSpeed === 0) return
|
||||||
|
return hx`<span>↓ ${prettyBytes(prog.downloadSpeed)}/s</span>`
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderUploadSpeed () {
|
||||||
|
if (prog.uploadSpeed === 0) return
|
||||||
|
return hx`<span>↑ ${prettyBytes(prog.uploadSpeed)}/s</span>`
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderPeers () {
|
||||||
|
if (prog.numPeers === 0) return
|
||||||
|
var count = prog.numPeers === 1 ? 'peer' : 'peers'
|
||||||
|
return hx`<span>${prog.numPeers} ${count}</span>`
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Download button toggles between torrenting (DL/seed) and paused
|
// Download button toggles between torrenting (DL/seed) and paused
|
||||||
|
|||||||
Reference in New Issue
Block a user