|
from functools import partial |
|
import gradio as gr |
|
|
|
from src.logic.data_fetching import fetch_groups, fetch_metrics, reverse_search, reverse_search_add |
|
|
|
def create_reverse_search_tab(base_folder: gr.Textbox, datasets_available: gr.State, datasets_selected: gr.Dropdown): |
|
reverse_search_headline = gr.Markdown(value="# Reverse Metrics Search") |
|
|
|
with gr.Row(): |
|
with gr.Column(scale=1): |
|
reverse_grouping_dropdown = gr.Dropdown( |
|
choices=[], |
|
label="Grouping", |
|
multiselect=False, |
|
) |
|
reverse_metric_name_dropdown = gr.Dropdown( |
|
choices=[], |
|
label="Metric Name", |
|
multiselect=False, |
|
) |
|
reverse_search_button = gr.Button("Search") |
|
reverse_search_add_button = gr.Button("Add to selection") |
|
|
|
with gr.Column(scale=2): |
|
reverse_search_results = gr.Textbox( |
|
label="Found datasets", |
|
lines=10, |
|
placeholder="Found datasets containing the group/metric name. You can modify the selection after search by removing unwanted lines and clicking Add to selection" |
|
) |
|
|
|
datasets_available.change( |
|
fn=partial(fetch_groups, type="union"), |
|
inputs=[base_folder, datasets_available, reverse_grouping_dropdown], |
|
outputs=[reverse_grouping_dropdown], |
|
) |
|
|
|
reverse_grouping_dropdown.select( |
|
fn=partial(fetch_metrics, type="union"), |
|
inputs=[base_folder, datasets_available, reverse_grouping_dropdown, reverse_metric_name_dropdown], |
|
outputs=reverse_metric_name_dropdown, |
|
) |
|
|
|
reverse_search_button.click( |
|
fn=partial(reverse_search), |
|
inputs=[base_folder, datasets_available, reverse_grouping_dropdown, reverse_metric_name_dropdown], |
|
outputs=reverse_search_results, |
|
) |
|
|
|
reverse_search_add_button.click( |
|
fn=reverse_search_add, |
|
inputs=[datasets_selected, reverse_search_results], |
|
outputs=datasets_selected, |
|
) |