Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace search bar in Management > Cluster > Nodes #5491

Merged
merged 108 commits into from
Aug 11, 2023

Conversation

Desvelao
Copy link
Member

@Desvelao Desvelao commented May 24, 2023

Description

This pull request replaces the search bar and table component in Management/Cluster/Nodes.

Affected sections:

  • Management > Cluster > Nodes

Additional changes:

  • Remove unused code
  • Change the title of the panel from Nodes to Cluster nodes
  • Fix the tooltip in the back button

It depends on #5442

Issues Resolved

#4312

Evidence

image
image

Table - Explore agent
Suggestions:

field get distinct values searchable searchable term
ip GET /cluster/nodes?distinct=true&limit=30&select={field}&sort=+{field}&q={currentValue}
name GET /cluster/nodes?distinct=true&limit=30&select={field}&sort=+{field}&q={currentValue}
types GET /cluster/nodes?distinct=true&limit=30&select={field}&sort=+{field}&q={currentValue}
version GET /cluster/nodes?distinct=true&limit=30&select={field}&sort=+{field}&q={currentValue}

Test

Use a Wazuh manager

Legend:
⚫: none
🟢: pass
🟡: warning
🔴: fail
⚪: not applicable

UI

Test Chrome Firefox Safari
Management > Cluster > Nodes: For each suggested field, check the value suggestion display results or at least doesn't break
Management > Cluster > Nodes: Using a value suggested should allow to run the search
Management > Cluster > Nodes: Type a term and run the search should search in each displayed field
Management > Cluster > Nodes: Type a simple field search and this should returns the expected results
Management > Cluster > Nodes: Type a complex field search and this should returns the expected results
Management > Cluster > Nodes: Clicking on the Refresh button should refresh the data
Management > Cluster > Nodes: Clicking on the Export formatted button should refresh export the data to CSV

Details

⚫ Management > Cluster > Nodes: For each suggested field, check the value suggestion display results or at least doesn't break

Chrome - ⚫

Firefox - ⚫

Safari - ⚫

⚫ Management > Cluster > Nodes: Using a value suggested should allow to run the search

Chrome - ⚫

Firefox - ⚫

Safari - ⚫

⚫ Management > Cluster > Nodes: Type a term and run the search should search in each displayed field

Chrome - ⚫

Firefox - ⚫

Safari - ⚫

⚫ Management > Cluster > Nodes: Type a simple field search and this should returns the expected results

Chrome - ⚫

Firefox - ⚫

Safari - ⚫

⚫ Management > Cluster > Nodes: Type a complex field search and this should returns the expected results

Chrome - ⚫

Firefox - ⚫

Safari - ⚫

⚫ Management > Cluster > Nodes: Clicking on the Refresh button should refresh the data

Chrome - ⚫

Firefox - ⚫

Safari - ⚫

⚫ Management > Cluster > Nodes: Clicking on the Export formatted button should refresh export the data to CSV

Chrome - ⚫

Firefox - ⚫

Safari - ⚫

Check List

  • All tests pass
    • yarn test:jest
  • New functionality includes testing.
  • New functionality has been documented.
  • Update CHANGELOG.md
  • Commits are signed per the DCO using --signoff

Desvelao and others added 30 commits February 16, 2023 12:50
Features:
- Supports multiple query languages
- Decouple the business logic of query languages of the search bar
  component
- Ability of query language to interact with the search bar

Query language implementations
- AQL: custom implementation of the Wazuh Query Language. Include
  suggestions.
- UIQL: simple implementation (as another example)
…ression used in the Wazuh manager API

- Change the implementation of AQL query language to use the regular
  expression decomposition defined in the Wazuh manager API
- Adapt the tests for the tokenizer and getting the suggestions
- Enchance documentation of search bar
- Add documentation of AQL query language
- Add more fields and values for the use example in Agents section
- Add description to the query language select input
…using the Search suggestion in AQL

- Fixes a problem hidding the suggestion popover when using the Search
  suggestion in AQL
