Fix handling of state in the grid panel (#5867)

* fix handling of state in the grid panel

* trigger rebuild

* trigger rebuild
This commit is contained in:
Anthony Dresser
2019-06-04 12:55:20 -07:00
committed by Karl Burtram
parent 67859ab139
commit 7390dce536
2 changed files with 18 additions and 15 deletions

View File

@@ -272,14 +272,15 @@ export class QueryResultsView extends Disposable {
this._input = input;
dispose(this.runnerDisposables);
this.runnerDisposables = [];
[this.resultsTab, this.messagesTab, this.qpTab, this.topOperationsTab, this.chartTab].forEach(t => t.clear());
this.resultsTab.view.state = this.input.state.gridPanelState;
this.messagesTab.view.state = this.input.state.messagePanelState;
this.qpTab.view.state = this.input.state.queryPlanState;
this.topOperationsTab.view.state = this.input.state.topOperationsState;
this.chartTab.view.state = this.input.state.chartState;
[this.resultsTab, this.messagesTab, this.qpTab, this.topOperationsTab, this.chartTab].forEach(t => t.clear());
let info = this.queryModelService._getQueryInfo(input.uri);
if (info) {
this.setQueryRunner(info.queryRunner);

View File

@@ -257,13 +257,13 @@ export class GridPanel {
for (let set of resultSet) {
let tableState: GridTableState;
if (this._state) {
if (this.state) {
tableState = this.state.tableStates.find(e => e.batchId === set.batchId && e.resultId === set.id);
}
if (!tableState) {
tableState = new GridTableState(set.id, set.batchId);
if (this._state) {
this._state.tableStates.push(tableState);
if (this.state) {
this.state.tableStates.push(tableState);
}
}
let table = this.instantiationService.createInstance(GridTable, this.runner, set, tableState);
@@ -295,13 +295,13 @@ export class GridPanel {
public clear() {
this.reset();
this.state = undefined;
}
private reset() {
for (let i = this.splitView.length - 1; i >= 0; i--) {
this.splitView.removeView(i);
}
this._state = undefined;
dispose(this.tables);
dispose(this.tableDisposable);
this.tableDisposable = [];
@@ -336,15 +336,17 @@ export class GridPanel {
public set state(val: GridPanelState) {
this._state = val;
this.tables.map(t => {
let state = this.state.tableStates.find(s => s.batchId === t.resultSet.batchId && s.resultId === t.resultSet.id);
if (!state) {
this.state.tableStates.push(t.state);
}
if (state) {
t.state = state;
}
});
if (this.state) {
this.tables.map(t => {
let state = this.state.tableStates.find(s => s.batchId === t.resultSet.batchId && s.resultId === t.resultSet.id);
if (!state) {
this.state.tableStates.push(t.state);
}
if (state) {
t.state = state;
}
});
}
}
public get state() {