summaryrefslogtreecommitdiffstats
path: root/module/web/static/js/views
diff options
context:
space:
mode:
Diffstat (limited to 'module/web/static/js/views')
-rw-r--r--module/web/static/js/views/fileView.js6
-rw-r--r--module/web/static/js/views/headerView.js29
-rw-r--r--module/web/static/js/views/linkGrabberModal.js29
-rw-r--r--module/web/static/js/views/packageView.js5
-rw-r--r--module/web/static/js/views/selectionView.js40
5 files changed, 66 insertions, 43 deletions
diff --git a/module/web/static/js/views/fileView.js b/module/web/static/js/views/fileView.js
index 68e8df176..2d5d844c8 100644
--- a/module/web/static/js/views/fileView.js
+++ b/module/web/static/js/views/fileView.js
@@ -9,7 +9,8 @@ define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'views/abst
template: _.compile($("#template-file").html()),
events: {
'click .checkbox': 'select',
- 'click .iconf-trash': 'deleteItem'
+ 'click .btn-delete': 'deleteItem',
+ 'click .btn-restart': 'restart'
},
initialize: function() {
@@ -49,9 +50,8 @@ define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'views/abst
if (this.model.get('visible'))
this.$el.show();
- else {
+ else
this.$el.hide();
- }
return this;
},
diff --git a/module/web/static/js/views/headerView.js b/module/web/static/js/views/headerView.js
index d9c56b332..49c3aa30e 100644
--- a/module/web/static/js/views/headerView.js
+++ b/module/web/static/js/views/headerView.js
@@ -7,7 +7,7 @@ define(['jquery', 'underscore', 'backbone', 'app', 'models/ServerStatus', 'colle
events: {
'click .iconf-list': 'toggle_taskList',
- 'click .popover .close': 'hide_taskList',
+ 'click .popover .close': 'toggle_taskList',
'click .btn-grabber': 'open_grabber'
},
@@ -26,6 +26,9 @@ define(['jquery', 'underscore', 'backbone', 'app', 'models/ServerStatus', 'colle
status: null,
progressList: null,
+ // save if last progress was empty
+ wasEmpty: false,
+
initialize: function() {
var self = this;
this.notifications = this.$('#notification-area').calculateHeight().height(0);
@@ -138,10 +141,6 @@ define(['jquery', 'underscore', 'backbone', 'app', 'models/ServerStatus', 'colle
this.$('.popover').animate({opacity: 'toggle'});
},
- hide_taskList: function() {
- this.$('.popover').fadeOut();
- },
-
open_grabber: function() {
var self = this;
_.requireOnce(['views/linkGrabberModal'], function(modalView) {
@@ -180,14 +179,26 @@ define(['jquery', 'underscore', 'backbone', 'app', 'models/ServerStatus', 'colle
this.progressList.update(progress);
// update currently open files with progress
this.progressList.each(function(prog) {
- if(prog.isDownload() && App.dashboard.files){
+ if (prog.isDownload() && App.dashboard.files) {
var file = App.dashboard.files.get(prog.get('download').fid);
if (file)
- file.set('progress', prog.getPercent());
+ file.set({
+ progress: prog.getPercent(),
+ eta: prog.get('eta')
+ });
}
});
- // TODO: only render when changed
- this.render();
+
+ if (progress.length === 0) {
+ // only render one time when last was not empty already
+ if (!this.wasEmpty) {
+ this.render();
+ this.wasEmpty = true;
+ }
+ } else {
+ this.wasEmpty = false;
+ this.render();
+ }
},
onEvent: function(event, args) {
diff --git a/module/web/static/js/views/linkGrabberModal.js b/module/web/static/js/views/linkGrabberModal.js
index 71f97f0bf..3d9a886db 100644
--- a/module/web/static/js/views/linkGrabberModal.js
+++ b/module/web/static/js/views/linkGrabberModal.js
@@ -26,23 +26,22 @@ define(['jquery', 'underscore', 'app', 'views/abstract/modalView', 'text!tpl/def
addPackage: function(e) {
var self = this;
- var settings = {
- type: 'POST',
- data: {
- name: JSON.stringify($('#inputPackageName').val()),
- links: JSON.stringify(['http://download.pyload.org/random.bin', 'http://download.pyload.org/random100.bin',
- 'invalid link', 'invalid link 2', 'invalid link 3', 'inavlid link 4',
- 'http://download.pyload.org/random.bin', 'http://download.pyload.org/random.bin', 'http://download.pyload.org/random.bin',
- 'A really really long invalid url that should exceed length of most of the urls by far and split into two lines'])
+ var options = App.apiRequest('addPackage',
+ {
+ name: $('#inputPackageName').val(),
+ // TODO: better parsing / tokenization
+ links: $('#inputLinks').val().split("\n")
},
- success: function() {
- App.vent.trigger('package:added');
- self.hide();
- }
- };
-
- $.ajax('api/addPackage', settings);
+ {
+ success: function() {
+ App.vent.trigger('package:added');
+ self.hide();
+ }
+ });
+
+ $.ajax(options);
$('#inputPackageName').val('');
+ $('#inputLinks').val('');
},
onShow: function() {
diff --git a/module/web/static/js/views/packageView.js b/module/web/static/js/views/packageView.js
index 534fe2ad4..547c1470d 100644
--- a/module/web/static/js/views/packageView.js
+++ b/module/web/static/js/views/packageView.js
@@ -8,9 +8,10 @@ define(['jquery', 'app', 'views/abstract/itemView', 'underscore'],
className: 'package-view',
template: _.compile($("#template-package").html()),
events: {
- 'click .package-name': 'open',
+ 'click .package-name, .btn-open': 'open',
'click .iconf-refresh': 'restart',
- 'click .select': 'select'
+ 'click .select': 'select',
+ 'click .btn-delete': 'deleteItem'
},
// Ul for child packages (unused)
diff --git a/module/web/static/js/views/selectionView.js b/module/web/static/js/views/selectionView.js
index 480b7127b..4f235b2f5 100644
--- a/module/web/static/js/views/selectionView.js
+++ b/module/web/static/js/views/selectionView.js
@@ -30,8 +30,10 @@ define(['jquery', 'backbone', 'underscore', 'app'],
this.actionBar = $('.actionbar .btn-check');
this.actionBar.parent().click(_.bind(this.select_toggle, this));
- // TODO when something gets deleted
-// this.tree.get('packages').on('delete', _.bind(this.render, this));
+
+ // API events, maybe better to rely on internal ones?
+ App.vent.on('package:deleted', render);
+ App.vent.on('file:deleted', render);
},
get_files: function(all) {
@@ -85,23 +87,33 @@ define(['jquery', 'backbone', 'underscore', 'app'],
},
pause: function() {
- _.confirm('default/confirmDialog.html', function() {
- alert("Not implemented yet");
- this.deselect();
- }, this);
+ alert("Not implemented yet");
+ this.deselect();
},
trash: function() {
- // TODO: delete many at once, check if package is parent
- this.get_files().map(function(file) {
- file.destroy();
- });
+ _.confirm('default/confirmDialog.html', function() {
- this.get_packs().map(function(pack) {
- pack.destroy();
- });
+ var pids = [];
+ // TODO: delete many at once
+ this.get_packs().map(function(pack) {
+ pids.push(pack.get('pid'));
+ pack.destroy();
+ });
- this.deselect();
+ // get only the fids of non deleted packages
+ var fids = _.filter(this.get_files(),function(file) {
+ return !_.contains(pids, file.get('package'));
+ }).map(function(file) {
+ file.destroyLocal();
+ return file.get('fid');
+ });
+
+ if (fids.length > 0)
+ $.ajax(App.apiRequest('deleteFiles', {fids: fids}));
+
+ this.deselect();
+ }, this);
},
restart: function() {