mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-17 02:51:36 -05:00
Notebooks: fix save as csv/excel/json/xml (#14882)
* add getEncoding method to notebooks * fix row 501 missing in serialization * fix row index * pr comment
This commit is contained in:
@@ -119,6 +119,10 @@ export class SerializationService implements ISerializationService {
|
|||||||
let index = 0;
|
let index = 0;
|
||||||
let startRequestParams = this.createStartRequest(serializationRequest, index);
|
let startRequestParams = this.createStartRequest(serializationRequest, index);
|
||||||
index = index + startRequestParams.rows.length;
|
index = index + startRequestParams.rows.length;
|
||||||
|
// Adjust row index based on whether or not header row is included
|
||||||
|
if (serializationRequest.includeHeaders) {
|
||||||
|
index--;
|
||||||
|
}
|
||||||
|
|
||||||
let startResult = await provider.startSerialization(startRequestParams);
|
let startResult = await provider.startSerialization(startRequestParams);
|
||||||
|
|
||||||
|
|||||||
@@ -45,4 +45,8 @@ export class FileNotebookInput extends NotebookInput {
|
|||||||
public getTypeId(): string {
|
public getTypeId(): string {
|
||||||
return FileNotebookInput.ID;
|
return FileNotebookInput.ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getEncoding(): string | undefined {
|
||||||
|
return this.textInput.getEncoding();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,4 +42,8 @@ export class UntitledNotebookInput extends NotebookInput {
|
|||||||
public getTypeId(): string {
|
public getTypeId(): string {
|
||||||
return UntitledNotebookInput.ID;
|
return UntitledNotebookInput.ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getEncoding(): string | undefined {
|
||||||
|
return this.textInput.getEncoding();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import { localize } from 'vs/nls';
|
|||||||
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
|
||||||
import { Table } from 'sql/base/browser/ui/table/table';
|
import { Table } from 'sql/base/browser/ui/table/table';
|
||||||
import { QueryEditor } from './queryEditor';
|
import { QueryEditor } from './queryEditor';
|
||||||
import { UntitledQueryEditorInput } from 'sql/workbench/common/editor/query/untitledQueryEditorInput';
|
|
||||||
import { CellSelectionModel } from 'sql/base/browser/ui/table/plugins/cellSelectionModel.plugin';
|
import { CellSelectionModel } from 'sql/base/browser/ui/table/plugins/cellSelectionModel.plugin';
|
||||||
import { IGridDataProvider } from 'sql/workbench/services/query/common/gridDataProvider';
|
import { IGridDataProvider } from 'sql/workbench/services/query/common/gridDataProvider';
|
||||||
import { INotificationService, Severity, NeverShowAgainScope } from 'vs/platform/notification/common/notification';
|
import { INotificationService, Severity, NeverShowAgainScope } from 'vs/platform/notification/common/notification';
|
||||||
@@ -20,6 +19,7 @@ import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
|
|||||||
import { getErrorMessage } from 'vs/base/common/errors';
|
import { getErrorMessage } from 'vs/base/common/errors';
|
||||||
import { SaveFormat } from 'sql/workbench/services/query/common/resultSerializer';
|
import { SaveFormat } from 'sql/workbench/services/query/common/resultSerializer';
|
||||||
import { IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations';
|
import { IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations';
|
||||||
|
import { IEncodingSupport } from 'vs/workbench/common/editor';
|
||||||
|
|
||||||
export interface IGridActionContext {
|
export interface IGridActionContext {
|
||||||
gridDataProvider: IGridDataProvider;
|
gridDataProvider: IGridDataProvider;
|
||||||
@@ -70,9 +70,8 @@ export class SaveResultAction extends Action {
|
|||||||
|
|
||||||
public async run(context: IGridActionContext): Promise<boolean> {
|
public async run(context: IGridActionContext): Promise<boolean> {
|
||||||
|
|
||||||
const activeEditor = this.editorService.activeEditorPane as QueryEditor;
|
const activeEditor = this.editorService.activeEditorPane as unknown as IEncodingSupport;
|
||||||
let input = activeEditor.input as UntitledQueryEditorInput;
|
if (typeof activeEditor.getEncoding === 'function' && activeEditor.getEncoding() !== 'utf8') {
|
||||||
if (input.getEncoding() !== 'utf8') {
|
|
||||||
this.notificationService.notify({
|
this.notificationService.notify({
|
||||||
severity: Severity.Info,
|
severity: Severity.Info,
|
||||||
message: localize('jsonEncoding', "Results encoding will not be saved when exporting to JSON, remember to save with desired encoding once file is created."),
|
message: localize('jsonEncoding', "Results encoding will not be saved when exporting to JSON, remember to save with desired encoding once file is created."),
|
||||||
|
|||||||
Reference in New Issue
Block a user