]>
git.proxmox.com Git - pmg-gui.git/blob - js/PBSSnapshotView.js
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('snapshotsGrid');
20 let record
= view
.getSelection()[0];
21 me
.callRestore(view
, record
);
24 runBackup: function(button
) {
26 let view
= me
.lookup('snapshotsGrid');
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('snapshotsGrid').getStore();
65 .setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`);
68 let scheduleStore
= me
.lookup('schedulegrid').rstore
;
71 .setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/timer`);
74 viewModel
.set('selected', false);
77 reloadSnapshots: function() {
79 let grid
= me
.lookup('grid');
80 let selection
= grid
.getSelection();
81 me
.showInfo(grid
, selection
);
83 init: function(view
) {
85 me
.lookup('grid').relayEvents(view
, ['activate']);
87 let remoteGrid
= me
.lookup('grid');
88 view
.mon(remoteGrid
.store
, 'load', function(store
, r
, success
, o
) {
90 remoteGrid
.getSelectionModel().select(0);
94 let snapshotGrid
= me
.lookup('snapshotsGrid');
95 let schedulegrid
= me
.lookup('schedulegrid');
97 Proxmox
.Utils
.monStoreErrors(snapshotGrid
, snapshotGrid
.getStore(), true);
98 Proxmox
.Utils
.monStoreErrors(schedulegrid
, schedulegrid
.getStore(), true);
102 'grid[reference=grid]': {
103 selectionchange
: 'showInfo',
106 'grid[reference=snapshotsGrid]': {
107 itemdblclick
: 'restoreSnapshot',
123 xtype
: 'pmgPBSConfigGrid',
125 title
: gettext('Remote'),
132 xtype
: 'proxmoxObjectGrid',
134 reference
: 'schedulegrid',
135 title
: gettext('Schedule'),
139 emptyText
: gettext('No schedule setup.'),
142 text
: gettext('Set Schedule'),
143 handler: function() {
145 let remote
= me
.lookupViewModel().get('remote');
146 let win
= Ext
.createWidget('pmgPBSScheduleEdit', {
150 win
.on('destroy', () => me
.up('grid').rstore
.load());
154 xtype
: 'proxmoxStdRemoveButton',
155 baseurl
: `/nodes/${Proxmox.NodeName}/pbs/`,
156 callback: function() {
157 this.up('grid').rstore
.load();
159 text
: gettext('Remove Schedule'),
161 confirmMsg: function(_rec
) {
163 let remote
= me
.lookupViewModel().get('remote');
164 return Ext
.String
.format(
165 gettext('Are you sure you want to remove the schedule for {0}'),
169 getUrl: function(_rec
) {
170 let remote
= this.lookupViewModel().get('remote');
171 return `${this.baseurl}/${remote}/timer`;
176 text
: gettext('Reload'),
177 iconCls
: 'fa fa-refresh',
178 handler: function() {
179 this.up('grid').rstore
.load();
184 title
: Ext
.String
.format(gettext("Schedule on '{0}'"), '{remote}'),
185 hidden
: '{!selected}',
187 url
: '/', // hack, obj. grid is a bit dumb..
190 text
: gettext('Schedule'),
192 defaultValue
: gettext('None'),
195 text
: gettext('Delay'),
198 text
: gettext('Next Run'),
205 reference
: 'snapshotsGrid',
210 emptyText
: gettext('No backups on remote'),
213 text
: gettext('Backup'),
214 handler
: 'runBackup',
217 xtype
: 'proxmoxButton',
218 text
: gettext('Restore'),
219 handler
: 'restoreSnapshot',
223 xtype
: 'proxmoxStdRemoveButton',
224 text
: gettext('Forget Snapshot'),
226 getUrl: function(rec
) {
228 let remote
= me
.lookupViewModel().get('remote');
229 let snapshot
= `${rec.data['backup-id']}/${rec.data['backup-time']}`;
230 return `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot/${snapshot}`;
232 confirmMsg: function(rec
) {
234 let snapshot
= `${rec.data['backup-id']}/${rec.data['backup-time']}`;
235 return Ext
.String
.format(
236 gettext('Are you sure you want to forget snapshot {0}'),
240 callback
: 'reloadSnapshots',
244 text
: gettext('Reload'),
245 iconCls
: 'fa fa-refresh',
246 handler: function() {
247 this.up('grid').store
.load();
252 fields
: ['backup-id', 'backup-time', 'size', 'ctime', 'encrypted'],
253 proxy
: { type
: 'proxmox' },
256 property
: 'backup-time',
262 title
: Ext
.String
.format(
263 gettext("Backup snapshots on '{0}'"),
266 hidden
: '{!selected}',
271 dataIndex
: 'backup-id',
276 dataIndex
: 'backup-time',
282 renderer
: Proxmox
.Utils
.format_size
,
287 dataIndex
: 'encrypted',
288 hidden
: true, // FIXME: actually return from API
289 renderer
: Proxmox
.Utils
.format_boolean
,