- Fixes a problem of input text with undefined value
- Minor fixes
  - Remove `syntax` property of SearchBar component
  - Add disableFocusTrap property to the custom EuiSuggestInput component to be
    forwarded to the EuiInputPopover
  - Replace the inputRef by a reference instead of a state and pass as
    a parameter in the query language run function
  - Move the rebuiding of input text when using some suggestion that changes
    the input to be done when a related suggestion was clicked instead
    of any suggestion (exclude Search).
implemenation

- Add the ability to update the input of the search bar in the example
  implementation
- Enhance the component documentation
- (AQL) Add the fields and an open operator group when there is no input text
link of query language displayed in the popover
- AQL enhancements:
  - documentation:
    - Enhance some descriptions
    - Enhance input processing
    - Remove intermetiate interface of EuiSuggestItem
  - Remove the intermediate interface of EuiSuggestItem. Now it is
    managed in the internal of query language instead of be built by the
    suggestion handler
  - Display suggestions when the input text is empty
  - Add the unifiedQuery field to the query language output
  - Adapt tests

- Search Bar component:
  - Enhance documentation
- Remove UIQL
- Add HAQL query language that is a high-level implementation of AQL
  - Add the query language interface
  - Add tests for tokenizer, get suggestions and
    transformSpecificQLToUnifiedQL method
  - Add documentation about the language
    - Syntax
    - Options
    - Workflow
- Add tests to HAQL and AQL query languages
- Fix suggestions for HAQL when typing as first element a value entity.
  Now there are no suggestions because the field and operator_compare
  are missing.
- Enhance documentation of HAQL and AQL
- Removed unnecesary returns of suggestion handler in the example
  implementation of search bar on Agents section
- Rename query language HAQL to WQL
- Update tests
- Remove AQL usage from the implementation in the agents section
- Add more use cases to the test of WQL query language
- Replace some literals by constants in the WQL query language
  implementation
- WQL
  - add implicit query mode to WQL
  - enhance query language documentation
  - renamed transformUnifiedQuery to transformUQLToQL
  - now wraps the user input if this is defined and there a implicit
    query string
  - fix a problem with the value suggestions if there is a previous
    conjunction
    - add tests cases
  - update tests
- AQL
  - enhance query language documentation
  - renamed transformUnifiedQuery to transformUQLToQL
  - add warning about the query language implementation is not updated
    to the last changes in the search bar component
  - update tests

- Search Bar
  - renamed transformUnifiedQuery to transformUQLToQL
- Set a width for the syntax options popover
- Unify the description in the suggestions of WQL example implementation
- Update tests
- Fix minor bugs in the WQL example implementation in Agents
- WQL
  - Enhance documentation
  - Add partial and "expanded" input validation
  - Add tests
…feat/4312-poc-search-bar-component-multiple-query-language-api-query-language-implementation
Fix an error when the last token in the input was a value and used
a value suggestion whose label contains whitespaces, the value was
not wrapped with quotes.
…uery-language-api-query-language-implementation
…uery-language-api-query-language-implementation
…earch term fields changed

- Search bar:
  - Add a dependency to run the query language output
  - Adapt search bar documentation to the changes
- WQL
  - Create a new parameter called `options`
  - Moved the `implicitFilter` and `searchTerm` settings to `options`
  - Update tests
  - Update documentation
…o feat/4312-search-bar-replace-cluster-nodes
@Desvelao Desvelao marked this pull request as ready for review August 9, 2023 09:41
@Tostti Tostti self-requested a review August 10, 2023 12:43
@Tostti
Copy link
Member

Tostti commented Aug 10, 2023

Legend:
⚫: none
🟢: pass
🟡: warning
🔴: fail
⚪: not applicable

UI

Test Chrome Firefox Safari
Management > Cluster > Nodes: For each suggested field, check the value suggestion display results or at least doesn't break 🟢 🟢
Management > Cluster > Nodes: Using a value suggested should allow to run the search 🟢 🟢
Management > Cluster > Nodes: Type a term and run the search should search in each displayed field 🟢 🟢
Management > Cluster > Nodes: Type a simple field search and this should returns the expected results 🟢 🟢
Management > Cluster > Nodes: Type a complex field search and this should returns the expected results 🟢 🟢
Management > Cluster > Nodes: Clicking on the Refresh button should refresh the data 🟢 🟢
Management > Cluster > Nodes: Clicking on the Export formatted button should refresh export the data to CSV 🟢 🟢

