Files changed (1) hide show
  1. app.py +65 -50
app.py CHANGED
@@ -726,7 +726,7 @@ for g in sorted(games.values(), key=lambda x: x.get("created_at", ""), reverse=T
726
  st.write(f"Host: {g.get('host')} โ€” Topics: {', '.join(g.get('topics', []))}")
727
  st.write(f"Created: {g.get('created_at')}")
728
 
729
- # โœ… FIX: get players for THIS game
730
  players_here = players_map.get(gid, {}) or {}
731
 
732
  st.write(f"Players joined: **{len(players_here)}**")
@@ -735,7 +735,7 @@ for g in sorted(games.values(), key=lambda x: x.get("created_at", ""), reverse=T
735
  submitted_count = sum(1 for p in players_here.values() if p.get("submitted"))
736
  st.write(f"Submitted: **{submitted_count} / {len(players_here)}**")
737
 
738
- # โœ… Final scores per game
739
  if players_here:
740
  st.markdown("**๐Ÿ“Š Final Scores**")
741
  for uname_p, info in players_here.items():
@@ -746,64 +746,79 @@ for g in sorted(games.values(), key=lambda x: x.get("created_at", ""), reverse=T
746
  f"Percentage: **{info.get('percentage', 0)}%**"
747
  )
748
 
749
- st.markdown("---")
750
-
 
 
 
 
751
 
 
752
 
 
 
 
 
753
  players_here = players_map.get(gid, {}) or {}
754
  st.write(f"Players joined: **{len(players_here)}**")
755
 
756
- if players_here:
757
- for uname_p, info in players_here.items():
758
- status = "โœ… Submitted" if info.get('submitted') else "โณ Playing"
759
- st.write(f"{info.get('avatar','๐ŸŽฎ')} **{uname_p}** โ€” {status}")
760
-
761
- # Only show submitted players in a table
762
- submitted_players = {u:i for u,i in players_here.items() if i.get('submitted')}
763
- if submitted_players:
764
- st.markdown("**๐ŸŽฏ Submitted Players Results:**")
765
- df = pd.DataFrame([{
766
- "Avatar": info.get('avatar','๐ŸŽฎ'),
767
- "Player": uname,
768
- "Score": info.get('score',0),
769
- "Correct Answers": info.get('correct_flags',0)
770
- } for uname, info in submitted_players.items()])
771
- st.dataframe(df)
772
-
 
 
 
 
 
773
  if not g.get('closed'):
774
  st.info(f"Share this Game ID: {gid}")
775
  render_copy_button(gid, gid)
776
- if st.session_state.get('username'):
777
- if st.button(f"Invite your friends to {gid}", key=f"invite_{gid}"):
778
- friends = get_friends_map().get(st.session_state['username'], [])
779
- if not friends:
780
- st.warning("No friends to invite.")
781
- else:
782
- for f in friends:
783
- send_game_invite(st.session_state['username'], f, gid)
784
- st.success("Invites sent to friends.")
785
-
786
- if st.button(f"Challenge friends with a new game like {gid}", key=f"challenge_{gid}"):
787
- new_id = create_game(
788
- st.session_state.get('username','Host'),
789
- g.get('topics',[]),
790
- num_questions=len(g.get('questions',[]))
791
- )
792
- st.success(f"Challenge created: {new_id}")
793
 
794
- st.markdown("---")
795
-
796
- st.subheader("๐Ÿ† Weekly Leaderboard (Top 10)")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
797
 
798
- weekly = get_weekly_leaderboard()
799
- if not weekly:
800
- st.info("No scores yet this week.")
801
- else:
802
- for i, r in enumerate(weekly, 1):
803
- st.write(
804
- f"{i}. {r.get('avatar','๐ŸŽฎ')} **{r['name']}** "
805
- f"(Game {r['game_id']}) โ€” {r['score']} pts"
806
- )
 
 
 
 
807
 
808
  # Create game
809
  def create_game(topics=None, num_questions=5, auto_close=True, ai_topic=None):
 
726
  st.write(f"Host: {g.get('host')} โ€” Topics: {', '.join(g.get('topics', []))}")
727
  st.write(f"Created: {g.get('created_at')}")
728
 
729
+ # โœ… Players for THIS game
730
  players_here = players_map.get(gid, {}) or {}
731
 
732
  st.write(f"Players joined: **{len(players_here)}**")
 
735
  submitted_count = sum(1 for p in players_here.values() if p.get("submitted"))
736
  st.write(f"Submitted: **{submitted_count} / {len(players_here)}**")
737
 
738
+ # โœ… Final scores
739
  if players_here:
740
  st.markdown("**๐Ÿ“Š Final Scores**")
741
  for uname_p, info in players_here.items():
 
746
  f"Percentage: **{info.get('percentage', 0)}%**"
747
  )
748
 
749
+ # โœ… Player status
750
+ if players_here:
751
+ st.markdown("**๐Ÿ‘ฅ Player Status**")
752
+ for uname_p, info in players_here.items():
753
+ status = "โœ… Submitted" if info.get('submitted') else "โณ Playing"
754
+ st.write(f"{info.get('avatar','๐ŸŽฎ')} **{uname_p}** โ€” {status}")
755
 
756
+ st.markdown("---")
757
 
758
+
759
+ players_here = players_map.get(gid, {}) or {}
760
+ st.write(f"Players joined: **{len(players_here)}**")
761
+ # Players for this game
762
  players_here = players_map.get(gid, {}) or {}
763
  st.write(f"Players joined: **{len(players_here)}**")
764
 
765
+ # Player status
766
+ if players_here:
767
+ for uname_p, info in players_here.items():
768
+ status = "โœ… Submitted" if info.get('submitted') else "โณ Playing"
769
+ st.write(f"{info.get('avatar','๐ŸŽฎ')} **{uname_p}** โ€” {status}")
770
+
771
+ # Only show submitted players in a table
772
+ submitted_players = {u:i for u,i in players_here.items() if i.get('submitted')}
773
+ if submitted_players:
774
+ st.markdown("**๐ŸŽฏ Submitted Players Results:**")
775
+ df = pd.DataFrame([
776
+ {
777
+ "Avatar": info.get('avatar','๐ŸŽฎ'),
778
+ "Player": uname,
779
+ "Score": info.get('score',0),
780
+ "Correct Answers": info.get('correct_flags',0)
781
+ }
782
+ for uname, info in submitted_players.items()
783
+ ])
784
+ st.dataframe(df)
785
+
786
+ # Invite / Challenge buttons only if game is open
787
  if not g.get('closed'):
788
  st.info(f"Share this Game ID: {gid}")
789
  render_copy_button(gid, gid)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
790
 
791
+ if st.session_state.get('username'):
792
+ if st.button(f"Invite your friends to {gid}", key=f"invite_{gid}"):
793
+ friends = get_friends_map().get(st.session_state['username'], [])
794
+ if not friends:
795
+ st.warning("No friends to invite.")
796
+ else:
797
+ for f in friends:
798
+ send_game_invite(st.session_state['username'], f, gid)
799
+ st.success("Invites sent to friends.")
800
+
801
+ if st.button(f"Challenge friends with a new game like {gid}", key=f"challenge_{gid}"):
802
+ new_id = create_game(
803
+ st.session_state.get('username','Host'),
804
+ g.get('topics',[]),
805
+ num_questions=len(g.get('questions',[]))
806
+ )
807
+ st.success(f"Challenge created: {new_id}")
808
 
809
+ st.markdown("---")
810
+
811
+ # Weekly leaderboard
812
+ st.subheader("๐Ÿ† Weekly Leaderboard (Top 10)")
813
+ weekly = get_weekly_leaderboard()
814
+ if not weekly:
815
+ st.info("No scores yet this week.")
816
+ else:
817
+ for i, r in enumerate(weekly, 1):
818
+ st.write(
819
+ f"{i}. {r.get('avatar','๐ŸŽฎ')} **{r['name']}** "
820
+ f"(Game {r['game_id']}) โ€” {r['score']} pts"
821
+ )
822
 
823
  # Create game
824
  def create_game(topics=None, num_questions=5, auto_close=True, ai_topic=None):