mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Removing older show plan from results pane (#18294)
This commit is contained in:
@@ -146,8 +146,8 @@ export class QueryResultsEditor extends EditorPane {
|
|||||||
this.resultsView.chartData(dataId);
|
this.resultsView.chartData(dataId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public showQueryPlan(xml: string) {
|
public showTopOperation(xml: string) {
|
||||||
this.resultsView.showPlan(xml);
|
this.resultsView.showTopOperations(xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
public registerQueryModelViewTab(title: string, componentId: string): void {
|
public registerQueryModelViewTab(title: string, componentId: string): void {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import QueryRunner from 'sql/workbench/services/query/common/queryRunner';
|
|||||||
import { MessagePanel } from 'sql/workbench/contrib/query/browser/messagePanel';
|
import { MessagePanel } from 'sql/workbench/contrib/query/browser/messagePanel';
|
||||||
import { GridPanel } from 'sql/workbench/contrib/query/browser/gridPanel';
|
import { GridPanel } from 'sql/workbench/contrib/query/browser/gridPanel';
|
||||||
import { ChartTab } from 'sql/workbench/contrib/charts/browser/chartTab';
|
import { ChartTab } from 'sql/workbench/contrib/charts/browser/chartTab';
|
||||||
import { QueryPlanTab } from 'sql/workbench/contrib/queryPlan/browser/queryPlan';
|
|
||||||
import { TopOperationsTab } from 'sql/workbench/contrib/queryPlan/browser/topOperations';
|
import { TopOperationsTab } from 'sql/workbench/contrib/queryPlan/browser/topOperations';
|
||||||
import { QueryModelViewTab } from 'sql/workbench/contrib/query/browser/modelViewTab/queryModelViewTab';
|
import { QueryModelViewTab } from 'sql/workbench/contrib/query/browser/modelViewTab/queryModelViewTab';
|
||||||
import { GridPanelState } from 'sql/workbench/common/editor/query/gridTableState';
|
import { GridPanelState } from 'sql/workbench/common/editor/query/gridTableState';
|
||||||
@@ -163,7 +162,6 @@ export class QueryResultsView extends Disposable {
|
|||||||
private resultsTab: ResultsTab;
|
private resultsTab: ResultsTab;
|
||||||
private messagesTab: MessagesTab;
|
private messagesTab: MessagesTab;
|
||||||
private chartTab: ChartTab;
|
private chartTab: ChartTab;
|
||||||
private qpTab: QueryPlanTab;
|
|
||||||
private qp2Tab: QueryPlan2Tab;
|
private qp2Tab: QueryPlan2Tab;
|
||||||
private topOperationsTab: TopOperationsTab;
|
private topOperationsTab: TopOperationsTab;
|
||||||
private dynamicModelViewTabs: QueryModelViewTab[] = [];
|
private dynamicModelViewTabs: QueryModelViewTab[] = [];
|
||||||
@@ -184,7 +182,6 @@ export class QueryResultsView extends Disposable {
|
|||||||
this.chartTab = this._register(new ChartTab(instantiationService));
|
this.chartTab = this._register(new ChartTab(instantiationService));
|
||||||
this._panelView = this._register(new TabbedPanel(container, { showHeaderWhenSingleView: true }));
|
this._panelView = this._register(new TabbedPanel(container, { showHeaderWhenSingleView: true }));
|
||||||
this._register(attachTabbedPanelStyler(this._panelView, themeService));
|
this._register(attachTabbedPanelStyler(this._panelView, themeService));
|
||||||
this.qpTab = this._register(new QueryPlanTab());
|
|
||||||
this.qp2Tab = this._register(this.instantiationService.createInstance(QueryPlan2Tab));
|
this.qp2Tab = this._register(this.instantiationService.createInstance(QueryPlan2Tab));
|
||||||
this.topOperationsTab = this._register(new TopOperationsTab(instantiationService));
|
this.topOperationsTab = this._register(new TopOperationsTab(instantiationService));
|
||||||
|
|
||||||
@@ -225,7 +222,7 @@ export class QueryResultsView extends Disposable {
|
|||||||
this.runnerDisposables.add(Event.once(runner.onResultSet)(() => this.showResults()));
|
this.runnerDisposables.add(Event.once(runner.onResultSet)(() => this.showResults()));
|
||||||
this.hideResults();
|
this.hideResults();
|
||||||
this.hideChart();
|
this.hideChart();
|
||||||
this.hidePlan();
|
this.hideTopOperations();
|
||||||
this.hidePlan2();
|
this.hidePlan2();
|
||||||
this.hideDynamicViewModelTabs();
|
this.hideDynamicViewModelTabs();
|
||||||
this.input?.state.visibleTabs.clear();
|
this.input?.state.visibleTabs.clear();
|
||||||
@@ -266,12 +263,6 @@ export class QueryResultsView extends Disposable {
|
|||||||
this._panelView.removeTab(this.chartTab.identifier);
|
this._panelView.removeTab(this.chartTab.identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.input?.state.visibleTabs.has(this.qpTab.identifier) && !this._panelView.contains(this.qpTab)) {
|
|
||||||
this._panelView.pushTab(this.qpTab);
|
|
||||||
} else if (!this.input?.state.visibleTabs.has(this.qpTab.identifier) && this._panelView.contains(this.qpTab)) {
|
|
||||||
this._panelView.removeTab(this.qpTab.identifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.input?.state.visibleTabs.has(this.qp2Tab.identifier) && !this._panelView.contains(this.qp2Tab)) {
|
if (this.input?.state.visibleTabs.has(this.qp2Tab.identifier) && !this._panelView.contains(this.qp2Tab)) {
|
||||||
this._panelView.pushTab(this.qp2Tab);
|
this._panelView.pushTab(this.qp2Tab);
|
||||||
} else if (!this.input?.state.visibleTabs.has(this.qp2Tab.identifier) && this._panelView.contains(this.qp2Tab)) {
|
} else if (!this.input?.state.visibleTabs.has(this.qp2Tab.identifier) && this._panelView.contains(this.qp2Tab)) {
|
||||||
@@ -310,7 +301,7 @@ export class QueryResultsView extends Disposable {
|
|||||||
this.runnerDisposables.add(runner.onQueryEnd(() => {
|
this.runnerDisposables.add(runner.onQueryEnd(() => {
|
||||||
if (runner.isQueryPlan) {
|
if (runner.isQueryPlan) {
|
||||||
runner.planXml.then(e => {
|
runner.planXml.then(e => {
|
||||||
this.showPlan(e);
|
this.showTopOperations(e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
@@ -330,12 +321,11 @@ export class QueryResultsView extends Disposable {
|
|||||||
this._input = input;
|
this._input = input;
|
||||||
this.runnerDisposables.clear();
|
this.runnerDisposables.clear();
|
||||||
|
|
||||||
[this.resultsTab, this.messagesTab, this.qpTab, this.qp2Tab, this.topOperationsTab, this.chartTab].forEach(t => t.clear());
|
[this.resultsTab, this.messagesTab, this.qp2Tab, this.topOperationsTab, this.chartTab].forEach(t => t.clear());
|
||||||
this.dynamicModelViewTabs.forEach(t => t.clear());
|
this.dynamicModelViewTabs.forEach(t => t.clear());
|
||||||
|
|
||||||
if (input) {
|
if (input) {
|
||||||
this.resultsTab.view.state = input.state.gridPanelState;
|
this.resultsTab.view.state = input.state.gridPanelState;
|
||||||
this.qpTab.view.setState(input.state.queryPlanState);
|
|
||||||
this.qp2Tab.view.addGraphs(input.state.queryPlan2State.graphs);
|
this.qp2Tab.view.addGraphs(input.state.queryPlan2State.graphs);
|
||||||
this.topOperationsTab.view.setState(input.state.topOperationsState);
|
this.topOperationsTab.view.setState(input.state.topOperationsState);
|
||||||
this.chartTab.view.state = input.state.chartState;
|
this.chartTab.view.state = input.state.chartState;
|
||||||
@@ -376,7 +366,6 @@ export class QueryResultsView extends Disposable {
|
|||||||
this.runnerDisposables.clear();
|
this.runnerDisposables.clear();
|
||||||
this.resultsTab.clear();
|
this.resultsTab.clear();
|
||||||
this.messagesTab.clear();
|
this.messagesTab.clear();
|
||||||
this.qpTab.clear();
|
|
||||||
this.topOperationsTab.clear();
|
this.topOperationsTab.clear();
|
||||||
this.chartTab.clear();
|
this.chartTab.clear();
|
||||||
this.dynamicModelViewTabs.forEach(t => t.clear());
|
this.dynamicModelViewTabs.forEach(t => t.clear());
|
||||||
@@ -419,18 +408,11 @@ export class QueryResultsView extends Disposable {
|
|||||||
this._panelView.showTab(this.resultsTab.identifier);
|
this._panelView.showTab(this.resultsTab.identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
public showPlan(xml: string) {
|
public showTopOperations(xml: string) {
|
||||||
this.input?.state.visibleTabs.add(this.qpTab.identifier);
|
|
||||||
if (!this._panelView.contains(this.qpTab)) {
|
|
||||||
this._panelView.pushTab(this.qpTab);
|
|
||||||
}
|
|
||||||
this.input?.state.visibleTabs.add(this.topOperationsTab.identifier);
|
this.input?.state.visibleTabs.add(this.topOperationsTab.identifier);
|
||||||
if (!this._panelView.contains(this.topOperationsTab)) {
|
if (!this._panelView.contains(this.topOperationsTab)) {
|
||||||
this._panelView.pushTab(this.topOperationsTab);
|
this._panelView.pushTab(this.topOperationsTab);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._panelView.showTab(this.qpTab.identifier);
|
|
||||||
this.qpTab.view.showPlan(xml);
|
|
||||||
this.topOperationsTab.view.showPlan(xml);
|
this.topOperationsTab.view.showPlan(xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -444,11 +426,7 @@ export class QueryResultsView extends Disposable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public hidePlan() {
|
public hideTopOperations() {
|
||||||
if (this._panelView.contains(this.qpTab)) {
|
|
||||||
this._panelView.removeTab(this.qpTab.identifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._panelView.contains(this.topOperationsTab)) {
|
if (this._panelView.contains(this.topOperationsTab)) {
|
||||||
this._panelView.removeTab(this.topOperationsTab.identifier);
|
this._panelView.removeTab(this.topOperationsTab.identifier);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { TableDataView } from 'sql/base/browser/ui/table/tableDataView';
|
|||||||
import { TopOperationsState } from 'sql/workbench/common/editor/query/topOperationsState';
|
import { TopOperationsState } from 'sql/workbench/common/editor/query/topOperationsState';
|
||||||
|
|
||||||
const topOperationColumns: Array<Slick.Column<any>> = [
|
const topOperationColumns: Array<Slick.Column<any>> = [
|
||||||
{ name: localize('topOperations.operation', "Operation"), field: 'operation', sortable: true },
|
{ name: localize('topOperations.operation', "Operation"), field: 'operation', sortable: true, width: 300 },
|
||||||
{ name: localize('topOperations.object', "Object"), field: 'object', sortable: true },
|
{ name: localize('topOperations.object', "Object"), field: 'object', sortable: true },
|
||||||
{ name: localize('topOperations.estCost', "Est Cost"), field: 'estCost', sortable: true },
|
{ name: localize('topOperations.estCost', "Est Cost"), field: 'estCost', sortable: true },
|
||||||
{ name: localize('topOperations.estSubtreeCost', "Est Subtree Cost"), field: 'estSubtreeCost', sortable: true },
|
{ name: localize('topOperations.estSubtreeCost', "Est Subtree Cost"), field: 'estSubtreeCost', sortable: true },
|
||||||
|
|||||||
Reference in New Issue
Block a user