Skip to content

Commit e257111

Browse files
mvgalievignatvilesov
authored andcommitted
added localization strings (#110)
1 parent 402c7ab commit e257111

File tree

5 files changed

+61
-30
lines changed

5 files changed

+61
-30
lines changed

capabilities.json

+5
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,7 @@
384384
"displayName": "Legend",
385385
"displayNameKey": "Visual_Legend",
386386
"description": "Display legend options",
387+
"descriptionKey": "Visual_Description_Legend",
387388
"properties": {
388389
"show": {
389390
"displayName": "Show",
@@ -396,6 +397,7 @@
396397
"displayName": "Position",
397398
"displayNameKey": "Visual_Position",
398399
"description": "Select the location for the legend",
400+
"descriptionKey": "Visual_Description_Position",
399401
"type": {
400402
"enumeration": [
401403
{
@@ -445,6 +447,7 @@
445447
"displayName": "Title",
446448
"displayNameKey": "Visual_Title",
447449
"description": "Display a title for legend symbols",
450+
"descriptionKey": "Visual_Description_Title",
448451
"type": {
449452
"bool": true
450453
}
@@ -453,6 +456,7 @@
453456
"displayName": "Legend Name",
454457
"displayNameKey": "Visual_LegendName",
455458
"description": "Title text",
459+
"descriptionKey": "Visual_Description_LegendName",
456460
"type": {
457461
"text": true
458462
},
@@ -574,6 +578,7 @@
574578
"displayName": "Task color",
575579
"displayNameKey": "Visual_TaskSettings_Color",
576580
"description": "This ONLY takes effect when you have no legend specified",
581+
"descriptionKey": "Visual_Description_TaskSettings_Color",
577582
"type": {
578583
"fill": {
579584
"solid": {

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@
5959
"karma-sourcemap-loader": "0.3.7",
6060
"karma-typescript-preprocessor": "0.3.1",
6161
"powerbi-models": "^1.0.2",
62-
"powerbi-visuals-tools": "1.11.0",
63-
"powerbi-visuals-utils-testutils": "1.2.0",
62+
"powerbi-visuals-tools": "1.11.2",
63+
"powerbi-visuals-utils-testutils": "1.2.1",
6464
"tslint": "4.5.1",
6565
"tslint-microsoft-contrib": "4.0.1",
6666
"typescript": "2.1.4"

src/gantt.ts

+38-26
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ module powerbi.extensibility.visual {
386386
private interactivityService: IInteractivityService;
387387
private tooltipServiceWrapper: ITooltipServiceWrapper;
388388
private host: IVisualHost;
389+
private localizationManager: ILocalizationManager;
389390
private isInteractiveChart: boolean = false;
390391
private groupTasksPrevValue: boolean = false;
391392
private collapsedTasks: string[] = [];
@@ -396,6 +397,7 @@ module powerbi.extensibility.visual {
396397

397398
private init(options: VisualConstructorOptions): void {
398399
this.host = options.host;
400+
this.localizationManager = this.host.createLocalizationManager();
399401
this.colors = options.host.colorPalette;
400402
this.selectionManager = options.host.createSelectionManager();
401403
this.body = d3.select(options.element);
@@ -555,45 +557,52 @@ module powerbi.extensibility.visual {
555557
public static getTooltipInfo(
556558
task: Task,
557559
formatters: GanttChartFormatters,
558-
durationUnit: string): VisualTooltipDataItem[] {
560+
durationUnit: string,
561+
localizationManager: ILocalizationManager): VisualTooltipDataItem[] {
559562

560563
let tooltipDataArray: VisualTooltipDataItem[] = [];
561-
const durationLabel: string = Gantt.generateLabelForDuration(task.duration, durationUnit);
564+
const durationLabel: string = Gantt.generateLabelForDuration(task.duration, durationUnit, localizationManager);
562565
if (task.taskType) {
563-
tooltipDataArray.push({ displayName: "Legend", value: task.taskType });
566+
tooltipDataArray.push({
567+
displayName: localizationManager.getDisplayName("Role_Legend"),
568+
value: task.taskType
569+
});
564570
}
565571

566572
tooltipDataArray.push({
567-
displayName: "Task",
573+
displayName: localizationManager.getDisplayName("Role_Task"),
568574
value: task.name
569575
});
570576

571577
if (!isNaN(task.start.getDate())) {
572578
tooltipDataArray.push({
573-
displayName: "Start Date",
579+
displayName: localizationManager.getDisplayName("Role_StartDate"),
574580
value: formatters.startDateFormatter.format(task.start)
575581
});
576582

577583
tooltipDataArray.push({
578-
displayName: "End Date",
584+
displayName: localizationManager.getDisplayName("Role_EndDate"),
579585
value: formatters.startDateFormatter.format(task.end)
580586
});
581587
}
582588

583589
tooltipDataArray.push({
584-
displayName: "Duration",
590+
displayName: localizationManager.getDisplayName("Role_Duration"),
585591
value: durationLabel
586592
});
587593

588594
if (task.completion) {
589595
tooltipDataArray.push({
590-
displayName: "Completion",
596+
displayName: localizationManager.getDisplayName("Role_Completion"),
591597
value: formatters.completionFormatter.format(task.completion)
592598
});
593599
}
594600

595601
if (task.resource) {
596-
tooltipDataArray.push({ displayName: "Resource", value: task.resource });
602+
tooltipDataArray.push({
603+
displayName: localizationManager.getDisplayName("Role_Resource"),
604+
value: task.resource
605+
});
597606
}
598607

599608
if (task.tooltipInfo && task.tooltipInfo.length) {
@@ -740,7 +749,8 @@ module powerbi.extensibility.visual {
740749
formatters: GanttChartFormatters,
741750
colors: IColorPalette,
742751
settings: GanttSettings,
743-
taskColor: string): Task[] {
752+
taskColor: string,
753+
localizationManager: ILocalizationManager): Task[] {
744754

745755
let tasks: Task[] = [];
746756
const colorHelper: ColorHelper = new ColorHelper(colors, Gantt.LegendPropertyIdentifier);
@@ -902,7 +912,7 @@ module powerbi.extensibility.visual {
902912
}
903913

904914
tasks.forEach((task: Task) => {
905-
task.tooltipInfo = Gantt.getTooltipInfo(task, formatters, durationUnit);
915+
task.tooltipInfo = Gantt.getTooltipInfo(task, formatters, durationUnit, localizationManager);
906916
});
907917

908918
return tasks;
@@ -1133,7 +1143,8 @@ module powerbi.extensibility.visual {
11331143
*/
11341144
private static generateLabelForDuration(
11351145
duration: number,
1136-
durationUnit: string | DurationUnits): string {
1146+
durationUnit: string | DurationUnits,
1147+
localizationManager: ILocalizationManager): string {
11371148

11381149
let oneDayDuration: number = HoursInADay;
11391150
let oneHourDuration: number = MinutesInAHour;
@@ -1154,36 +1165,36 @@ module powerbi.extensibility.visual {
11541165

11551166
let label: string = "";
11561167
const days: number = Math.floor(duration / oneDayDuration);
1157-
label += days ? `${days} Days ` : ``;
1168+
label += days ? `${days} ${localizationManager.getDisplayName("Visual_DurationUnit_Days")} ` : ``;
11581169
if (durationUnit === DurationUnits.Day) {
1159-
return `${duration} Days `;
1170+
return `${duration} ${localizationManager.getDisplayName("Visual_DurationUnit_Days")} `;
11601171
}
11611172

11621173
let timeDelta: number = days * oneDayDuration;
11631174
const hours: number = Math.floor((duration - timeDelta) / oneHourDuration);
1164-
label += hours ? `${hours} Hours ` : ``;
1175+
label += hours ? `${hours} ${localizationManager.getDisplayName("Visual_DurationUnit_Hours")} ` : ``;
11651176
if (durationUnit === DurationUnits.Hour) {
11661177
return duration >= 24
11671178
? label
1168-
: `${duration} Hours`;
1179+
: `${duration} ${localizationManager.getDisplayName("Visual_DurationUnit_Hours")}`;
11691180
}
11701181

11711182
timeDelta = (days * oneDayDuration) + (hours * oneHourDuration);
11721183
const minutes: number = Math.floor((duration - timeDelta) / oneMinuteDuration);
1173-
label += minutes ? `${minutes} Minutes ` : ``;
1184+
label += minutes ? `${minutes} ${localizationManager.getDisplayName("Visual_DurationUnit_Minutes")} ` : ``;
11741185
if (durationUnit === DurationUnits.Minute) {
11751186
return duration >= 60
11761187
? label
1177-
: `${duration} Minutes `;
1188+
: `${duration} ${localizationManager.getDisplayName("Visual_DurationUnit_Minutes")} `;
11781189
}
11791190

11801191
timeDelta = (days * oneDayDuration) + (hours * oneHourDuration) + (minutes * oneMinuteDuration);
11811192
const seconds: number = Math.floor(duration - timeDelta);
1182-
label += seconds ? `${seconds} Seconds ` : ``;
1193+
label += seconds ? `${seconds} ${localizationManager.getDisplayName("Visual_DurationUnit_Seconds")} ` : ``;
11831194
if (durationUnit === DurationUnits.Second) {
11841195
return duration >= 60
11851196
? label
1186-
: `${duration} Seconds `;
1197+
: `${duration} ${localizationManager.getDisplayName("Visual_DurationUnit_Seconds")} `;
11871198
}
11881199
}
11891200

@@ -1196,7 +1207,8 @@ module powerbi.extensibility.visual {
11961207
public static converter(
11971208
dataView: DataView,
11981209
host: IVisualHost,
1199-
colors: IColorPalette): GanttViewModel {
1210+
colors: IColorPalette,
1211+
localizationManager: ILocalizationManager): GanttViewModel {
12001212

12011213
if (!dataView
12021214
|| !dataView.categorical
@@ -1221,7 +1233,7 @@ module powerbi.extensibility.visual {
12211233
? settings.taskConfig.fill
12221234
: null;
12231235

1224-
const tasks: Task[] = Gantt.createTasks(dataView, taskTypes, host, formatters, colors, settings, taskColor);
1236+
const tasks: Task[] = Gantt.createTasks(dataView, taskTypes, host, formatters, colors, settings, taskColor, localizationManager);
12251237

12261238
// Remove empty legend if tasks isn't exist
12271239
const types = _.groupBy(tasks, x => x.taskType);
@@ -1349,7 +1361,7 @@ module powerbi.extensibility.visual {
13491361
return;
13501362
}
13511363

1352-
this.viewModel = Gantt.converter(options.dataViews[0], this.host, this.colors);
1364+
this.viewModel = Gantt.converter(options.dataViews[0], this.host, this.colors, this.localizationManager);
13531365
if (!this.viewModel || !this.viewModel.tasks || this.viewModel.tasks.length <= 0) {
13541366
this.clearViewport();
13551367
return;
@@ -1473,7 +1485,7 @@ module powerbi.extensibility.visual {
14731485

14741486
let dataTypeDatetime: ValueType = ValueType.fromPrimitiveTypeAndCategory(PrimitiveType.Date);
14751487
let category: DataViewMetadataColumn = {
1476-
displayName: "Start Date",
1488+
displayName: this.localizationManager.getDisplayName("Role_StartDate"),
14771489
queryName: GanttRoles.StartDate,
14781490
type: dataTypeDatetime,
14791491
index: 0
@@ -2153,11 +2165,11 @@ module powerbi.extensibility.visual {
21532165
case DateTypes.Second:
21542166
case DateTypes.Minute:
21552167
case DateTypes.Hour:
2156-
milestoneTitle = LabelsForDateTypes.Now;
2168+
milestoneTitle = this.localizationManager.getDisplayName("Visual_Label_Now");
21572169
dateTime = new Date(timestamp).toLocaleString();
21582170
break;
21592171
default:
2160-
milestoneTitle = LabelsForDateTypes.Today;
2172+
milestoneTitle = this.localizationManager.getDisplayName("Visual_Label_Today");
21612173
}
21622174
}
21632175

stringResources/en-US/resources.resjson

+14-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"Role_Legend": "Legend",
33
"Role_Task": "Task",
44
"Role_StartDate": "Start Date",
5+
"Role_EndDate": "End Date",
56
"Role_Duration": "Duration",
67
"Role_Completion": "% Completion",
78
"Role_Resource": "Resource",
@@ -67,5 +68,17 @@
6768
"Visual_DurationUnit_Hours": "Hours",
6869
"Visual_DurationUnit_Minutes": "Minutes",
6970
"Visual_DurationUnit_Seconds": "Seconds",
70-
"Visual_DurationMinimum": "Duration min"
71+
"Visual_DurationMinimum": "Duration min",
72+
"Role_Parent": "Parent",
73+
"Visual_SubTasks": "Sub tasks",
74+
"Visual_InheritParentLegend": "Inherit parent legend",
75+
"Visual_ParentDurationByChildren": "Parent duration by children",
76+
"Visual_ParentCompletionByChildren": "Parent completion by children",
77+
"Visual_Description_Legend": "Display legend options",
78+
"Visual_Description_Position": "Select the location for the legend",
79+
"Visual_Description_Title": "Display a title for legend symbols",
80+
"Visual_Description_LegendName": "Title text",
81+
"Visual_Description_TaskSettings_Color": "This ONLY takes effect when you have no legend specified",
82+
"Visual_Label_Today": "Today",
83+
"Visual_Label_Now": "Now"
7184
}

test/visualTest.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -424,8 +424,9 @@ module powerbi.extensibility.visual.test {
424424
startDateFormatter: jasmine.createSpyObj("startDateFormatter", ["format"]),
425425
completionFormatter: jasmine.createSpyObj("completionFormatter", ["format"])
426426
};
427+
const localizationManager = visualBuilder.visualHost.createLocalizationManager();
427428

428-
const tooltips = VisualClass.getTooltipInfo(task, formatters, durationUnit);
429+
const tooltips = VisualClass.getTooltipInfo(task, formatters, durationUnit, localizationManager);
429430
tooltips
430431
.filter(t => t.value !== null && t.value !== undefined)
431432
.forEach(t => {

0 commit comments

Comments
 (0)