Skip to content

Commit 4f5598b

Browse files
authored
Linked Time: Enable range selection when linked time is enabled while linked time selection has an end value (#6264)
## Motivation for features / changes Linked time is supposed to make all cards mirror the state of the card most recently interacted with. Because cards can have range selection enabled locally we need to ensure the global value gets updated when linked time is enabled. ## Technical description of changes I updated the linked time toggled reducer to enable range selection globally if the linked time selection has an end value. For Googlers: [internal tests all pass](https://fusion2.corp.google.com/presubmit/tap/518701168/OCL:518701168:BASE:518705279:1679528159833:1e20cf2f/targets) ## Screenshots of UI changes ![7574630a-d08f-45da-a499-d686cf12fa8c](https://user-images.githubusercontent.com/78179109/227060003-23373aeb-0fe0-4864-8ae2-ed73ceac6c63.gif) ## Detailed steps to verify changes work correctly (as executed by you) See gif 1) Start tensorboard 2) Navigate to localhost:6006 3) Ensure global step selection is disabled 4) Add two fobs to a scalar card 5) Enable linked time 6) Ensure range selection is enabled globally
1 parent 73f1609 commit 4f5598b

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

tensorboard/webapp/metrics/store/metrics_reducers.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,7 @@ const reducer = createReducer(
10461046
let nextCardStepIndexMap = {...state.cardStepIndex};
10471047
let nextLinkedTimeSelection = state.linkedTimeSelection;
10481048
let nextStepSelectorEnabled = state.stepSelectorEnabled;
1049+
let nextRangeSelectionEnabled = state.rangeSelectionEnabled;
10491050

10501051
// Updates cardStepIndex only when toggle to enable linked time.
10511052
if (nextLinkedTimeEnabled) {
@@ -1055,6 +1056,7 @@ const reducer = createReducer(
10551056
start: {step: startStep},
10561057
end: null,
10571058
};
1059+
10581060
nextCardStepIndexMap = generateNextCardStepIndexFromLinkedTimeSelection(
10591061
state.cardStepIndex,
10601062
state.cardMetadataMap,
@@ -1063,6 +1065,7 @@ const reducer = createReducer(
10631065
);
10641066

10651067
nextStepSelectorEnabled = nextLinkedTimeEnabled;
1068+
nextRangeSelectionEnabled = Boolean(nextLinkedTimeSelection.end);
10661069
}
10671070

10681071
return {
@@ -1071,6 +1074,7 @@ const reducer = createReducer(
10711074
linkedTimeEnabled: nextLinkedTimeEnabled,
10721075
linkedTimeSelection: nextLinkedTimeSelection,
10731076
stepSelectorEnabled: nextStepSelectorEnabled,
1077+
rangeSelectionEnabled: nextRangeSelectionEnabled,
10741078
};
10751079
}),
10761080
on(actions.rangeSelectionToggled, (state) => {

tensorboard/webapp/metrics/store/metrics_reducers_test.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3551,6 +3551,18 @@ describe('metrics reducers', () => {
35513551
expect(state2.linkedTimeEnabled).toBe(false);
35523552
});
35533553

3554+
it('keeps rangeSelection when linkedTime is disabled', () => {
3555+
const state1 = buildMetricsState({
3556+
rangeSelectionEnabled: true,
3557+
stepSelectorEnabled: true,
3558+
linkedTimeEnabled: true,
3559+
});
3560+
3561+
const state2 = reducers(state1, actions.linkedTimeToggled({}));
3562+
expect(state2.rangeSelectionEnabled).toBe(true);
3563+
expect(state2.linkedTimeEnabled).toBe(false);
3564+
});
3565+
35543566
it('sets cardStepIndex to step 0 when linkedTimeSelection is null before toggling', () => {
35553567
const state1 = buildMetricsState({
35563568
linkedTimeEnabled: false,
@@ -3690,6 +3702,38 @@ describe('metrics reducers', () => {
36903702
end: null,
36913703
});
36923704
});
3705+
3706+
it('enables rangeSelection if linkedTimeSelection has an end step', () => {
3707+
const state1 = buildMetricsState({
3708+
stepSelectorEnabled: true,
3709+
rangeSelectionEnabled: false,
3710+
linkedTimeEnabled: false,
3711+
linkedTimeSelection: {
3712+
start: {step: 5},
3713+
end: {step: 10},
3714+
},
3715+
});
3716+
3717+
const state2 = reducers(state1, actions.linkedTimeToggled({}));
3718+
expect(state2.rangeSelectionEnabled).toBeTrue();
3719+
expect(state2.linkedTimeEnabled).toBeTrue();
3720+
});
3721+
3722+
it('does not enable rangeSelection if linkedTimeSelection does not have an end step', () => {
3723+
const state1 = buildMetricsState({
3724+
stepSelectorEnabled: true,
3725+
rangeSelectionEnabled: false,
3726+
linkedTimeEnabled: false,
3727+
linkedTimeSelection: {
3728+
start: {step: 5},
3729+
end: null,
3730+
},
3731+
});
3732+
3733+
const state2 = reducers(state1, actions.linkedTimeToggled({}));
3734+
expect(state2.linkedTimeEnabled).toBeTrue();
3735+
expect(state2.rangeSelectionEnabled).toBeFalse();
3736+
});
36933737
});
36943738
});
36953739

0 commit comments

Comments
 (0)