Skip to content

Update copy for bulk fill gaps UI#225070

Merged
denar50 merged 5 commits intoelastic:mainfrom
denar50:update-copy-for-bulk-fill-gaps-ui
Jun 24, 2025
Merged

Update copy for bulk fill gaps UI#225070
denar50 merged 5 commits intoelastic:mainfrom
denar50:update-copy-for-bulk-fill-gaps-ui

Conversation

@denar50
Copy link
Contributor

@denar50 denar50 commented Jun 24, 2025

Summary

These are small copy changes in two modals for the bulk schedule gap fills feature.

Rule limitation modal

Before
image

After
image

Time range selection modal

Before
image

After
image

Additionally I have also made a small change to the rule limitation modal for manual runs
Before
image

After
image

How to test?

Generate 101 rules using this tool.
yarn start rules --rules 100 -c -i"5m"

Rules limitation modal

  1. Go to the rules page
  2. Trigger the rules limitation modal by clicking on "Select all 101 rules"
  3. Then click on Bulk actions > Manual run and Bulk actions > fill gaps respectively.

Time range selection modal for bulk gap fills

  1. Go to the rules page
  2. Select a couple of rules
  3. Then click on Bulk actions > fill gaps

@denar50 denar50 requested review from a team as code owners June 24, 2025 12:20
@denar50 denar50 added release_note:fix Team:Detection Engine Security Solution Detection Engine Area backport:version Backport to applied version labels v9.1.0 v8.19.0 labels Jun 24, 2025
@elasticmachine
Copy link
Contributor

Pinging @elastic/security-detection-engine (Team:Detection Engine)

@denar50 denar50 self-assigned this Jun 24, 2025
@denar50 denar50 added release_note:skip Skip the PR/issue when compiling release notes and removed release_note:fix labels Jun 24, 2025
Copy link
Contributor

@nkhristinin nkhristinin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@denar50 denar50 requested a review from nastasha-solomon June 24, 2025 12:36
Copy link
Contributor

@nastasha-solomon nastasha-solomon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked the screenshots and they look good. Thanks for making these changes!

Copy link
Contributor

@nikitaindik nikitaindik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @denar50! I reviewed the code and tested changes locally. Left a few comments, but approving in advance since comments are about minor things. Please take a look though.

Another minor thing I noticed is that the manual rule run error message doesn't have a dot at the end.
Screenshot 2025-06-24 at 17 30 37
Screenshot 2025-06-24 at 17 27 17

@@ -394,7 +394,7 @@ export const BULK_FILL_RULE_GAPS_CONFIRMATION_CONFIRM = i18n.translate(
export const BULK_MANUAL_RULE_RUN_LIMIT_ERROR_TITLE = i18n.translate(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since "Cannot execute the bulk action" is pretty generic and used for both modals, I think it can be a single var with a generic name like BULK_ACTION_ERROR_MODAL_TITLE. Then we use same variable in both modals.

export const BULK_FILL_RULE_GAPS_LIMIT_ERROR_CLOSE_BUTTON = i18n.translate(
'xpack.securitySolution.detectionEngine.rules.allRules.bulkActions.bulkFillRuleGapsRuleLimitErrorCloseButton',
{
defaultMessage: 'Close',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we already have an existing reusable i18n string for "Close". Please check if we can import it from some common place.

text,
}: BulkManualRuleRunRulesLimitErrorModalProps) => {
return (
<EuiModal onClose={onClose}>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like EUI already has EuiConfirmModal. Can we use it instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The thing is that a confirmation modal shows two buttons: the thing you're trying to confirm which as a CTA, and a cancel button. In our case, we only have the close action. I believe this is why the original author chose to use EuiModal instead.


if ((dryRunResult?.succeededRulesCount ?? 0) > MAX_MANUAL_RULE_RUN_BULK_SIZE) {
showManualRuleRunLimitError();
if ((dryRunResult?.succeededRulesCount ?? 0) > MAX_BULK_FILL_RULE_GAPS_BULK_SIZE) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Curious why we have this limitation only in UI. Do we want to allow more than 100 via API?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is already handled in the function validateBulkAction in x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/api/rules/bulk_actions/route.ts

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you referring to this line? It seems to check only the case when you pass a list if IDs. But it won't error if you pass a query, like we do when applying a bulk action all the rules.

In general, do you folks want to limit gap filling to 100 rules for API users as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm good point. Also if a query is passed it seems that the max rules become 10000 instead according to this line.
@nkhristinin should we allow a query to be used to find rules instead of a list of ids (currently allowed by the endpoint, but not by the UI) but then we can add our limit here? or should we only allow a list of rule ids to be passed?

@elasticmachine
Copy link
Contributor

💚 Build Succeeded

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
securitySolution 7746 7748 +2

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
securitySolution 9.8MB 9.8MB +1.1KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
securitySolution 95.4KB 95.4KB +18.0B

History

cc @denar50

@denar50 denar50 merged commit e927fe5 into elastic:main Jun 24, 2025
10 checks passed
@kibanamachine
Copy link
Contributor

Starting backport for target branches: 8.19

https://github.com/elastic/kibana/actions/runs/15856715998

@denar50
Copy link
Contributor Author

denar50 commented Jun 24, 2025

@nikitaindik I will address your comments in a follow up PR.

kibanamachine added a commit to kibanamachine/kibana that referenced this pull request Jun 24, 2025
## Summary

These are small copy changes in two modals for the bulk schedule gap
fills feature.

## Rule limitation modal
Before

![image](https://github.com/user-attachments/assets/32bbf714-fab9-408b-8f84-f7dd9999f866)

After

![image](https://github.com/user-attachments/assets/978740f3-5a33-492b-ba2c-3eb357b92384)

## Time range selection modal
Before

![image](https://github.com/user-attachments/assets/18d61683-a109-421d-9010-53fe0db50c29)

After

![image](https://github.com/user-attachments/assets/c3a79266-959c-4473-ab3f-d574211c3b3e)

Additionally I have also made a small change to the rule limitation
modal for manual runs
Before

![image](https://github.com/user-attachments/assets/6d7fc487-016e-4331-9d53-89a4da5e6cd6)

After

![image](https://github.com/user-attachments/assets/226b6c7f-ee8c-46eb-8ad5-21272e25c9b0)

## How to test?
Generate 101 rules using [this
tool](https://github.com/elastic/security-documents-generator).
`yarn start rules --rules 100 -c -i"5m"`

### Rules limitation modal
1. Go to the rules page
2. Trigger the rules limitation modal by clicking on "Select all 101
rules"
3. Then click on Bulk actions > Manual run and Bulk actions > fill gaps
respectively.

### Time range selection modal for bulk gap fills
1. Go to the rules page
2. Select a couple of rules
3. Then click on Bulk actions > fill gaps

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
(cherry picked from commit e927fe5)
@kibanamachine
Copy link
Contributor

💚 All backports created successfully

Status Branch Result
8.19

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

kibanamachine added a commit that referenced this pull request Jun 24, 2025
# Backport

This will backport the following commits from `main` to `8.19`:
- [Update copy for bulk fill gaps UI
(#225070)](#225070)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Edgar
Santos","email":"edgar.santos@elastic.co"},"sourceCommit":{"committedDate":"2025-06-24T16:58:11Z","message":"Update
copy for bulk fill gaps UI (#225070)\n\n## Summary\n\nThese are small
copy changes in two modals for the bulk schedule gap\nfills
feature.\n\n## Rule limitation
modal\nBefore\n\n![image](https://github.com/user-attachments/assets/32bbf714-fab9-408b-8f84-f7dd9999f866)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/978740f3-5a33-492b-ba2c-3eb357b92384)\n\n##
Time range selection
modal\nBefore\n\n![image](https://github.com/user-attachments/assets/18d61683-a109-421d-9010-53fe0db50c29)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/c3a79266-959c-4473-ab3f-d574211c3b3e)\n\nAdditionally
I have also made a small change to the rule limitation\nmodal for manual
runs\nBefore\n\n![image](https://github.com/user-attachments/assets/6d7fc487-016e-4331-9d53-89a4da5e6cd6)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/226b6c7f-ee8c-46eb-8ad5-21272e25c9b0)\n\n##
How to test?\nGenerate 101 rules using
[this\ntool](https://github.com/elastic/security-documents-generator).\n`yarn
start rules --rules 100 -c -i\"5m\"`\n\n### Rules limitation modal\n1.
Go to the rules page\n2. Trigger the rules limitation modal by clicking
on \"Select all 101\nrules\"\n3. Then click on Bulk actions > Manual run
and Bulk actions > fill gaps\nrespectively.\n\n### Time range selection
modal for bulk gap fills\n1. Go to the rules page\n2. Select a couple of
rules\n3. Then click on Bulk actions > fill
gaps\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"e927fe55ba3f679d220aeffc922ffd6329983176","branchLabelMapping":{"^v9.1.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Detection
Engine","backport:version","v9.1.0","v8.19.0"],"title":"Update copy for
bulk fill gaps
UI","number":225070,"url":"https://github.com/elastic/kibana/pull/225070","mergeCommit":{"message":"Update
copy for bulk fill gaps UI (#225070)\n\n## Summary\n\nThese are small
copy changes in two modals for the bulk schedule gap\nfills
feature.\n\n## Rule limitation
modal\nBefore\n\n![image](https://github.com/user-attachments/assets/32bbf714-fab9-408b-8f84-f7dd9999f866)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/978740f3-5a33-492b-ba2c-3eb357b92384)\n\n##
Time range selection
modal\nBefore\n\n![image](https://github.com/user-attachments/assets/18d61683-a109-421d-9010-53fe0db50c29)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/c3a79266-959c-4473-ab3f-d574211c3b3e)\n\nAdditionally
I have also made a small change to the rule limitation\nmodal for manual
runs\nBefore\n\n![image](https://github.com/user-attachments/assets/6d7fc487-016e-4331-9d53-89a4da5e6cd6)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/226b6c7f-ee8c-46eb-8ad5-21272e25c9b0)\n\n##
How to test?\nGenerate 101 rules using
[this\ntool](https://github.com/elastic/security-documents-generator).\n`yarn
start rules --rules 100 -c -i\"5m\"`\n\n### Rules limitation modal\n1.
Go to the rules page\n2. Trigger the rules limitation modal by clicking
on \"Select all 101\nrules\"\n3. Then click on Bulk actions > Manual run
and Bulk actions > fill gaps\nrespectively.\n\n### Time range selection
modal for bulk gap fills\n1. Go to the rules page\n2. Select a couple of
rules\n3. Then click on Bulk actions > fill
gaps\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"e927fe55ba3f679d220aeffc922ffd6329983176"}},"sourceBranch":"main","suggestedTargetBranches":["8.19"],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/225070","number":225070,"mergeCommit":{"message":"Update
copy for bulk fill gaps UI (#225070)\n\n## Summary\n\nThese are small
copy changes in two modals for the bulk schedule gap\nfills
feature.\n\n## Rule limitation
modal\nBefore\n\n![image](https://github.com/user-attachments/assets/32bbf714-fab9-408b-8f84-f7dd9999f866)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/978740f3-5a33-492b-ba2c-3eb357b92384)\n\n##
Time range selection
modal\nBefore\n\n![image](https://github.com/user-attachments/assets/18d61683-a109-421d-9010-53fe0db50c29)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/c3a79266-959c-4473-ab3f-d574211c3b3e)\n\nAdditionally
I have also made a small change to the rule limitation\nmodal for manual
runs\nBefore\n\n![image](https://github.com/user-attachments/assets/6d7fc487-016e-4331-9d53-89a4da5e6cd6)\n\nAfter\n\n![image](https://github.com/user-attachments/assets/226b6c7f-ee8c-46eb-8ad5-21272e25c9b0)\n\n##
How to test?\nGenerate 101 rules using
[this\ntool](https://github.com/elastic/security-documents-generator).\n`yarn
start rules --rules 100 -c -i\"5m\"`\n\n### Rules limitation modal\n1.
Go to the rules page\n2. Trigger the rules limitation modal by clicking
on \"Select all 101\nrules\"\n3. Then click on Bulk actions > Manual run
and Bulk actions > fill gaps\nrespectively.\n\n### Time range selection
modal for bulk gap fills\n1. Go to the rules page\n2. Select a couple of
rules\n3. Then click on Bulk actions > fill
gaps\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"e927fe55ba3f679d220aeffc922ffd6329983176"}},{"branch":"8.19","label":"v8.19.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

Co-authored-by: Edgar Santos <edgar.santos@elastic.co>
akowalska622 pushed a commit to akowalska622/kibana that referenced this pull request Jun 25, 2025
## Summary

These are small copy changes in two modals for the bulk schedule gap
fills feature.

## Rule limitation modal
Before

![image](https://github.com/user-attachments/assets/32bbf714-fab9-408b-8f84-f7dd9999f866)

After

![image](https://github.com/user-attachments/assets/978740f3-5a33-492b-ba2c-3eb357b92384)

## Time range selection modal
Before

![image](https://github.com/user-attachments/assets/18d61683-a109-421d-9010-53fe0db50c29)

After

![image](https://github.com/user-attachments/assets/c3a79266-959c-4473-ab3f-d574211c3b3e)

Additionally I have also made a small change to the rule limitation
modal for manual runs
Before

![image](https://github.com/user-attachments/assets/6d7fc487-016e-4331-9d53-89a4da5e6cd6)

After

![image](https://github.com/user-attachments/assets/226b6c7f-ee8c-46eb-8ad5-21272e25c9b0)

## How to test?
Generate 101 rules using [this
tool](https://github.com/elastic/security-documents-generator).
`yarn start rules --rules 100 -c -i"5m"`

### Rules limitation modal
1. Go to the rules page
2. Trigger the rules limitation modal by clicking on "Select all 101
rules"
3. Then click on Bulk actions > Manual run and Bulk actions > fill gaps
respectively.

### Time range selection modal for bulk gap fills
1. Go to the rules page
2. Select a couple of rules
3. Then click on Bulk actions > fill gaps

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
denar50 added a commit that referenced this pull request Jun 25, 2025
## Summary
This PR is a follow up of #225070,
addressing the remaining comments regarding the UI.
- moved some common text to their own translation variables
- added missing period to the end of a sentence for consistency

![image](https://github.com/user-attachments/assets/292fd417-2d50-4d32-98d2-df029db06b15)
denar50 added a commit to denar50/kibana that referenced this pull request Jul 17, 2025
## Summary
This PR is a follow up of elastic#225070,
addressing the remaining comments regarding the UI.
- moved some common text to their own translation variables
- added missing period to the end of a sentence for consistency

![image](https://github.com/user-attachments/assets/292fd417-2d50-4d32-98d2-df029db06b15)

(cherry picked from commit 3b0c225)

# Conflicts:
#	x-pack/platform/plugins/private/translations/translations/fr-FR.json
#	x-pack/platform/plugins/private/translations/translations/ja-JP.json
#	x-pack/platform/plugins/private/translations/translations/zh-CN.json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:version Backport to applied version labels release_note:skip Skip the PR/issue when compiling release notes Team:Detection Engine Security Solution Detection Engine Area v8.19.0 v9.1.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants