import gradio as gr import pandas as pd from themes import IndonesiaTheme def load_data(status_filter="All", keyword=""): df = pd.read_csv("https://huggingface.co/datasets/Deddy/leaderboard-dataset/raw/main/leaderboard.csv") if status_filter != "All": df = df[df['status'].str.contains(status_filter, case=False, na=False)] if keyword.strip(): df = df[df['name'].str.contains(keyword, case=False, na=False)] df = df.sort_values("likes", ascending=False).head(100).reset_index(drop=True) # Kolom Visit tetap df["🔗 Visit"] = df["link"].apply(lambda url: f"🌐 Visit") # Kolom Name: bold, warna emas untuk top 10, emoji piala untuk top 3 def decorate_name(row): i = row.name + 1 # row.name = index mulai dari 0 name = f"{row['name']}" medal = "" if i == 1: medal = "👑 " elif i == 2: medal = "🏆 " elif i == 3: medal = "🏅 " if i <= 10: # Emas (#FFD700) return f"{medal}{name}" return f"{name}" df["decorated_name"] = df.apply(decorate_name, axis=1) # Kolom Status: warna dinamis def format_status(s): if isinstance(s, str) and "running" in s.lower(): return f"{s}" else: return f"{s}" df["status_fmt"] = df["status"].apply(format_status) # Susun ulang kolom: No, Name, dst df_final = pd.DataFrame() df_final["No"] = range(1, len(df) + 1) df_final["📛 Name"] = df["decorated_name"] df_final["👤 Author"] = df["author"] df_final["📝 Description"] = df["desc"] df_final["❤️ Likes"] = df["likes"] df_final["🕒 Updated"] = df["updated"] df_final["⚙️ Status"] = df["status_fmt"] df_final["🔗 Visit"] = df["🔗 Visit"] return df_final def render_html_table(status, keyword): df = load_data(status, keyword) html_table = df.to_html(escape=False, index=False, classes="styled-table") return f""" {html_table} """ css = "" # CSS sudah di-inject via render_html_table with gr.Blocks(theme=IndonesiaTheme()) as demo: gr.Markdown("""