public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup 5/5] ui: tape/DriveStatus: use the drive state to determine a status-load
Date: Tue,  2 Mar 2021 12:19:40 +0100	[thread overview]
Message-ID: <20210302111940.17276-5-d.csapak@proxmox.com> (raw)
In-Reply-To: <20210302111940.17276-1-d.csapak@proxmox.com>

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>
---
 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





      parent reply	other threads:[~2021-03-02 11:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-02 11:19 [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape/drive: add state to DriveListEntry Dominik Csapak
2021-03-02 11:19 ` [pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: refactor renderDriveState to Utils Dominik Csapak
2021-03-02 11:19 ` [pbs-devel] [PATCH proxmox-backup 3/5] ui: tape/DriveStatus: add more status lines Dominik Csapak
2021-03-02 11:19 ` [pbs-devel] [PATCH proxmox-backup 4/5] ui: tape/DriveStatus: add state to Info panel Dominik Csapak
2021-03-02 11:19 ` Dominik Csapak [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210302111940.17276-5-d.csapak@proxmox.com \
    --to=d.csapak@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal