""" UI utility functions for the OpenAlex Mapper Gradio app. """ from openalex_utils import openalex_url_to_readable_name def highlight_queries(text: str) -> str: """Split OpenAlex URLs on semicolons and display them as colored pills with readable names.""" palette = ["#f5f5f5", #set to only light grey # "#e8f4fd", "#fff2e8", "#f0f9e8", "#fdf2f8", # "#f3e8ff", "#e8f8f5", "#fef7e8", "#f8f0e8" ] # Handle empty input if not text or not text.strip(): return "
Enter OpenAlex URLs separated by semicolons to see query descriptions
" # Split URLs on semicolons and strip whitespace urls = [url.strip() for url in text.split(";") if url.strip()] if not urls: return "
No valid URLs found
" pills = [] for i, url in enumerate(urls): color = palette[i % len(palette)] try: # Get readable name for the URL readable_name = openalex_url_to_readable_name(url) except Exception as e: print(f"Error processing URL {url}: {e}") readable_name = f"Query {i+1}" pills.append( f'' f'{readable_name}' ) return ( "
" "
" f"{'Query' if len(urls) == 1 else 'Queries'} ({len(urls)}):
" "
" + "".join(pills) + "
" )