summaryrefslogtreecommitdiffstats
path: root/pyload/web/app/scripts/models/File.js
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/web/app/scripts/models/File.js')
-rw-r--r--pyload/web/app/scripts/models/File.js97
1 files changed, 97 insertions, 0 deletions
diff --git a/pyload/web/app/scripts/models/File.js b/pyload/web/app/scripts/models/File.js
new file mode 100644
index 000000000..562e6b0ae
--- /dev/null
+++ b/pyload/web/app/scripts/models/File.js
@@ -0,0 +1,97 @@
+define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes'], function($, Backbone, _, App, Api) {
+ 'use strict';
+
+ var Finished = [Api.DownloadStatus.Finished, Api.DownloadStatus.Skipped];
+ var Failed = [Api.DownloadStatus.Failed, Api.DownloadStatus.Aborted, Api.DownloadStatus.TempOffline, Api.DownloadStatus.Offline];
+ // Unfinished - Other
+
+ return Backbone.Model.extend({
+
+ idAttribute: 'fid',
+
+ defaults: {
+ fid: -1,
+ name: null,
+ package: -1,
+ owner: -1,
+ size: -1,
+ status: -1,
+ media: -1,
+ added: -1,
+ fileorder: -1,
+ download: null,
+
+ // UI attributes
+ selected: false,
+ visible: true,
+ progress: 0,
+ eta: 0
+ },
+
+ // Model Constructor
+ initialize: function() {
+
+ },
+
+ fetch: function(options) {
+ options = App.apiRequest(
+ 'getFileInfo',
+ {fid: this.get('fid')},
+ options);
+
+ return Backbone.Model.prototype.fetch.call(this, options);
+ },
+
+ destroy: function(options) {
+ // also not working when using data
+ options = App.apiRequest(
+ 'deleteFiles/[' + this.get('fid') + ']',
+ null, options);
+ options.method = 'post';
+
+ return Backbone.Model.prototype.destroy.call(this, options);
+ },
+
+ // Does not send a request to the server
+ destroyLocal: function(options) {
+ this.trigger('destroy', this, this.collection, options);
+ },
+
+ restart: function(options) {
+ options = App.apiRequest(
+ 'restartFile',
+ {fid: this.get('fid')},
+ options);
+
+ return $.ajax(options);
+ },
+
+ // Any time a model attribute is set, this method is called
+ validate: function(attrs) {
+
+ },
+
+ setDownloadStatus: function(status) {
+ if (this.isDownload())
+ this.get('download').status = status;
+ },
+
+ isDownload: function() {
+ return this.has('download');
+ },
+
+ isFinished: function() {
+ return _.indexOf(Finished, this.get('download').status) > -1;
+ },
+
+ isUnfinished: function() {
+ return _.indexOf(Finished, this.get('download').status) === -1 && _.indexOf(Failed, this.get('download').status) === -1;
+ },
+
+ isFailed: function() {
+ return _.indexOf(Failed, this.get('download').status) > -1;
+ }
+
+ });
+
+}); \ No newline at end of file