[pbs-devel] [PATCH proxmox-backup 5/5] ui: tape/DriveStatus: use the drive state to determine a status-load
Dominik Csapak
d.csapak at proxmox.com
Tue Mar 2 12:19:40 CET 2021
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 at proxmox.com>
---
www/tape/DriveStatus.js | 42 +++++++++++++++++++++++++++++++++++++----
1 file changed, 38 insertions(+), 4 deletions(-)
diff --git a/www/tape/DriveStatus.js b/www/tape/DriveStatus.js
index c9e9ea02..481f8b0d 100644
--- a/www/tape/DriveStatus.js
+++ b/www/tape/DriveStatus.js
@@ -18,6 +18,8 @@ Ext.define('PBS.TapeManagement.DriveStatus', {
viewModel: {
data: {
online: false,
+ busy: true,
+ loaded: false,
},
},
@@ -38,6 +40,33 @@ Ext.define('PBS.TapeManagement.DriveStatus', {
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() {
let me = this;
Ext.create('PBS.TapeManagement.LabelMediaWindow', {
@@ -84,18 +113,23 @@ Ext.define('PBS.TapeManagement.DriveStatus', {
init: function(view) {
let me = this;
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: [
{
xtype: 'proxmoxButton',
handler: 'reload',
text: gettext('Reload'),
+ disabled: true,
+ bind: {
+ disabled: '{busy}',
+ },
},
'-',
{
--
2.20.1
More information about the pbs-devel
mailing list