]>
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'],
7 initComponent : function() {
10 var nodename
= me
.pveSelNode
.data
.node
;
12 throw "no node name specified";
15 var vmid
= me
.pveSelNode
.data
.vmid
;
17 throw "no VM ID specified";
20 var vmtype
= me
.pveSelNode
.data
.type
;
22 throw "no VM type specified";
26 if (vmtype
=== 'openvz') {
27 filterFn = function(item
) {
28 return item
.data
.volid
.match(':backup/vzdump-openvz-');
30 } else if (vmtype
=== 'lxc') {
31 filterFn = function(item
) {
32 return item
.data
.volid
.match(':backup/vzdump-lxc-');
34 } else if (vmtype
=== 'qemu') {
35 filterFn = function(item
) {
36 return item
.data
.volid
.match(':backup/vzdump-qemu-');
39 throw "unsupported VM type '" + vmtype
+ "'";
42 me
.store
= Ext
.create('Ext.data.Store', {
43 model
: 'pve-storage-content',
48 filters
: { filterFn
: filterFn
}
51 var reload
= Ext
.Function
.createBuffered(function() {
52 if (me
.store
&& me
.store
.proxy
.url
) {
57 var setStorage = function(storage
) {
58 var url
= '/api2/json/nodes/' + nodename
+ '/storage/' + storage
+ '/content';
59 url
+= '?content=backup';
69 var storagesel
= Ext
.create('PVE.form.StorageSelector', {
71 fieldLabel
: gettext('Storage'),
73 storageContent
: 'backup',
76 change: function(f
, value
) {
82 var storagefilter
= Ext
.create('Ext.form.field.Text', {
83 fieldLabel
: gettext('Search'),
86 enableKeyEvents
: true,
89 keyup: function(field
) {
90 me
.store
.clearFilter(true);
95 value
: field
.getValue(),
104 var sm
= Ext
.create('Ext.selection.RowModel', {});
106 var backup_btn
= Ext
.create('Ext.button.Button', {
107 text
: gettext('Backup now'),
108 handler: function() {
109 var win
= Ext
.create('PVE.window.Backup', {
113 storage
: storagesel
.getValue()
119 var restore_btn
= Ext
.create('PVE.button.Button', {
120 text
: gettext('Restore'),
123 enableFn: function(rec
) {
126 handler: function(b
, e
, rec
) {
127 var volid
= rec
.data
.volid
;
129 var win
= Ext
.create('PVE.window.Restore', {
132 volid
: rec
.data
.volid
,
133 volidText
: PVE
.Utils
.render_storage_content(rec
.data
.volid
, {}, rec
),
137 win
.on('destroy', reload
);
141 var delete_btn
= Ext
.create('PVE.button.Button', {
142 text
: gettext('Remove'),
146 confirmMsg: function(rec
) {
147 var msg
= Ext
.String
.format(gettext('Are you sure you want to remove entry {0}'),
148 "'" + rec
.data
.volid
+ "'");
149 msg
+= " " + gettext('This will permanently erase all data.');
153 enableFn: function(rec
) {
156 handler: function(b
, e
, rec
){
157 var storage
= storagesel
.getValue();
162 var volid
= rec
.data
.volid
;
163 PVE
.Utils
.API2Request({
164 url
: "/nodes/" + nodename
+ "/storage/" + storage
+ "/content/" + volid
,
167 failure: function(response
, opts
) {
168 Ext
.Msg
.alert('Error', response
.htmlStatus
);
170 success: function(response
, options
) {
177 var config_btn
= Ext
.create('PVE.button.Button', {
178 text
: gettext('Show Configuration'),
181 enableFn: function(rec
) {
184 handler: function(b
, e
, rec
) {
185 var storage
= storagesel
.getValue();
190 var win
= Ext
.create('Ext.window.Window', {
191 title
: gettext('Configuration'),
197 itemId
: 'configtext',
200 'background-color': 'white',
201 'white-space': 'pre',
202 'font-family': 'monospace',
208 PVE
.Utils
.API2Request({
209 url
: "/nodes/" + nodename
+ "/vzdump/extractconfig",
212 volume
: rec
.data
.volid
214 failure: function(response
, opts
) {
216 Ext
.Msg
.alert('Error', response
.htmlStatus
);
218 success: function(response
,options
) {
220 win
.down('#configtext').update(Ext
.htmlEncode(response
.result
.data
));
229 tbar
: [ backup_btn
, restore_btn
, delete_btn
,config_btn
, '->', storagesel
, storagefilter
],
232 header
: gettext('Name'),
235 renderer
: PVE
.Utils
.render_storage_content
,
239 header
: gettext('Format'),
244 header
: gettext('Size'),
246 renderer
: PVE
.Utils
.format_size
,