Skip to content

Add faceted type-ahead search capability to CSET web interface#1713

Open
jfrost-mo wants to merge 10 commits intomainfrom
MSc_ui_improvements
Open

Add faceted type-ahead search capability to CSET web interface#1713
jfrost-mo wants to merge 10 commits intomainfrom
MSc_ui_improvements

Conversation

@jfrost-mo
Copy link
Member

@jfrost-mo jfrost-mo commented Sep 22, 2025

CSET output interface improvements developed during my MSc project.

Additional work will be required before merging; see the "Future Work" chapter of my dissertation. This branch will also need a good rebase, as the commit history is a mess, and there were large test files added during development that have been removed, and we don't want to pull them into the project history permanently.

GitHub Copilot was used for review and fix suggestions for the prototype python parser, which was then hand ported to JavaScript. That code has been rebased away.

TODO

  1. Fix bugs in parser/web interface. - Done, though probably wants more testing.
  2. Introduce a three column layout, as it is commonly requested. Pushed out to Three column layout for web interface #1870.
  3. Tweak the CSS to make it look pretty. - No longer absolutely horrendous.
  4. Add query help text and examples to the UI.

Contribution checklist

Aim to have all relevant checks ticked off before merging. See the developer's guide for more detail.

  • Documentation has been updated to reflect change.
  • New code has tests, and affected old tests have been updated.
  • All tests and CI checks pass.
  • Ensured the pull request title is descriptive.
  • Conda lock files have been updated if dependencies have changed.
  • Attributed any Generative AI, such as GitHub Copilot, used in this PR.
  • Marked the PR as ready to review.

@jfrost-mo jfrost-mo self-assigned this Sep 22, 2025
@jfrost-mo jfrost-mo added the enhancement New feature or request label Sep 22, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Sep 22, 2025

Coverage

@jfrost-mo jfrost-mo changed the title WIP Add search capability to CSET UI Add search capability to CSET UI Sep 24, 2025
@jfrost-mo jfrost-mo changed the title Add search capability to CSET UI Add faceted type-ahead search capability to CSET web interface Oct 17, 2025
@jfrost-mo

This comment was marked as resolved.

@jfrost-mo

This comment was marked as outdated.

@jfrost-mo jfrost-mo force-pushed the MSc_ui_improvements branch 4 times, most recently from 4edac77 to 7ed878c Compare January 9, 2026 16:50
@jfrost-mo jfrost-mo force-pushed the MSc_ui_improvements branch 2 times, most recently from 25f9105 to dff23c5 Compare January 12, 2026 09:13
@jfrost-mo jfrost-mo changed the base branch from main to 1049_cache_busting January 12, 2026 09:15
Base automatically changed from 1049_cache_busting to main January 13, 2026 13:38
@jfrost-mo jfrost-mo force-pushed the MSc_ui_improvements branch from 3a00a7b to e5c20e5 Compare January 14, 2026 11:07
@jfrost-mo
Copy link
Member Author

cset-web-ui-search Current web UI. Will need some CSS prettification before merging.

@jfrost-mo jfrost-mo force-pushed the MSc_ui_improvements branch from e5c20e5 to bc07f67 Compare January 21, 2026 14:48
Copy link

@Pierre-siddall Pierre-siddall left a comment

Choose a reason for hiding this comment

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

This looks really good James, you've definitely had a good understanding of the lexer and have implemented clever regex to match the different range of search queries a user may input. Equally, you clearly have demonstrated that you know how the DOM functions by construing HTML elements being added to or removed from the DOM via javascript. I only have a couple of tiny improvements here regarding informative variable names in order to help future developers understand the control flow of your javascript by knowing what is being operated on. However, overall I think this is a well justified piece of work, great job :) .

@jfrost-mo jfrost-mo marked this pull request as ready for review February 4, 2026 17:04
@jfrost-mo jfrost-mo force-pushed the MSc_ui_improvements branch from a82ed7c to c00eb02 Compare February 9, 2026 13:45
@jfrost-mo
Copy link
Member Author

@daflack @Sylviabohnenstengel I've tagged you for reviewing this PR, however rather than the code (which Pierre kindly reviewed for me) I'd be especially interested in your thoughts on the web interface produced by running this branch. Any things that you especially like/dislike?

Copy link
Collaborator

@daflack daflack left a comment

Choose a reason for hiding this comment

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

I've been trying out the new functionality for a couple of hours to really stress test it. Overall, it's a great change and I really like it. The drop down menus make it really easy to use, and the pop-outs are great for organising plots how I want to see them.

I have a couple of very minor niggles:

  1. sometimes the filtering functionality doesn't work - see as an example. I can't find a consistent way of breaking it the same way though, or at least haven't noticed any patterns. After a bit more exploration it seems to be linked to whether date or plot category is selected - you can't appear to select both using the dropdowns.
  2. when the drop down help, and drop down menus it does create a very long menu bar so it is then hard to find the search bar so is there a possibility of keeping the search bar in a fixed location/putting a scroll in for different sections?
Image

Otherwise it looks and works great, and I know through regular use I'll get use to it really quickly.

@jfrost-mo jfrost-mo added this to the CSET v26.2.0 milestone Feb 16, 2026
Additionally included is a conversion of the index to JSON Lines (In
theory it should be more efficient, but in practice we still load the
whole string first. At least it looks nicer in the index file.)

Non-useful entries are removed from the index before it is written, so
it only contains information the client will need.
Removes redundant negative operators and allows facets to be any
literal. Comparisons are now case insensitive.
Using more descriptive names clarifies what data is being used.
We now add the templated variables into the written out recipe.
@Sylviabohnenstengel
Copy link
Member

Sylviabohnenstengel commented Feb 18, 2026

testing the existing output from you and the stress test with a large number of data from David. The website is intuitive to navigate and the drop down menues with tickboxes work very well and make it much easier to navigate. You have clearly turned the brief from all the interviews into a very useful website layout. The popout window functionality is very useful to arrange several windows next to each other in a custom way. :-)

I am adding a running commentary below with things I notice in no particular order:

  • this is an extra feature beyond this PR. What would need to be implemented to enable saving a request or several so that the user can switch forth and back between filter choices?
  • Is the website displaying the correct plots? choosing MODEL_NAME:"5 km,10 km" VARNAME:"temperature_at_screen_level" METHOD:"SEQ" also lists "MEAN" plots such as mean histogram. The method section is only allowing "SEQ" in this case. Tested with David's CSET_Global_5km_trailblazer_reduced_region... CSET run.
    Then trying to switch manually from "SEQ" to "MEAN" with MODEL_NAME:"5 km,10 km" VARNAME:"temperature_at_screen_level" METHOD: "MEAN" does not show the correct plots, but still the "SEQ" plots.
  • I can filter for mean using the title: "mean". But would it not be more logical to filter for mean by method?
  • title: "mean" VARNAME:"temperature_at_screen_level" BASE_MODEL:"5 km" OTHER_MODEL:"10 km". Is it confusing that the options do not allow to swap BASE_MODEL and OTHER_MODEL? I know we fix them when setting up CSET. Does this require an explanation somewhere?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

Comments