Spaces:
Sleeping
Sleeping
File size: 2,598 Bytes
899f23c 9db8932 899f23c 3ab2d73 899f23c 3ab2d73 899f23c 2ea100e 9db8932 3ab2d73 9db8932 899f23c 96d55af 95dede4 96d55af 3ab2d73 93eb63c 96d55af 93eb63c 95dede4 96d55af 899f23c 2ea100e 9db8932 674b979 39b3671 674b979 899f23c 674b979 899f23c 674b979 899f23c 93eb63c 899f23c 93eb63c 899f23c 93eb63c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
import gradio as gr
import pandas as pd
from datetime import datetime
# Placeholder for boba data
boba_data = pd.DataFrame(columns=["Date", "Shop", "Drink", "Toppings", "Size", "Sugar", "Rating", "Price"])
def submit_boba_data(use_today, date, shop, drink, toppings, size, sugar, rating, price):
global boba_data
if use_today:
date = datetime.today().strftime('%Y-%m-%d')
new_entry = pd.DataFrame([{
"Date": date,
"Shop": shop,
"Drink": drink,
"Toppings": toppings,
"Size": size,
"Sugar": sugar,
"Rating": rating,
"Price": price
}])
boba_data = pd.concat([boba_data, new_entry], ignore_index=True)
return boba_data
def get_leaderboard():
leaderboard = boba_data.groupby('Shop').agg({'Rating': 'mean', 'Shop': 'count'}).rename(columns={'Shop': 'Number of Entries'}).sort_values(by='Rating', ascending=False)
return leaderboard.reset_index()
def get_statistics():
total_drinks = len(boba_data)
if total_drinks > 0:
favorite_drink = boba_data['Drink'].mode()[0]
favorite_topping = boba_data['Toppings'].mode()[0]
average_sugar = boba_data['Sugar'].mean()
total_spent = boba_data['Price'].sum()
else:
favorite_drink = "No data"
favorite_topping = "No data"
average_sugar = "No data"
total_spent = 0
return (f"Total drinks: {total_drinks}\n"
f"Favorite drink: {favorite_drink}\n"
f"Favorite topping: {favorite_topping}\n"
f"Average sugar level: {average_sugar:.2f}%\n"
f"Total spent: ${total_spent:.2f}")
# Define Gradio inputs and interface
inputs = [
gr.Checkbox(label="Use today's date?"),
gr.Textbox(label="Date (YYYY-MM-DD)"),
gr.Textbox(label="Shop"),
gr.Textbox(label="Drink"),
gr.Textbox(label="Toppings"),
gr.Dropdown(["Medium", "Large"], label="Size"),
gr.Slider(0, 200, label="Sugar (%)", step=25),
gr.Slider(1, 5, label="Rating"),
gr.Number(label="Price")
]
iface = gr.Interface(
fn=submit_boba_data,
inputs=inputs,
outputs=gr.Dataframe(),
title="Boba Tracker Data Entry"
)
leaderboard_iface = gr.Interface(
fn=get_leaderboard,
inputs=None,
outputs=gr.Dataframe(),
title="Boba Leaderboard"
)
stats_iface = gr.Interface(
fn=get_statistics,
inputs=None,
outputs="text",
title="Boba Consumption Stats"
)
# Combine all interfaces into one app
gr.TabbedInterface([iface, leaderboard_iface, stats_iface], ["Data Entry", "Leaderboard", "Statistics"]).launch() |