deluge/deluge/ui/web/js/deluge-torrents.js
Damien Churchill 4e5e98d90b add a helper methods to torrents
trigger an update immediately when the torrent is changed in the grid
2009-02-20 23:58:18 +00:00

83 lines
2.7 KiB
JavaScript

function queue(value) {
return (value == -1) ? "" : value + 1;
}
function name(value, p, r) {
return String.format('<div class="torrent-name {0}">{1}</div>', r.data['state'].toLowerCase(), value);
}
function progress(value, p, r) {
return String.format('<div class="deluge-torrent-progress">{1} {0}%</div>', value.toFixed(2), r.data['state']);
}
function seeds(value, p, r) {
return String.format("{0} ({1})", value, r.data['total_seeds']);
}
function peers(value, p, r) {
return String.format("{0} ({1})", value, r.data['total_peers']);
}
function avail(value) {
return value.toFixed(3);
}
Deluge.Torrents = {
Store: new Ext.data.SimpleStore({
fields: [
{name: 'queue'},
{name: 'name'},
{name: 'size', type: 'int'},
{name: 'state'},
{name: 'progress', type: 'float'},
{name: 'seeds', type: 'int'},
{name: 'total_seeds', type: 'int'},
{name: 'peers', type: 'int'},
{name: 'total_peers', type: 'int'},
{name: 'downspeed', type: 'int'},
{name: 'upspeed', type: 'int'},
{name: 'eta', type: 'int'},
{name: 'ratio', type: 'float'},
{name: 'avail', type: 'float'}
],
id: 14
}),
getTorrent: function(rowIndex) {
return this.Grid.store.getAt(rowIndex);
},
getSelected: function() {
return this.Grid.getSelectionModel().getSelected();
},
getSelections: function() {
return this.Grid.getSelectionModel().getSelections();
}
}
Deluge.Torrents.Store.setDefaultSort("queue");
Deluge.Torrents.Grid = new Ext.grid.GridPanel({
region: 'center',
store: Deluge.Torrents.Store,
cls: 'deluge-torrents',
columns: [
{id:'queue',header: "#", width: 30, sortable: true, renderer: queue, dataIndex: 'queue'},
{id:'name', header: "Name", width: 150, sortable: true, renderer: name, dataIndex: 'name'},
{header: "Size", width: 75, sortable: true, renderer: Deluge.Formatters.size, dataIndex: 'size'},
{header: "Progress", width: 125, sortable: true, renderer: progress, dataIndex: 'progress'},
{header: "Seeds", width: 60, sortable: true, renderer: seeds, dataIndex: 'seeds'},
{header: "Peers", width: 60, sortable: true, renderer: peers, dataIndex: 'peers'},
{header: "Down Speed", width: 80, sortable: true, renderer: Deluge.Formatters.speed, dataIndex: 'downspeed'},
{header: "Up Speed", width: 80, sortable: true, renderer: Deluge.Formatters.speed, dataIndex: 'upspeed'},
{header: "ETA", width: 60, sortable: true, renderer: Deluge.Formatters.timeRemaining, dataIndex: 'eta'},
{header: "Ratio", width: 60, sortable: true, renderer: avail, dataIndex: 'ratio'},
{header: "Avail.", width: 60, sortable: true, renderer: avail, dataIndex: 'avail'}
],
stripeRows: true,
autoExpandColumn: 'name',
deferredRender:false,
autoScroll:true,
margins: '5 5 0 0'
})