ui: tape: improve tape-erase and add it to library view

refactor erase window, limit drives to changer if given

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2021-02-16 12:48:10 +01:00 committed by Dietmar Maurer
parent 3cdd1a3424
commit 85205bc253
4 changed files with 83 additions and 34 deletions

View File

@ -18,6 +18,7 @@ TAPE_UI_FILES= \
tape/form/KeySelector.js \ tape/form/KeySelector.js \
tape/window/ChangerEdit.js \ tape/window/ChangerEdit.js \
tape/window/DriveEdit.js \ tape/window/DriveEdit.js \
tape/window/Erase.js \
tape/window/EncryptionEdit.js \ tape/window/EncryptionEdit.js \
tape/window/LabelMedia.js \ tape/window/LabelMedia.js \
tape/window/PoolEdit.js \ tape/window/PoolEdit.js \

View File

@ -91,6 +91,23 @@ Ext.define('PBS.TapeManagement.ChangerStatus', {
}).show(); }).show();
}, },
erase: function(view, rI, cI, button, el, record) {
let me = this;
let vm = me.getViewModel();
let label = record.data['label-text'];
let changer = vm.get('changer');
Ext.create('PBS.TapeManagement.EraseWindow', {
label,
changer,
listeners: {
destroy: function() {
me.reload();
},
},
}).show();
},
load: function(view, rI, cI, button, el, record) { load: function(view, rI, cI, button, el, record) {
let me = this; let me = this;
let vm = me.getViewModel(); let vm = me.getViewModel();
@ -566,6 +583,12 @@ Ext.define('PBS.TapeManagement.ChangerStatus', {
tooltip: gettext('Transfer'), tooltip: gettext('Transfer'),
isDisabled: (v, r, c, i, rec) => !rec.data['label-text'], isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
}, },
{
iconCls: 'fa fa-trash-o',
handler: 'erase',
tooltip: gettext('Erase'),
isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
},
{ {
iconCls: 'fa fa-rotate-90 fa-upload', iconCls: 'fa fa-rotate-90 fa-upload',
handler: 'load', handler: 'load',

View File

@ -41,40 +41,14 @@ Ext.define('PBS.TapeManagement.TapeInventory', {
return; return;
} }
let label = selection[0].data['label-text']; let label = selection[0].data['label-text'];
Ext.create('Proxmox.window.Edit', { let inChanger = selection[0].data.location.startsWith('online-');
title: gettext('Erase'), let changer;
url: `/api2/extjs/tape/drive`, if (inChanger) {
showProgress: true, changer = selection[0].data.location.slice("online-".length);
submitUrl: function(url, values) { }
let drive = values.drive; Ext.create('PBS.TapeManagement.EraseWindow', {
delete values.drive; label,
return `${url}/${drive}/erase-media`; changer,
},
method: 'POST',
items: [
{
xtype: 'displayfield',
cls: 'pmx-hint',
value: gettext('Make sure to insert the tape into the selected drive.'),
},
{
xtype: 'pbsDriveSelector',
fieldLabel: gettext('Drive'),
name: 'drive',
},
{
xtype: 'displayfield',
name: 'label-text',
value: label,
submitValue: true,
fieldLabel: gettext('Media'),
},
{
xtype: 'proxmoxcheckbox',
fieldLabel: gettext('Fast Erase'),
name: 'fast',
},
],
listeners: { listeners: {
destroy: function() { destroy: function() {
me.reload(); me.reload();

51
www/tape/window/Erase.js Normal file
View File

@ -0,0 +1,51 @@
Ext.define('PBS.TapeManagement.EraseWindow', {
extend: 'Proxmox.window.Edit',
mixins: ['Proxmox.Mixin.CBind'],
changer: undefined,
label: undefined,
cbindData: function(config) {
let me = this;
return {};
},
title: gettext('Erase'),
url: `/api2/extjs/tape/drive`,
showProgress: true,
submitUrl: function(url, values) {
let drive = values.drive;
delete values.drive;
return `${url}/${drive}/erase-media`;
},
method: 'POST',
items: [
{
xtype: 'displayfield',
cls: 'pmx-hint',
value: gettext('Make sure to insert the tape into the selected drive.'),
cbind: {
hidden: '{changer}',
},
},
{
xtype: 'displayfield',
name: 'label-text',
submitValue: true,
fieldLabel: gettext('Media'),
cbind: {
value: '{label}',
},
},
{
xtype: 'pbsDriveSelector',
fieldLabel: gettext('Drive'),
name: 'drive',
cbind: {
changer: '{changer}',
},
},
],
});