Fix for chart names in dropdown select box. (#7642)

* isolated problem involving user friendly names

* Fix to handle horizontalBar

* Working rough version, need to implement data structure to store alternative names later

* consolidated checks into its own static method, data structure still highly recommended to implement

* Version with hashMap implemented

* Moved check for alternative names into chartView

* removed parseOption

* removed space in selectbox

* removed unused import

* removed unused import and spaces

* Fixed formatting

* Added new comment and modified changeToAltNames

* Localization has been added to the Hash

* flxed small formatting issue

* fixed double quotes for nls.localize
This commit is contained in:
Alex Ma
2019-10-11 09:50:23 -07:00
committed by GitHub
parent 613fef5e73
commit 12d824d791
2 changed files with 28 additions and 28 deletions

View File

@@ -25,6 +25,7 @@ import { CreateInsightAction, CopyAction, SaveImageAction, IChartActionContext }
import { Taskbar } from 'sql/base/browser/ui/taskbar/taskbar';
import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox';
import { ChartState, IInsightOptions, ChartType } from 'sql/workbench/parts/charts/common/interfaces';
import * as nls from 'vs/nls';
declare class Proxy {
constructor(object, handler);
@@ -32,6 +33,21 @@ declare class Proxy {
const insightRegistry = Registry.as<IInsightRegistry>(Extensions.InsightContribution);
//Map used to store names and alternative names for chart types.
//This is mainly used for comparison when options are parsed into the constructor.
const altNameHash: { [oldName: string]: string } = {
'horizontalBar': nls.localize('horizontalBarAltName', "Horizontal Bar"),
'bar': nls.localize('barAltName', "Bar"),
'line': nls.localize('lineAltName', "Line"),
'pie': nls.localize('pieAltName', "Pie"),
'scatter': nls.localize('scatterAltName', "Scatter"),
'timeSeries': nls.localize('timeSeriesAltName', "Time Series"),
'image': nls.localize('imageAltName', "Image"),
'count': nls.localize('countAltName', "Count"),
'table': nls.localize('tableAltName', "Table"),
'doughnut': nls.localize('doughnutAltName', "Doughnut")
};
export class ChartView extends Disposable implements IPanelView {
private insight: Insight;
private _queryRunner: QueryRunner;
@@ -116,6 +132,7 @@ export class ChartView extends Disposable implements IPanelView {
}
}) as IInsightOptions;
ChartOptions.general[0].options = insightRegistry.getAllIds();
ChartOptions.general.map(o => {
this.createOption(o, generalControls);
@@ -127,6 +144,14 @@ export class ChartView extends Disposable implements IPanelView {
}
/**
* Function used to generate list of alternative names for use with SelectBox
* @param option - the original option names.
*/
private changeToAltNames(option: string[]): string[] {
return option.map(o => altNameHash[o] || o);
}
public dispose() {
dispose(this.optionDisposables);
super.dispose();
@@ -277,8 +302,8 @@ export class ChartView extends Disposable implements IPanelView {
};
break;
case ControlType.combo:
let dropdown = new SelectBox(option.displayableOptions || option.options, undefined, this._contextViewService);
//pass options into changeAltNames in order for SelectBox to show user-friendly names.
let dropdown = new SelectBox(option.displayableOptions || this.changeToAltNames(option.options), undefined, this._contextViewService);
dropdown.select(option.options.indexOf(value));
dropdown.render(optionContainer);
dropdown.onDidSelect(e => {