diff --git a/web/locales/en/plugin__netobserv-plugin.json b/web/locales/en/plugin__netobserv-plugin.json index 3e36207d7..d3aa442d0 100644 --- a/web/locales/en/plugin__netobserv-plugin.json +++ b/web/locales/en/plugin__netobserv-plugin.json @@ -52,6 +52,7 @@ "Switch {{name}} option": "Switch {{name}} option", "Conversation event information": "Conversation event information", "Flow information": "Flow information", + "This is a partial flow: it contains only enrichment data and is missing some basic information such as byte and packet counters, TCP flags or MAC addresses. This information can likely be found in adjacent flows.": "This is a partial flow: it contains only enrichment data and is missing some basic information such as byte and packet counters, TCP flags or MAC addresses. This information can likely be found in adjacent flows.", "More info": "More info", "Raw": "Raw", "JSON": "JSON", diff --git a/web/src/components/drawer/record/record-panel.css b/web/src/components/drawer/record/record-panel.css index 46436fe66..e9adf12c3 100644 --- a/web/src/components/drawer/record/record-panel.css +++ b/web/src/components/drawer/record/record-panel.css @@ -87,4 +87,13 @@ div.record-field-popover-body, div.record-field-popover-footer { white-space: pre-line; word-break: break-word; -} \ No newline at end of file +} + +.record-panel-warning { + color: #2B9AF3; + margin-right: 5px; +} + +#partial-flow-text { + margin-bottom: 10px; +} diff --git a/web/src/components/drawer/record/record-panel.tsx b/web/src/components/drawer/record/record-panel.tsx index 060b2c0de..be91010e4 100644 --- a/web/src/components/drawer/record/record-panel.tsx +++ b/web/src/components/drawer/record/record-panel.tsx @@ -20,6 +20,7 @@ import { TextContent, TextVariants } from '@patternfly/react-core'; +import { InfoCircleIcon } from '@patternfly/react-icons'; import _ from 'lodash'; import * as React from 'react'; import { useTranslation } from 'react-i18next'; @@ -342,6 +343,8 @@ export const RecordPanel: React.FC = ({ ) ); + const isPartialFlow = !record.fields.Bytes && !record.fields.Packets; + return ( = ({ role="region" > {t('Details')}}> + {isPartialFlow && ( + + + {t( + 'This is a partial flow: it contains only enrichment data and is missing some basic information such as byte and packet counters, TCP flags or MAC addresses. This information can likely be found in adjacent flows.' + )} + + )} {groups.map((g, i) => getGroup(