mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Adding save file functionality to query plan (#18337)
This commit is contained in:
@@ -33,6 +33,11 @@ import { EDITOR_FONT_DEFAULTS } from 'vs/editor/common/config/editorOptions';
|
|||||||
import { QueryPlanWidgetController } from 'sql/workbench/contrib/queryplan2/browser/queryPlanWidgetController';
|
import { QueryPlanWidgetController } from 'sql/workbench/contrib/queryplan2/browser/queryPlanWidgetController';
|
||||||
import { CustomZoomWidget } from 'sql/workbench/contrib/queryplan2/browser/widgets/customZoomWidget';
|
import { CustomZoomWidget } from 'sql/workbench/contrib/queryplan2/browser/widgets/customZoomWidget';
|
||||||
import { NodeSearchWidget } from 'sql/workbench/contrib/queryplan2/browser/widgets/nodeSearchWidget';
|
import { NodeSearchWidget } from 'sql/workbench/contrib/queryplan2/browser/widgets/nodeSearchWidget';
|
||||||
|
import { IFileDialogService } from 'vs/platform/dialogs/common/dialogs';
|
||||||
|
import { IFileService } from 'vs/platform/files/common/files';
|
||||||
|
import { VSBuffer } from 'vs/base/common/buffer';
|
||||||
|
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||||
|
import { URI } from 'vs/base/common/uri';
|
||||||
|
|
||||||
let azdataGraph = azdataGraphModule();
|
let azdataGraph = azdataGraphModule();
|
||||||
|
|
||||||
@@ -161,6 +166,9 @@ export class QueryPlan2 implements ISashLayoutProvider {
|
|||||||
@IUntitledTextEditorService private readonly _untitledEditorService: IUntitledTextEditorService,
|
@IUntitledTextEditorService private readonly _untitledEditorService: IUntitledTextEditorService,
|
||||||
@IEditorService private readonly editorService: IEditorService,
|
@IEditorService private readonly editorService: IEditorService,
|
||||||
@IContextMenuService private _contextMenuService: IContextMenuService,
|
@IContextMenuService private _contextMenuService: IContextMenuService,
|
||||||
|
@IFileDialogService public fileDialogService: IFileDialogService,
|
||||||
|
@IFileService public fileService: IFileService,
|
||||||
|
@IWorkspaceContextService public workspaceContextService: IWorkspaceContextService
|
||||||
) {
|
) {
|
||||||
// parent container for query plan.
|
// parent container for query plan.
|
||||||
this._container = DOM.$('.query-plan');
|
this._container = DOM.$('.query-plan');
|
||||||
@@ -515,6 +523,27 @@ class SavePlanFile extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public override async run(context: QueryPlan2): Promise<void> {
|
public override async run(context: QueryPlan2): Promise<void> {
|
||||||
|
const workspaceFolders = await context.workspaceContextService.getWorkspace().folders;
|
||||||
|
const defaultFileName = 'plan';
|
||||||
|
let currentWorkSpaceFolder: URI;
|
||||||
|
if (workspaceFolders.length !== 0) {
|
||||||
|
currentWorkSpaceFolder = workspaceFolders[0].uri;
|
||||||
|
currentWorkSpaceFolder = URI.joinPath(currentWorkSpaceFolder, defaultFileName); //appending default file name to workspace uri
|
||||||
|
} else {
|
||||||
|
currentWorkSpaceFolder = URI.parse(defaultFileName); // giving default name
|
||||||
|
}
|
||||||
|
const saveFileUri = await context.fileDialogService.showSaveDialog({
|
||||||
|
filters: [
|
||||||
|
{
|
||||||
|
extensions: ['sqlplan'], //TODO: Get this extension from provider
|
||||||
|
name: localize('queryPlan.SaveFileDescription', 'Execution Plan Files') //TODO: Get the names from providers.
|
||||||
|
}
|
||||||
|
],
|
||||||
|
defaultUri: currentWorkSpaceFolder // If no workspaces are opened this will be undefined
|
||||||
|
});
|
||||||
|
if (saveFileUri) {
|
||||||
|
await context.fileService.writeFile(saveFileUri, VSBuffer.fromString(context.graphModel.graphFile.graphFileContent));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user