]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/BackupRestore.js
dashboard: increase height of node-info and top-receiver panel to 300
[pmg-gui.git] / js / BackupRestore.js
index 70044d305430cadff821bc6119a551d8c6d01e6a..8f1c4f4407052aee40625173c77454fe0ee858af 100644 (file)
@@ -1,17 +1,16 @@
-/*global Proxmox*/
 Ext.define('pmg-backup-list', {
     extend: 'Ext.data.Model',
     fields: [
        'filename',
        { type: 'integer', name: 'size' },
-       { type: 'date', dateFormat: 'timestamp', name: 'timestamp' }
+       { type: 'date', dateFormat: 'timestamp', name: 'timestamp' },
 
     ],
     proxy: {
         type: 'proxmox',
-       url: "/api2/json/nodes/" + Proxmox.NodeName + "/backup"
+       url: "/api2/json/nodes/" + Proxmox.NodeName + "/backup",
     },
-    idProperty: 'filename'
+    idProperty: 'filename',
 });
 
 Ext.define('PMG.RestoreWindow', {
@@ -25,45 +24,75 @@ Ext.define('PMG.RestoreWindow', {
     method: 'POST',
     submitText: gettext('Restore'),
     fieldDefaults: {
-       labelWidth: 150
+       labelWidth: 150,
     },
+
+    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: 'config',
-           fieldLabel: gettext('System Configuration')
-       },
-       {
-           xtype: 'proxmoxcheckbox',
-           name: 'database',
+           name: 'statistic',
            value: 1,
            uncheckedValue: 0,
-           fieldLabel: gettext('Rule Database'),
-           listeners: {
-               change: function(cb, value) {
-                   var me = this;
-                   me.up().down('field[name=statistic]').setDisabled(!value);
-               }
-           }
+           fieldLabel: gettext('Include Statistics'),
        },
-       {
-           xtype: 'proxmoxcheckbox',
-           name: 'statistic',
-           fieldLabel: gettext('Statistic')
-       }
     ],
 
-    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,64 +105,51 @@ 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;
            }
 
            Ext.create('PMG.RestoreWindow', {
-               filename: rec.data.filename
+               filename: rec.data.filename,
            }).show();
        },
 
        onAfterRemove: function(btn, res) {
-           var me = this.getView();
-           me.store.load();
-       }
+           let view = this.getView();
+           view.store.load();
+       },
     },
 
     tbar: [
        {
-           text: gettext('Backup'),
-           handler: 'createBackup'
+           text: gettext('Backup Now'),
+           handler: 'createBackup',
        },
        '-',
        {
            xtype: 'proxmoxButton',
            text: gettext('Restore'),
            handler: 'onRestore',
-           disabled: true
+           disabled: true,
        },
        {
            xtype: 'proxmoxStdRemoveButton',
            baseurl: '/nodes/' + Proxmox.NodeName + '/backup',
            reference: 'removeBtn',
            callback: 'onAfterRemove',
-           waitMsgTarget: true
-       }
+           waitMsgTarget: true,
+       },
     ],
 
     store: {
@@ -142,9 +158,9 @@ Ext.define('PMG.BackupRestore', {
        sorters: [
            {
                property: 'timestamp',
-               direction: 'DESC'
-           }
-       ]
+               direction: 'DESC',
+           },
+       ],
     },
 
     columns: [
@@ -153,7 +169,7 @@ Ext.define('PMG.BackupRestore', {
            width: 300,
            sortable: true,
            renderer: Ext.htmlEncode,
-           dataIndex: 'filename'
+           dataIndex: 'filename',
        },
        {
            xtype: 'datecolumn',
@@ -161,14 +177,14 @@ Ext.define('PMG.BackupRestore', {
            width: 150,
            format: 'Y-m-d H:i',
            sortable: true,
-           dataIndex: 'timestamp'
+           dataIndex: 'timestamp',
        },
        {
            header: gettext('Size'),
            width: 100,
            sortable: true,
-           renderer: Proxmox.Utils.format_size,
-           dataIndex: 'size'
+           renderer: Proxmox.Utils.render_size,
+           dataIndex: 'size',
        },
        {
            header: gettext('Download'),
@@ -177,7 +193,7 @@ Ext.define('PMG.BackupRestore', {
                    "/api2/json/nodes/" + Proxmox.NodeName + "/backup/" + encodeURIComponent(filename) +
                "'><i class='fa fa-fw fa-download'</i></a>";
            },
-           dataIndex: 'filename'
-       }
-    ]
+           dataIndex: 'filename',
+       },
+    ],
 });