DaveM2430 commited on
Commit
3390204
Β·
verified Β·
1 Parent(s): fb96a0e

Update app.R

Browse files
Files changed (1) hide show
  1. app.R +36 -18
app.R CHANGED
@@ -139,10 +139,14 @@ build_pitcher_table <- function(lb, min_pitches, portal_only) {
139
  '" data-height="', gsub('"', '&quot;', ifelse(is.na(Height), "", Height)),
140
  '" data-weight="', gsub('"', '&quot;', ifelse(is.na(Weight), "", Weight)),
141
  '">⭐ Add</button>'),
142
- Name = ifelse(HasSinker,
143
- paste0('<span style="background:#cce5ff; padding:2px 6px;',
144
- 'border-radius:3px; font-weight:700;">', Name, '</span>'),
145
- paste0('<span style="font-weight:700;">', Name, '</span>'))
 
 
 
 
146
  )
147
  if (portal_only) df <- df %>% filter(Portal == "Yes")
148
  df %>%
@@ -153,16 +157,17 @@ build_pitcher_table <- function(lb, min_pitches, portal_only) {
153
  arrange(desc(Pitches))
154
  }
155
 
156
- # ── Build hitter table from leaderboard ────────────────────────────────────────
157
  build_hitter_table <- function(lb, min_pa, portal_only, bat_side, hitter_pos) {
 
158
  df <- lb %>%
159
  filter(PA >= min_pa) %>%
160
  mutate(
161
- Name = paste0('<button class="hitter-name-btn" data-batter="',
162
- gsub('"', '&quot;', Batter),
163
- '" style="background:none;border:none;color:#002147;',
164
- 'font-weight:700;cursor:pointer;padding:0;font-size:13px;">',
165
- Name, '</button>'),
 
166
  `Twitter` = paste0('<a href="https://x.com/search?q=',
167
  gsub(" ", "+", sapply(Batter, format_name)),
168
  '&src=typed_query&f=user" target="_blank">&#x1F426; Search</a>'),
@@ -176,19 +181,19 @@ build_hitter_table <- function(lb, min_pa, portal_only, bat_side, hitter_pos) {
176
  parts <- strsplit(n, ", ")[[1]]
177
  if (length(parts)==2) trimws(parts[1]) else n
178
  })),
179
- '" data-team="', gsub('"', '&quot;', ifelse(is.na(Team), "", Team)),
180
- '" data-position="',gsub('"', '&quot;', ifelse(is.na(Position), "", Position)),
181
- '" data-batside="', gsub('"', '&quot;', ifelse(is.na(BatSide), "", BatSide)),
182
- '" data-height="', gsub('"', '&quot;', ifelse(is.na(Height), "", Height)),
183
- '" data-weight="', gsub('"', '&quot;', ifelse(is.na(Weight), "", Weight)),
184
  '">⭐ Add</button>')
185
  )
186
- if (portal_only) df <- df %>% filter(Portal == "Yes")
187
- if (bat_side != "All") df <- df %>% filter(BatSide == bat_side)
188
  if (hitter_pos != "All") df <- df %>% filter(Position == hitter_pos)
189
  df %>%
190
  select(Name, Level, Team, Portal, Position, BatSide, `Twitter`, `Board`,
191
- HomeState, Height, Weight, PA,
192
  BA, OBP, SLG, wOBA, xwOBA, `BB%`, `K%`, `Swing%`, `Contact%`,
193
  `IZ Whiff%`, `Chase%`, `Hard Hit%`, `Avg EV`, `GB%`, `FB%`, `LD%`) %>%
194
  arrange(desc(PA))
@@ -470,6 +475,11 @@ ui <- fluidPage(
470
  selected = "All", width = "120px")
471
  )
472
  )
 
 
 
 
 
473
  )
474
  ),
475
 
@@ -622,6 +632,10 @@ server <- function(input, output, session) {
622
  df <- df %>% filter(HomeState %in% p_states)
623
  if (!is.null(input$throws) && input$throws != "All")
624
  df <- df %>% filter(Throws == input$throws)
 
 
 
 
625
  df
626
  }, error = function(e) {
627
  message("build_pitcher_table failed: ", e$message)
@@ -639,6 +653,10 @@ server <- function(input, output, session) {
639
  h_states <- input$hitter_state
640
  if (!is.null(h_states) && !("All" %in% h_states) && length(h_states) > 0)
641
  df <- df %>% filter(HomeState %in% h_states)
 
 
 
 
642
  df
643
  }, error = function(e) {
644
  message("build_hitter_table failed: ", e$message)
 
139
  '" data-height="', gsub('"', '&quot;', ifelse(is.na(Height), "", Height)),
140
  '" data-weight="', gsub('"', '&quot;', ifelse(is.na(Weight), "", Weight)),
141
  '">⭐ Add</button>'),
142
+ Name = ifelse(HasSinker,
143
+ paste0('<span style="background:#cce5ff; padding:2px 6px;',
144
+ 'border-radius:3px; font-weight:700;">', Name,
145
+ ifelse(!is.na(DateAdded) & DateAdded == max(DateAdded[!is.na(DateAdded)]), ' *', ''),
146
+ '</span>'),
147
+ paste0('<span style="font-weight:700;">', Name,
148
+ ifelse(!is.na(DateAdded) & DateAdded == max(DateAdded[!is.na(DateAdded)]), ' *', ''),
149
+ '</span>'))
150
  )
