]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/grid/BackupView.js
1 Ext
.define('PVE.grid.BackupView', {
2 extend
: 'Ext.grid.GridPanel',
4 alias
: ['widget.pveBackupView'],
6 onlineHelp
: 'chapter_vzdump',
9 stateId
: 'grid-guest-backup',
11 initComponent : function() {
14 var nodename
= me
.pveSelNode
.data
.node
;
16 throw "no node name specified";
19 var vmid
= me
.pveSelNode
.data
.vmid
;
21 throw "no VM ID specified";
24 var vmtype
= me
.pveSelNode
.data
.type
;
26 throw "no VM type specified";
30 if (vmtype
=== 'openvz') {
31 vmtypeFilter = function(item
) {
32 return item
.data
.volid
.match(':backup/vzdump-openvz-');
34 } else if (vmtype
=== 'lxc') {
35 vmtypeFilter = function(item
) {
36 return item
.data
.volid
.match(':backup/vzdump-lxc-');
38 } else if (vmtype
=== 'qemu') {
39 vmtypeFilter = function(item
) {
40 return item
.data
.volid
.match(':backup/vzdump-qemu-');
43 throw "unsupported VM type '" + vmtype
+ "'";
48 // on initial store display only our vmid backups
49 // surround with minus sign to prevent the 2016 VMID bug
50 value
: vmtype
+ '-' + vmid
+ '-',
55 me
.store
= Ext
.create('Ext.data.Store', {
56 model
: 'pve-storage-content',
67 var reload
= Ext
.Function
.createBuffered(function() {
73 var setStorage = function(storage
) {
74 var url
= '/api2/json/nodes/' + nodename
+ '/storage/' + storage
+ '/content';
75 url
+= '?content=backup';
85 var storagesel
= Ext
.create('PVE.form.StorageSelector', {
87 fieldLabel
: gettext('Storage'),
89 storageContent
: 'backup',
92 change: function(f
, value
) {
98 var storagefilter
= Ext
.create('Ext.form.field.Text', {
99 fieldLabel
: gettext('Search'),
102 enableKeyEvents
: true,
103 value
: searchFilter
.value
,
106 keyup: function(field
) {
107 me
.store
.clearFilter(true);
108 searchFilter
.value
= field
.getValue();
117 var sm
= Ext
.create('Ext.selection.RowModel', {});
119 var backup_btn
= Ext
.create('Ext.button.Button', {
120 text
: gettext('Backup now'),
121 handler: function() {
122 var win
= Ext
.create('PVE.window.Backup', {
126 storage
: storagesel
.getValue(),
137 var restore_btn
= Ext
.create('PVE.button.Button', {
138 text
: gettext('Restore'),
141 enableFn: function(rec
) {
144 handler: function(b
, e
, rec
) {
145 var volid
= rec
.data
.volid
;
147 var win
= Ext
.create('PVE.window.Restore', {
150 volid
: rec
.data
.volid
,
151 volidText
: PVE
.Utils
.render_storage_content(rec
.data
.volid
, {}, rec
),
155 win
.on('destroy', reload
);
159 var delete_btn
= Ext
.create('PVE.button.Button', {
160 text
: gettext('Remove'),
164 confirmMsg: function(rec
) {
165 var msg
= Ext
.String
.format(gettext('Are you sure you want to remove entry {0}'),
166 "'" + rec
.data
.volid
+ "'");
167 msg
+= " " + gettext('This will permanently erase all data.');
171 enableFn: function(rec
) {
174 handler: function(b
, e
, rec
){
175 var storage
= storagesel
.getValue();
180 var volid
= rec
.data
.volid
;
181 PVE
.Utils
.API2Request({
182 url
: "/nodes/" + nodename
+ "/storage/" + storage
+ "/content/" + volid
,
185 failure: function(response
, opts
) {
186 Ext
.Msg
.alert('Error', response
.htmlStatus
);
188 success: function(response
, options
) {
195 var config_btn
= Ext
.create('PVE.button.Button', {
196 text
: gettext('Show Configuration'),
199 enableFn: function(rec
) {
202 handler: function(b
, e
, rec
) {
203 var storage
= storagesel
.getValue();
208 var win
= Ext
.create('PVE.window.BackupConfig', {
209 volume
: rec
.data
.volid
,
210 pveSelNode
: me
.pveSelNode
219 tbar
: [ backup_btn
, restore_btn
, delete_btn
,config_btn
, '->', storagesel
, storagefilter
],
222 header
: gettext('Name'),
225 renderer
: PVE
.Utils
.render_storage_content
,
229 header
: gettext('Format'),
234 header
: gettext('Size'),
236 renderer
: PVE
.Utils
.format_size
,