]> git.proxmox.com Git - pmg-gui.git/commitdiff
pbs: factor out snapshot grid view
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 17 Nov 2020 18:28:57 +0000 (19:28 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 17 Nov 2020 18:28:57 +0000 (19:28 +0100)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
js/Makefile
js/PBSConfig.js
js/PBSSnapshotView.js [new file with mode: 0644]

index 42eaeb090c27f8f9505a4deddfd83acc2f3654c8..4b95d5520036bb6604eb7b0a6bc8139b882116f0 100644 (file)
@@ -37,6 +37,7 @@ JSSRC=                                                        \
        Subscription.js                                 \
        BackupConfiguration.js                          \
        BackupRestore.js                                \
+       PBSSnapshotView.js                              \
        PBSConfig.js                                    \
        SystemConfiguration.js                          \
        MailProxyRelaying.js                            \
index 033b3cd686c933e810eab887e0f9783ce3579797..87654c8297c76e478deb8056839a19416cc235f4 100644 (file)
@@ -242,202 +242,6 @@ Ext.define('PMG.PBSScheduleEdit', {
     },
 });
 
-Ext.define('PMG.PBSConfig', {
-    extend: 'Ext.panel.Panel',
-    xtype: 'pmgPBSConfig',
-
-    controller: {
-       xclass: 'Ext.app.ViewController',
-
-       callRestore: function(grid, record) {
-           let remote = this.getViewModel().get('remote');
-           Ext.create('PMG.RestoreWindow', {
-               remote: remote,
-               backup_id: record.data['backup-id'],
-               backup_time: record.data['backup-time'],
-           }).show();
-       },
-
-       restoreSnapshot: function(button) {
-           let me = this;
-           let view = me.lookup('pbsremotegrid');
-           let record = view.getSelection()[0];
-           me.callRestore(view, record);
-       },
-
-       runBackup: function(button) {
-           let me = this;
-           let view = me.lookup('pbsremotegrid');
-           let remote = me.getViewModel().get('remote');
-           Proxmox.Utils.API2Request({
-               url: `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`,
-               method: 'POST',
-               waitMsgTarget: view,
-               failure: function(response, opts) {
-                   Ext.Msg.alert(gettext('Error'), response.htmlStatus);
-               },
-               success: function(response, opts) {
-                   let upid = response.result.data;
-
-                   let win = Ext.create('Proxmox.window.TaskViewer', {
-                       upid: upid,
-                   });
-                   win.show();
-                   me.mon(win, 'close', function() { view.getStore().load(); });
-               },
-           });
-       },
-
-       reload: function(grid) {
-           let me = this;
-           let selection = grid.getSelection();
-           me.showInfo(grid, selection);
-       },
-
-       showInfo: function(grid, selected) {
-           let me = this;
-           let viewModel = me.getViewModel();
-           if (selected[0]) {
-               let remote = selected[0].data.remote;
-               viewModel.set('selected', true);
-               viewModel.set('remote', remote);
-
-               // set grid stores and load them
-               let remstore = me.lookup('pbsremotegrid').getStore();
-               remstore.getProxy().setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`);
-               remstore.load();
-           } else {
-               viewModel.set('selected', false);
-           }
-       },
-       reloadSnapshots: function() {
-           let me = this;
-           let grid = me.lookup('grid');
-           let selection = grid.getSelection();
-           me.showInfo(grid, selection);
-       },
-       init: function(view) {
-           let me = this;
-           me.lookup('grid').relayEvents(view, ['activate']);
-           let pbsremotegrid = me.lookup('pbsremotegrid');
-
-           Proxmox.Utils.monStoreErrors(pbsremotegrid, pbsremotegrid.getStore(), true);
-       },
-
-       control: {
-           'grid[reference=grid]': {
-               selectionchange: 'showInfo',
-               load: 'reload',
-           },
-           'grid[reference=pbsremotegrid]': {
-               itemdblclick: 'restoreSnapshot',
-           },
-       },
-    },
-
-    viewModel: {
-       data: {
-           remote: '',
-           selected: false,
-       },
-    },
-
-    layout: 'border',
-
-    items: [
-       {
-           region: 'center',
-           reference: 'grid',
-           xtype: 'pmgPBSConfigGrid',
-           border: false,
-       },
-       {
-           xtype: 'grid',
-           region: 'south',
-           reference: 'pbsremotegrid',
-           hidden: true,
-           height: '70%',
-           border: false,
-           split: true,
-           emptyText: gettext('No backups on remote'),
-           tbar: [
-               {
-                   xtype: 'proxmoxButton',
-                   text: gettext('Backup'),
-                   handler: 'runBackup',
-                   selModel: false,
-               },
-               {
-                   xtype: 'proxmoxButton',
-                   text: gettext('Restore'),
-                   handler: 'restoreSnapshot',
-                   disabled: true,
-               },
-               {
-                   xtype: 'proxmoxStdRemoveButton',
-                   text: gettext('Forget Snapshot'),
-                   disabled: true,
-                   getUrl: function(rec) {
-                       let me = this;
-                       let remote = me.lookupViewModel().get('remote');
-                       let snapshot = `${rec.data['backup-id']}/${rec.data['backup-time']}`;
-                       return `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot/${snapshot}`;
-                   },
-                   confirmMsg: function(rec) {
-                       let me = this;
-                       let snapshot = `${rec.data['backup-id']}/${rec.data['backup-time']}`;
-                       return Ext.String.format(
-                           gettext('Are you sure you want to forget snapshot {0}'),
-                           `'${snapshot}'`,
-                       );
-                   },
-                   callback: 'reloadSnapshots',
-               },
-           ],
-           store: {
-               fields: ['time', 'size', 'ctime', 'encrypted'],
-               proxy: { type: 'proxmox' },
-               sorters: [
-                   {
-                       property: 'time',
-                       direction: 'DESC',
-                   },
-               ],
-           },
-           bind: {
-               title: Ext.String.format(gettext("Backup snapshots on '{0}'"), '{remote}'),
-               hidden: '{!selected}',
-           },
-           columns: [
-               {
-                   text: 'Group ID',
-                   dataIndex: 'backup-id',
-                   flex: 1,
-               },
-               {
-                   text: 'Time',
-                   dataIndex: 'backup-time',
-                   width: 180,
-               },
-               {
-                   text: 'Size',
-                   dataIndex: 'size',
-                   renderer: Proxmox.Utils.format_size,
-                   flex: 1,
-               },
-               {
-                   text: 'Encrypted',
-                   dataIndex: 'encrypted',
-                   hidden: true, // FIXME: actually return from API
-                   renderer: Proxmox.Utils.format_boolean,
-                   flex: 1,
-               },
-           ],
-       },
-    ],
-
-});
-
 Ext.define('pmg-pbs-config', {
     extend: 'Ext.data.Model',
     fields: ['remote', 'server', 'datastore', 'username', 'disabled'],
@@ -604,4 +408,3 @@ Ext.define('PMG.PBSConfigGrid', {
     ],
 
 });
-
diff --git a/js/PBSSnapshotView.js b/js/PBSSnapshotView.js
new file mode 100644 (file)
index 0000000..a1fadb3
--- /dev/null
@@ -0,0 +1,195 @@
+Ext.define('PMG.PBSConfig', {
+    extend: 'Ext.panel.Panel',
+    xtype: 'pmgPBSConfig',
+
+    controller: {
+       xclass: 'Ext.app.ViewController',
+
+       callRestore: function(grid, record) {
+           let remote = this.getViewModel().get('remote');
+           Ext.create('PMG.RestoreWindow', {
+               remote: remote,
+               backup_id: record.data['backup-id'],
+               backup_time: record.data['backup-time'],
+           }).show();
+       },
+
+       restoreSnapshot: function(button) {
+           let me = this;
+           let view = me.lookup('pbsremotegrid');
+           let record = view.getSelection()[0];
+           me.callRestore(view, record);
+       },
+
+       runBackup: function(button) {
+           let me = this;
+           let view = me.lookup('pbsremotegrid');
+           let remote = me.getViewModel().get('remote');
+           Proxmox.Utils.API2Request({
+               url: `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`,
+               method: 'POST',
+               waitMsgTarget: view,
+               failure: function(response, opts) {
+                   Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+               },
+               success: function(response, opts) {
+                   let upid = response.result.data;
+
+                   let win = Ext.create('Proxmox.window.TaskViewer', {
+                       upid: upid,
+                   });
+                   win.show();
+                   me.mon(win, 'close', function() { view.getStore().load(); });
+               },
+           });
+       },
+
+       reload: function(grid) {
+           let me = this;
+           let selection = grid.getSelection();
+           me.showInfo(grid, selection);
+       },
+
+       showInfo: function(grid, selected) {
+           let me = this;
+           let viewModel = me.getViewModel();
+           if (selected[0]) {
+               let remote = selected[0].data.remote;
+               viewModel.set('selected', true);
+               viewModel.set('remote', remote);
+
+               // set grid stores and load them
+               let remstore = me.lookup('pbsremotegrid').getStore();
+               remstore.getProxy().setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`);
+               remstore.load();
+           } else {
+               viewModel.set('selected', false);
+           }
+       },
+       reloadSnapshots: function() {
+           let me = this;
+           let grid = me.lookup('grid');
+           let selection = grid.getSelection();
+           me.showInfo(grid, selection);
+       },
+       init: function(view) {
+           let me = this;
+           me.lookup('grid').relayEvents(view, ['activate']);
+           let pbsremotegrid = me.lookup('pbsremotegrid');
+
+           Proxmox.Utils.monStoreErrors(pbsremotegrid, pbsremotegrid.getStore(), true);
+       },
+
+       control: {
+           'grid[reference=grid]': {
+               selectionchange: 'showInfo',
+               load: 'reload',
+           },
+           'grid[reference=pbsremotegrid]': {
+               itemdblclick: 'restoreSnapshot',
+           },
+       },
+    },
+
+    viewModel: {
+       data: {
+           remote: '',
+           selected: false,
+       },
+    },
+
+    layout: 'border',
+
+    items: [
+       {
+           region: 'center',
+           reference: 'grid',
+           xtype: 'pmgPBSConfigGrid',
+           border: false,
+       },
+       {
+           xtype: 'grid',
+           region: 'south',
+           reference: 'pbsremotegrid',
+           hidden: true,
+           height: '70%',
+           border: false,
+           split: true,
+           emptyText: gettext('No backups on remote'),
+           tbar: [
+               {
+                   xtype: 'proxmoxButton',
+                   text: gettext('Backup'),
+                   handler: 'runBackup',
+                   selModel: false,
+               },
+               {
+                   xtype: 'proxmoxButton',
+                   text: gettext('Restore'),
+                   handler: 'restoreSnapshot',
+                   disabled: true,
+               },
+               {
+                   xtype: 'proxmoxStdRemoveButton',
+                   text: gettext('Forget Snapshot'),
+                   disabled: true,
+                   getUrl: function(rec) {
+                       let me = this;
+                       let remote = me.lookupViewModel().get('remote');
+                       let snapshot = `${rec.data['backup-id']}/${rec.data['backup-time']}`;
+                       return `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot/${snapshot}`;
+                   },
+                   confirmMsg: function(rec) {
+                       let me = this;
+                       let snapshot = `${rec.data['backup-id']}/${rec.data['backup-time']}`;
+                       return Ext.String.format(
+                           gettext('Are you sure you want to forget snapshot {0}'),
+                           `'${snapshot}'`,
+                       );
+                   },
+                   callback: 'reloadSnapshots',
+               },
+           ],
+           store: {
+               fields: ['time', 'size', 'ctime', 'encrypted'],
+               proxy: { type: 'proxmox' },
+               sorters: [
+                   {
+                       property: 'time',
+                       direction: 'DESC',
+                   },
+               ],
+           },
+           bind: {
+               title: Ext.String.format(gettext("Backup snapshots on '{0}'"), '{remote}'),
+               hidden: '{!selected}',
+           },
+           columns: [
+               {
+                   text: 'Group ID',
+                   dataIndex: 'backup-id',
+                   flex: 1,
+               },
+               {
+                   text: 'Time',
+                   dataIndex: 'backup-time',
+                   width: 180,
+               },
+               {
+                   text: 'Size',
+                   dataIndex: 'size',
+                   renderer: Proxmox.Utils.format_size,
+                   flex: 1,
+               },
+               {
+                   text: 'Encrypted',
+                   dataIndex: 'encrypted',
+                   hidden: true, // FIXME: actually return from API
+                   renderer: Proxmox.Utils.format_boolean,
+                   flex: 1,
+               },
+           ],
+       },
+    ],
+
+});