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

Add new filters UI and barebones viewTest.php replacement #2439

Merged
merged 15 commits into from
Sep 23, 2024

Conversation

williamjallen
Copy link
Collaborator

The current filters interface is written in AngularJS, and the backend for the filters interface currently suffers from a variety of performance, security, and maintainability issues. The new GraphQL API was designed to replace the legacy JSON API, including the existing filtering logic. This PR introduces a new filters interface which uses GraphQL introspection to automatically determine the available fields, operators, and enum values (if applicable) for a given filter type. Since the filters interface accepts an initial set of GraphQL filters and returns modified GraphQL filters, it's completely reusable and straightforward to add to new pages. This PR is also the first time DaisyUI has been used for a page in CDash.

To provide a basic use case for the new filters component, I created a skeleton replacement for viewTest.php which displays test names and statuses via a paginated GraphQL query. This page should appear to load much faster than the existing viewTest.php due to the pagination.

Although this PR introduces a significant amount of new functionality, there is still much more to do, including:

  • I intend to create a follow-up PR which builds upon our existing Cypress component testing infrastructure, after which thorough tests can be written for the individual components which make GraphQL queries.
  • The creation of a cdash-link CSS class was needed in this PR to prevent conflicts between DaisyUI and existing CDash CSS code. This work should be continued to reduce the number of conflicts between DaisyUI and CDash CSS.
  • The Boolean and DateTime filter types need to be implemented in the UI. This requires a date picker to be added, and will be done in a separate PR.
  • More columns will be added to the new tests page when the associated data becomes available in the GraphQL API.

image

Copy link
Member

@josephsnyder josephsnyder left a comment

Choose a reason for hiding this comment

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

Looks much better. I can't get myself to that error state that I was in before. Still passes and searches look good in this narrow focus. LGTM!

@williamjallen williamjallen added this pull request to the merge queue Sep 23, 2024
Merged via the queue into Kitware:master with commit f06d6f9 Sep 23, 2024
6 checks passed
@williamjallen williamjallen deleted the tests-for-build-page branch September 23, 2024 13:25
github-merge-queue bot pushed a commit that referenced this pull request Oct 9, 2024
#2439 introduced a new tests page
which will eventually supersede `viewTest.php`. This PR adds the time
and details columns displayed on viewTest.php to the new tests page. As
part of this work, test details and running time are now available via
the GraphQL API.


![image](https://github.com/user-attachments/assets/581cf4f6-c1c3-4470-84e4-eb3f35c007be)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants