Skip to content

Commit 5193930

Browse files
authored
Merge pull request #498 from newrelic/more_permalink_values
fix: additional urlState values for permalink generation
2 parents fe65b9b + e696265 commit 5193930

File tree

4 files changed

+58
-16
lines changed

4 files changed

+58
-16
lines changed

nerdlets/home/index.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,24 @@ const HomeNerdlet = () => {
199199
});
200200

201201
const flowClickHandler = useCallback(
202-
(id) => setNerdletState({ flow: { id } }),
202+
(id) =>
203+
setNerdletState({
204+
flow: { id },
205+
isPlayback: false,
206+
signalExpandOption: 0,
207+
playbackTimeRange: null,
208+
playbackIncrement: null,
209+
}),
203210
[]
204211
);
205212

206213
const backToFlowsHandler = useCallback(() => {
207214
setNerdletState({
208215
flow: {},
216+
isPlayback: false,
217+
signalExpandOption: 0,
218+
playbackTimeRange: null,
219+
playbackIncrement: null,
209220
mode: MODES.INLINE,
210221
});
211222
flowsRefetch?.();

src/components/flow/index.js

+11-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import React, {
1010
} from 'react';
1111
import PropTypes from 'prop-types';
1212

13-
import { Spinner } from 'nr1';
13+
import { Spinner, useNerdletState } from 'nr1';
1414

1515
import {
1616
KpiBar,
@@ -77,6 +77,7 @@ const Flow = forwardRef(
7777
const { debugLogJson } = useDebugLogger({ allowDebug: debugMode });
7878
const stagesRef = useRef();
7979
const flowIdRef = useRef();
80+
const [nerdletState, setNerdletState] = useNerdletState();
8081

8182
useEffect(() => {
8283
dispatch({
@@ -111,6 +112,10 @@ const Flow = forwardRef(
111112
});
112113
}, [isAuditLogShown, flowDoc]);
113114

115+
useEffect(() => {
116+
setIsPlayback(nerdletState.isPlayback);
117+
}, [nerdletState.isPlayback]);
118+
114119
const saveFlow = useCallback(
115120
async (document) => {
116121
setLastSavedTimestamp(0);
@@ -177,7 +182,11 @@ const Flow = forwardRef(
177182
onClose?.();
178183
}, [flowWriter, onClose]);
179184

180-
const togglePlayback = useCallback(() => setIsPlayback((p) => !p), []);
185+
const togglePlayback = useCallback(() => {
186+
setNerdletState((prevState) => {
187+
return { isPlayback: !prevState.isPlayback };
188+
});
189+
}, []);
181190

182191
const togglePreview = () => {
183192
if (isPreview && mode !== MODES.EDIT) setMode(MODES.EDIT);

src/components/playback-bar/index.js

+19-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useCallback, useEffect, useRef, useState } from 'react';
22
import PropTypes from 'prop-types';
33

4-
import { Button, Dropdown, DropdownItem, Icon } from 'nr1';
4+
import { Button, Dropdown, DropdownItem, Icon, useNerdletState } from 'nr1';
55

66
import { TimeRangePicker } from '@newrelic/nr-labs-components';
77
import { uuid } from '../../utils';
@@ -78,6 +78,7 @@ const PlaybackBar = ({ isLoading, onPreload, onSeek, onChange }) => {
7878
const seekDragStartX = useRef(0);
7979
const isMouseDownOnSeeker = useRef(false);
8080
const showingTimeWindow = useRef({ start: 0, end: 0 });
81+
const [nerdletState, setNerdletState] = useNerdletState();
8182

8283
const loadDataCache = useCallback(async (tbs) => {
8384
if (!onPreload) return;
@@ -125,12 +126,24 @@ const PlaybackBar = ({ isLoading, onPreload, onSeek, onChange }) => {
125126
}, []);
126127

127128
const timeRangeChangeHandler = useCallback((selectedTimeRange) => {
128-
setTimeRange(selectedTimeRange);
129-
setSelectedIncrement(
130-
playbackIncrementForSelectedDuration(selectedTimeRange)
131-
);
129+
setNerdletState({
130+
playbackTimeRange: selectedTimeRange,
131+
playbackIncrement:
132+
playbackIncrementForSelectedDuration(selectedTimeRange),
133+
});
132134
}, []);
133135

136+
useEffect(() => {
137+
if (nerdletState.playbackTimeRange) {
138+
setTimeRange(nerdletState.playbackTimeRange);
139+
setSelectedIncrement(
140+
nerdletState.playbackIncrement
141+
? nerdletState.playbackIncrement
142+
: playbackIncrementForSelectedDuration(nerdletState.playbackTimeRange)
143+
);
144+
}
145+
}, [nerdletState.playbackTimeRange]);
146+
134147
useEffect(() => {
135148
const mouseUpHandler = () => {
136149
isMouseDownOnSeeker.current = false;
@@ -293,7 +306,7 @@ const PlaybackBar = ({ isLoading, onPreload, onSeek, onChange }) => {
293306
<DropdownItem
294307
key={item.timeInSeconds}
295308
disabled={isPlaybackIncrementDisabled(item, timeRange)}
296-
onClick={() => setSelectedIncrement(item)}
309+
onClick={() => setNerdletState({ playbackIncrement: item })}
297310
>
298311
{item.display}
299312
</DropdownItem>

src/components/stages/index.js

+16-7
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,10 @@ const Stages = forwardRef(
397397
}
398398
}, [nerdletState.staging]);
399399

400+
useEffect(() => {
401+
setSignalExpandOption(nerdletState.signalExpandOption);
402+
}, [nerdletState.signalExpandOption]);
403+
400404
useEffect(() => {
401405
if (selections.type === COMPONENTS.SIGNAL && selections.id) {
402406
openSidebar({
@@ -670,9 +674,10 @@ const Stages = forwardRef(
670674
}
671675
label="Unhealthy only"
672676
onChange={() =>
673-
setSignalExpandOption(
674-
(seo) => seo ^ SIGNAL_EXPAND.UNHEALTHY_ONLY
675-
)
677+
setNerdletState({
678+
signalExpandOption:
679+
signalExpandOption ^ SIGNAL_EXPAND.UNHEALTHY_ONLY,
680+
})
676681
}
677682
/>
678683
<Switch
@@ -681,9 +686,10 @@ const Stages = forwardRef(
681686
}
682687
label="Critical only"
683688
onChange={() =>
684-
setSignalExpandOption(
685-
(seo) => seo ^ SIGNAL_EXPAND.CRITICAL_ONLY
686-
)
689+
setNerdletState({
690+
signalExpandOption:
691+
signalExpandOption ^ SIGNAL_EXPAND.CRITICAL_ONLY,
692+
})
687693
}
688694
/>
689695
</>
@@ -693,7 +699,10 @@ const Stages = forwardRef(
693699
checked={signalExpandOption & SIGNAL_EXPAND.ALL}
694700
label="Expand all steps"
695701
onChange={() =>
696-
setSignalExpandOption((seo) => seo ^ SIGNAL_EXPAND.ALL)
702+
setNerdletState({
703+
signalExpandOption:
704+
signalExpandOption ^ SIGNAL_EXPAND.ALL,
705+
})
697706
}
698707
/>
699708
)}

0 commit comments

Comments
 (0)