(trunk web) #3413 "download speed bad format in web interface" -- fixed.
This commit is contained in:
parent
52c04a0d06
commit
71cadc02b6
10
gtk/util.c
10
gtk/util.c
|
@ -52,11 +52,11 @@ const char * mem_M_str = N_("MiB");
|
|||
const char * mem_G_str = N_("GiB");
|
||||
const char * mem_T_str = N_("TiB");
|
||||
|
||||
const int disk_K = 1000;
|
||||
const char * disk_K_str = N_("kB");
|
||||
const char * disk_M_str = N_("MB");
|
||||
const char * disk_G_str = N_("GB");
|
||||
const char * disk_T_str = N_("TB");
|
||||
const int disk_K = 1024;
|
||||
const char * disk_K_str = N_("KiB");
|
||||
const char * disk_M_str = N_("MiB");
|
||||
const char * disk_G_str = N_("GiB");
|
||||
const char * disk_T_str = N_("TiB");
|
||||
|
||||
const int speed_K = 1000;
|
||||
const char * speed_K_str = N_("kB/s");
|
||||
|
|
|
@ -1554,7 +1554,7 @@ tr_realpath( const char * path, char * resolved_path )
|
|||
struct formatter_unit
|
||||
{
|
||||
char * name;
|
||||
unsigned long value;
|
||||
uint64_t value;
|
||||
};
|
||||
|
||||
struct formatter_units
|
||||
|
@ -1570,7 +1570,7 @@ formatter_init( struct formatter_units * units,
|
|||
const char * kb, const char * mb,
|
||||
const char * gb, const char * tb )
|
||||
{
|
||||
unsigned long value = kilo;
|
||||
uint64_t value = kilo;
|
||||
units->units[TR_FMT_KB].name = tr_strdup( kb );
|
||||
units->units[TR_FMT_KB].value = value;
|
||||
|
||||
|
|
|
@ -7,20 +7,29 @@
|
|||
|
||||
Transmission.fmt = (function()
|
||||
{
|
||||
var speed_K = 1000;
|
||||
var speed_B_str = 'B';
|
||||
var speed_K_str = 'kB/s';
|
||||
var speed_M_str = 'MB/s';
|
||||
var speed_G_str = 'GB/s';
|
||||
var speed_T_str = 'TB/s';
|
||||
|
||||
var size_K = 1024;
|
||||
var size_B_str = 'B';
|
||||
var size_K_str = 'KiB';
|
||||
var size_M_str = 'MiB';
|
||||
var size_G_str = 'GiB';
|
||||
var size_T_str = 'TiB';
|
||||
|
||||
var mem_K = 1024;
|
||||
var mem_B_str = 'B';
|
||||
var mem_K_str = 'KiB';
|
||||
var mem_M_str = 'MiB';
|
||||
var mem_G_str = 'GiB';
|
||||
var mem_T_str = 'TiB';
|
||||
|
||||
return {
|
||||
speed_K: 1000,
|
||||
|
||||
size_K: 1024,
|
||||
|
||||
/*
|
||||
* Format a percentage to a string
|
||||
|
@ -47,64 +56,100 @@ Transmission.fmt = (function()
|
|||
},
|
||||
|
||||
/**
|
||||
* Formats the bytes into a string value with B, KiB, MiB, or GiB units.
|
||||
*
|
||||
* Formats the a memory size into a human-readable string
|
||||
* @param {Number} bytes the filesize in bytes
|
||||
* @return {String} formatted string with B, KiB, MiB or GiB units.
|
||||
* @return {String} human-readable string
|
||||
*/
|
||||
mem: function( bytes )
|
||||
{
|
||||
if( bytes < mem_K )
|
||||
return bytes + ' ' + mem_B_str;
|
||||
|
||||
var convertedSize;
|
||||
var unit;
|
||||
|
||||
if( bytes < Math.pow( mem_K, 2 ) )
|
||||
{
|
||||
convertedSize = bytes / mem_K;
|
||||
unit = mem_K_str;
|
||||
}
|
||||
else if( bytes < Math.pow( mem_K, 3 ) )
|
||||
{
|
||||
convertedSize = bytes / Math.pow( mem_K, 2 );
|
||||
unit = mem_M_str;
|
||||
}
|
||||
else if( bytes < Math.pow( mem_K, 4 ) )
|
||||
{
|
||||
convertedSize = bytes / Math.pow( mem_K, 3 );
|
||||
unit = mem_G_str;
|
||||
}
|
||||
else
|
||||
{
|
||||
convertedSize = bytes / Math.pow( mem_K, 4 );
|
||||
unit = mem_T_str;
|
||||
}
|
||||
|
||||
// try to have at least 3 digits and at least 1 decimal
|
||||
return convertedSize <= 9.995 ? convertedSize.toTruncFixed(2) + ' ' + unit
|
||||
: convertedSize.toTruncFixed(1) + ' ' + unit;
|
||||
},
|
||||
|
||||
/**
|
||||
* Formats the a disk capacity or file size into a human-readable string
|
||||
* @param {Number} bytes the filesize in bytes
|
||||
* @return {String} human-readable string
|
||||
*/
|
||||
size: function( bytes )
|
||||
{
|
||||
var size_K = this.size_K;
|
||||
var size_M = size_K * size_K;
|
||||
var size_G = size_K * size_K * size_K;
|
||||
|
||||
if( !bytes )
|
||||
return 'None';
|
||||
if( bytes < size_K )
|
||||
return bytes.toTruncFixed(0) + size_B_str;
|
||||
return bytes + ' ' + size_B_str;
|
||||
|
||||
if( bytes < ( size_K * 100 ) )
|
||||
return (bytes/size_K).toTruncFixed(2) + ' ' + size_K_str;
|
||||
if( bytes < size_M )
|
||||
return (bytes/size_K).toTruncFixed(1) + ' ' + size_K_str;
|
||||
var convertedSize;
|
||||
var unit;
|
||||
|
||||
if( bytes < ( size_M * 100 ) )
|
||||
return (bytes/size_M).toTruncFixed(2) + ' ' + size_M_str;
|
||||
if( bytes < size_G )
|
||||
return (bytes/size_M).toTruncFixed(1) + ' ' + size_M_str;
|
||||
|
||||
if( bytes < ( size_G * 100 ) )
|
||||
return (bytes/size_G).toTruncFixed(2) + ' ' + size_G_str;
|
||||
if( bytes < Math.pow( size_K, 2 ) )
|
||||
{
|
||||
convertedSize = bytes / size_K;
|
||||
unit = size_K_str;
|
||||
}
|
||||
else if( bytes < Math.pow( size_K, 3 ) )
|
||||
{
|
||||
convertedSize = bytes / Math.pow( size_K, 2 );
|
||||
unit = size_M_str;
|
||||
}
|
||||
else if( bytes < Math.pow( size_K, 4 ) )
|
||||
{
|
||||
convertedSize = bytes / Math.pow( size_K, 3 );
|
||||
unit = size_G_str;
|
||||
}
|
||||
else
|
||||
return (bytes/size_G).toTruncFixed(1) + ' ' + size_G_str;
|
||||
{
|
||||
convertedSize = bytes / Math.pow( size_K, 4 );
|
||||
unit = size_T_str;
|
||||
}
|
||||
|
||||
// try to have at least 3 digits and at least 1 decimal
|
||||
return convertedSize <= 9.995 ? convertedSize.toTruncFixed(2) + ' ' + unit
|
||||
: convertedSize.toTruncFixed(1) + ' ' + unit;
|
||||
},
|
||||
|
||||
speed: function( bytes )
|
||||
speed: function( KBps )
|
||||
{
|
||||
var speed_K = this.speed_K;
|
||||
var speed_M = speed_K * speed_K;
|
||||
var speed_G = speed_K * speed_K * speed_K;
|
||||
var speed = KBps;
|
||||
|
||||
if( bytes==undefined || bytes==0 )
|
||||
return 'None';
|
||||
if (speed <= 999.95) // 0 KBps to 999.9 K
|
||||
return speed.toTruncFixed(1) + ' ' + speed_K_str;
|
||||
|
||||
if( bytes < speed_K )
|
||||
return bytes.toTruncFixed(0) + ' ' + speed_B_str;
|
||||
speed /= speed_K;
|
||||
|
||||
if( bytes < ( speed_K * 100 ) )
|
||||
return (bytes/speed_K).toTruncFixed(2) + ' ' + speed_K_str;
|
||||
if( bytes < speed_M )
|
||||
return (bytes/speed_K).toTruncFixed(1) + ' ' + speed_K_str;
|
||||
if (speed <= 99.995) // 1 M to 99.99 M
|
||||
return speed.toTruncFixed(2) + ' ' + speed_M_str;
|
||||
if (speed <= 999.95) // 100 M to 999.9 M
|
||||
return speed.toTruncFixed(1) + ' ' + speed_M_str;
|
||||
|
||||
if( bytes < ( speed_M * 100 ) )
|
||||
return (bytes/speed_M).toTruncFixed(2) + ' ' + speed_M_str;
|
||||
if( bytes < speed_G )
|
||||
return (bytes/speed_M).toTruncFixed(1) + ' ' + speed_M_str;
|
||||
|
||||
if( bytes < ( speed_G * 100 ) )
|
||||
return (bytes/speed_G).toTruncFixed(2) + ' ' + speed_G_str;
|
||||
else
|
||||
return (bytes/speed_G).toTruncFixed(1) + ' ' + speed_G_str;
|
||||
// insane speeds
|
||||
speed /= speed_K;
|
||||
return speed.toTruncFixed(2) + ' ' + speed_G_str;
|
||||
},
|
||||
|
||||
timeInterval: function( seconds )
|
||||
|
|
|
@ -642,11 +642,10 @@ Transmission.prototype =
|
|||
tr.togglePeriodicRefresh( true );
|
||||
}
|
||||
|
||||
var speed_K = Transmission.fmt.speed_K;
|
||||
var up_bytes = parseInt( $('#prefs_form #upload_rate' )[0].value ) * speed_K;
|
||||
var dn_bytes = parseInt( $('#prefs_form #download_rate')[0].value ) * speed_K;
|
||||
var turtle_up_bytes = parseInt( $('#prefs_form #turtle_upload_rate' )[0].value ) * speed_K;
|
||||
var turtle_dn_bytes = parseInt( $('#prefs_form #turtle_download_rate')[0].value ) * speed_K;
|
||||
var up_bytes = parseInt( $('#prefs_form #upload_rate' )[0].value );
|
||||
var dn_bytes = parseInt( $('#prefs_form #download_rate')[0].value );
|
||||
var turtle_up_bytes = parseInt( $('#prefs_form #turtle_upload_rate' )[0].value );
|
||||
var turtle_dn_bytes = parseInt( $('#prefs_form #turtle_download_rate')[0].value );
|
||||
|
||||
// pass the new prefs upstream to the RPC server
|
||||
var o = { };
|
||||
|
@ -936,12 +935,10 @@ Transmission.prototype =
|
|||
|
||||
var up_limited = prefs[RPC._UpSpeedLimited];
|
||||
var dn_limited = prefs[RPC._DownSpeedLimited];
|
||||
var up_limit_b = prefs[RPC._UpSpeedLimit];
|
||||
var dn_limit_b = prefs[RPC._DownSpeedLimit];
|
||||
var up_limit_k = up_limit_b / Transmission.fmt.speed_K;
|
||||
var dn_limit_k = dn_limit_b / Transmission.fmt.speed_K;
|
||||
var turtle_up_limit_k = prefs[RPC._TurtleUpSpeedLimit] / Transmission.fmt.speed_K;
|
||||
var turtle_dn_limit_k = prefs[RPC._TurtleDownSpeedLimit] / Transmission.fmt.speed_K;
|
||||
var up_limit_k = prefs[RPC._UpSpeedLimit];
|
||||
var dn_limit_k = prefs[RPC._DownSpeedLimit];
|
||||
var turtle_up_limit_k = prefs[RPC._TurtleUpSpeedLimit];
|
||||
var turtle_dn_limit_k = prefs[RPC._TurtleDownSpeedLimit];
|
||||
|
||||
$('div.download_location input')[0].value = prefs[RPC._DownloadDir];
|
||||
$('div.port input')[0].value = prefs[RPC._PeerPort];
|
||||
|
@ -962,12 +959,12 @@ Transmission.prototype =
|
|||
|
||||
if (!iPhone)
|
||||
{
|
||||
setInnerHTML( $('#limited_download_rate')[0], 'Limit (' + Transmission.fmt.speed(dn_limit_b) + ')' );
|
||||
setInnerHTML( $('#limited_download_rate')[0], 'Limit (' + Transmission.fmt.speed(dn_limit_k) + ')' );
|
||||
var key = dn_limited ? '#limited_download_rate'
|
||||
: '#unlimited_download_rate';
|
||||
$(key).deselectMenuSiblings().selectMenuItem();
|
||||
|
||||
setInnerHTML( $('#limited_upload_rate')[0], 'Limit (' + Transmission.fmt.speed(up_limit_b) + ')' );
|
||||
setInnerHTML( $('#limited_upload_rate')[0], 'Limit (' + Transmission.fmt.speed(up_limit_k) + ')' );
|
||||
key = up_limited ? '#limited_upload_rate'
|
||||
: '#unlimited_upload_rate';
|
||||
$(key).deselectMenuSiblings().selectMenuItem();
|
||||
|
@ -1080,11 +1077,11 @@ Transmission.prototype =
|
|||
args[RPC._DownSpeedLimited] = false;
|
||||
} else {
|
||||
var rate_str = ($element[0].innerHTML).replace(/[^0-9]/ig, '');
|
||||
var rate_b = parseInt( rate_str ) * Transmission.fmt.speed_K;
|
||||
setInnerHTML( $('#limited_download_rate')[0], 'Limit (' + Transmission.fmt.speed(rate_b) + ')' );
|
||||
var rate_val = parseInt( rate_str );
|
||||
setInnerHTML( $('#limited_download_rate')[0], 'Limit (' + Transmission.fmt.speed(rate_val) + ')' );
|
||||
$('#limited_download_rate').deselectMenuSiblings().selectMenuItem();
|
||||
$('div.preference input#download_rate')[0].value = rate_str;
|
||||
args[RPC._DownSpeedLimit] = rate_b;
|
||||
args[RPC._DownSpeedLimit] = rate_val;
|
||||
args[RPC._DownSpeedLimited] = true;
|
||||
}
|
||||
$('div.preference input#limit_download')[0].checked = args[RPC._DownSpeedLimited];
|
||||
|
@ -1099,11 +1096,11 @@ Transmission.prototype =
|
|||
args[RPC._UpSpeedLimited] = false;
|
||||
} else {
|
||||
var rate_str = ($element[0].innerHTML).replace(/[^0-9]/ig, '');
|
||||
var rate_b = parseInt( rate_str ) * Transmission.fmt.speed_K;
|
||||
setInnerHTML( $('#limited_upload_rate')[0], 'Limit (' + Transmission.fmt.speed(rate_b) + ')' );
|
||||
var rate_val = parseInt( rate_str );
|
||||
setInnerHTML( $('#limited_upload_rate')[0], 'Limit (' + Transmission.fmt.speed(rate_val) + ')' );
|
||||
$('#limited_upload_rate').deselectMenuSiblings().selectMenuItem();
|
||||
$('div.preference input#upload_rate')[0].value = rate_str;
|
||||
args[RPC._UpSpeedLimit] = rate_b;
|
||||
args[RPC._UpSpeedLimit] = rate_val;
|
||||
args[RPC._UpSpeedLimited] = true;
|
||||
}
|
||||
$('div.preference input#limit_upload')[0].checked = args[RPC._UpSpeedLimited];
|
||||
|
@ -1239,7 +1236,7 @@ Transmission.prototype =
|
|||
download_dir = t._download_dir;
|
||||
|
||||
hash = t.hash();
|
||||
pieces = t._pieceCount + ', ' + Transmission.fmt.size(t._pieceSize);
|
||||
pieces = t._pieceCount + ' pieces @ ' + Transmission.fmt.mem(t._pieceSize);
|
||||
date_created = Transmission.fmt.timestamp( t._creator_date );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue