Jon Solow commited on
Commit
f625376
·
1 Parent(s): 050fd9f

Add a filter for nfl teams for player selection

Browse files
Files changed (1) hide show
  1. src/pages/10_Set_Your_Lineup.py +22 -12
src/pages/10_Set_Your_Lineup.py CHANGED
@@ -39,11 +39,18 @@ def format_player_option(player_opt: PlayerOption) -> str:
39
 
40
 
41
  def position_cell(
42
- week: str, pos_str: str, pos_idx: int, options_map: dict[str, dict[int, list[PlayerOption]]], existing_selection_map
 
 
 
 
 
43
  ):
44
  pos_label = f"{week}-{pos_str}-{pos_idx}"
45
  selected_id = existing_selection_map.get(pos_label)
46
  options_list = options_map[pos_str][int(week)]
 
 
47
  non_locked_options = [x for x in options_list if not x.is_locked()]
48
  disabled = False
49
  # get selected player by id from options
@@ -100,25 +107,25 @@ def update_and_save_selection(pos_label: str, selection_id: str):
100
  st.rerun()
101
 
102
 
103
- def week_selections(week, player_options, existing_selections):
104
  selection_cols = st.columns(8)
105
 
106
  with selection_cols[0]:
107
- position_cell(week, "QB", 1, player_options, existing_selections)
108
  with selection_cols[1]:
109
- position_cell(week, "RB", 1, player_options, existing_selections)
110
  with selection_cols[2]:
111
- position_cell(week, "RB", 2, player_options, existing_selections)
112
  with selection_cols[3]:
113
- position_cell(week, "WR", 1, player_options, existing_selections)
114
  with selection_cols[4]:
115
- position_cell(week, "WR", 2, player_options, existing_selections)
116
  with selection_cols[5]:
117
- position_cell(week, "TE", 1, player_options, existing_selections)
118
  with selection_cols[6]:
119
- position_cell(week, "K", 1, player_options, existing_selections)
120
  with selection_cols[7]:
121
- position_cell(week, "DEF", 1, player_options, existing_selections)
122
 
123
 
124
  def get_page():
@@ -146,15 +153,18 @@ def get_page():
146
  st.stop()
147
 
148
  player_options = load_options()
 
 
 
149
 
150
  for week in range(1, 5):
151
  existing_week_selections = {k: v for k, v in existing_selections.items() if k[0] == str(week)}
152
  st.header(PLAYOFF_WEEK_TO_NAME[week])
153
  if week < CURRENT_PLAYOFF_WEEK:
154
  with st.expander("Show Previous Week"):
155
- week_selections(week, player_options, existing_week_selections)
156
  else:
157
- week_selections(week, player_options, existing_week_selections)
158
 
159
  set_selectbox_readonly()
160
 
 
39
 
40
 
41
  def position_cell(
42
+ week: str,
43
+ pos_str: str,
44
+ pos_idx: int,
45
+ options_map: dict[str, dict[int, list[PlayerOption]]],
46
+ existing_selection_map,
47
+ team_filter: list[str],
48
  ):
49
  pos_label = f"{week}-{pos_str}-{pos_idx}"
50
  selected_id = existing_selection_map.get(pos_label)
51
  options_list = options_map[pos_str][int(week)]
52
+ if team_filter:
53
+ options_list = [x for x in options_list if x.team in team_filter or str(selected_id) == str(x.gsis_id)]
54
  non_locked_options = [x for x in options_list if not x.is_locked()]
55
  disabled = False
56
  # get selected player by id from options
 
107
  st.rerun()
108
 
109
 
110
+ def week_selections(week, player_options, existing_selections, team_filter: list[str]):
111
  selection_cols = st.columns(8)
112
 
113
  with selection_cols[0]:
114
+ position_cell(week, "QB", 1, player_options, existing_selections, team_filter)
115
  with selection_cols[1]:
116
+ position_cell(week, "RB", 1, player_options, existing_selections, team_filter)
117
  with selection_cols[2]:
118
+ position_cell(week, "RB", 2, player_options, existing_selections, team_filter)
119
  with selection_cols[3]:
120
+ position_cell(week, "WR", 1, player_options, existing_selections, team_filter)
121
  with selection_cols[4]:
122
+ position_cell(week, "WR", 2, player_options, existing_selections, team_filter)
123
  with selection_cols[5]:
124
+ position_cell(week, "TE", 1, player_options, existing_selections, team_filter)
125
  with selection_cols[6]:
126
+ position_cell(week, "K", 1, player_options, existing_selections, team_filter)
127
  with selection_cols[7]:
128
+ position_cell(week, "DEF", 1, player_options, existing_selections, team_filter)
129
 
130
 
131
  def get_page():
 
153
  st.stop()
154
 
155
  player_options = load_options()
156
+ # TODO - make more robust than just picking week 1 defenses but should work for now
157
+ team_options_for_filter = sorted([x.team for x in player_options["DEF"][1]])
158
+ team_filter = st.multiselect("Filter for NFL teams", team_options_for_filter)
159
 
160
  for week in range(1, 5):
161
  existing_week_selections = {k: v for k, v in existing_selections.items() if k[0] == str(week)}
162
  st.header(PLAYOFF_WEEK_TO_NAME[week])
163
  if week < CURRENT_PLAYOFF_WEEK:
164
  with st.expander("Show Previous Week"):
165
+ week_selections(week, player_options, existing_week_selections, team_filter)
166
  else:
167
+ week_selections(week, player_options, existing_week_selections, team_filter)
168
 
169
  set_selectbox_readonly()
170