Details

🟢 Management > Cluster > Nodes: For each suggested field, check the value suggestion display results or at least doesn't break

Chrome - 🟢
image
image
image
image

Firefox - 🟢
image
image
image
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Using a value suggested should allow to run the search

Chrome - 🟢
image
image
image
image

Firefox - 🟢
image
image
image
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Type a term and run the search should search in each displayed field

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Type a simple field search and this should returns the expected results

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Type a complex field search and this should returns the expected results

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Clicking on the Refresh button should refresh the data

Chrome - 🟢

Firefox - 🟢

Safari - ⚫

🟢 Management > Cluster > Nodes: Clicking on the Export formatted button should refresh export the data to CSV

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

Tostti
Tostti previously approved these changes Aug 10, 2023
Copy link
Member

@Tostti Tostti left a comment

Choose a reason for hiding this comment

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

TEST:✔️
CR:✔️

LGTM

@lucianogorza
Copy link
Contributor

lucianogorza commented Aug 10, 2023

Legend:
⚫: none
🟢: pass
🟡: warning
🔴: fail
⚪: not applicable

UI

Test Chrome Firefox Safari
Management > Cluster > Nodes: For each suggested field, check the value suggestion display results or at least doesn't break 🟢 🟢
Management > Cluster > Nodes: Using a value suggested should allow to run the search 🟢 🟢
Management > Cluster > Nodes: Type a term and run the search should search in each displayed field 🟢 🟢
Management > Cluster > Nodes: Type a simple field search and this should returns the expected results 🟢 🟢
Management > Cluster > Nodes: Type a complex field search and this should returns the expected results 🟢 🟢
Management > Cluster > Nodes: Clicking on the Refresh button should refresh the data 🟢 🟢
Management > Cluster > Nodes: Clicking on the Export formatted button should refresh export the data to CSV 🟢 🟢

Details

🟢 Management > Cluster > Nodes: For each suggested field, check the value suggestion display results or at least doesn't break

Chrome - 🟢
image
image
image
image

Firefox - 🟢
image
image
image
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Using a value suggested should allow to run the search

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Type a term and run the search should search in each displayed field

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Type a simple field search and this should returns the expected results

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Type a complex field search and this should returns the expected results

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

🟢 Management > Cluster > Nodes: Clicking on the Refresh button should refresh the data

Chrome - 🟢

Firefox - 🟢

Safari - ⚫

🟢 Management > Cluster > Nodes: Clicking on the Export formatted button should refresh export the data to CSV

Chrome - 🟢
image

Firefox - 🟢
image

Safari - ⚫

Tostti
Tostti previously approved these changes Aug 10, 2023
@lucianogorza lucianogorza self-requested a review August 10, 2023 15:24
lucianogorza
lucianogorza previously approved these changes Aug 10, 2023
Copy link
Contributor

@lucianogorza lucianogorza left a comment

Choose a reason for hiding this comment

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

TEST:✔️
CR:✔️

LGTM

…o feat/4312-search-bar-replace-cluster-nodes
@Desvelao Desvelao dismissed stale reviews from lucianogorza and Tostti via 5eae771 August 11, 2023 14:03
@Desvelao Desvelao merged commit ee587da into 4.6.0 Aug 11, 2023
@Desvelao Desvelao deleted the feat/4312-search-bar-replace-cluster-nodes branch August 11, 2023 14:04
@github-actions
Copy link
Contributor

Code coverage (Jest) % values
Statements 11.47% ( 3959 / 34487 )
Branches 7.57% ( 1775 / 23420 )
Functions 10.86% ( 896 / 8246 )
Lines 11.66% ( 3847 / 32978 )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

New search bar component
3 participants