rm(list = ls())
suppressPackageStartupMessages(library("dplyr"))
suppressPackageStartupMessages(library("purrr"))
## Warning: package 'purrr' was built under R version 3.2.3
suppressPackageStartupMessages(library("readr"))
suppressPackageStartupMessages(library("highcharter"))

urldata <-  "https://static01.nyt.com/newsgraphics/2016/04/14/curry-threes/b061916ea9b7f0b553edad19221d12a423ec14ca/data-tidy.csv"


# raw tidy data
df <- read_csv(urldata)

# data for each line
data <- df %>% 
  select(-player, -pname, -year) %>% 
  as.list() %>% 
  transpose() %>% 
  map(unlist) %>% 
  map(as.vector) %>% 
  map(function(x) c(NA, x)) %>% 
  data_frame(data = .)

# data series
dss <- df %>% 
  select(name = pname, year) %>% 
  bind_cols(data) %>% 
  mutate(color = colorize_vector(year),
         color = hex_to_rgba(color, 0.5),
         original = color) %>% 
  sample_n(100) %>% # SADLY THERE ARE PERFORMANCE ISSUES FOR HIGHCHARTS
  list.parse2()
  

ovropts <- JS("function(){ this.update({color: 'black', shadow: {width: 7, opacity: 0.5, color: 'gray'} })}")
outopts <- JS("function(){ this.update({color: this.userOptions.original, shadow: false })}")

highchart() %>%
# highchart() %>%   
  hc_add_series_list(dss) %>% # data
  hc_yAxis(
    opposite = TRUE
  ) %>% 
  hc_xAxis(
    showFirstLabel = FALSE,
    labels = list(format = "{value}th", useHTML = TRUE)
  ) %>% 
  hc_colorAxis(
    stops = color_stops(),
    min = min(df$year),
    max = max(df$year)
    ) %>% 
  hc_tooltip(
    positioner = JS("function(){ return {x: 10, y: 10} } ")
  ) %>% 
  hc_plotOptions(             # plot.. options?!
    series = list(
      showInLegend = FALSE,
      step = TRUE,
      marker = list(enabled = FALSE),
      events = list(
        mouseOver = ovropts,
        mouseOut = outopts
      )
    )
  )