Redoing Execution Plan Comparison Editor (#19375)

* Adding code for execution plan comparison editor

* Handling floating promises and fixing a loc string

* Fixing some polygon stuff

* Fixing azdatagraph null check bug

* Adding progress notification for similar areas

* Removing some floating promises

* Fixing button enabled state
This commit is contained in:
Aasim Khan
2022-05-23 14:33:18 -07:00
committed by GitHub
parent 000923207e
commit 8bb6b5fc1a
34 changed files with 1601 additions and 101 deletions

View File

@@ -11,11 +11,17 @@ import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle
import { IEditorResolverService, RegisteredEditorPriority } from 'vs/workbench/services/editor/common/editorResolverService';
import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions';
import { Disposable } from 'vs/base/common/lifecycle';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { IExecutionPlanService } from 'sql/workbench/services/executionPlan/common/interfaces';
import { ExecutionPlanInput } from 'sql/workbench/contrib/executionPlan/common/executionPlanInput';
import { ExecutionPlanEditor } from 'sql/workbench/contrib/executionPlan/browser/executionPlanEditor';
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
import { ExecutionPlanComparisonEditor } from 'sql/workbench/contrib/executionPlan/browser/executionPlanComparisonEditor';
import { ExecutionPlanComparisonInput } from 'sql/workbench/contrib/executionPlan/browser/compareExecutionPlanInput';
import { MenuId, MenuRegistry } from 'vs/platform/actions/common/actions';
import { localize } from 'vs/nls';
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
// Execution Plan editor registration
@@ -39,7 +45,7 @@ export class ExecutionPlanEditorOverrideContribution extends Disposable implemen
this.registerEditorOverride();
this._capabilitiesService.onCapabilitiesRegistered(e => {
const newFileFormats = this._executionPlanService.getSupportedExecutionPlanExtensionsForProvider(e.id);
const newFileFormats = this._executionPlanService.getSupportedExecutionPlanExtensions(e.id);
if (newFileFormats?.length > 0) {
this._editorResolverService.updateUserAssociations(this.getGlobForFileExtensions(newFileFormats), ExecutionPlanEditor.ID); // Registering new file formats when new providers are registered.
}
@@ -76,3 +82,33 @@ export class ExecutionPlanEditorOverrideContribution extends Disposable implemen
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench)
.registerWorkbenchContribution(ExecutionPlanEditorOverrideContribution, LifecyclePhase.Restored);
const comparisonExecutionPlanEditor = EditorPaneDescriptor.create(
ExecutionPlanComparisonEditor,
ExecutionPlanComparisonEditor.ID,
ExecutionPlanComparisonEditor.LABEL
);
const COMPARE_EXECUTION_PLAN_COMMAND_ID = 'compareExecutionPlan';
Registry.as<IEditorPaneRegistry>(EditorExtensions.EditorPane)
.registerEditorPane(comparisonExecutionPlanEditor, [new SyncDescriptor(ExecutionPlanComparisonInput)]);
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
command: {
id: COMPARE_EXECUTION_PLAN_COMMAND_ID,
title: {
value: localize('executionPlanCompareCommandValue', "Compare execution plans"),
original: localize('executionPlanCompareCommandOriginalValue', "Compare execution plans")
},
category: 'Execution Plan'
}
});
CommandsRegistry.registerCommand(COMPARE_EXECUTION_PLAN_COMMAND_ID, (accessors: ServicesAccessor) => {
const editorService = accessors.get(IEditorService);
const instantiationService = accessors.get(IInstantiationService);
editorService.openEditor(instantiationService.createInstance(ExecutionPlanComparisonInput, undefined), {
pinned: true
});
});