Skip to content

Commit d0d4ae5

Browse files
committed
refactoring
1 parent 0e79c48 commit d0d4ae5

File tree

1 file changed

+19
-40
lines changed

1 file changed

+19
-40
lines changed

x-pack/solutions/observability/plugins/observability/public/components/custom_threshold/custom_threshold_rule_expression.tsx

Lines changed: 19 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import type { SearchBarProps } from '@kbn/unified-search-plugin/public';
4040

4141
import { COMPARATORS } from '@kbn/alerting-comparators';
4242
import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
43-
import moment from 'moment';
4443
import { useKibana } from '../../utils/kibana_react';
4544
import {
4645
Aggregators,
@@ -80,6 +79,22 @@ export const defaultExpression: MetricExpression = {
8079
const FILTER_TYPING_DEBOUNCE_MS = 500;
8180
const 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
8499
export 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

Comments
 (0)