mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[Security Solution] Sort rule upgrade flyout fields according to the state (#208553)
**Relates to:** https://github.com/elastic/kibana/issues/171520 ## Summary This PR adds logic to sort fields in rule upgrade flyout. Fields are sorted based on the state where fields with conflicts are shown before the other fields users should pay attention to. ## Screenshot **Before:** https://github.com/user-attachments/assets/c4ee56c7-9bfe-4b6f-a7d4-94b0fc946425 **After:** https://github.com/user-attachments/assets/c2c43a57-8ec0-4537-823f-4244306b9553
This commit is contained in:
parent
0f62fa1d30
commit
bcc0f4d5f6
1 changed files with 29 additions and 3 deletions
|
@ -7,6 +7,7 @@
|
|||
|
||||
import React, { memo } from 'react';
|
||||
import { EuiSpacer } from '@elastic/eui';
|
||||
import type { FieldsUpgradeState } from '../../../../model/prebuilt_rule_upgrade';
|
||||
import {
|
||||
FieldUpgradeStateEnum,
|
||||
type RuleUpgradeState,
|
||||
|
@ -31,9 +32,7 @@ export const RuleUpgrade = memo(function RuleUpgrade({
|
|||
const numOfFieldsWithUpdates = calcNumOfFieldsWithUpdates(ruleUpgradeState);
|
||||
const numOfSolvableConflicts = calcNumOfSolvableConflicts(ruleUpgradeState);
|
||||
const numOfNonSolvableConflicts = calcNumOfNonSolvableConflicts(ruleUpgradeState);
|
||||
const fieldNames = Object.keys(
|
||||
ruleUpgradeState.fieldsUpgradeState
|
||||
) as UpgradeableDiffableFields[];
|
||||
const fieldNames = extractSortedFieldNames(ruleUpgradeState.fieldsUpgradeState);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
@ -86,3 +85,30 @@ function calcNumOfNonSolvableConflicts(ruleUpgradeState: RuleUpgradeState): numb
|
|||
({ state }) => state === FieldUpgradeStateEnum.NonSolvableConflict
|
||||
).length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines fields sorting order by state.
|
||||
* Lower number corresponds to higher priority.
|
||||
*/
|
||||
const FIELDS_STATE_ORDER_MAP = {
|
||||
[FieldUpgradeStateEnum.NonSolvableConflict]: 0,
|
||||
[FieldUpgradeStateEnum.SolvableConflict]: 1,
|
||||
[FieldUpgradeStateEnum.SameUpdate]: 2,
|
||||
[FieldUpgradeStateEnum.NoConflict]: 3,
|
||||
[FieldUpgradeStateEnum.Accepted]: 4,
|
||||
[FieldUpgradeStateEnum.NoUpdate]: 5,
|
||||
} as const;
|
||||
|
||||
function extractSortedFieldNames(
|
||||
fieldsUpgradeState: FieldsUpgradeState
|
||||
): UpgradeableDiffableFields[] {
|
||||
const fieldNames = Object.keys(fieldsUpgradeState) as UpgradeableDiffableFields[];
|
||||
|
||||
fieldNames.sort(
|
||||
(a, b) =>
|
||||
FIELDS_STATE_ORDER_MAP[fieldsUpgradeState[a].state] -
|
||||
FIELDS_STATE_ORDER_MAP[fieldsUpgradeState[b].state]
|
||||
);
|
||||
|
||||
return fieldNames;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue