Skip to content

Commit 4bae55c

Browse files
authored
Remove enableHparamsInTimeSeries feature flag (#6758)
The feature has been launched.
1 parent bdfe6a7 commit 4bae55c

20 files changed

+7
-125
lines changed

tensorboard/webapp/feature_flag/store/feature_flag_metadata.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,6 @@ export const FeatureFlagMetadataMap: FeatureFlagMetadataMapType<FeatureFlags> =
115115
queryParamOverride: 'enableScalarColumnContextMenus',
116116
parseValue: parseBoolean,
117117
},
118-
enableHparamsInTimeSeries: {
119-
defaultValue: true,
120-
queryParamOverride: 'enableHparamsInTimeSeries',
121-
parseValue: parseBoolean,
122-
},
123118
enableSuggestedCards: {
124119
defaultValue: false,
125120
queryParamOverride: 'enableSuggestedCards',

tensorboard/webapp/feature_flag/store/feature_flag_selectors.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,3 @@ export const getIsScalarColumnContextMenusEnabled = createSelector(
153153
return flags.enableScalarColumnContextMenus;
154154
}
155155
);
156-
157-
export const getEnableHparamsInTimeSeries = createSelector(
158-
getFeatureFlags,
159-
(flags: FeatureFlags): boolean => {
160-
return flags.enableHparamsInTimeSeries;
161-
}
162-
);

tensorboard/webapp/feature_flag/store/feature_flag_selectors_test.ts

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -365,28 +365,4 @@ describe('feature_flag_selectors', () => {
365365
expect(selectors.getIsMetricsImageSupportEnabled(state)).toEqual(true);
366366
});
367367
});
368-
369-
describe('#getEnableHparamsInTimeSeries', () => {
370-
it('returns true when enableHparamsInTimeSeries is true', () => {
371-
let state = buildState(
372-
buildFeatureFlagState({
373-
defaultFlags: buildFeatureFlag({
374-
enableHparamsInTimeSeries: true,
375-
}),
376-
})
377-
);
378-
expect(selectors.getEnableHparamsInTimeSeries(state)).toBeTrue();
379-
});
380-
381-
it('returns false when enableHparamsInTimeSeries is false', () => {
382-
let state = buildState(
383-
buildFeatureFlagState({
384-
defaultFlags: buildFeatureFlag({
385-
enableHparamsInTimeSeries: false,
386-
}),
387-
})
388-
);
389-
expect(selectors.getEnableHparamsInTimeSeries(state)).toBeFalse();
390-
});
391-
});
392368
});

tensorboard/webapp/feature_flag/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ export interface FeatureFlags {
4747
enableScalarColumnCustomization: boolean;
4848
// Allows users to manipulate Scalar Card Table columns using context menus.
4949
enableScalarColumnContextMenus: boolean;
50-
// Adds hparam columns to the runs table and the scalar card data table.
51-
enableHparamsInTimeSeries: boolean;
5250
// Adds a new section at the top of the time series metrics view
5351
// containing suggested cards based on the users previous interactions.
5452
enableSuggestedCards: boolean;

tensorboard/webapp/feature_flag/views/feature_flag_dialog_test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ describe('feature_flag_dialog_container', () => {
239239
beforeEach(() => {
240240
store.overrideSelector(getDefaultFeatureFlags, {
241241
defaultEnableDarkMode: true,
242-
enableHparamsInTimeSeries: true,
242+
enableSuggestedCards: true,
243243
inColab: false,
244244
forceSvg: true,
245245
} as FeatureFlags);
@@ -277,7 +277,7 @@ describe('feature_flag_dialog_container', () => {
277277
expect(component.querySelectorAll('tr').length).toEqual(3);
278278

279279
store.overrideSelector(getOverriddenFeatureFlags, {
280-
showFlags: 'Hparams',
280+
showFlags: 'Suggested',
281281
});
282282
store.refreshState();
283283
fixture.detectChanges();

tensorboard/webapp/hparams/_redux/hparams_effects.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import {HttpErrorResponse} from '../../webapp_data_source/tb_http_client';
3838
import * as hparamsActions from './hparams_actions';
3939
import {HparamsDataSource} from './hparams_data_source';
4040
import {HparamAndMetricSpec, SessionGroup} from '../types';
41-
import {getEnableHparamsInTimeSeries} from '../../feature_flag/store/feature_flag_selectors';
4241
import {RouteKind} from '../../app_routing/types';
4342

4443
/**
@@ -71,15 +70,9 @@ export class HparamsEffects {
7170
/** @export */
7271
loadHparamsData$ = createEffect(() => {
7372
return merge(this.navigated$, this.loadHparamsOnReload$).pipe(
74-
withLatestFrom(
75-
this.store.select(getEnableHparamsInTimeSeries),
76-
this.store.select(getActiveRoute)
77-
),
78-
filter(
79-
([, getEnableHparamsInTimeSeries]) => getEnableHparamsInTimeSeries
80-
),
73+
withLatestFrom(this.store.select(getActiveRoute)),
8174
filter(
82-
([, , activeRoute]) =>
75+
([, activeRoute]) =>
8376
activeRoute?.routeKind === RouteKind.EXPERIMENT ||
8477
activeRoute?.routeKind === RouteKind.COMPARE_EXPERIMENT
8578
),

tensorboard/webapp/hparams/_redux/hparams_effects_test.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ describe('hparams effects', () => {
111111
effects.loadHparamsData$.subscribe((action) => {
112112
actualActions.push(action);
113113
});
114-
store.overrideSelector(selectors.getEnableHparamsInTimeSeries, true);
115114
store.overrideSelector(selectors.getActiveRoute, {
116115
routeKind: RouteKind.EXPERIMENT,
117116
params: {},
@@ -122,16 +121,6 @@ describe('hparams effects', () => {
122121
store.refreshState();
123122
});
124123

125-
it('does not dispatch requests when enableHparamsInTimeSeries is false', () => {
126-
store.overrideSelector(selectors.getEnableHparamsInTimeSeries, false);
127-
store.refreshState();
128-
129-
action.next(appRoutingActions.navigated({} as any));
130-
expect(dataSource.fetchExperimentInfo).not.toHaveBeenCalled();
131-
expect(dataSource.fetchSessionGroups).not.toHaveBeenCalled();
132-
expect(actualActions).toEqual([]);
133-
});
134-
135124
it('does not dispatch requests when on experiments route', () => {
136125
store.overrideSelector(selectors.getActiveRoute, {
137126
routeKind: RouteKind.EXPERIMENTS,

tensorboard/webapp/metrics/views/card_renderer/scalar_card_component.ng.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,6 @@
200200
[columnCustomizationEnabled]="columnCustomizationEnabled"
201201
[columnContextMenusEnabled]="columnContextMenusEnabled"
202202
[smoothingEnabled]="smoothingEnabled"
203-
[hparamsEnabled]="hparamsEnabled"
204203
[columnFilters]="columnFilters"
205204
[runToHparamMap]="runToHparamMap"
206205
[selectableColumns]="selectableColumns"

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ export class ScalarCardComponent<Downloader> {
112112
@Input() userViewBox!: Extent | null;
113113
@Input() columnHeaders!: ColumnHeader[];
114114
@Input() rangeEnabled!: boolean;
115-
@Input() hparamsEnabled?: boolean;
116115
@Input() columnFilters!: Map<string, DiscreteFilter | IntervalFilter>;
117116
@Input() selectableColumns!: ColumnHeader[];
118117
@Input() runToHparamMap!: RunToHparamMap;

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import {State} from '../../../app_state';
3939
import {ExperimentAlias} from '../../../experiments/types';
4040
import {actions as hparamsActions} from '../../../hparams';
4141
import {
42-
getEnableHparamsInTimeSeries,
4342
getForceSvgFeatureFlag,
4443
getIsScalarColumnContextMenusEnabled,
4544
getIsScalarColumnCustomizationEnabled,
@@ -190,7 +189,6 @@ function areSeriesEqual(
190189
[userViewBox]="userViewBox$ | async"
191190
[columnHeaders]="columnHeaders$ | async"
192191
[rangeEnabled]="rangeEnabled$ | async"
193-
[hparamsEnabled]="hparamsEnabled$ | async"
194192
[columnFilters]="columnFilters$ | async"
195193
[runToHparamMap]="runToHparamMap$ | async"
196194
[selectableColumns]="selectableColumns$ | async"
@@ -515,7 +513,6 @@ export class ScalarCardContainer implements CardRenderer, OnInit, OnDestroy {
515513
}),
516514
combineLatestWith(
517515
this.store.select(getCurrentRouteRunSelection),
518-
this.store.select(getEnableHparamsInTimeSeries),
519516
this.store.select(getFilteredRenderableRunsIds),
520517
this.store.select(getRunColorMap),
521518
this.store.select(getMetricsScalarSmoothing)
@@ -529,7 +526,6 @@ export class ScalarCardContainer implements CardRenderer, OnInit, OnDestroy {
529526
([
530527
namedPartitionedSeries,
531528
runSelectionMap,
532-
hparamsInTimeSeriesEnabled,
533529
renderableRuns,
534530
colorMap,
535531
smoothing,
@@ -558,7 +554,7 @@ export class ScalarCardContainer implements CardRenderer, OnInit, OnDestroy {
558554
visible: Boolean(
559555
runSelectionMap &&
560556
runSelectionMap.get(runId) &&
561-
(!hparamsInTimeSeriesEnabled || renderableRuns.has(runId))
557+
renderableRuns.has(runId)
562558
),
563559
color: colorMap[runId] ?? '#fff',
564560
aux: false,
@@ -616,8 +612,6 @@ export class ScalarCardContainer implements CardRenderer, OnInit, OnDestroy {
616612
getMetricsCardRangeSelectionEnabled(this.cardId)
617613
);
618614

619-
this.hparamsEnabled$ = this.store.select(getEnableHparamsInTimeSeries);
620-
621615
this.runToHparamMap$ = this.store.select(getRunToHparamMap);
622616

623617
this.selectableColumns$ = this.store.select(getSelectableColumns);

tensorboard/webapp/metrics/views/card_renderer/scalar_card_data_table.ng.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
*ngIf="header.enabled && (header.type !== ColumnHeaderType.SMOOTHED || smoothingEnabled)"
3333
[header]="header"
3434
[sortingInfo]="sortingInfo"
35-
[hparamsEnabled]="hparamsEnabled"
3635
[disableContextMenu]="!columnContextMenusEnabled"
3736
></tb-data-table-header-cell> </ng-container
3837
></ng-container>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ export class ScalarCardDataTable {
5959
@Input() columnCustomizationEnabled!: boolean;
6060
@Input() columnContextMenusEnabled!: boolean;
6161
@Input() smoothingEnabled!: boolean;
62-
@Input() hparamsEnabled?: boolean;
6362
@Input() columnFilters!: Map<string, DiscreteFilter | IntervalFilter>;
6463
@Input() selectableColumns!: ColumnHeader[];
6564
@Input() runToHparamMap!: RunToHparamMap;

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

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4005,8 +4005,6 @@ describe('scalar card', () => {
40054005
new Set(['run1'])
40064006
);
40074007

4008-
store.overrideSelector(selectors.getEnableHparamsInTimeSeries, true);
4009-
40104008
store.overrideSelector(
40114009
hparamsSelectors.getDashboardDisplayedHparamColumns,
40124010
[
@@ -4036,7 +4034,7 @@ describe('scalar card', () => {
40364034
});
40374035
});
40384036

4039-
it('filters runs by hparam when enableHparamsInTimeSeries is true', fakeAsync(() => {
4037+
it('filters runs by hparam', fakeAsync(() => {
40404038
const fixture = createComponent('card1');
40414039
const scalarCardDataTable = fixture.debugElement.query(
40424040
By.directive(ScalarCardDataTable)
@@ -4049,21 +4047,6 @@ describe('scalar card', () => {
40494047
expect(data[0].run).toEqual('run1');
40504048
}));
40514049

4052-
it('does not filter runs by hparam when enableHparamsInTimeSeries is false', fakeAsync(() => {
4053-
store.overrideSelector(selectors.getEnableHparamsInTimeSeries, false);
4054-
const fixture = createComponent('card1');
4055-
const scalarCardDataTable = fixture.debugElement.query(
4056-
By.directive(ScalarCardDataTable)
4057-
);
4058-
4059-
const data =
4060-
scalarCardDataTable.componentInstance.getTimeSelectionTableData();
4061-
4062-
expect(data.length).toEqual(2);
4063-
expect(data[0].run).toEqual('run1');
4064-
expect(data[1].run).toEqual('run2');
4065-
}));
4066-
40674050
it('shows hparam values for selected hparam columns', fakeAsync(() => {
40684051
store.overrideSelector(
40694052
commonSelectors.getFilteredRenderableRunsIds,

tensorboard/webapp/metrics/views/metrics_container.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,14 @@ limitations under the License.
1414
==============================================================================*/
1515
import {ChangeDetectionStrategy, Component} from '@angular/core';
1616
import {Store} from '@ngrx/store';
17-
import {getEnableHparamsInTimeSeries} from '../../feature_flag/store/feature_flag_selectors';
1817
import {State} from '../../app_state';
1918
import {getRunsTableFullScreen} from '../../core/store/core_selectors';
2019

2120
@Component({
2221
selector: 'metrics-dashboard',
2322
template: `
2423
<tb-dashboard-layout>
25-
<runs-selector
26-
[showHparamsAndMetrics]="showHparamsAndMetrics$ | async"
27-
sidebar
28-
></runs-selector>
24+
<runs-selector sidebar></runs-selector>
2925
<metrics-main-view
3026
main
3127
*ngIf="!(runsTableFullScreen$ | async)"
@@ -36,7 +32,6 @@ import {getRunsTableFullScreen} from '../../core/store/core_selectors';
3632
changeDetection: ChangeDetectionStrategy.OnPush,
3733
})
3834
export class MetricsDashboardContainer {
39-
showHparamsAndMetrics$ = this.store.select(getEnableHparamsInTimeSeries);
4035
runsTableFullScreen$ = this.store.select(getRunsTableFullScreen);
4136

4237
constructor(readonly store: Store<State>) {}

tensorboard/webapp/metrics/views/metrics_container_test.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import {By} from '@angular/platform-browser';
1818
import {Store} from '@ngrx/store';
1919
import {MockStore} from '@ngrx/store/testing';
2020
import {State} from '../../app_state';
21-
import {getEnableHparamsInTimeSeries} from '../../feature_flag/store/feature_flag_selectors';
2221
import {RunsSelectorContainer} from '../../runs/views/runs_selector/runs_selector_container';
2322
import {provideMockTbStore} from '../../testing/utils';
2423
import {MetricsDashboardContainer} from './metrics_container';
@@ -45,32 +44,11 @@ describe('metrics view', () => {
4544
});
4645

4746
it('renders', () => {
48-
store.overrideSelector(getEnableHparamsInTimeSeries, false);
4947
const fixture = TestBed.createComponent(MetricsDashboardContainer);
5048
fixture.detectChanges();
5149
expect(fixture.debugElement.query(By.css('runs-selector'))).not.toBeNull();
5250
});
5351

54-
it('enables hparamsAndMetrics when enableHparamsInTimeSeries is true', () => {
55-
store.overrideSelector(getEnableHparamsInTimeSeries, true);
56-
const fixture = TestBed.createComponent(MetricsDashboardContainer);
57-
fixture.detectChanges();
58-
expect(
59-
fixture.debugElement.query(By.css('runs-selector')).componentInstance
60-
.showHparamsAndMetrics
61-
).toBeTrue();
62-
});
63-
64-
it('disables hparamsAndMetrics when enableHparamsInTimeSeries is false', () => {
65-
store.overrideSelector(getEnableHparamsInTimeSeries, false);
66-
const fixture = TestBed.createComponent(MetricsDashboardContainer);
67-
fixture.detectChanges();
68-
expect(
69-
fixture.debugElement.query(By.css('runs-selector')).componentInstance
70-
.showHparamsAndMetrics
71-
).toBeFalse();
72-
});
73-
7452
it('hides main view when the runs table is full screen is true', () => {
7553
store.overrideSelector(getRunsTableFullScreen, true);
7654
const fixture = TestBed.createComponent(MetricsDashboardContainer);

tensorboard/webapp/runs/views/runs_selector/runs_selector_component.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import {RunsTableColumn} from '../runs_table/types';
2121
<runs-table
2222
[columns]="columns"
2323
[experimentIds]="experimentIds"
24-
[showHparamsAndMetrics]="showHparamsAndMetrics"
2524
></runs-table>
2625
`,
2726
styles: [
@@ -35,6 +34,5 @@ import {RunsTableColumn} from '../runs_table/types';
3534
})
3635
export class RunsSelectorComponent {
3736
@Input() experimentIds!: string[];
38-
@Input() showHparamsAndMetrics?: boolean;
3937
@Input() columns!: RunsTableColumn[];
4038
}

tensorboard/webapp/runs/views/runs_selector/runs_selector_container.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,11 @@ import {RunsTableColumn} from '../runs_table/types';
2525
<runs-selector-component
2626
[experimentIds]="experimentIds$ | async"
2727
[columns]="columns$ | async"
28-
[showHparamsAndMetrics]="showHparamsAndMetrics"
2928
></runs-selector-component>
3029
`,
3130
changeDetection: ChangeDetectionStrategy.OnPush,
3231
})
3332
export class RunsSelectorContainer {
34-
@Input() showHparamsAndMetrics?: boolean;
35-
3633
readonly experimentIds$ = this.store
3734
.select(getExperimentIdsFromRoute)
3835
.pipe(map((experimentIdsOrNull) => experimentIdsOrNull ?? []));

tensorboard/webapp/runs/views/runs_table/runs_data_table.ng.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
<tb-data-table-header-cell
4343
[header]="header"
4444
[sortingInfo]="sortingInfo"
45-
[hparamsEnabled]="true"
4645
[ngClass]="['table-column-' + header.name]"
4746
>
4847
<ng-container [ngSwitch]="header.name">

tensorboard/webapp/runs/views/runs_table/runs_table_container.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,6 @@ export class RunsTableContainer implements OnInit, OnDestroy {
138138
columns: RunsTableColumn[] = [RunsTableColumn.RUN_NAME];
139139

140140
@Input() experimentIds!: string[];
141-
@Input() showHparamsAndMetrics = false;
142141

143142
regexFilter$ = this.store.select(getRunSelectorRegexFilter);
144143
runsColumns$ = this.store.select(getGroupedRunsTableHeaders);

tensorboard/webapp/widgets/data_table/header_cell_component.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import {BehaviorSubject} from 'rxjs';
3333
export class HeaderCellComponent {
3434
@Input() header!: ColumnHeader;
3535
@Input() sortingInfo!: SortingInfo;
36-
@Input() hparamsEnabled?: boolean = false;
3736
@Input() disableContextMenu?: boolean = false;
3837

3938
@Output() dragStart = new EventEmitter<ColumnHeader>();

0 commit comments

Comments
 (0)