Browse Source

Add "Remaining" and "Availability" columns to webui Content tab

adaptive-webui-19844
Thomas Piccirello 7 years ago
parent
commit
97b4e4a3d3
  1. 3
      src/webui/btjson.cpp
  2. 4
      src/webui/www/public/properties_content.html
  3. 9
      src/webui/www/public/scripts/misc.js
  4. 3
      src/webui/www/public/scripts/prop-files.js

3
src/webui/btjson.cpp

@ -182,6 +182,7 @@ static const char KEY_FILE_PROGRESS[] = "progress";
static const char KEY_FILE_PRIORITY[] = "priority"; static const char KEY_FILE_PRIORITY[] = "priority";
static const char KEY_FILE_IS_SEED[] = "is_seed"; static const char KEY_FILE_IS_SEED[] = "is_seed";
static const char KEY_FILE_PIECE_RANGE[] = "piece_range"; static const char KEY_FILE_PIECE_RANGE[] = "piece_range";
static const char KEY_FILE_AVAILABILITY[] = "availability";
// TransferInfo keys // TransferInfo keys
static const char KEY_TRANSFER_DLSPEED[] = "dl_info_speed"; static const char KEY_TRANSFER_DLSPEED[] = "dl_info_speed";
@ -954,12 +955,14 @@ QByteArray btjson::getFilesForTorrent(const QString& hash)
const QVector<int> priorities = torrent->filePriorities(); const QVector<int> priorities = torrent->filePriorities();
const QVector<qreal> fp = torrent->filesProgress(); const QVector<qreal> fp = torrent->filesProgress();
const QVector<qreal> fileAvailability = torrent->availableFileFractions();
const BitTorrent::TorrentInfo info = torrent->info(); const BitTorrent::TorrentInfo info = torrent->info();
for (int i = 0; i < torrent->filesCount(); ++i) { for (int i = 0; i < torrent->filesCount(); ++i) {
QVariantMap fileDict; QVariantMap fileDict;
fileDict[KEY_FILE_PROGRESS] = fp[i]; fileDict[KEY_FILE_PROGRESS] = fp[i];
fileDict[KEY_FILE_PRIORITY] = priorities[i]; fileDict[KEY_FILE_PRIORITY] = priorities[i];
fileDict[KEY_FILE_SIZE] = torrent->fileSize(i); fileDict[KEY_FILE_SIZE] = torrent->fileSize(i);
fileDict[KEY_FILE_AVAILABILITY] = fileAvailability[i];
QString fileName = torrent->filePath(i); QString fileName = torrent->filePath(i);
if (fileName.endsWith(QB_EXT, Qt::CaseInsensitive)) if (fileName.endsWith(QB_EXT, Qt::CaseInsensitive))

4
src/webui/www/public/properties_content.html

@ -105,7 +105,9 @@
<th>QBT_TR(Name)QBT_TR[CONTEXT=TorrentContentModel]</th> <th>QBT_TR(Name)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 150px;">QBT_TR(Size)QBT_TR[CONTEXT=TorrentContentModel]</th> <th style="width: 150px;">QBT_TR(Size)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 90px;">QBT_TR(Progress)QBT_TR[CONTEXT=TorrentContentModel]</th> <th style="width: 90px;">QBT_TR(Progress)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 150px; border-right: 0">QBT_TR(Download Priority)QBT_TR[CONTEXT=TorrentContentModel]</th> <th style="width: 150px;">QBT_TR(Download Priority)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 150px;">QBT_TR(Remaining)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 150px; border-right: 0">QBT_TR(Availability)QBT_TR[CONTEXT=TorrentContentModel]</th>
</tr> </tr>
</thead> </thead>
<tbody id="filesTable"></tbody> <tbody id="filesTable"></tbody>

9
src/webui/www/public/scripts/misc.js

@ -64,6 +64,15 @@ function friendlyDuration(seconds) {
return "∞"; return "∞";
} }
function friendlyPercentage(value) {
var percentage = (value * 100).round(1);
if (isNaN(percentage) || (percentage < 0))
percentage = 0;
if (percentage > 100)
percentage = 100;
return percentage + "%";
}
/* /*
* From: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString * From: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
*/ */

3
src/webui/www/public/scripts/prop-files.js

@ -317,6 +317,9 @@ var loadTorrentFilesData = function() {
if (row[3] == 100.0 && file.progress < 1.0) if (row[3] == 100.0 && file.progress < 1.0)
row[3] = 99.9; row[3] = 99.9;
row[4] = file.priority; row[4] = file.priority;
row[5] = friendlyUnit(file.size * (1.0 - file.progress));
row[6] = friendlyPercentage(file.availability);
fTable.insertRow(i, row); fTable.insertRow(i, row);
i++; i++;
}.bind(this)); }.bind(this));

Loading…
Cancel
Save