Skip to content

Commit 32dc074

Browse files
author
oatkiller
committed
Hide the Timeline footer, in the event viewer, if Resolver is showing
1 parent 4db5816 commit 32dc074

File tree

2 files changed

+36
-18
lines changed

2 files changed

+36
-18
lines changed

x-pack/plugins/security_solution/public/common/components/events_viewer/events_viewer.tsx

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import {
3434
} from '../../../../../../../src/plugins/data/public';
3535
import { inputsModel } from '../../store';
3636
import { useManageTimeline } from '../../../timelines/components/manage_timeline';
37+
import { showGraphView } from '../../../timelines/components/timeline/body/helpers';
3738

3839
const DEFAULT_EVENTS_VIEWER_HEIGHT = 500;
3940

@@ -67,6 +68,8 @@ interface Props {
6768
sort: Sort;
6869
toggleColumn: (column: ColumnHeaderOptions) => void;
6970
utilityBar?: (refetch: inputsModel.Refetch, totalCount: number) => React.ReactNode;
71+
// If truthy, the graph viewer (Resolver) is showing
72+
graphEventId: string | undefined;
7073
}
7174

7275
const EventsViewerComponent: React.FC<Props> = ({
@@ -90,6 +93,7 @@ const EventsViewerComponent: React.FC<Props> = ({
9093
sort,
9194
toggleColumn,
9295
utilityBar,
96+
graphEventId,
9397
}) => {
9498
const columnsHeader = isEmpty(columns) ? defaultHeaders : columns;
9599
const kibana = useKibana();
@@ -191,22 +195,27 @@ const EventsViewerComponent: React.FC<Props> = ({
191195
toggleColumn={toggleColumn}
192196
/>
193197

194-
<Footer
195-
getUpdatedAt={getUpdatedAt}
196-
hasNextPage={getOr(false, 'hasNextPage', pageInfo)!}
197-
height={footerHeight}
198-
id={id}
199-
isLive={isLive}
200-
isLoading={loading}
201-
itemsCount={events.length}
202-
itemsPerPage={itemsPerPage}
203-
itemsPerPageOptions={itemsPerPageOptions}
204-
onChangeItemsPerPage={onChangeItemsPerPage}
205-
onLoadMore={loadMore}
206-
nextCursor={getOr(null, 'endCursor.value', pageInfo)!}
207-
serverSideEventCount={totalCountMinusDeleted}
208-
tieBreaker={getOr(null, 'endCursor.tiebreaker', pageInfo)}
209-
/>
198+
{
199+
/** Hide the footer if Resolver is showing. */
200+
!showGraphView(graphEventId) && (
201+
<Footer
202+
getUpdatedAt={getUpdatedAt}
203+
hasNextPage={getOr(false, 'hasNextPage', pageInfo)!}
204+
height={footerHeight}
205+
id={id}
206+
isLive={isLive}
207+
isLoading={loading}
208+
itemsCount={events.length}
209+
itemsPerPage={itemsPerPage}
210+
itemsPerPageOptions={itemsPerPageOptions}
211+
onChangeItemsPerPage={onChangeItemsPerPage}
212+
onLoadMore={loadMore}
213+
nextCursor={getOr(null, 'endCursor.value', pageInfo)!}
214+
serverSideEventCount={totalCountMinusDeleted}
215+
tieBreaker={getOr(null, 'endCursor.tiebreaker', pageInfo)}
216+
/>
217+
)
218+
}
210219
</EventsContainerLoading>
211220
</>
212221
);
@@ -237,5 +246,6 @@ export const EventsViewer = React.memo(
237246
deepEqual(prevProps.query, nextProps.query) &&
238247
prevProps.start === nextProps.start &&
239248
prevProps.sort === nextProps.sort &&
240-
prevProps.utilityBar === nextProps.utilityBar
249+
prevProps.utilityBar === nextProps.utilityBar &&
250+
prevProps.graphEventId === nextProps.graphEventId
241251
);

x-pack/plugins/security_solution/public/common/components/events_viewer/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ const StatefulEventsViewerComponent: React.FC<Props> = ({
6262
updateItemsPerPage,
6363
upsertColumn,
6464
utilityBar,
65+
// If truthy, the graph viewer (Resolver) is showing
66+
graphEventId,
6567
}) => {
6668
const [{ browserFields, indexPatterns }] = useFetchIndexPatterns(
6769
defaultIndices ?? useUiSetting<string[]>(DEFAULT_INDEX_KEY)
@@ -135,6 +137,7 @@ const StatefulEventsViewerComponent: React.FC<Props> = ({
135137
sort={sort}
136138
toggleColumn={toggleColumn}
137139
utilityBar={utilityBar}
140+
graphEventId={graphEventId}
138141
/>
139142
</InspectButtonContainer>
140143
);
@@ -145,7 +148,9 @@ const makeMapStateToProps = () => {
145148
const getGlobalQuerySelector = inputsSelectors.globalQuerySelector();
146149
const getGlobalFiltersQuerySelector = inputsSelectors.globalFiltersQuerySelector();
147150
const getEvents = timelineSelectors.getEventsByIdSelector();
151+
const getTimeline = timelineSelectors.getTimelineByIdSelector();
148152
const mapStateToProps = (state: State, { id, defaultModel }: OwnProps) => {
153+
const { graphEventId } = getTimeline(state, id);
149154
const input: inputsModel.InputsRange = getInputsTimeline(state);
150155
const events: TimelineModel = getEvents(state, id) ?? defaultModel;
151156
const {
@@ -174,6 +179,8 @@ const makeMapStateToProps = () => {
174179
query: getGlobalQuerySelector(state),
175180
sort,
176181
showCheckboxes,
182+
// Used to determine whether the footer should show (since it is hidden if the graph is showing.)
183+
graphEventId,
177184
};
178185
};
179186
return mapStateToProps;
@@ -213,6 +220,7 @@ export const StatefulEventsViewer = connector(
213220
deepEqual(prevProps.pageFilters, nextProps.pageFilters) &&
214221
prevProps.showCheckboxes === nextProps.showCheckboxes &&
215222
prevProps.start === nextProps.start &&
216-
prevProps.utilityBar === nextProps.utilityBar
223+
prevProps.utilityBar === nextProps.utilityBar &&
224+
prevProps.graphEventId === nextProps.graphEventId
217225
)
218226
);

0 commit comments

Comments
 (0)