@@ -40,7 +40,6 @@ import type { SearchBarProps } from '@kbn/unified-search-plugin/public';
4040
4141import { COMPARATORS } from '@kbn/alerting-comparators' ;
4242import type { DataPublicPluginStart } from '@kbn/data-plugin/public' ;
43- import moment from 'moment' ;
4443import { useKibana } from '../../utils/kibana_react' ;
4544import {
4645 Aggregators ,
@@ -80,6 +79,22 @@ export const defaultExpression: MetricExpression = {
8079const FILTER_TYPING_DEBOUNCE_MS = 500 ;
8180const EMPTY_FILTERS : Filter [ ] = [ ] ;
8281
82+ // Helper function to convert time window to minutes
83+ const convertToMinutes = ( timeWindowSize : number , timeWindowUnit : string ) : number => {
84+ switch ( timeWindowUnit ) {
85+ case 's' :
86+ return timeWindowSize / 60 ;
87+ case 'm' :
88+ return timeWindowSize ;
89+ case 'h' :
90+ return timeWindowSize * 60 ;
91+ case 'd' :
92+ return timeWindowSize * 60 * 24 ;
93+ default :
94+ return timeWindowSize ;
95+ }
96+ } ;
97+
8398// eslint-disable-next-line import/no-default-export
8499export default function Expressions ( props : Props ) {
85100 const { setRuleParams, ruleParams, errors, metadata, onChangeMetaData } = props ;
@@ -119,11 +134,8 @@ export default function Expressions(props: Props) {
119134 [ dataView ]
120135 ) ;
121136
122- const showRecommendedTimeSizeWarning = useShowRecommendedTimeSize ( {
123- timeSize,
124- timeUnit,
125- recommendedTimeSize : { timeSize : 5 , timeUnit : 'm' } ,
126- } ) ;
137+ const isTimeSizeBelowRecommended =
138+ timeSize && timeUnit ? convertToMinutes ( timeSize , timeUnit ) < 5 : false ;
127139
128140 const initSearchSource = async ( resetDataView : boolean , thisData : DataPublicPluginStart ) => {
129141 let initialSearchConfiguration = resetDataView ? undefined : ruleParams . searchConfiguration ;
@@ -642,7 +654,7 @@ export default function Expressions(props: Props) {
642654 onChangeWindowSize = { updateTimeSize }
643655 onChangeWindowUnit = { updateTimeUnit }
644656 display = "fullWidth"
645- isTimeSizeBelowRecommended = { showRecommendedTimeSizeWarning }
657+ isTimeSizeBelowRecommended = { isTimeSizeBelowRecommended }
646658 />
647659
648660 < EuiSpacer size = "m" />
@@ -744,36 +756,3 @@ export default function Expressions(props: Props) {
744756 </ >
745757 ) ;
746758}
747-
748- interface RecommendedTimeSize {
749- timeSize : number ;
750- timeUnit : TimeUnitChar ;
751- }
752-
753- function useShowRecommendedTimeSize ( {
754- timeSize,
755- timeUnit,
756- recommendedTimeSize,
757- } : {
758- timeSize ?: number ;
759- timeUnit ?: TimeUnitChar ;
760- recommendedTimeSize ?: RecommendedTimeSize ;
761- } ) {
762- const [ showRecommendedTimeSizeWarning , setShowRecommendedTimeSizeWarning ] = useState ( false ) ;
763-
764- useEffect ( ( ) => {
765- if ( timeSize === undefined || recommendedTimeSize === undefined ) {
766- return ;
767- }
768-
769- const currentTimeSize = moment . duration ( timeSize , timeUnit ) . asMilliseconds ( ) ;
770- const recommendedWindowSizeAsMillis = moment
771- . duration ( recommendedTimeSize . timeSize , recommendedTimeSize . timeUnit )
772- . asMilliseconds ( ) ;
773-
774- const shouldShow = currentTimeSize < recommendedWindowSizeAsMillis ;
775- setShowRecommendedTimeSizeWarning ( shouldShow ) ;
776- } , [ timeSize , timeUnit , recommendedTimeSize ] ) ;
777-
778- return showRecommendedTimeSizeWarning ;
779- }
0 commit comments