Fix progress bar display

When first loading webui is browser this.style is undefined and p.style
contains the width of the progress column however after this point
p.style contains the width of the previous column so need to use
this.style which now represents the progress column width.
This commit is contained in:
Calum Lind 2012-02-18 18:50:49 +00:00
commit 0ccf0730ea
3 changed files with 198 additions and 81 deletions

View file

@ -251,13 +251,7 @@ Ext.namespace('Deluge.details');
*/ */
Deluge.details.DetailsPanel = Ext.extend(Ext.TabPanel, { Deluge.details.DetailsPanel = Ext.extend(Ext.TabPanel, {
region: 'south',
id: 'torrentDetails', id: 'torrentDetails',
split: true,
height: 210,
minSize: 100,
collapsible: true,
margins: '0 5 5 5',
activeTab: 0, activeTab: 0,
initComponent: function() { initComponent: function() {
@ -1734,6 +1728,7 @@ Deluge.add.FileWindow = Ext.extend(Deluge.add.Window, {
xtype: 'fileuploadfield', xtype: 'fileuploadfield',
id: 'torrentFile', id: 'torrentFile',
width: 280, width: 280,
height: 24,
emptyText: _('Select a torrent'), emptyText: _('Select a torrent'),
fieldLabel: _('File'), fieldLabel: _('File'),
name: 'file', name: 'file',
@ -1749,7 +1744,7 @@ Deluge.add.FileWindow = Ext.extend(Deluge.add.Window, {
if (this.form.getForm().isValid()) { if (this.form.getForm().isValid()) {
this.torrentId = this.createTorrentId(); this.torrentId = this.createTorrentId();
this.form.getForm().submit({ this.form.getForm().submit({
url: '/upload', url: deluge.config.base + 'upload',
waitMsg: _('Uploading your torrent...'), waitMsg: _('Uploading your torrent...'),
failure: this.onUploadFailure, failure: this.onUploadFailure,
success: this.onUploadSuccess, success: this.onUploadSuccess,
@ -3068,7 +3063,7 @@ Deluge.preferences.InstallPluginWindow = Ext.extend(Ext.Window, {
onInstall: function(field, e) { onInstall: function(field, e) {
this.form.getForm().submit({ this.form.getForm().submit({
url: '/upload', url: deluge.config.base + 'upload',
waitMsg: _('Uploading your plugin...'), waitMsg: _('Uploading your plugin...'),
success: this.onUploadSuccess, success: this.onUploadSuccess,
scope: this scope: this
@ -4198,7 +4193,18 @@ Deluge.preferences.PreferencesWindow = Ext.extend(Ext.Window, {
// private // private
onOk: function() { onOk: function() {
deluge.client.core.set_config(this.optionsManager.getDirty()); var changed = this.optionsManager.getDirty();
if (!Ext.isObjectEmpty(changed)) {
deluge.client.core.set_config(changed, {
success: this.onSetConfig,
scope: this
});
}
for (var page in this.pages) {
if (this.pages[page].onOk) this.pages[page].onOk();
}
this.hide(); this.hide();
} }
}); });
@ -6801,6 +6807,26 @@ Deluge.Formatters = {
return bytes.toFixed(1) + ' GiB' return bytes.toFixed(1) + ' GiB'
}, },
/**
* Formats the bytes value into a string with K, M or G units.
*
* @param {Number} bytes the filesize in bytes
* @param {Boolean} showZero pass in true to displays 0 values
* @return {String} formatted string with K, M or G units.
*/
sizeShort: function(bytes, showZero) {
if (!bytes && !showZero) return '';
bytes = bytes / 1024.0;
if (bytes < 1024) { return bytes.toFixed(1) + ' K'; }
else { bytes = bytes / 1024; }
if (bytes < 1024) { return bytes.toFixed(1) + ' M'; }
else { bytes = bytes / 1024; }
return bytes.toFixed(1) + ' G'
},
/** /**
* Formats a string to display a transfer speed utilizing {@link #size} * Formats a string to display a transfer speed utilizing {@link #size}
* *
@ -6869,6 +6895,7 @@ Deluge.Formatters = {
} }
} }
var fsize = Deluge.Formatters.size; var fsize = Deluge.Formatters.size;
var fsize_short = Deluge.Formatters.sizeShort;
var fspeed = Deluge.Formatters.speed; var fspeed = Deluge.Formatters.speed;
var ftime = Deluge.Formatters.timeRemaining; var ftime = Deluge.Formatters.timeRemaining;
var fdate = Deluge.Formatters.date; var fdate = Deluge.Formatters.date;
@ -6918,13 +6945,17 @@ Deluge.Keys = {
* <pre>['queue', 'name', 'total_size', 'state', 'progress', 'num_seeds', * <pre>['queue', 'name', 'total_size', 'state', 'progress', 'num_seeds',
* 'total_seeds', 'num_peers', 'total_peers', 'download_payload_rate', * 'total_seeds', 'num_peers', 'total_peers', 'download_payload_rate',
* 'upload_payload_rate', 'eta', 'ratio', 'distributed_copies', * 'upload_payload_rate', 'eta', 'ratio', 'distributed_copies',
* 'is_auto_managed', 'time_added', 'tracker_host']</pre> * 'is_auto_managed', 'time_added', 'tracker_host', 'save_path',
* 'total_done', 'total_uploaded', 'max_download_speed', 'max_upload_speed',
* 'seeds_peers_ratio']</pre>
*/ */
Grid: [ Grid: [
'queue', 'name', 'total_size', 'state', 'progress', 'num_seeds', 'queue', 'name', 'total_size', 'state', 'progress', 'num_seeds',
'total_seeds', 'num_peers', 'total_peers', 'download_payload_rate', 'total_seeds', 'num_peers', 'total_peers', 'download_payload_rate',
'upload_payload_rate', 'eta', 'ratio', 'distributed_copies', 'upload_payload_rate', 'eta', 'ratio', 'distributed_copies',
'is_auto_managed', 'time_added', 'tracker_host', 'save_path', 'last_seen_complete' 'is_auto_managed', 'time_added', 'tracker_host', 'save_path', 'last_seen_complete',
'total_done', 'total_uploaded', 'max_download_speed', 'max_upload_speed',
'seeds_peers_ratio'
], ],
/** /**
@ -7135,7 +7166,7 @@ Deluge.LoginWindow = Ext.extend(Ext.Window, {
}, },
onShow: function() { onShow: function() {
this.passwordField.focus(true, true); this.passwordField.focus(true, 100);
} }
}); });
/*! /*!
@ -8109,7 +8140,7 @@ Deluge.Sidebar = Ext.extend(Ext.Panel, {
layout: 'accordion', layout: 'accordion',
split: true, split: true,
width: 200, width: 200,
minSize: 175, minSize: 100,
collapsible: true, collapsible: true,
margins: '5 0 0 5', margins: '5 0 0 5',
cmargins: '5 0 0 5' cmargins: '5 0 0 5'
@ -8569,9 +8600,16 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
constructor: function(config) { constructor: function(config) {
config = Ext.apply({ config = Ext.apply({
items: [ items: [
{
id: 'tbar-deluge-text',
disabled: true,
text: _('Deluge'),
iconCls: 'x-deluge-main-panel',
}, new Ext.Toolbar.Separator(),
{ {
id: 'create', id: 'create',
disabled: true, disabled: true,
hidden: true,
text: _('Create'), text: _('Create'),
iconCls: 'icon-create', iconCls: 'icon-create',
handler: this.onTorrentAction handler: this.onTorrentAction
@ -8587,7 +8625,7 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
text: _('Remove'), text: _('Remove'),
iconCls: 'icon-remove', iconCls: 'icon-remove',
handler: this.onTorrentAction handler: this.onTorrentAction
},'|',{ }, new Ext.Toolbar.Separator(),{
id: 'pause', id: 'pause',
disabled: true, disabled: true,
text: _('Pause'), text: _('Pause'),
@ -8599,7 +8637,7 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
text: _('Resume'), text: _('Resume'),
iconCls: 'icon-resume', iconCls: 'icon-resume',
handler: this.onTorrentAction handler: this.onTorrentAction
},'|',{ }, new Ext.Toolbar.Separator(),{
id: 'up', id: 'up',
cls: 'x-btn-text-icon', cls: 'x-btn-text-icon',
disabled: true, disabled: true,
@ -8612,7 +8650,7 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
text: _('Down'), text: _('Down'),
iconCls: 'icon-down', iconCls: 'icon-down',
handler: this.onTorrentAction handler: this.onTorrentAction
},'|',{ }, new Ext.Toolbar.Separator(),{
id: 'preferences', id: 'preferences',
text: _('Preferences'), text: _('Preferences'),
iconCls: 'x-deluge-preferences', iconCls: 'x-deluge-preferences',
@ -8765,11 +8803,20 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
if (!value) return; if (!value) return;
return fspeed(value); return fspeed(value);
} }
function torrentLimitRenderer(value) {
if (value == -1) return '';
return fspeed(value * 1024.0);
}
function torrentProgressRenderer(value, p, r) { function torrentProgressRenderer(value, p, r) {
value = new Number(value); value = new Number(value);
var progress = value; var progress = value;
var text = r.data['state'] + ' ' + value.toFixed(2) + '%'; var text = r.data['state'] + ' ' + value.toFixed(2) + '%';
var width = new Number(this.style.match(/\w+:\s*(\d+)\w+/)[1]); if ( this.style ) {
var style = this.style
} else {
var style = p.style
}
var width = new Number(style.match(/\w+:\s*(\d+)\w+/)[1]);
return Deluge.progressBar(value, width - 8, text); return Deluge.progressBar(value, width - 8, text);
} }
function seedsRenderer(value, p, r) { function seedsRenderer(value, p, r) {
@ -8786,13 +8833,12 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
return value; return value;
} }
} }
function availRenderer(value, p, r) { function availRenderer(value, p, r) {
return (value < 0) ? '&infin;' : new Number(value).toFixed(3); return (value < 0) ? '&infin;' : parseFloat(new Number(value).toFixed(3));
} }
function trackerRenderer(value, p, r) { function trackerRenderer(value, p, r) {
return String.format('<div style="background: url(' + deluge.config.base + 'tracker/{0}) no-repeat; padding-left: 20px;">{0}</div>', value); return String.format('<div style="background: url(' + deluge.config.base + 'tracker/{0}) no-repeat; padding-left: 20px;">{0}</div>', value);
} }
function etaSorter(eta) { function etaSorter(eta) {
return eta * -1; return eta * -1;
} }
@ -8845,12 +8891,14 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
dataIndex: 'progress' dataIndex: 'progress'
}, { }, {
header: _('Seeders'), header: _('Seeders'),
hidden: true,
width: 60, width: 60,
sortable: true, sortable: true,
renderer: seedsRenderer, renderer: seedsRenderer,
dataIndex: 'num_seeds' dataIndex: 'num_seeds'
}, { }, {
header: _('Peers'), header: _('Peers'),
hidden: true,
width: 60, width: 60,
sortable: true, sortable: true,
renderer: peersRenderer, renderer: peersRenderer,
@ -8875,18 +8923,21 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
dataIndex: 'eta' dataIndex: 'eta'
}, { }, {
header: _('Ratio'), header: _('Ratio'),
hidden: true,
width: 60, width: 60,
sortable: true, sortable: true,
renderer: availRenderer, renderer: availRenderer,
dataIndex: 'ratio' dataIndex: 'ratio'
}, { }, {
header: _('Avail'), header: _('Avail'),
hidden: true,
width: 60, width: 60,
sortable: true, sortable: true,
renderer: availRenderer, renderer: availRenderer,
dataIndex: 'distributed_copies' dataIndex: 'distributed_copies'
}, { }, {
header: _('Added'), header: _('Added'),
hidden: true,
width: 80, width: 80,
sortable: true, sortable: true,
renderer: fdate, renderer: fdate,
@ -8899,12 +8950,14 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
dataIndex: 'last_seen_complete' dataIndex: 'last_seen_complete'
}, { }, {
header: _('Tracker'), header: _('Tracker'),
hidden: true,
width: 120, width: 120,
sortable: true, sortable: true,
renderer: trackerRenderer, renderer: trackerRenderer,
dataIndex: 'tracker_host' dataIndex: 'tracker_host'
}, { }, {
header: _('Save Path'), header: _('Save Path'),
hidden: true,
width: 120, width: 120,
sortable: true, sortable: true,
renderer: fplain, renderer: fplain,
@ -8917,16 +8970,53 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
dataIndex: 'owner' dataIndex: 'owner'
}, { }, {
header: _('Public'), header: _('Public'),
hidden: true,
width: 80, width: 80,
sortable: true, sortable: true,
renderer: fplain, renderer: fplain,
dataIndex: 'public' dataIndex: 'public'
}, { }, {
header: _('Shared'), header: _('Shared'),
hidden: true,
width: 80, width: 80,
sortable: true, sortable: true,
renderer: fplain, renderer: fplain,
dataIndex: 'shared' dataIndex: 'shared'
}, {
header: _('Downloaded'),
hidden: true,
width: 75,
sortable: true,
renderer: fsize,
dataIndex: 'total_done'
}, {
header: _('Uploaded'),
hidden: true,
width: 75,
sortable: true,
renderer: fsize,
dataIndex: 'total_uploaded'
}, {
header: _('Down Limit'),
hidden: true,
width: 75,
sortable: true,
renderer: torrentLimitRenderer,
dataIndex: 'max_download_speed'
}, {
header: _('Up Limit'),
hidden: true,
width: 75,
sortable: true,
renderer: torrentLimitRenderer,
dataIndex: 'max_upload_speed'
}, {
header: _('Seeders') + '/' + _('Peers'),
hidden: true,
width: 75,
sortable: true,
renderer: availRenderer,
dataIndex: 'seeds_peers_ratio'
}], }],
meta: { meta: {
@ -8949,7 +9039,12 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
{name: 'distributed_copies', type: 'float'}, {name: 'distributed_copies', type: 'float'},
{name: 'time_added', type: 'int'}, {name: 'time_added', type: 'int'},
{name: 'tracker_host'}, {name: 'tracker_host'},
{name: 'save_path'} {name: 'save_path'},
{name: 'total_done', type: 'int'},
{name: 'total_uploaded', type: 'int'},
{name: 'max_download_speed', type: 'int'},
{name: 'max_upload_speed', type: 'int'},
{name: 'seeds_peers_ratio', type: 'float'}
] ]
}, },
@ -8962,6 +9057,7 @@ Deluge.Toolbar = Ext.extend(Ext.Toolbar, {
cls: 'deluge-torrents', cls: 'deluge-torrents',
stripeRows: true, stripeRows: true,
autoExpandColumn: 'name', autoExpandColumn: 'name',
autoExpandMin: 150,
deferredRender:false, deferredRender:false,
autoScroll:true, autoScroll:true,
margins: '5 5 0 0', margins: '5 5 0 0',
@ -9161,15 +9257,31 @@ deluge.ui = {
deluge.statusbar = new Deluge.Statusbar(); deluge.statusbar = new Deluge.Statusbar();
deluge.toolbar = new Deluge.Toolbar(); deluge.toolbar = new Deluge.Toolbar();
this.detailsPanel = new Ext.Panel({
id: 'detailsPanel',
cls: 'detailsPanel',
region: 'south',
split: true,
height: 215,
minSize: 100,
collapsible: true,
margins: '0 5 5 5',
cmargins: '0 5 5 5',
layout: 'fit',
items: [
deluge.details
],
});
this.MainPanel = new Ext.Panel({ this.MainPanel = new Ext.Panel({
id: 'mainPanel', id: 'mainPanel',
iconCls: 'x-deluge-main-panel', iconCls: 'x-deluge-main-panel',
title: 'Deluge',
layout: 'border', layout: 'border',
border: false,
tbar: deluge.toolbar, tbar: deluge.toolbar,
items: [ items: [
deluge.sidebar, deluge.sidebar,
deluge.details, this.detailsPanel,
deluge.torrents deluge.torrents
], ],
bbar: deluge.statusbar bbar: deluge.statusbar
@ -9273,9 +9385,9 @@ deluge.ui = {
} }
if (deluge.config.show_session_speed) { if (deluge.config.show_session_speed) {
document.title = this.originalTitle + document.title = 'D: ' + fsize_short(data['stats'].download_rate, true) +
' (Down: ' + fspeed(data['stats'].download_rate, true) + ' U: ' + fsize_short(data['stats'].upload_rate, true) + ' - ' +
' Up: ' + fspeed(data['stats'].upload_rate, true) + ')'; this.originalTitle;
} }
if (Ext.areObjectsEqual(this.filters, this.oldFilters)) { if (Ext.areObjectsEqual(this.filters, this.oldFilters)) {
deluge.torrents.update(data['torrents']); deluge.torrents.update(data['torrents']);

File diff suppressed because one or more lines are too long

View file

@ -51,7 +51,12 @@
value = new Number(value); value = new Number(value);
var progress = value; var progress = value;
var text = r.data['state'] + ' ' + value.toFixed(2) + '%'; var text = r.data['state'] + ' ' + value.toFixed(2) + '%';
var width = new Number(this.style.match(/\w+:\s*(\d+)\w+/)[1]); if ( this.style ) {
var style = this.style
} else {
var style = p.style
}
var width = new Number(style.match(/\w+:\s*(\d+)\w+/)[1]);
return Deluge.progressBar(value, width - 8, text); return Deluge.progressBar(value, width - 8, text);
} }
function seedsRenderer(value, p, r) { function seedsRenderer(value, p, r) {