ui: tape/DriveStatus: use the drive state to determine a status-load
since the status api call blocks the drive, it only makes sense to do when the drive is idle. so do not reload on activate, but when the drive changes the first time from busy to idle also disable the reload button when the drive is busy Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
d810014eeb
commit
6f3714b9aa
|
@ -18,6 +18,8 @@ Ext.define('PBS.TapeManagement.DriveStatus', {
|
||||||
viewModel: {
|
viewModel: {
|
||||||
data: {
|
data: {
|
||||||
online: false,
|
online: false,
|
||||||
|
busy: true,
|
||||||
|
loaded: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -38,6 +40,33 @@ Ext.define('PBS.TapeManagement.DriveStatus', {
|
||||||
vm.set('online', online);
|
vm.set('online', online);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onStateLoad: function(store) {
|
||||||
|
let me = this;
|
||||||
|
let view = me.getView();
|
||||||
|
let vm = me.getViewModel();
|
||||||
|
let driveRecord = store.findRecord('name', view.drive, 0, false, true, true);
|
||||||
|
let busy = !!driveRecord.data.state;
|
||||||
|
vm.set('busy', busy);
|
||||||
|
let statusgrid = me.lookup('statusgrid');
|
||||||
|
if (!vm.get('loaded')) {
|
||||||
|
if (busy) {
|
||||||
|
// have to use a timeout so that the component can be rendered first
|
||||||
|
// otherwise the 'mask' call errors out
|
||||||
|
setTimeout(function() {
|
||||||
|
statusgrid.mask(gettext('Drive is busy'));
|
||||||
|
}, 10);
|
||||||
|
} else {
|
||||||
|
// have to use a timeout so that the component can be rendered first
|
||||||
|
// otherwise the 'mask' call errors out
|
||||||
|
setTimeout(function() {
|
||||||
|
statusgrid.unmask();
|
||||||
|
}, 10);
|
||||||
|
me.reload();
|
||||||
|
vm.set('loaded', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
labelMedia: function() {
|
labelMedia: function() {
|
||||||
let me = this;
|
let me = this;
|
||||||
Ext.create('PBS.TapeManagement.LabelMediaWindow', {
|
Ext.create('PBS.TapeManagement.LabelMediaWindow', {
|
||||||
|
@ -84,18 +113,23 @@ Ext.define('PBS.TapeManagement.DriveStatus', {
|
||||||
init: function(view) {
|
init: function(view) {
|
||||||
let me = this;
|
let me = this;
|
||||||
me.mon(me.lookup('statusgrid').getStore().rstore, 'load', 'onLoad');
|
me.mon(me.lookup('statusgrid').getStore().rstore, 'load', 'onLoad');
|
||||||
|
let tapeStore = Ext.ComponentQuery.query('navigationtree')[0].tapestore;
|
||||||
|
me.mon(tapeStore, 'load', 'onStateLoad');
|
||||||
|
if (tapeStore.isLoaded()) {
|
||||||
|
me.onStateLoad(tapeStore);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
listeners: {
|
|
||||||
activate: 'reload',
|
|
||||||
},
|
|
||||||
|
|
||||||
tbar: [
|
tbar: [
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxButton',
|
xtype: 'proxmoxButton',
|
||||||
handler: 'reload',
|
handler: 'reload',
|
||||||
text: gettext('Reload'),
|
text: gettext('Reload'),
|
||||||
|
disabled: true,
|
||||||
|
bind: {
|
||||||
|
disabled: '{busy}',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
'-',
|
'-',
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue