]>
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 Ext
.create('PMG.BackupWindow', {
29 url
: `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`,
30 taskDone
: () => view
.getStore().load(),
34 reload: function(grid
) {
36 let selection
= grid
.getSelection();
37 me
.showInfo(grid
, selection
);
40 showInfo: function(grid
, selected
) {
42 let viewModel
= me
.getViewModel();
44 let remote
= selected
[0].data
.remote
;
45 viewModel
.set('selected', true);
46 viewModel
.set('remote', remote
);
48 // set grid stores and load them
49 let remstore
= me
.lookup('snapshotsGrid').getStore();
52 .setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot`);
55 let scheduleStore
= me
.lookup('schedulegrid').rstore
;
58 .setUrl(`/api2/json/nodes/${Proxmox.NodeName}/pbs/${remote}/timer`);
61 viewModel
.set('selected', false);
64 reloadSnapshots: function() {
66 let grid
= me
.lookup('grid');
67 let selection
= grid
.getSelection();
68 me
.showInfo(grid
, selection
);
70 init: function(view
) {
72 me
.lookup('grid').relayEvents(view
, ['activate']);
74 let remoteGrid
= me
.lookup('grid');
75 view
.mon(remoteGrid
.store
, 'load', function(store
, r
, success
, o
) {
77 remoteGrid
.getSelectionModel().select(0);
81 let snapshotGrid
= me
.lookup('snapshotsGrid');
82 let schedulegrid
= me
.lookup('schedulegrid');
84 Proxmox
.Utils
.monStoreErrors(snapshotGrid
, snapshotGrid
.getStore(), true);
85 Proxmox
.Utils
.monStoreErrors(schedulegrid
, schedulegrid
.getStore(), true);
89 'grid[reference=grid]': {
90 selectionchange
: 'showInfo',
93 'grid[reference=snapshotsGrid]': {
94 itemdblclick
: 'restoreSnapshot',
110 xtype
: 'pmgPBSConfigGrid',
112 title
: gettext('Remote'),
119 xtype
: 'proxmoxObjectGrid',
121 reference
: 'schedulegrid',
122 title
: gettext('Schedule'),
126 emptyText
: gettext('No schedule setup.'),
129 text
: gettext('Set Schedule'),
130 handler: function() {
132 let remote
= me
.lookupViewModel().get('remote');
133 let win
= Ext
.createWidget('pmgPBSScheduleEdit', {
137 win
.on('destroy', () => me
.up('grid').rstore
.load());
141 xtype
: 'proxmoxStdRemoveButton',
142 baseurl
: `/nodes/${Proxmox.NodeName}/pbs/`,
143 callback: function() {
144 this.up('grid').rstore
.load();
146 text
: gettext('Remove Schedule'),
148 confirmMsg: function(_rec
) {
150 let remote
= me
.lookupViewModel().get('remote');
151 return Ext
.String
.format(
152 gettext('Are you sure you want to remove the schedule for {0}'),
156 getUrl: function(_rec
) {
157 let remote
= this.lookupViewModel().get('remote');
158 return `${this.baseurl}/${remote}/timer`;
163 text
: gettext('Reload'),
164 iconCls
: 'fa fa-refresh',
165 handler: function() {
166 this.up('grid').rstore
.load();
171 title
: Ext
.String
.format(gettext("Schedule on '{0}'"), '{remote}'),
172 hidden
: '{!selected}',
174 url
: '/', // hack, obj. grid is a bit dumb..
177 text
: gettext('Schedule'),
179 defaultValue
: gettext('None'),
182 text
: gettext('Delay'),
185 text
: gettext('Next Run'),
192 reference
: 'snapshotsGrid',
197 emptyText
: gettext('No backups on remote'),
200 text
: gettext('Backup Now'),
201 handler
: 'runBackup',
205 xtype
: 'proxmoxButton',
206 text
: gettext('Restore'),
207 handler
: 'restoreSnapshot',
211 xtype
: 'proxmoxStdRemoveButton',
212 text
: gettext('Forget Snapshot'),
214 getUrl: function(rec
) {
216 let remote
= me
.lookupViewModel().get('remote');
217 let snapshot
= `${rec.data['backup-id']}/${rec.data['backup-time']}`;
218 return `/nodes/${Proxmox.NodeName}/pbs/${remote}/snapshot/${snapshot}`;
220 confirmMsg: function(rec
) {
222 let snapshot
= `${rec.data['backup-id']}/${rec.data['backup-time']}`;
223 return Ext
.String
.format(
224 gettext('Are you sure you want to forget snapshot {0}'),
228 callback
: 'reloadSnapshots',
232 text
: gettext('Reload'),
233 iconCls
: 'fa fa-refresh',
234 handler: function() {
235 this.up('grid').store
.load();
240 fields
: ['backup-id', 'backup-time', 'size', 'ctime', 'encrypted'],
241 proxy
: { type
: 'proxmox' },
244 property
: 'backup-time',
250 title
: Ext
.String
.format(
251 gettext("Backup snapshots on '{0}'"),
254 hidden
: '{!selected}',
259 dataIndex
: 'backup-id',
264 dataIndex
: 'backup-time',
270 renderer
: Proxmox
.Utils
.render_size
,
275 dataIndex
: 'encrypted',
276 hidden
: true, // FIXME: actually return from API
277 renderer
: Proxmox
.Utils
.format_boolean
,