mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-12 11:08:31 -05:00
Completed: Missing feature request: Save as XML (#3729)
* Save as XML feature added to grid * Unrelated code removed
This commit is contained in:
committed by
Karl Burtram
parent
5c16ceb2fa
commit
4de3cc8a09
@@ -5,6 +5,7 @@
|
||||
|
||||
export const copyIncludeHeaders = 'copyIncludeHeaders';
|
||||
export const configSaveAsCsv = 'saveAsCsv';
|
||||
export const configSaveAsXml = 'saveAsXml';
|
||||
export const configCopyRemoveNewLine = 'copyRemoveNewLine';
|
||||
export const configShowBatchTime = 'showBatchTime';
|
||||
export const querySection = 'query';
|
||||
|
||||
@@ -24,6 +24,7 @@ export const restoreLabel = localize('resultsPane.restoreLabel', 'Restore');
|
||||
export const saveCSVLabel = localize('saveCSVLabel', 'Save as CSV');
|
||||
export const saveJSONLabel = localize('saveJSONLabel', 'Save as JSON');
|
||||
export const saveExcelLabel = localize('saveExcelLabel', 'Save as Excel');
|
||||
export const saveXMLLabel = localize('saveXMLLabel', 'Save as XML');
|
||||
export const viewChartLabel = localize('viewChartLabel', 'View as Chart');
|
||||
|
||||
export const resultPaneLabel = localize('resultPaneLabel', 'Results');
|
||||
|
||||
@@ -233,6 +233,14 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({
|
||||
handler: gridCommands.saveAsExcel
|
||||
});
|
||||
|
||||
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
||||
id: gridActions.GRID_SAVEXML_ID,
|
||||
weight: KeybindingWeight.EditorContrib,
|
||||
when: ResultsGridFocusCondition,
|
||||
primary: KeyChord(KeyMod.CtrlCmd | KeyCode.KEY_R, KeyMod.CtrlCmd | KeyCode.KEY_X),
|
||||
handler: gridCommands.saveAsXml
|
||||
});
|
||||
|
||||
KeybindingsRegistry.registerCommandAndKeybindingRule({
|
||||
id: gridActions.GRID_VIEWASCHART_ID,
|
||||
weight: KeybindingWeight.EditorContrib,
|
||||
@@ -310,6 +318,16 @@ let registryProperties = {
|
||||
'description': localize('sql.results.streaming', 'Enable results streaming; contains few minor visual issues'),
|
||||
'default': false
|
||||
},
|
||||
'sql.saveAsXml.formatted': {
|
||||
'type': 'string',
|
||||
'description': localize('sql.saveAsXml.formatted', '[Optional] When true, XML output will be formatted when saving results as XML'),
|
||||
'default': true
|
||||
},
|
||||
'sql.saveAsXml.encoding': {
|
||||
'type': 'string',
|
||||
'description': localize('sql.saveAsXml.encoding', '[Optional] File encoding used when saving results as XML'),
|
||||
'default': 'utf-8'
|
||||
},
|
||||
'sql.copyIncludeHeaders': {
|
||||
'type': 'boolean',
|
||||
'description': localize('sql.copyIncludeHeaders', '[Optional] Configuration options for copying results from the Results View'),
|
||||
|
||||
@@ -254,6 +254,24 @@ export class ResultSerializer {
|
||||
return config;
|
||||
}
|
||||
|
||||
private getConfigForXml(): SaveResultsRequestParams {
|
||||
let saveResultsParams = <SaveResultsRequestParams>{ resultFormat: SaveFormat.XML as string };
|
||||
|
||||
// get save results config from vscode config
|
||||
let saveConfig = WorkbenchUtils.getSqlConfigSection(this._workspaceConfigurationService, Constants.configSaveAsXml);
|
||||
// if user entered config, set options
|
||||
if (saveConfig) {
|
||||
if (saveConfig.formatted !== undefined) {
|
||||
saveResultsParams.formatted = saveConfig.formatted;
|
||||
}
|
||||
if (saveConfig.encoding !== undefined) {
|
||||
saveResultsParams.encoding = saveConfig.encoding;
|
||||
}
|
||||
}
|
||||
|
||||
return saveResultsParams;
|
||||
}
|
||||
|
||||
private getParameters(filePath: string, batchIndex: number, resultSetNo: number, format: string, selection: Slick.Range): SaveResultsRequestParams {
|
||||
let saveResultsParams: SaveResultsRequestParams;
|
||||
if (!path.isAbsolute(filePath)) {
|
||||
@@ -268,6 +286,8 @@ export class ResultSerializer {
|
||||
saveResultsParams = this.getConfigForJson();
|
||||
} else if (format === SaveFormat.EXCEL) {
|
||||
saveResultsParams = this.getConfigForExcel();
|
||||
} else if (format === SaveFormat.XML) {
|
||||
saveResultsParams = this.getConfigForXml();
|
||||
}
|
||||
|
||||
saveResultsParams.filePath = this._filePath;
|
||||
|
||||
@@ -57,6 +57,10 @@ export class SaveResultAction extends Action {
|
||||
public static SAVEEXCEL_LABEL = localize('saveAsExcel', 'Save As Excel');
|
||||
public static SAVEEXCEL_ICON = 'saveExcel';
|
||||
|
||||
public static SAVEXML_ID = 'grid.saveAsXml';
|
||||
public static SAVEXML_LABEL = localize('saveAsXml', 'Save As XML');
|
||||
public static SAVEXML_ICON = 'saveXml';
|
||||
|
||||
constructor(
|
||||
id: string,
|
||||
label: string,
|
||||
|
||||
@@ -695,6 +695,7 @@ class GridTable<T> extends Disposable implements IView {
|
||||
new SaveResultAction(SaveResultAction.SAVECSV_ID, SaveResultAction.SAVECSV_LABEL, SaveResultAction.SAVECSV_ICON, SaveFormat.CSV),
|
||||
new SaveResultAction(SaveResultAction.SAVEEXCEL_ID, SaveResultAction.SAVEEXCEL_LABEL, SaveResultAction.SAVEEXCEL_ICON, SaveFormat.EXCEL),
|
||||
new SaveResultAction(SaveResultAction.SAVEJSON_ID, SaveResultAction.SAVEJSON_LABEL, SaveResultAction.SAVEJSON_ICON, SaveFormat.JSON),
|
||||
new SaveResultAction(SaveResultAction.SAVEXML_ID, SaveResultAction.SAVEXML_LABEL, SaveResultAction.SAVEXML_ICON, SaveFormat.XML),
|
||||
this.instantiationService.createInstance(ChartDataAction)
|
||||
);
|
||||
|
||||
@@ -753,6 +754,7 @@ class GridTable<T> extends Disposable implements IView {
|
||||
new SaveResultAction(SaveResultAction.SAVECSV_ID, SaveResultAction.SAVECSV_LABEL, SaveResultAction.SAVECSV_ICON, SaveFormat.CSV),
|
||||
new SaveResultAction(SaveResultAction.SAVEEXCEL_ID, SaveResultAction.SAVEEXCEL_LABEL, SaveResultAction.SAVEEXCEL_ICON, SaveFormat.EXCEL),
|
||||
new SaveResultAction(SaveResultAction.SAVEJSON_ID, SaveResultAction.SAVEJSON_LABEL, SaveResultAction.SAVEJSON_ICON, SaveFormat.JSON),
|
||||
new SaveResultAction(SaveResultAction.SAVEXML_ID, SaveResultAction.SAVEXML_LABEL, SaveResultAction.SAVEXML_ICON, SaveFormat.XML),
|
||||
new Separator(),
|
||||
new CopyResultAction(CopyResultAction.COPY_ID, CopyResultAction.COPY_LABEL, false),
|
||||
new CopyResultAction(CopyResultAction.COPYWITHHEADERS_ID, CopyResultAction.COPYWITHHEADERS_LABEL, true)
|
||||
|
||||
Reference in New Issue
Block a user