From dc4d9f090a65cc063f0b3d63f5a87231d7750d79 Mon Sep 17 00:00:00 2001 From: David Yeghshatyan <6davidy@gmail.com> Date: Tue, 25 Sep 2018 20:04:09 -0400 Subject: [PATCH] Span Search - Add result count, navigation and clear buttons (#234) * Add result count, navigation and clear buttons Signed-off-by: Davit Yeghshatyan * Correct imports Signed-off-by: Davit Yeghshatyan * Move and delete files Signed-off-by: Davit Yeghshatyan * Review fixes Signed-off-by: Davit Yeghshatyan * Fix TracePageHeader test Signed-off-by: Davit Yeghshatyan * Lighten buttons when disabled Signed-off-by: Davit Yeghshatyan * Review fixes Signed-off-by: Davit Yeghshatyan * Fix tests Signed-off-by: Davit Yeghshatyan * Add shortcuts Signed-off-by: Davit Yeghshatyan * Fix merge changes Signed-off-by: Davit Yeghshatyan * Fix TracePageHeader and TracePageSearchBar tests Signed-off-by: Davit Yeghshatyan * Delay TracePageHeader testing until release of Enzyme v3.5.0 Signed-off-by: Davit Yeghshatyan Signed-off-by: vvvprabhakar --- .../TracePage/KeyboardShortcutsHelp.js | 2 + .../components/TracePage/TracePageHeader.js | 40 ++++++--- .../TracePage/TracePageHeader.test.js | 16 +--- .../TracePage/TracePageSearchBar.css | 36 ++++++++ .../TracePage/TracePageSearchBar.js | 82 +++++++++++++++++++ ...rkers.js => TracePageSearchBar.markers.js} | 0 .../TracePage/TracePageSearchBar.test.js | 55 +++++++++++++ .../VirtualizedTraceView.js | 23 +----- .../VirtualizedTraceView.test.js | 26 ------ .../TracePage/TraceTimelineViewer/duck.js | 13 --- .../TraceTimelineViewer/duck.test.js | 18 ---- .../TraceTimelineViewer/get-filtered-spans.js | 23 ------ .../TracePage/TraceTimelineViewer/index.js | 2 +- .../src/components/TracePage/index.js | 44 ++++++++-- .../src/components/TracePage/index.test.js | 21 +++-- .../TracePage/keyboard-shortcuts.js | 5 ++ 16 files changed, 260 insertions(+), 146 deletions(-) create mode 100644 packages/jaeger-ui/src/components/TracePage/TracePageSearchBar.css create mode 100644 packages/jaeger-ui/src/components/TracePage/TracePageSearchBar.js rename packages/jaeger-ui/src/components/TracePage/{TracePageHeader.markers.js => TracePageSearchBar.markers.js} (100%) create mode 100644 packages/jaeger-ui/src/components/TracePage/TracePageSearchBar.test.js delete mode 100644 packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/get-filtered-spans.js diff --git a/packages/jaeger-ui/src/components/TracePage/KeyboardShortcutsHelp.js b/packages/jaeger-ui/src/components/TracePage/KeyboardShortcutsHelp.js index 30328eef43..98a282d2ca 100644 --- a/packages/jaeger-ui/src/components/TracePage/KeyboardShortcutsHelp.js +++ b/packages/jaeger-ui/src/components/TracePage/KeyboardShortcutsHelp.js @@ -53,6 +53,8 @@ const descriptions = { expandAll: 'Expand All', collapseOne: 'Collapse One Level', expandOne: 'Expand One Level', + searchSpans: 'Search Spans', + clearSearch: 'Clear Search', }; function convertKeys(keyConfig: string | string[]): string[][] { diff --git a/packages/jaeger-ui/src/components/TracePage/TracePageHeader.js b/packages/jaeger-ui/src/components/TracePage/TracePageHeader.js index f5ca48b299..f308d852f0 100644 --- a/packages/jaeger-ui/src/components/TracePage/TracePageHeader.js +++ b/packages/jaeger-ui/src/components/TracePage/TracePageHeader.js @@ -21,9 +21,9 @@ import IoChevronRight from 'react-icons/lib/io/chevron-right'; import IoIosFilingOutline from 'react-icons/lib/io/ios-filing-outline'; import { Link } from 'react-router-dom'; -import * as markers from './TracePageHeader.markers'; -import { trackAltViewOpen } from './TracePageHeader.track'; import KeyboardShortcutsHelp from './KeyboardShortcutsHelp'; +import { trackAltViewOpen } from './TracePageHeader.track'; +import TracePageSearchBar from './TracePageSearchBar'; import LabeledList from '../common/LabeledList'; import { FALLBACK_TRACE_NAME } from '../../constants'; import { formatDatetime, formatDuration } from '../../utils/date'; @@ -37,7 +37,12 @@ type TracePageHeaderProps = { slimView: boolean, onSlimViewClicked: () => void, updateTextFilter: string => void, - textFilter: ?string, + textFilter: string, + prevResult: () => void, + nextResult: () => void, + clearSearch: () => void, + forwardedRef: { current: Input | null }, + resultCount: number, archiveButtonVisible: boolean, onArchiveClicked: () => void, // these props are used by the `HEADER_ITEMS` @@ -86,7 +91,7 @@ export const HEADER_ITEMS = [ }, ]; -export default function TracePageHeader(props: TracePageHeaderProps) { +export function TracePageHeaderFn(props: TracePageHeaderProps) { const { archiveButtonVisible, onArchiveClicked, @@ -101,6 +106,11 @@ export default function TracePageHeader(props: TracePageHeaderProps) { onSlimViewClicked, updateTextFilter, textFilter, + prevResult, + nextResult, + clearSearch, + resultCount, + forwardedRef, } = props; if (!traceID) { @@ -170,15 +180,15 @@ export default function TracePageHeader(props: TracePageHeaderProps) { -
- updateTextFilter(event.target.value)} - defaultValue={textFilter} - data-test={markers.IN_TRACE_SEARCH} - /> -
+