Skip to content

Commit 05049d6

Browse files
JamesHollyerdna2github
authored andcommitted
linked time: add start and end value column to data table (tensorflow#5879)
When we launch linked time we will be allowing a range selection. The data table needs to be able to handle range values when in that mode. This change adds the Start Value and End Value columns so the user knows which step is selected for each run.
1 parent 56baedd commit 05049d6

File tree

6 files changed

+45
-0
lines changed

6 files changed

+45
-0
lines changed

tensorboard/webapp/metrics/views/card_renderer/scalar_card_component.ts

+9
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,15 @@ export class ScalarCardComponent<Downloader> {
292292
}
293293
selectedStepData.END_STEP = closestEndPoint.step;
294294
continue;
295+
case ColumnHeaders.START_VALUE:
296+
selectedStepData.START_VALUE = closestStartPoint.value;
297+
continue;
298+
case ColumnHeaders.END_VALUE:
299+
if (!closestEndPoint) {
300+
continue;
301+
}
302+
selectedStepData.END_VALUE = closestEndPoint.value;
303+
continue;
295304
default:
296305
continue;
297306
}

tensorboard/webapp/metrics/views/card_renderer/scalar_card_container.ts

+2
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,8 @@ export class ScalarCardContainer implements CardRenderer, OnInit, OnDestroy {
429429
} else {
430430
headers.push(ColumnHeaders.RUN);
431431
headers.push(ColumnHeaders.VALUE_CHANGE);
432+
headers.push(ColumnHeaders.START_VALUE);
433+
headers.push(ColumnHeaders.END_VALUE);
432434
headers.push(ColumnHeaders.START_STEP);
433435
headers.push(ColumnHeaders.END_STEP);
434436
}

tensorboard/webapp/metrics/views/card_renderer/scalar_card_test.ts

+4
Original file line numberDiff line numberDiff line change
@@ -2510,13 +2510,17 @@ describe('scalar card', () => {
25102510
VALUE_CHANGE: 19,
25112511
START_STEP: 1,
25122512
END_STEP: 3,
2513+
START_VALUE: 1,
2514+
END_VALUE: 20,
25132515
},
25142516
{
25152517
COLOR: '#fff',
25162518
RUN: 'run2',
25172519
VALUE_CHANGE: 24,
25182520
START_STEP: 1,
25192521
END_STEP: 3,
2522+
START_VALUE: 1,
2523+
END_VALUE: 25,
25202524
},
25212525
]);
25222526
}));

tensorboard/webapp/metrics/views/card_renderer/scalar_card_types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ export enum ColumnHeaders {
8787
VALUE_CHANGE = 'VALUE_CHANGE',
8888
START_STEP = 'START_STEP',
8989
END_STEP = 'END_STEP',
90+
START_VALUE = 'START_VALUE',
91+
END_VALUE = 'END_VALUE',
9092
}
9193

9294
/**

tensorboard/webapp/widgets/data_table/data_table_component.ts

+18
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ export class DataTableComponent {
5858
return 'Start Step';
5959
case ColumnHeaders.END_STEP:
6060
return 'End Step';
61+
case ColumnHeaders.START_VALUE:
62+
return 'Start';
63+
case ColumnHeaders.END_VALUE:
64+
return 'End';
6165
default:
6266
return '';
6367
}
@@ -126,6 +130,20 @@ export class DataTableComponent {
126130
return intlNumberFormatter.formatShort(
127131
selectedStepRunData.END_STEP as number
128132
);
133+
case ColumnHeaders.START_VALUE:
134+
if (selectedStepRunData.START_VALUE === undefined) {
135+
return '';
136+
}
137+
return intlNumberFormatter.formatShort(
138+
selectedStepRunData.START_VALUE as number
139+
);
140+
case ColumnHeaders.END_VALUE:
141+
if (selectedStepRunData.END_VALUE === undefined) {
142+
return '';
143+
}
144+
return intlNumberFormatter.formatShort(
145+
selectedStepRunData.END_VALUE as number
146+
);
129147
default:
130148
return '';
131149
}

tensorboard/webapp/widgets/data_table/data_table_test.ts

+10
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ describe('data table', () => {
7474
ColumnHeaders.VALUE_CHANGE,
7575
ColumnHeaders.START_STEP,
7676
ColumnHeaders.END_STEP,
77+
ColumnHeaders.START_VALUE,
78+
ColumnHeaders.END_VALUE,
7779
],
7880
});
7981
fixture.detectChanges();
@@ -88,6 +90,8 @@ describe('data table', () => {
8890
expect(headerElements[5].nativeElement.innerText).toBe('Value Change');
8991
expect(headerElements[6].nativeElement.innerText).toBe('Start Step');
9092
expect(headerElements[7].nativeElement.innerText).toBe('End Step');
93+
expect(headerElements[8].nativeElement.innerText).toBe('Start');
94+
expect(headerElements[9].nativeElement.innerText).toBe('End');
9195
});
9296

9397
it('displays data in order', () => {
@@ -100,6 +104,8 @@ describe('data table', () => {
100104
ColumnHeaders.VALUE_CHANGE,
101105
ColumnHeaders.START_STEP,
102106
ColumnHeaders.END_STEP,
107+
ColumnHeaders.START_VALUE,
108+
ColumnHeaders.END_VALUE,
103109
],
104110
data: [
105111
{
@@ -110,6 +116,8 @@ describe('data table', () => {
110116
VALUE_CHANGE: 20,
111117
START_STEP: 5,
112118
END_STEP: 30,
119+
START_VALUE: 13,
120+
END_VALUE: 23,
113121
},
114122
],
115123
});
@@ -125,6 +133,8 @@ describe('data table', () => {
125133
expect(dataElements[5].nativeElement.innerText).toBe(' 20'); // space before the value is kept for down or up arrow
126134
expect(dataElements[6].nativeElement.innerText).toBe('5');
127135
expect(dataElements[7].nativeElement.innerText).toBe('30');
136+
expect(dataElements[8].nativeElement.innerText).toBe('13');
137+
expect(dataElements[9].nativeElement.innerText).toBe('23');
128138
});
129139

130140
it('displays nothing when no data is available', () => {

0 commit comments

Comments
 (0)