Spaces:
Running
Running
Update app.py
#97
by
Muthuraja18
- opened
app.py
CHANGED
|
@@ -1194,59 +1194,37 @@ def inbox_page():
|
|
| 1194 |
def leaderboard_page():
|
| 1195 |
st.header("๐ Leaderboard")
|
| 1196 |
|
| 1197 |
-
|
| 1198 |
-
|
| 1199 |
-
st.info("No scores yet. Play some games first!")
|
| 1200 |
-
return
|
| 1201 |
|
| 1202 |
-
|
| 1203 |
-
|
|
|
|
| 1204 |
|
| 1205 |
-
#
|
| 1206 |
-
|
| 1207 |
-
if col not in df.columns:
|
| 1208 |
-
df[col] = ""
|
| 1209 |
|
| 1210 |
-
#
|
| 1211 |
-
st.subheader("
|
| 1212 |
-
|
| 1213 |
-
|
| 1214 |
-
|
| 1215 |
-
|
|
|
|
| 1216 |
|
| 1217 |
-
|
| 1218 |
-
|
|
|
|
|
|
|
|
|
|
| 1219 |
else:
|
| 1220 |
-
|
| 1221 |
-
for i,
|
| 1222 |
-
|
| 1223 |
-
|
| 1224 |
-
|
| 1225 |
-
|
| 1226 |
-
|
| 1227 |
-
# ---------------- All-time Leaderboard ----------------
|
| 1228 |
-
st.subheader("All-Time Top 10")
|
| 1229 |
-
alltime_df = df.sort_values(by='score', ascending=False).head(10)
|
| 1230 |
-
for i, row in alltime_df.iterrows():
|
| 1231 |
-
user_marker = "๐ You" if row['name'] == st.session_state.get('username') else ""
|
| 1232 |
-
st.write(f"{i+1}. {row.get('avatar','๐ฎ')} **{row['name']}** (Game {row['game_id']}) โ {row['score']} pts {user_marker}")
|
| 1233 |
-
|
| 1234 |
-
st.markdown("---")
|
| 1235 |
-
|
| 1236 |
-
# Optional: allow search by username
|
| 1237 |
-
search_user = st.text_input("Search leaderboard by username")
|
| 1238 |
-
if search_user:
|
| 1239 |
-
search_df = df[df['name'].str.lower() == search_user.lower()]
|
| 1240 |
-
if search_df.empty:
|
| 1241 |
-
st.info(f"No scores found for {search_user}.")
|
| 1242 |
-
else:
|
| 1243 |
-
st.subheader(f"Scores for {search_user}")
|
| 1244 |
-
for i, row in search_df.iterrows():
|
| 1245 |
-
st.write(f"Game {row['game_id']} โ {row['score']} pts โ {row.get('avatar','๐ฎ')} โ {row['timestamp']}")
|
| 1246 |
-
|
| 1247 |
-
|
| 1248 |
-
|
| 1249 |
-
|
| 1250 |
def get_weekly_leaderboard(limit=10):
|
| 1251 |
rows = unified_get("/leaderboard") or []
|
| 1252 |
one_week_ago = datetime.utcnow() - timedelta(days=7)
|
|
|
|
| 1194 |
def leaderboard_page():
|
| 1195 |
st.header("๐ Leaderboard")
|
| 1196 |
|
| 1197 |
+
# Get leaderboard data
|
| 1198 |
+
leaderboard = unified_get("leaderboard") or []
|
|
|
|
|
|
|
| 1199 |
|
| 1200 |
+
if not leaderboard:
|
| 1201 |
+
st.info("No scores yet.")
|
| 1202 |
+
return
|
| 1203 |
|
| 1204 |
+
# Sort by score descending
|
| 1205 |
+
leaderboard = sorted(leaderboard, key=lambda x: x.get("score", 0), reverse=True)
|
|
|
|
|
|
|
| 1206 |
|
| 1207 |
+
# Display top 10
|
| 1208 |
+
st.subheader("Top Players")
|
| 1209 |
+
for i, row in enumerate(leaderboard[:10], 1):
|
| 1210 |
+
st.write(
|
| 1211 |
+
f"{i}. {row.get('avatar','๐ฎ')} **{row.get('name','Guest')}** "
|
| 1212 |
+
f"(Game {row.get('game_id','')}) โ {row.get('score',0)} pts โ {row.get('percentage',0)}%"
|
| 1213 |
+
)
|
| 1214 |
|
| 1215 |
+
# Weekly leaderboard (optional)
|
| 1216 |
+
st.subheader("Weekly Leaderboard (Top 10)")
|
| 1217 |
+
week_leaderboard = [r for r in leaderboard if datetime.fromisoformat(r.get("timestamp", now_iso())).isocalendar()[1] == datetime.now().isocalendar()[1]]
|
| 1218 |
+
if not week_leaderboard:
|
| 1219 |
+
st.info("No scores yet this week.")
|
| 1220 |
else:
|
| 1221 |
+
week_leaderboard = sorted(week_leaderboard, key=lambda x: x.get("score",0), reverse=True)
|
| 1222 |
+
for i, r in enumerate(week_leaderboard[:10], 1):
|
| 1223 |
+
st.write(
|
| 1224 |
+
f"{i}. {r.get('avatar','๐ฎ')} **{r.get('name','Guest')}** "
|
| 1225 |
+
f"(Game {r.get('game_id','')}) โ {r.get('score',0)} pts"
|
| 1226 |
+
)
|
| 1227 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1228 |
def get_weekly_leaderboard(limit=10):
|
| 1229 |
rows = unified_get("/leaderboard") or []
|
| 1230 |
one_week_ago = datetime.utcnow() - timedelta(days=7)
|