hub_maintable / app.py
hi-sammy's picture
Update app.py
965425f verified
import gradio as gr
import pandas as pd
df = pd.read_csv("data.csv")
def filter_records(records, category):
filtered = records[records["Category"] == category]
if category == "NSFW":
filtered = filtered.drop("Selective Alignment", axis=1)
return filtered.iloc[:, 1:]
theme = gr.themes.Base()
with gr.Blocks(theme=theme) as demo:
with gr.Row():
button_celebrity = gr.Button(value="Celebrity", variant="primary")
button_style = gr.Button(value="Style", variant="primary")
button_ip = gr.Button(value="IP", variant="primary")
button_nsfw = gr.Button(value="NSFW", variant="primary")
button_all = gr.Button(value="Overall", variant="primary")
# Initialize dataframe with Celebrity data
celebrity_data = filter_records(df, "Celebrity")
dataframe = gr.DataFrame(celebrity_data, column_widths="8%", elem_classes="light-mode")
# Create separate functions for each category that always start with the original data
def filter_celebrity():
return filter_records(df, "Celebrity")
def filter_style():
return filter_records(df, "Style")
def filter_ip():
return filter_records(df, "IP")
def filter_nsfw():
return filter_records(df, "NSFW")
def filter_overall():
return filter_records(df, "Overall")
# Connect each button to its specific filter function
button_celebrity.click(fn=filter_celebrity, inputs=None, outputs=dataframe)
button_style.click(fn=filter_style, inputs=None, outputs=dataframe)
button_ip.click(fn=filter_ip, inputs=None, outputs=dataframe)
button_nsfw.click(fn=filter_nsfw, inputs=None, outputs=dataframe)
button_all.click(fn=filter_overall, inputs=None, outputs=dataframe)
demo.launch(share=True)