summaryrefslogtreecommitdiffstats
path: root/deluge/ui/web/js/deluge-all/TorrentGrid.js
diff options
context:
space:
mode:
Diffstat (limited to 'deluge/ui/web/js/deluge-all/TorrentGrid.js')
-rw-r--r--deluge/ui/web/js/deluge-all/TorrentGrid.js429
1 files changed, 213 insertions, 216 deletions
diff --git a/deluge/ui/web/js/deluge-all/TorrentGrid.js b/deluge/ui/web/js/deluge-all/TorrentGrid.js
index de3672eda..a468c010a 100644
--- a/deluge/ui/web/js/deluge-all/TorrentGrid.js
+++ b/deluge/ui/web/js/deluge-all/TorrentGrid.js
@@ -1,7 +1,7 @@
/*!
* Deluge.TorrentGrid.js
*
- * Copyright (c) Damien Churchill 2009-2010 <damoxc@gmail.com>
+ * Copyright (c) Damien Churchill 2009-2011 <damoxc@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,230 +30,229 @@
* statement from all source files in the program, then also delete it here.
*/
-(function() {
-
- /* Renderers for the Torrent Grid */
- function queueRenderer(value) {
- return (value == -1) ? '' : value + 1;
- }
- function torrentNameRenderer(value, p, r) {
- return String.format('<div class="torrent-name x-deluge-{0}">{1}</div>', r.data['state'].toLowerCase(), value);
- }
- function torrentSpeedRenderer(value) {
- if (!value) return;
- return fspeed(value);
+/* Renderers for the Torrent Grid */
+function queueRenderer(value) {
+ return (value == -1) ? '' : value + 1;
+}
+function torrentNameRenderer(value, p, r) {
+ return String.format('<div class="torrent-name x-deluge-{0}">{1}</div>', r.data['state'].toLowerCase(), value);
+}
+function torrentSpeedRenderer(value) {
+ if (!value) return;
+ return fspeed(value);
+}
+function torrentProgressRenderer(value, p, r) {
+ value = new Number(value);
+ var progress = value;
+ var text = r.data['state'] + ' ' + value.toFixed(2) + '%';
+ var width = new Number(this.style.match(/\w+:\s*(\d+)\w+/)[1]);
+ return Deluge.progressBar(value, width - 8, text);
+}
+function seedsRenderer(value, p, r) {
+ if (r.data['total_seeds'] > -1) {
+ return String.format('{0} ({1})', value, r.data['total_seeds']);
+ } else {
+ return value;
}
- function torrentProgressRenderer(value, p, r) {
- value = new Number(value);
- var progress = value;
- var text = r.data['state'] + ' ' + value.toFixed(2) + '%';
- var width = new Number(this.style.match(/\w+:\s*(\d+)\w+/)[1]);
- return Deluge.progressBar(value, width - 8, text);
- }
- function seedsRenderer(value, p, r) {
- if (r.data['total_seeds'] > -1) {
- return String.format('{0} ({1})', value, r.data['total_seeds']);
- } else {
- return value;
- }
- }
- function peersRenderer(value, p, r) {
- if (r.data['total_peers'] > -1) {
- return String.format('{0} ({1})', value, r.data['total_peers']);
- } else {
- return value;
- }
- }
- function availRenderer(value, p, r) {
- return (value < 0) ? '&infin;' : new Number(value).toFixed(3);
- }
- 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);
+}
+function peersRenderer(value, p, r) {
+ if (r.data['total_peers'] > -1) {
+ return String.format('{0} ({1})', value, r.data['total_peers']);
+ } else {
+ return value;
}
+}
+function availRenderer(value, p, r) {
+ return (value < 0) ? '&infin;' : new Number(value).toFixed(3);
+}
+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);
+}
- function etaSorter(eta) {
- return eta * -1;
- }
+function etaSorter(eta) {
+ return eta * -1;
+}
- function dateOrNever(date) {
- return date > 0.0 ? fdate(date) : "Never"
- }
+function dateOrNever(date) {
+ return date > 0.0 ? fdate(date) : "Never"
+}
- /**
- * Deluge.TorrentGrid Class
- *
- * @author Damien Churchill <damoxc@gmail.com>
- * @version 1.3
- *
- * @class Deluge.TorrentGrid
- * @extends Ext.grid.GridPanel
- * @constructor
- * @param {Object} config Configuration options
- */
- Deluge.TorrentGrid = Ext.extend(Ext.grid.GridPanel, {
+/**
+ * Deluge.TorrentGrid Class
+ *
+ * @author Damien Churchill <damoxc@gmail.com>
+ * @version 1.3
+ *
+ * @class Deluge.TorrentGrid
+ * @extends Ext.grid.GridPanel
+ * @constructor
+ * @param {Object} config Configuration options
+ */
+Ext.define('Deluge.TorrentGrid', {
+ extend: 'Ext.grid.Panel',
+
+ // object to store contained torrent ids
+ torrents: {},
- // object to store contained torrent ids
- torrents: {},
+ columns: [{
+ id:'queue',
+ header: _('#'),
+ width: 30,
+ sortable: true,
+ renderer: queueRenderer,
+ dataIndex: 'queue'
+ }, {
+ id:'name',
+ header: _('Name'),
+ width: 150,
+ sortable: true,
+ renderer: torrentNameRenderer,
+ dataIndex: 'name'
+ }, {
+ header: _('Size'),
+ width: 75,
+ sortable: true,
+ renderer: fsize,
+ dataIndex: 'total_size'
+ }, {
+ header: _('Progress'),
+ width: 150,
+ sortable: true,
+ renderer: torrentProgressRenderer,
+ dataIndex: 'progress'
+ }, {
+ header: _('Seeders'),
+ width: 60,
+ sortable: true,
+ renderer: seedsRenderer,
+ dataIndex: 'num_seeds'
+ }, {
+ header: _('Peers'),
+ width: 60,
+ sortable: true,
+ renderer: peersRenderer,
+ dataIndex: 'num_peers'
+ }, {
+ header: _('Down Speed'),
+ width: 80,
+ sortable: true,
+ renderer: torrentSpeedRenderer,
+ dataIndex: 'download_payload_rate'
+ }, {
+ header: _('Up Speed'),
+ width: 80,
+ sortable: true,
+ renderer: torrentSpeedRenderer,
+ dataIndex: 'upload_payload_rate'
+ }, {
+ header: _('ETA'),
+ width: 60,
+ sortable: true,
+ renderer: ftime,
+ dataIndex: 'eta'
+ }, {
+ header: _('Ratio'),
+ width: 60,
+ sortable: true,
+ renderer: availRenderer,
+ dataIndex: 'ratio'
+ }, {
+ header: _('Avail'),
+ width: 60,
+ sortable: true,
+ renderer: availRenderer,
+ dataIndex: 'distributed_copies'
+ }, {
+ header: _('Added'),
+ width: 80,
+ sortable: true,
+ renderer: fdate,
+ dataIndex: 'time_added'
+ }, {
+ header: _('Last Seen Complete'),
+ width: 80,
+ sortable: true,
+ renderer: dateOrNever,
+ dataIndex: 'last_seen_complete'
+ }, {
+ header: _('Tracker'),
+ width: 120,
+ sortable: true,
+ renderer: trackerRenderer,
+ dataIndex: 'tracker_host'
+ }, {
+ header: _('Save Path'),
+ width: 120,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'save_path'
+ }, {
+ header: _('Owner'),
+ width: 80,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'owner'
+ }, {
+ header: _('Public'),
+ width: 80,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'public'
+ }, {
+ header: _('Shared'),
+ width: 80,
+ sortable: true,
+ renderer: fplain,
+ dataIndex: 'shared'
+ }],
- columns: [{
- id:'queue',
- header: _('#'),
- width: 30,
- sortable: true,
- renderer: queueRenderer,
- dataIndex: 'queue'
- }, {
- id:'name',
- header: _('Name'),
- width: 150,
- sortable: true,
- renderer: torrentNameRenderer,
- dataIndex: 'name'
- }, {
- header: _('Size'),
- width: 75,
- sortable: true,
- renderer: fsize,
- dataIndex: 'total_size'
- }, {
- header: _('Progress'),
- width: 150,
- sortable: true,
- renderer: torrentProgressRenderer,
- dataIndex: 'progress'
- }, {
- header: _('Seeders'),
- width: 60,
- sortable: true,
- renderer: seedsRenderer,
- dataIndex: 'num_seeds'
- }, {
- header: _('Peers'),
- width: 60,
- sortable: true,
- renderer: peersRenderer,
- dataIndex: 'num_peers'
- }, {
- header: _('Down Speed'),
- width: 80,
- sortable: true,
- renderer: torrentSpeedRenderer,
- dataIndex: 'download_payload_rate'
- }, {
- header: _('Up Speed'),
- width: 80,
- sortable: true,
- renderer: torrentSpeedRenderer,
- dataIndex: 'upload_payload_rate'
- }, {
- header: _('ETA'),
- width: 60,
- sortable: true,
- renderer: ftime,
- dataIndex: 'eta'
- }, {
- header: _('Ratio'),
- width: 60,
- sortable: true,
- renderer: availRenderer,
- dataIndex: 'ratio'
- }, {
- header: _('Avail'),
- width: 60,
- sortable: true,
- renderer: availRenderer,
- dataIndex: 'distributed_copies'
- }, {
- header: _('Added'),
- width: 80,
- sortable: true,
- renderer: fdate,
- dataIndex: 'time_added'
- }, {
- header: _('Last Seen Complete'),
- width: 80,
- sortable: true,
- renderer: dateOrNever,
- dataIndex: 'last_seen_complete'
- }, {
- header: _('Tracker'),
- width: 120,
- sortable: true,
- renderer: trackerRenderer,
- dataIndex: 'tracker_host'
- }, {
- header: _('Save Path'),
- width: 120,
- sortable: true,
- renderer: fplain,
- dataIndex: 'save_path'
- }, {
- header: _('Owner'),
- width: 80,
- sortable: true,
- renderer: fplain,
- dataIndex: 'owner'
- }, {
- header: _('Public'),
- width: 80,
- sortable: true,
- renderer: fplain,
- dataIndex: 'public'
- }, {
- header: _('Shared'),
- width: 80,
- sortable: true,
- renderer: fplain,
- dataIndex: 'shared'
- }],
+ meta: {
+ root: 'torrents',
+ idProperty: 'id',
+ fields: [
+ {name: 'queue', sortType: Deluge.data.SortTypes.asQueuePosition},
+ {name: 'name'},
+ {name: 'total_size', type: 'int'},
+ {name: 'state'},
+ {name: 'progress', type: 'float'},
+ {name: 'num_seeds', type: 'int'},
+ {name: 'total_seeds', type: 'int'},
+ {name: 'num_peers', type: 'int'},
+ {name: 'total_peers', type: 'int'},
+ {name: 'download_payload_rate', type: 'int'},
+ {name: 'upload_payload_speed', type: 'int'},
+ {name: 'eta', type: 'int', sortType: etaSorter},
+ {name: 'ratio', type: 'float'},
+ {name: 'distributed_copies', type: 'float'},
+ {name: 'time_added', type: 'int'},
+ {name: 'tracker_host'},
+ {name: 'save_path'}
+ ]
+ },
- meta: {
- root: 'torrents',
- idProperty: 'id',
- fields: [
- {name: 'queue', sortType: Deluge.data.SortTypes.asQueuePosition},
- {name: 'name'},
- {name: 'total_size', type: 'int'},
- {name: 'state'},
- {name: 'progress', type: 'float'},
- {name: 'num_seeds', type: 'int'},
- {name: 'total_seeds', type: 'int'},
- {name: 'num_peers', type: 'int'},
- {name: 'total_peers', type: 'int'},
- {name: 'download_payload_rate', type: 'int'},
- {name: 'upload_payload_speed', type: 'int'},
- {name: 'eta', type: 'int', sortType: etaSorter},
- {name: 'ratio', type: 'float'},
- {name: 'distributed_copies', type: 'float'},
- {name: 'time_added', type: 'int'},
- {name: 'tracker_host'},
- {name: 'save_path'}
- ]
- },
+ store: Ext.create('Ext.data.Store', {
+ model: 'Deluge.data.TorrentRecord',
+ proxy: {
+ type: 'memory',
+ reader: {
+ type: 'json',
+ root: 'torrents'
+ }
+ }
+ }),
- constructor: function(config) {
- config = Ext.apply({
- id: 'torrentGrid',
- store: new Ext.data.JsonStore(this.meta),
- columns: this.columns,
- region: 'center',
- cls: 'deluge-torrents',
- stripeRows: true,
- autoExpandColumn: 'name',
- deferredRender:false,
- autoScroll:true,
- margins: '5 5 0 0',
- stateful: true,
- view: new Ext.ux.grid.BufferView({
- rowHeight: 26,
- scrollDelay: false
- })
- }, config);
- Deluge.TorrentGrid.superclass.constructor.call(this, config);
- },
+ id: 'torrentGrid',
+ region: 'center',
+ cls: 'deluge-torrents',
+ stripeRows: true,
+ autoExpandColumn: 'name',
+ deferredRender:false,
+ autoScroll:true,
+ margins: '5 5 0 0',
+ stateful: true,
initComponent: function() {
- Deluge.TorrentGrid.superclass.initComponent.call(this);
+ this.callParent(arguments);
deluge.events.on('torrentRemoved', this.onTorrentRemoved, this);
deluge.events.on('disconnect', this.onDisconnect, this);
@@ -378,5 +377,3 @@
}, this);
}
});
-deluge.torrents = new Deluge.TorrentGrid();
-})();