151
  if (portal_only) df <- df %>% filter(Portal == "Yes")
152
  df %>%
 
157
  arrange(desc(Pitches))
158
  }
159
 
 
160
  build_hitter_table <- function(lb, min_pa, portal_only, bat_side, hitter_pos) {
161
+ latest_date <- max(lb$DateAdded, na.rm = TRUE)
162
  df <- lb %>%
163
  filter(PA >= min_pa) %>%
164
  mutate(
165
+ is_new = !is.na(DateAdded) & DateAdded == latest_date,
166
+ Name = paste0('<button class="hitter-name-btn" data-batter="',
167
+ gsub('"', '&quot;', Batter),
168
+ '" style="background:none;border:none;color:#002147;',
169
+ 'font-weight:700;cursor:pointer;padding:0;font-size:13px;">',
170
+ Name, ifelse(is_new, ' *', ''), '</button>'),
171
  `Twitter` = paste0('<a href="https://x.com/search?q=',
172
  gsub(" ", "+", sapply(Batter, format_name)),
173
  '&src=typed_query&f=user" target="_blank">&#x1F426; Search</a>'),
 
181
  parts <- strsplit(n, ", ")[[1]]
182
  if (length(parts)==2) trimws(parts[1]) else n
183
  })),
184
+ '" data-team="', gsub('"', '&quot;', ifelse(is.na(Team), "", Team)),
185
+ '" data-position="',gsub('"', '&quot;', ifelse(is.na(Position), "", Position)),
186
+ '" data-batside="', gsub('"', '&quot;', ifelse(is.na(BatSide), "", BatSide)),
187
+ '" data-height="', gsub('"', '&quot;', ifelse(is.na(Height), "", Height)),
188
+ '" data-weight="', gsub('"', '&quot;', ifelse(is.na(Weight), "", Weight)),
189
  '">⭐ Add</button>')
190
  )
191
+ if (portal_only) df <- df %>% filter(Portal == "Yes")
192
+ if (bat_side != "All") df <- df %>% filter(BatSide == bat_side)
193
  if (hitter_pos != "All") df <- df %>% filter(Position == hitter_pos)
194
  df %>%
195
  select(Name, Level, Team, Portal, Position, BatSide, `Twitter`, `Board`,
196
+ HomeState, Height, Weight, DateAdded, PA,
197
  BA, OBP, SLG, wOBA, xwOBA, `BB%`, `K%`, `Swing%`, `Contact%`,
198
  `IZ Whiff%`, `Chase%`, `Hard Hit%`, `Avg EV`, `GB%`, `FB%`, `LD%`) %>%
199
  arrange(desc(PA))
 
475
  selected = "All", width = "120px")
476
  )
477
  )
478
+ ),
479
+ tags$div(
480
+ tags$div("New Players", class = "filter-label"),
481
+ checkboxInput("new_only", label = "Show New Only",
482
+ value = FALSE)
483
  )
484
  ),
485
 
 
632
  df <- df %>% filter(HomeState %in% p_states)
633
  if (!is.null(input$throws) && input$throws != "All")
634
  df <- df %>% filter(Throws == input$throws)
635
+ if (isTRUE(input$new_only)) {
636
+ latest_date <- max(df$DateAdded, na.rm = TRUE)
637
+ df <- df %>% filter(!is.na(DateAdded) & DateAdded == latest_date)
638
+ }
639
  df
640
  }, error = function(e) {
641
  message("build_pitcher_table failed: ", e$message)
 
653
  h_states <- input$hitter_state
654
  if (!is.null(h_states) && !("All" %in% h_states) && length(h_states) > 0)
655
  df <- df %>% filter(HomeState %in% h_states)
656
+ if (isTRUE(input$new_only)) {
657
+ latest_date <- max(df$DateAdded, na.rm = TRUE)
658
+ df <- df %>% filter(!is.na(DateAdded) & DateAdded == latest_date)
659
+ }
660
  df
661
  }, error = function(e) {
662
  message("build_hitter_table failed: ", e$message)