diff --git a/client/src/views/record/detail.js b/client/src/views/record/detail.js index 69caecfdcf..f950a974c1 100644 --- a/client/src/views/record/detail.js +++ b/client/src/views/record/detail.js @@ -1168,7 +1168,7 @@ function (Dep, ViewRecordHelper, ActionItemSetup) { } } else if (this.bottomView) { - this.once('after:render', () => { + this.once('ready', () => { var bottomView = this.getView('bottom'); if (bottomView && 'showPanel' in bottomView) { @@ -1185,7 +1185,7 @@ function (Dep, ViewRecordHelper, ActionItemSetup) { } } else if (this.sideView) { - this.once('after:render', () => { + this.once('ready', () => { var sideView = this.getView('side'); if (sideView && 'hidePanel' in sideView) { diff --git a/client/src/views/record/panels-container.js b/client/src/views/record/panels-container.js index f2d2468d01..c29eec50d6 100644 --- a/client/src/views/record/panels-container.js +++ b/client/src/views/record/panels-container.js @@ -749,6 +749,26 @@ define('views/record/panels-container', ['view'], function (Dep) { this.$el.find(`.panel[data-tab="${tab}"]`).removeClass('tab-hidden'); this.adjustPanels(); + + this.panelList + .filter(item => item.tabNumber === tab && item.name) + .forEach(item => { + let view = this.getView(item.name); + + if (view) { + view.trigger('tab-show'); + } + }); + + this.panelList + .filter(item => item.tabNumber !== tab && item.name) + .forEach(item => { + let view = this.getView(item.name); + + if (view) { + view.trigger('tab-hide'); + } + }); }, /** diff --git a/client/src/views/record/panels/bottom.js b/client/src/views/record/panels/bottom.js index 970c8ef31c..1885dab72a 100644 --- a/client/src/views/record/panels/bottom.js +++ b/client/src/views/record/panels/bottom.js @@ -344,5 +344,28 @@ define('views/record/panels/bottom', ['view'], function (Dep) { this.createView(viewKey, viewName, o); }, + + /** + * Is tab-hidden. + * + * @return {boolean} + */ + isTabHidden: function () { + if (this.defs.tabNumber === -1 || typeof this.defs.tabNumber === 'undefined') { + return false; + } + + let parentView = this.getParentView(); + + if (!parentView) { + return this.defs.tabNumber > 0; + } + + if (parentView && parentView.hasTabs) { + return parentView.currentTab !== defs.tabNumber; + } + + return false; + }, }); }); diff --git a/client/src/views/record/panels/side.js b/client/src/views/record/panels/side.js index 781004ffa8..e6d8dc0806 100644 --- a/client/src/views/record/panels/side.js +++ b/client/src/views/record/panels/side.js @@ -384,5 +384,28 @@ define('views/record/panels/side', ['view'], function (Dep) { actionRefresh: function () { this.model.fetch(); }, + + /** + * Is tab-hidden. + * + * @return {boolean} + */ + isTabHidden: function () { + if (this.defs.tabNumber === -1 || typeof this.defs.tabNumber === 'undefined') { + return false; + } + + let parentView = this.getParentView(); + + if (!parentView) { + return this.defs.tabNumber > 0; + } + + if (parentView && parentView.hasTabs) { + return parentView.currentTab !== defs.tabNumber; + } + + return false; + }, }); });