panel hide/show concurrency issue fix
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user