11import { isModelFeatureFlag , ModelFeatureFlag , useResolvedExtensions } from '@openshift-console/dynamic-plugin-sdk' ;
22import {
3- Alert ,
4- AlertActionCloseButton ,
53 Button ,
64 Drawer ,
75 DrawerContent ,
@@ -194,7 +192,6 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
194192 setURLParams ( queryParams ) ;
195193 }
196194
197- const warningTimeOut = React . useRef < NodeJS . Timeout | undefined > ( ) ;
198195 const [ config , setConfig ] = React . useState < Config > ( defaultConfig ) ;
199196 const [ warningMessage , setWarningMessage ] = React . useState < string | undefined > ( ) ;
200197 const [ showViewOptions , setShowViewOptions ] = useLocalStorage < boolean > ( LOCAL_STORAGE_SHOW_OPTIONS_KEY , false ) ;
@@ -217,6 +214,7 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
217214 const metricsRef = React . useRef ( metrics ) ;
218215 const [ isShowQuerySummary , setShowQuerySummary ] = React . useState < boolean > ( false ) ;
219216 const [ lastRefresh , setLastRefresh ] = React . useState < Date | undefined > ( undefined ) ;
217+ const [ lastDuration , setLastDuration ] = React . useState < number | undefined > ( undefined ) ;
220218 const [ error , setError ] = React . useState < string | undefined > ( ) ;
221219 const [ size , setSize ] = useLocalStorage < Size > ( LOCAL_STORAGE_SIZE_KEY , 'm' ) ;
222220 const [ isTRModalOpen , setTRModalOpen ] = React . useState ( false ) ;
@@ -397,9 +395,8 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
397395 setFilters ( f ) ;
398396 setFlows ( [ ] ) ;
399397 setMetrics ( { } ) ;
400- setWarningMessage ( undefined ) ;
401398 } ,
402- [ setFilters , setFlows , setWarningMessage ]
399+ [ setFilters , setFlows ]
403400 ) ;
404401
405402 const backAndForth = filters . backAndForth ;
@@ -528,7 +525,10 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
528525
529526 const manageWarnings = React . useCallback (
530527 ( query : Promise < unknown > ) => {
531- Promise . race ( [ query , new Promise ( ( resolve , reject ) => setTimeout ( reject , 2000 , 'slow' ) ) ] ) . then (
528+ setLastRefresh ( undefined ) ;
529+ setLastDuration ( undefined ) ;
530+ setWarningMessage ( undefined ) ;
531+ Promise . race ( [ query , new Promise ( ( resolve , reject ) => setTimeout ( reject , 4000 , 'slow' ) ) ] ) . then (
532532 null ,
533533 ( reason : string ) => {
534534 if ( reason === 'slow' ) {
@@ -877,6 +877,8 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
877877 break ;
878878 }
879879 if ( promises ) {
880+ const startDate = new Date ( ) ;
881+ setStats ( undefined ) ;
880882 manageWarnings (
881883 promises
882884 . then ( allStats => {
@@ -890,8 +892,10 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
890892 setWarningMessage ( undefined ) ;
891893 } )
892894 . finally ( ( ) => {
895+ const endDate = new Date ( ) ;
893896 setLoading ( false ) ;
894- setLastRefresh ( new Date ( ) ) ;
897+ setLastRefresh ( endDate ) ;
898+ setLastDuration ( endDate . getTime ( ) - startDate . getTime ( ) ) ;
895899 } )
896900 ) ;
897901 }
@@ -1035,15 +1039,6 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
10351039 // eslint-disable-next-line react-hooks/exhaustive-deps
10361040 } , [ filters ] ) ;
10371041
1038- //clear warning message after 10s
1039- React . useEffect ( ( ) => {
1040- if ( warningTimeOut . current ) {
1041- clearTimeout ( warningTimeOut . current ) ;
1042- }
1043-
1044- warningTimeOut . current = setTimeout ( ( ) => setWarningMessage ( undefined ) , 10000 ) ;
1045- } , [ warningMessage ] ) ;
1046-
10471042 //invalidate groups if necessary, when metrics scope changed
10481043 React . useEffect ( ( ) => {
10491044 const groups = getAvailableGroups ( metricScope as MetricScopeOptions ) ;
@@ -1322,6 +1317,9 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
13221317 stats = { stats }
13231318 limit = { limit }
13241319 lastRefresh = { lastRefresh }
1320+ lastDuration = { lastDuration }
1321+ warningMessage = { warningMessage }
1322+ slownessReason = { slownessReason ( ) }
13251323 range = { range }
13261324 showDNSLatency = { isDNSTracking ( ) }
13271325 showRTTLatency = { isFlowRTT ( ) }
@@ -1445,13 +1443,23 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
14451443
14461444 return (
14471445 < Flex id = "page-content-flex" direction = { { default : 'column' } } >
1448- < FlexItem flex = { { default : 'flex_1' } } > { content } </ FlexItem >
1446+ < FlexItem
1447+ id = { `${ selectedViewId } -container` }
1448+ flex = { { default : 'flex_1' } }
1449+ className = { isDarkTheme ? 'dark' : 'light' }
1450+ >
1451+ { content }
1452+ </ FlexItem >
14491453 < FlexItem >
14501454 { _ . isEmpty ( flows ) ? (
14511455 < MetricsQuerySummary
14521456 metrics = { metrics }
14531457 stats = { stats }
1458+ loading = { loading }
14541459 lastRefresh = { lastRefresh }
1460+ lastDuration = { lastDuration }
1461+ warningMessage = { warningMessage }
1462+ slownessReason = { slownessReason ( ) }
14551463 isShowQuerySummary = { isShowQuerySummary }
14561464 toggleQuerySummary = { ( ) => onToggleQuerySummary ( ! isShowQuerySummary ) }
14571465 isDark = { isDarkTheme }
@@ -1460,7 +1468,11 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
14601468 < FlowsQuerySummary
14611469 flows = { flows }
14621470 stats = { stats }
1471+ loading = { loading }
14631472 lastRefresh = { lastRefresh }
1473+ lastDuration = { lastDuration }
1474+ warningMessage = { warningMessage }
1475+ slownessReason = { slownessReason ( ) }
14641476 range = { range }
14651477 type = { recordType }
14661478 isShowQuerySummary = { isShowQuerySummary }
@@ -1491,7 +1503,7 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
14911503 } ) ;
14921504 } , [ isFullScreen ] ) ;
14931505
1494- const slownessReason = React . useCallback ( ( ) => {
1506+ const slownessReason = React . useCallback ( ( ) : string => {
14951507 if ( match === 'any' && hasNonIndexFields ( filters . list ) ) {
14961508 return t (
14971509 // eslint-disable-next-line max-len
@@ -1782,16 +1794,6 @@ export const NetflowTraffic: React.FC<NetflowTrafficProps> = ({ forcedFilters, i
17821794 />
17831795 </ >
17841796 ) }
1785- { ! _ . isEmpty ( warningMessage ) && (
1786- < Alert
1787- id = "netflow-warning"
1788- title = { warningMessage }
1789- variant = "warning"
1790- actionClose = { < AlertActionCloseButton onClose = { ( ) => setWarningMessage ( undefined ) } /> }
1791- >
1792- { slownessReason ( ) }
1793- </ Alert >
1794- ) }
17951797 < GuidedTourPopover id = "netobserv" ref = { guidedTourRef } isDark = { isDarkTheme } />
17961798 </ PageSection >
17971799 ) : null ;
0 commit comments