]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/BackupRestore.js
check if load is successfull in GeneralMailStatistics
[pmg-gui.git] / js / BackupRestore.js
index 6bc2abf8ea83df1fabb859a3ba3278220ae02460..541081e5c24c78d3c0394389261b798fa98e1271 100644 (file)
@@ -3,7 +3,9 @@ Ext.define('pmg-backup-list', {
     extend: 'Ext.data.Model',
     fields: [
        'filename',
-       { type: 'integer', name: 'size' }
+       { type: 'integer', name: 'size' },
+       { type: 'date', dateFormat: 'timestamp', name: 'timestamp' }
+
     ],
     proxy: {
         type: 'proxmox',
@@ -12,6 +14,57 @@ Ext.define('pmg-backup-list', {
     idProperty: 'filename'
 });
 
+Ext.define('PMG.RestoreWindow', {
+    extend: 'Proxmox.window.Edit',
+    xtype: 'pmgRestoreWindow',
+
+    showProgress: true,
+    title: gettext('Restore'),
+    isCreate: true,
+    method: 'POST',
+    submitText: gettext('Restore'),
+    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);
+               }
+           }
+       },
+       {
+           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', {
     extend: 'Ext.grid.GridPanel',
     xtype: 'pmgBackupRestore',
@@ -46,52 +99,18 @@ Ext.define('PMG.BackupRestore', {
            var me = this.getView();
            var rec = me.getSelection()[0];
 
-           if (!(rec && rec.data && rec.data.filename)) return;
-
-           Proxmox.Utils.API2Request({
-               url: "/nodes/" + Proxmox.NodeName + "/backup/" + encodeURIComponent(rec.data.filename),
-               method: 'POST',
-               waitMsgTarget: me,
-               failure: function (response, opts) {
-                   Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-               },
-               success: function(response, opts) {
-                   var upid = response.result.data;
+           if (!(rec && rec.data && rec.data.filename)) {
+               return;
+           }
 
-                   var win = Ext.create('Proxmox.window.TaskViewer', {
-                       upid: upid
-                   });
-                   win.show();
-               }
-           });
+           Ext.create('PMG.RestoreWindow', {
+               filename: rec.data.filename
+           }).show();
        },
 
        onAfterRemove: function(btn, res) {
            var me = this.getView();
            me.store.load();
-       },
-
-       onFactoryDefaults: function() {
-           var me = this.getView();
-
-           Ext.Msg.confirm(
-               gettext('Confirm'),
-               gettext('Reset rule database to factory defaults?'),
-               function(button) {
-                   if (button !== 'yes') {
-                       return;
-                   }
-                   var url = '/config/ruledb';
-                   Proxmox.Utils.API2Request({
-                       url: '/config/ruledb',
-                       method: 'POST',
-                       waitMsgTarget: me,
-                       failure: function (response, opts) {
-                           Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-                       }
-                   });
-               }
-           );
        }
     },
 
@@ -100,6 +119,7 @@ Ext.define('PMG.BackupRestore', {
            text: gettext('Backup'),
            handler: 'createBackup'
        },
+       '-',
        {
            xtype: 'proxmoxButton',
            text: gettext('Restore'),
@@ -112,16 +132,18 @@ Ext.define('PMG.BackupRestore', {
            reference: 'removeBtn',
            callback: 'onAfterRemove',
            waitMsgTarget: true
-       },
-       {
-           text: gettext('Factory Defaults'),
-           handler: 'onFactoryDefaults'
        }
     ],
 
     store: {
        autoLoad: true,
-       model: 'pmg-backup-list'
+       model: 'pmg-backup-list',
+       sorters: [
+           {
+               property: 'timestamp',
+               direction: 'DESC'
+           }
+       ]
     },
 
     columns: [
@@ -129,19 +151,32 @@ Ext.define('PMG.BackupRestore', {
            header: gettext('Filename'),
            width: 300,
            sortable: true,
-           renderer: function(filename) {
-               return "<a href='" +
-                   "/api2/json/nodes/" + Proxmox.NodeName + "/backup/" + encodeURIComponent(filename) +
-               "'>" + Ext.htmlEncode(filename) + "</a>";
-           },
+           renderer: Ext.htmlEncode,
            dataIndex: 'filename'
        },
+       {
+           xtype: 'datecolumn',
+           header: gettext('Time'),
+           width: 150,
+           format: 'Y-m-d H:i',
+           sortable: true,
+           dataIndex: 'timestamp'
+       },
        {
            header: gettext('Size'),
            width: 100,
            sortable: true,
            renderer: Proxmox.Utils.format_size,
            dataIndex: 'size'
+       },
+       {
+           header: gettext('Download'),
+           renderer: function(filename) {
+               return "<a class='download' href='" +
+                   "/api2/json/nodes/" + Proxmox.NodeName + "/backup/" + encodeURIComponent(filename) +
+               "'><i class='fa fa-fw fa-download'</i></a>";
+           },
+           dataIndex: 'filename'
        }
     ]
 });