Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
from datetime import date, timedelta
|
4 |
+
import random
|
5 |
+
|
6 |
+
# Functions for schedule generation and date assignment are as defined earlier
|
7 |
+
|
8 |
+
def create_schedule(num_teams, num_conferences, num_inter_games):
|
9 |
+
"""Create the entire schedule based on user inputs."""
|
10 |
+
full_schedule = []
|
11 |
+
|
12 |
+
# Generate schedule for each conference
|
13 |
+
for i in range(num_conferences):
|
14 |
+
conference_name = chr(65 + i) # 'A', 'B', 'C', 'D', ...
|
15 |
+
combined_schedule = combine_schedules(conference_name, num_teams, num_inter_games)
|
16 |
+
schedule_with_dates = assign_dates_to_matches_v2(combined_schedule)
|
17 |
+
|
18 |
+
for match in schedule_with_dates:
|
19 |
+
full_schedule.append({
|
20 |
+
"Team 1": match[0],
|
21 |
+
"Team 2": match[1],
|
22 |
+
"Date": match[2]
|
23 |
+
})
|
24 |
+
|
25 |
+
return pd.DataFrame(full_schedule)
|
26 |
+
|
27 |
+
# Streamlit App
|
28 |
+
|
29 |
+
st.title("Basketball Game Schedule Generator")
|
30 |
+
|
31 |
+
# Configuration UI
|
32 |
+
st.header("Configuration")
|
33 |
+
|
34 |
+
num_teams = st.number_input("Number of teams per conference:", min_value=2, value=10)
|
35 |
+
num_conferences = st.number_input("Number of conferences:", min_value=2, value=4)
|
36 |
+
num_inter_games = st.number_input("Number of inter-conference games per team:", min_value=1, value=3)
|
37 |
+
|
38 |
+
commissioners = st.multiselect("Add commissioners:", options=[], default=[])
|
39 |
+
|
40 |
+
add_commissioner = st.text_input("New commissioner name:")
|
41 |
+
if add_commissioner:
|
42 |
+
commissioners.append(add_commissioner)
|
43 |
+
|
44 |
+
# Schedule Generation
|
45 |
+
if st.button("Generate Schedule"):
|
46 |
+
global schedule_df
|
47 |
+
schedule_df = create_schedule(num_teams, num_conferences, num_inter_games)
|
48 |
+
|
49 |
+
# Schedule Viewing
|
50 |
+
st.header("View Schedule")
|
51 |
+
conference_selector = st.selectbox("Select conference to view schedule:", options=["All"] + [f"Conference {chr(65+i)}" for i in range(num_conferences)])
|
52 |
+
if conference_selector == "All":
|
53 |
+
st.dataframe(schedule_df)
|
54 |
+
else:
|
55 |
+
filtered_schedule = schedule_df[(schedule_df["Team 1"].str.startswith(conference_selector)) | (schedule_df["Team 2"].str.startswith(conference_selector))]
|
56 |
+
st.dataframe(filtered_schedule)
|
57 |
+
|
58 |
+
# Export functionality can be added later
|