"""
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) +
"
"
)