]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/storage/ImageView.js
ui: eslint: Miscellaneous eslint fixes
[pve-manager.git] / www / manager6 / storage / ImageView.js
CommitLineData
f5e17f15
FE
1Ext.define('PVE.storage.ImageView', {
2 extend: 'PVE.storage.ContentView',
3
4 alias: 'widget.pveStorageImageView',
5
6 initComponent: function() {
7 var me = this;
8
9 var nodename = me.nodename = me.pveSelNode.data.node;
10 if (!me.nodename) {
11 throw "no node name specified";
12 }
13
14 var storage = me.storage = me.pveSelNode.data.storage;
15 if (!me.storage) {
16 throw "no storage ID specified";
17 }
18
91a47a76 19 if (!me.content || (me.content !== 'images' && me.content !== 'rootdir')) {
f5e17f15
FE
20 throw "content needs to be either 'images' or 'rootdir'";
21 }
22
23 var sm = me.sm = Ext.create('Ext.selection.RowModel', {});
24
25 var reload = function() {
26 me.store.load();
8058410f 27 };
f5e17f15
FE
28
29 me.tbar = [
30 {
31 xtype: 'proxmoxButton',
32 selModel: sm,
33 text: gettext('Remove'),
34 disabled: true,
35 handler: function(btn, event, rec) {
f09f1c27 36 let url = `/nodes/${nodename}/storage/${storage}/content/${rec.data.volid}`;
f5e17f15
FE
37 var vmid = rec.data.vmid;
38
39 var store = PVE.data.ResourceStore;
40
41 if (vmid && store.findVMID(vmid)) {
42 var guest_node = store.guestNode(vmid);
43 var storage_path = 'storage/' + nodename + '/' + storage;
44
45 // allow to delete local backed images if a VMID exists on another node.
91a47a76 46 if (store.storageIsShared(storage_path) || guest_node === nodename) {
f5e17f15
FE
47 var msg = Ext.String.format(
48 gettext("Cannot remove image, a guest with VMID '{0}' exists!"), vmid);
49 msg += '<br />' + gettext("You can delete the image from the guest's hardware pane");
50
51 Ext.Msg.show({
52 title: gettext('Cannot remove disk image.'),
53 icon: Ext.Msg.ERROR,
f6710aac 54 msg: msg,
f5e17f15
FE
55 });
56 return;
57 }
58 }
b9635c9b 59 var win = Ext.create('Proxmox.window.SafeDestroy', {
f5e17f15
FE
60 title: Ext.String.format(gettext("Destroy '{0}'"), rec.data.volid),
61 showProgress: true,
62 url: url,
f6710aac 63 item: { type: 'Image', id: vmid },
b9635c9b 64 taskName: 'unknownimgdel',
f5e17f15 65 }).show();
1fe81ce9 66 win.on('destroy', reload);
f6710aac 67 },
f5e17f15
FE
68 },
69 ];
70 me.useCustomRemoveButton = true;
71
72 me.callParent();
73 },
74});