]>
git.proxmox.com Git - pmg-gui.git/blob - js/PBSSnapshotView.js
a1fadb30191453358d8f43fbec3d8403db12330e
1 Ext
.define('PMG.PBSConfig', {
2 extend
: 'Ext.panel.Panel',
6 xclass
: 'Ext.app.ViewController',
8 callRestore: function(grid
, record
) {
9 let remote
= this.getViewModel().get('remote');
10 Ext
.create('PMG.RestoreWindow', {
12 backup_id
: record
.data
['backup-id'],
13 backup_time
: record
.data
['backup-time'],
17 restoreSnapshot: function(button
) {
19 let view
= me
.lookup('pbsremotegrid');
20 let record
= view
.getSelection()[0];
21 me
.callRestore(view
, record
);
24 runBackup: function(button
) {
26 let view
= me
.lookup('pbsremotegrid');
27 let remote
= me
.getViewModel().get('remote');
28 Proxmox
.Utils
.API2Request({
29 url
: `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`,
32 failure: function(response
, opts
) {
33 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
35 success: function(response
, opts
) {
36 let upid
= response
.result
.data
;
38 let win
= Ext
.create('Proxmox.window.TaskViewer', {
42 me
.mon(win
, 'close', function() { view
.getStore().load(); });
47 reload: function(grid
) {
49 let selection
= grid
.getSelection();
50 me
.showInfo(grid
, selection
);
53 showInfo: function(grid
, selected
) {
55 let viewModel
= me
.getViewModel();
57 let remote
= selected
[0].data
.remote
;
58 viewModel
.set('selected', true);
59 viewModel
.set('remote', remote
);
61 // set grid stores and load them
62 let remstore
= me
.lookup('pbsremotegrid').getStore();
63 remstore
.getProxy().setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`);
66 viewModel
.set('selected', false);
69 reloadSnapshots: function() {
71 let grid
= me
.lookup('grid');
72 let selection
= grid
.getSelection();
73 me
.showInfo(grid
, selection
);
75 init: function(view
) {
77 me
.lookup('grid').relayEvents(view
, ['activate']);
78 let pbsremotegrid
= me
.lookup('pbsremotegrid');
80 Proxmox
.Utils
.monStoreErrors(pbsremotegrid
, pbsremotegrid
.getStore(), true);
84 'grid[reference=grid]': {
85 selectionchange
: 'showInfo',
88 'grid[reference=pbsremotegrid]': {
89 itemdblclick
: 'restoreSnapshot',
107 xtype
: 'pmgPBSConfigGrid',
113 reference
: 'pbsremotegrid',
118 emptyText
: gettext('No backups on remote'),
121 xtype
: 'proxmoxButton',
122 text
: gettext('Backup'),
123 handler
: 'runBackup',
127 xtype
: 'proxmoxButton',
128 text
: gettext('Restore'),
129 handler
: 'restoreSnapshot',
133 xtype
: 'proxmoxStdRemoveButton',
134 text
: gettext('Forget Snapshot'),
136 getUrl: function(rec
) {
138 let remote
= me
.lookupViewModel().get('remote');
139 let snapshot
= `${rec.data['backup-id']}/${rec.data['backup-time']}`;
140 return `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot/${snapshot}`;
142 confirmMsg: function(rec
) {
144 let snapshot
= `${rec.data['backup-id']}/${rec.data['backup-time']}`;
145 return Ext
.String
.format(
146 gettext('Are you sure you want to forget snapshot {0}'),
150 callback
: 'reloadSnapshots',
154 fields
: ['time', 'size', 'ctime', 'encrypted'],
155 proxy
: { type
: 'proxmox' },
164 title
: Ext
.String
.format(gettext("Backup snapshots on '{0}'"), '{remote}'),
165 hidden
: '{!selected}',
170 dataIndex
: 'backup-id',
175 dataIndex
: 'backup-time',
181 renderer
: Proxmox
.Utils
.format_size
,
186 dataIndex
: 'encrypted',
187 hidden
: true, // FIXME: actually return from API
188 renderer
: Proxmox
.Utils
.format_boolean
,