From 825dfe7e0ddc66aaedef2be98df2450d93161226 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Wed, 17 Mar 2021 11:47:32 +0100 Subject: [PATCH] ui: tape/DriveStatus: fix updating pointer+click handler on info widget we can only do this after it is rendered, the element does not exist before Signed-off-by: Dominik Csapak --- www/tape/DriveStatus.js | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/www/tape/DriveStatus.js b/www/tape/DriveStatus.js index b529a9af..38cddaaf 100644 --- a/www/tape/DriveStatus.js +++ b/www/tape/DriveStatus.js @@ -469,17 +469,38 @@ Ext.define('PBS.TapeManagement.DriveInfoPanel', { let vm = me.getViewModel(); vm.set('drive', record.data); + vm.notify(); + me.updatePointer(); + }, + + updatePointer: function() { + let me = this; let stateWidget = me.down('pmxInfoWidget[reference=statewidget]'); let stateEl = stateWidget.getEl(); - stateEl.removeListener('click', me.clickState); - if (record.data.state) { - stateEl.on('click', me.clickState, me); + if (!stateEl) { + setTimeout(function() { + me.updatePointer(); + }, 100); + return; + } + + let vm = me.getViewModel(); + let drive = vm.get('drive'); + + if (drive.state) { stateEl.addCls('info-pointer'); } else { stateEl.removeCls('info-pointer'); } + }, - vm.notify(); + listeners: { + afterrender: function() { + let me = this; + let stateWidget = me.down('pmxInfoWidget[reference=statewidget]'); + let stateEl = stateWidget.getEl(); + stateEl.on('click', me.clickState, me); + }, }, initComponent: function() { @@ -488,12 +509,12 @@ Ext.define('PBS.TapeManagement.DriveInfoPanel', { throw "no drive given"; } + me.callParent(); + let tapeStore = Ext.ComponentQuery.query('navigationtree')[0].tapestore; me.mon(tapeStore, 'load', me.updateData, me); if (tapeStore.isLoaded()) { me.updateData(tapeStore); } - - me.callParent(); }, });