library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(rvest)
## Loading required package: xml2
library(stringr)
library(DT)
library(sparkline)
fg_current_standings <- function() {
  url = "https://www.fangraphs.com/depthcharts.aspx?position=Standings"
  h = read_html(url)
  tables = html_table(h)[4:9]
  
  div_order = paste(rep(c("AL", "NL"), each=3), c("E", "C", "W"), sep='-')
  current_standings = lapply(1:6, function(i) {
    tmp = tables[[i]]
    names(tmp) = tmp[2,]
    tmp = tmp[3:nrow(tmp),1:8] # only current standings + team name, not projections
    tmp$div_id = div_order[[i]]
    tmp
  }) %>% dplyr::bind_rows()

  nms = names(current_standings)
  nms = str_replace(nms, "%", "pct")
  nms = str_replace(nms, "/", "_")
  names(current_standings) = nms
  
  for (nm in c("G", "W", "L", "RDif")) {
    current_standings[[nm]] = as.integer(current_standings[[nm]])
  }

  for (nm in c("Wpct", "RS_G", "RA_G")) {
    current_standings[[nm]] = as.numeric(current_standings[[nm]])
  }
  
  current_standings
}
current_standings = fg_current_standings()
  s = current_standings %>% 
    group_by(div_id)  %>% 
    mutate(rank=row_number()) %>% 
    ungroup() %>% mutate(pythag=RS_G**2/(RS_G**2+RA_G**2)) %>% 
    mutate(ravg=mean(RS_G), r1=RS_G-ravg, ra1=ravg-RA_G)
s1 = s %>% mutate(p1= (pythag-Wpct)*162 / 24 * 100, rs1=r1/2*100, ra1=ra1/2*100) %>%  
  select(div_id, Team, rank, W, L, Wpct, RS_G, RA_G, pythag, rs1, ra1, p1)

s1 = s1 %>% mutate(data=paste(rs1,rs1,rs1,ra1,ra1,ra1,p1,p1,p1,sep=","))
s2 = s1 %>% select(div_id, Team:RA_G, data)

columnDefs = list(list(
  targets = c(9),
  render = JS("function(data, type, full){
    return '<span class=spark>' + data + '</span>'           
  }")
))

fnDrawCallback = JS("function (oSettings, json) {
  $('.spark:not(:has(canvas))').sparkline('html', {
    type: 'bar',
    highlightColor: 'orange'
  });
}")


d1 <- datatable(s2, options = list(
  columnDefs = columnDefs,
  fnDrawCallback = fnDrawCallback
))
d1$dependencies <- append(d1$dependencies, htmlwidgets:::getDependency('sparkline'))
d1