mirror of
https://git.proxmox.com/git/proxmox-widget-toolkit
synced 2025-05-29 20:43:29 +00:00
disk list: add wipe disk button
which shows a confirm dialog with the most relevant information before actually issuing the API call. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
e3a5040c55
commit
d453438aa0
@ -44,6 +44,8 @@ Ext.define('Proxmox.DiskList', {
|
|||||||
extend: 'Ext.tree.Panel',
|
extend: 'Ext.tree.Panel',
|
||||||
alias: 'widget.pmxDiskList',
|
alias: 'widget.pmxDiskList',
|
||||||
|
|
||||||
|
supportsWipeDisk: false,
|
||||||
|
|
||||||
rootVisible: false,
|
rootVisible: false,
|
||||||
|
|
||||||
emptyText: gettext('No Disks found'),
|
emptyText: gettext('No Disks found'),
|
||||||
@ -113,6 +115,34 @@ Ext.define('Proxmox.DiskList', {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
wipeDisk: function() {
|
||||||
|
let me = this;
|
||||||
|
let view = me.getView();
|
||||||
|
let selection = view.getSelection();
|
||||||
|
if (!selection || selection.length < 1) return;
|
||||||
|
|
||||||
|
let rec = selection[0];
|
||||||
|
Proxmox.Utils.API2Request({
|
||||||
|
url: `${view.exturl}/wipedisk`,
|
||||||
|
waitMsgTarget: view,
|
||||||
|
method: 'PUT',
|
||||||
|
params: { disk: rec.data.name },
|
||||||
|
failure: function(response, options) {
|
||||||
|
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
|
||||||
|
},
|
||||||
|
success: function(response, options) {
|
||||||
|
var upid = response.result.data;
|
||||||
|
var win = Ext.create('Proxmox.window.TaskProgress', {
|
||||||
|
upid: upid,
|
||||||
|
taskDone: function() {
|
||||||
|
me.reload();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
win.show();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
init: function(view) {
|
init: function(view) {
|
||||||
let nodename = view.nodename || 'localhost';
|
let nodename = view.nodename || 'localhost';
|
||||||
view.baseurl = `/api2/json/nodes/${nodename}/disks`;
|
view.baseurl = `/api2/json/nodes/${nodename}/disks`;
|
||||||
@ -336,6 +366,57 @@ Ext.define('Proxmox.DiskList', {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if (me.supportsWipeDisk) {
|
||||||
|
tbar.push('-');
|
||||||
|
tbar.push({
|
||||||
|
xtype: 'proxmoxButton',
|
||||||
|
text: gettext('Wipe Disk'),
|
||||||
|
parentXType: 'treepanel',
|
||||||
|
dangerous: true,
|
||||||
|
confirmMsg: function(rec) {
|
||||||
|
const data = rec.data;
|
||||||
|
|
||||||
|
let mainMessage = Ext.String.format(
|
||||||
|
gettext('Are you sure you want to wipe {0}?'),
|
||||||
|
data.devpath,
|
||||||
|
);
|
||||||
|
mainMessage += `<br> ${gettext('All data on the device will be lost!')}`;
|
||||||
|
|
||||||
|
const type = me.renderDiskType(data["disk-type"]);
|
||||||
|
|
||||||
|
let usage;
|
||||||
|
if (data.children.length > 0) {
|
||||||
|
const partitionUsage = data.children.map(
|
||||||
|
partition => me.renderDiskUsage(partition.used),
|
||||||
|
).join(', ');
|
||||||
|
usage = `${gettext('Partitions')} (${partitionUsage})`;
|
||||||
|
} else {
|
||||||
|
usage = me.renderDiskUsage(data.used, undefined, rec);
|
||||||
|
}
|
||||||
|
|
||||||
|
const size = Proxmox.Utils.format_size(data.size);
|
||||||
|
const serial = Ext.String.htmlEncode(data.serial);
|
||||||
|
|
||||||
|
let additionalInfo = `${gettext('Type')}: ${type}<br>`;
|
||||||
|
additionalInfo += `${gettext('Usage')}: ${usage}<br>`;
|
||||||
|
additionalInfo += `${gettext('Size')}: ${size}<br>`;
|
||||||
|
additionalInfo += `${gettext('Serial')}: ${serial}`;
|
||||||
|
|
||||||
|
return `${mainMessage}<br><br>${additionalInfo}`;
|
||||||
|
},
|
||||||
|
disabled: true,
|
||||||
|
enableFn: function(rec) {
|
||||||
|
// TODO enable for partitions once they can be selected for ZFS,LVM,etc. creation
|
||||||
|
if (!rec || rec.data.parent) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handler: 'wipeDisk',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
me.tbar = tbar;
|
me.tbar = tbar;
|
||||||
|
|
||||||
me.callParent();
|
me.callParent();
|
||||||
|
Loading…
Reference in New Issue
Block a user