PATH:
usr
/
local
/
jetapps
/
frontend
/
jetbackup
/
app
/
services
'use strict'; define([ 'app' ], function (app) { app.factory('backup', ['$rootScope', 'jetapi', function ($rootScope, jetapi) { var backup = function (type, metaParams) { this.setType(type); // this.setSortable(sortable); this._metaParams = metaParams }; backup.prototype = { _type: null, _sortable: null, _list: null, _metaParams: null, onlySnapshots: 0, queue: { restore: [], download: [] }, setType: function(type) { this._type = type; }, getType: function() { return this._type; }, setSortable: function(sortable) { this._sortable = sortable; }, getSortable: function() { return this._sortable; }, setList: function(list) { this._list = list; }, buildListParams: function() { var params = { type: this.getType(), skip: this._metaParams.getSkip(), limit: this._metaParams.getPageSize(), sort: {}, filter: this._metaParams.filterValue, only_snapshots: this.onlySnapshots } params.sort[this._metaParams.getSortBy()] = this._metaParams.getSortDirectionInt(); return params; }, loadList: function (callback) { // this._sortable.setType(this.getType()); return jetapi.listBackups(this.buildListParams(), function(response) { callback(response); }); }, resetExpended: function() { for(var i=0; i< this._list.length; i++) this._list[i].isExpanded = false; }, saveNote: function (backup, callback) { jetapi.manageBackup({ _id: backup._id, notes: backup.notes}, function(response) { backup.editing = false; if(typeof(callback) === "function") callback(response); }); }, restoreBackup: function (backup, callback) { backup.status = undefined; backup.restoring = true; var apiParams = { _id: backup._id }; if(backup.require_encryption_key && !backup.encryption_key) { backup.status = { message: lang.t("You must provide encryption key in order to restore form this backup"), type: 'danger', closeable: true, //ttl: 10000 }; return; } if(backup.encryption_key) apiParams.encryption_key = backup.encryption_key; var self = this; jetapi.addQueueRestore(apiParams, function(response) { self.resetExpended(); backup.status = { message: response.status ? response.messages[0] : response.errors[0], type: response.status ? "success" : "danger", closeable: true, //ttl: 10000 }; backup.encryption_key = ''; if(response.status) self.queue.restore.push(response.data._id); if(typeof callback === "function") callback(response); }); }, generateBackup: function(backup, callback) { var self = this; backup.status = undefined; backup.downloading = true; if(backup.download){ this.downloadBackup(backup); return; } var apiParams = { _id: backup._id }; if(backup.require_encryption_key && !backup.encryption_key) { backup.status = { message: $scope.LANG.t("You must provide encryption key in order to generate download for this backup"), type: 'danger', closeable: true, //ttl: 10000 }; $scope.actionModule = undefined; return; } if(backup.encryption_key) apiParams.encryption_key = backup.encryption_key; jetapi.addQueueDownload(apiParams, function(response) { backup.status = { message: response.status ? response.messages[0] : response.errors[0], type: response.status ? "success" : "danger", closeable: true, //ttl: 10000 }; if(!response.status) return; backup.encryption_key = ''; backup.queue.download = response.data._id; if(response.status) self.queue.download.push(response.data._id); if(typeof callback === "function") callback(); }); }, downloadBackup: function (backup) { if(backup.download) { jetapi.getDownload({ _id: backup.download }, function(response) { if(!response.status) { backup.status = { message: response.errors[0], type: "danger", closeable: true, //ttl: 5000 }; return; } var parts = response.data.path.split('/'); window.location = '../../../download?file=.jbm/downloads/' + parts[parts.length-1]; }); } }, deleteDownload: function(backup, callback) { jetapi.deleteDownload({ _id: backup.download }, function(response) { backup.status = { message: response.status ? response.messages[0] : response.errors[0], type: response.status ? "success" : "danger", closeable: true, //ttl: 5000 }; if(typeof callback === "function") callback(); }); }, checkStatus: function (scope) { var self = this; var params = {'snap_type': this.getType()}; jetapi.listQueueItems(params, function(response) { if(!response.status) return; scope.snapshotInQueue = false; var queue = response.data.queue; for(var i=0; i<queue.length; i++) { var queueItem = queue[i]; var pos = -1; switch (queueItem.type) { //Restore case 1: pos = self.queue.restore.indexOf(queueItem._id); if(pos < 0 && queueItem.status < 100) self.queue.restore.push(queueItem._id); if(pos > -1 && queueItem.status >= 100) { self.queue.restore.splice(pos,1); scope.fetchData(); } break; //Download case 2: pos = self.queue.download.indexOf(queueItem._id); if(pos < 0 && queueItem.status < 100) self.queue.download.push(queueItem._id); if(pos > -1 && queueItem.status >= 100) { self.queue.download.splice(pos,1); scope.fetchData(); } break; //Snapshot case 3: if (queue[i].status < 100 ) scope.snapshotInQueue = true; break; } } }); }, hasQueueItem: function () { return this.queue.download.length || this.queue.restore.length; } }; return backup; }]); });
[-] utils.js
[edit]
[+]
..
[-] lang.js
[edit]
[-] jetapi.js
[edit]
[-] consts.js
[edit]
[-] storage.js
[edit]
[-] meta.js
[edit]
[-] backup.js
[edit]