]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/BackupRestore.js
mail-proxy-relaying: add help to Default Relay
[pmg-gui.git] / js / BackupRestore.js
index 6f57c92f80859f6853aa27d832399aeae6da4dee..8f1c4f4407052aee40625173c77454fe0ee858af 100644 (file)
@@ -1,4 +1,3 @@
-/*global Proxmox*/
 Ext.define('pmg-backup-list', {
     extend: 'Ext.data.Model',
     fields: [
@@ -27,43 +26,73 @@ Ext.define('PMG.RestoreWindow', {
     fieldDefaults: {
        labelWidth: 150,
     },
-    items: [
-       {
-           xtype: 'proxmoxcheckbox',
-           name: 'config',
-           fieldLabel: gettext('System Configuration'),
-       },
-       {
-           xtype: 'proxmoxcheckbox',
-           name: 'database',
-           value: 1,
-           uncheckedValue: 0,
-           fieldLabel: gettext('Rule Database'),
-           listeners: {
-               change: function(cb, value) {
-                   var me = this;
-                   me.up().down('field[name=statistic]').setDisabled(!value);
+
+    initComponent: function() {
+       let me = this;
+
+       me.items = [
+           {
+               xtype: 'proxmoxcheckbox',
+               name: 'config',
+               fieldLabel: gettext('System Configuration'),
+           },
+           {
+               xtype: 'proxmoxcheckbox',
+               name: 'database',
+               value: 1,
+               uncheckedValue: 0,
+               fieldLabel: gettext('Rule Database'),
+               listeners: {
+                   change: function(field, value) {
+                       field.nextSibling('field[name=statistic]').setDisabled(!value);
+                   },
                },
            },
-       },
+           {
+               xtype: 'proxmoxcheckbox',
+               name: 'statistic',
+               fieldLabel: gettext('Statistic'),
+           },
+       ];
+
+       let restorePath;
+       if (me.filename) {
+           restorePath = `backup/${encodeURIComponent(me.filename)}`;
+       } else if (me.backup_time) {
+           restorePath = `pbs/${me.remote}/snapshot/${me.backup_id}/${me.backup_time}`;
+       } else {
+           throw "neither filename nor snapshot given";
+       }
+       me.url = `/nodes/${Proxmox.NodeName}/${restorePath}`;
+
+       me.callParent();
+    },
+});
+
+Ext.define('PMG.BackupWindow', {
+    extend: 'Proxmox.window.Edit',
+    xtype: 'pmgBackupWindow',
+    onlineHelp: 'chapter_pmgbackup',
+
+    showProgress: true,
+    title: gettext('Backup'),
+    isCreate: true,
+    method: 'POST',
+    submitText: gettext('Backup'),
+    fieldDefaults: {
+       labelWidth: 150,
+    },
+    showTaskViewer: true,
+    items: [
        {
            xtype: 'proxmoxcheckbox',
            name: 'statistic',
-           fieldLabel: gettext('Statistic'),
+           value: 1,
+           uncheckedValue: 0,
+           fieldLabel: gettext('Include Statistics'),
        },
     ],
 
-    initComponent: function() {
-       var me = this;
-
-       if (!me.filename) {
-           throw "no filename given";
-       }
-
-       me.url = "/nodes/" + Proxmox.NodeName + "/backup/" + encodeURIComponent(me.filename);
-
-       me.callParent();
-    },
 });
 
 Ext.define('PMG.BackupRestore', {
@@ -76,29 +105,16 @@ Ext.define('PMG.BackupRestore', {
        xclass: 'Ext.app.ViewController',
 
        createBackup: function() {
-           var me = this.getView();
-           Proxmox.Utils.API2Request({
+           let view = this.getView();
+           Ext.create('PMG.BackupWindow', {
                url: "/nodes/" + Proxmox.NodeName + "/backup",
-               method: 'POST',
-               waitMsgTarget: me,
-               failure: function(response, opts) {
-                   Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-               },
-               success: function(response, opts) {
-                   var upid = response.result.data;
-
-                   var win = Ext.create('Proxmox.window.TaskViewer', {
-                       upid: upid,
-                   });
-                   win.show();
-                   me.mon(win, 'close', function() { me.store.load(); });
-               },
-           });
+               taskDone: () => view.store.load(),
+           }).show();
        },
 
        onRestore: function() {
-           var me = this.getView();
-           var rec = me.getSelection()[0];
+           let view = this.getView();
+           let rec = view.getSelection()[0];
 
            if (!(rec && rec.data && rec.data.filename)) {
                return;
@@ -110,14 +126,14 @@ Ext.define('PMG.BackupRestore', {
        },
 
        onAfterRemove: function(btn, res) {
-           var me = this.getView();
-           me.store.load();
+           let view = this.getView();
+           view.store.load();
        },
     },
 
     tbar: [
        {
-           text: gettext('Backup'),
+           text: gettext('Backup Now'),
            handler: 'createBackup',
        },
        '-',
@@ -167,7 +183,7 @@ Ext.define('PMG.BackupRestore', {
            header: gettext('Size'),
            width: 100,
            sortable: true,
-           renderer: Proxmox.Utils.format_size,
+           renderer: Proxmox.Utils.render_size,
            dataIndex: 'size',
        },
        {