Add rCharts demo using Highcharts

Change-Id: I4d348937b5db7888def2ccc763d9171de2cfbc46
diff --git a/demo/rcharts-highcharts.R b/demo/rcharts-highcharts.R
new file mode 100644
index 0000000..231662b
--- /dev/null
+++ b/demo/rcharts-highcharts.R
@@ -0,0 +1,86 @@
+library(RKorAPClient)
+library(rCharts)
+
+plotHighchart <- function(query = "Schlumpf",
+                          years = c(2000:2010),
+                          as.alternatives = length(query) > 1,
+                          vc = "textType = /Zeit.*/ & availability!=QAO-NC-LOC:ids & pubDate in",
+                          kco = new("KorAPConnection", verbose=T) ) {
+  palette <- c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf")
+  h1 <- Highcharts$new()
+  df <-
+    frequencyQuery(kco, query, paste(vc, years), as.alternatives=as.alternatives) %>%
+    { if(! as.alternatives) ipm(.) else percent(.) } %>%
+    mutate(year=as.numeric(queryStringToLabel(vc)))
+
+  ylabel = if(as.alternatives) "%" else "ipm"
+  for(q in query) {
+    dat <- df[df$query==q,]
+    h1$series(
+      marker = list(radius = 2),
+      name = q,
+      data = toJSONArray(data.frame(x=dat$year,
+                                    y = if (as.alternatives) dat$f else dat$ipm,
+                                    percentage = dat$f ,
+                                    count = dat$totalResults,
+                                    click=dat$webUIRequestUrl), json = F),
+      type = 'line',
+      color = palette[1+length(h1$params$series)/2],
+      zIndex = 1
+    )
+    h1$series(
+      name = "ci",
+      data = toJSONArray2(dat[,c('year', 'conf.low', 'conf.high')], names = F, json = F),
+      type = 'arearange',
+      fillOpacity = 0.3,
+      lineWidth = 0,
+      marker = list(enabled = F),
+      enableMouseTracking = F,
+      linkedTo= ':previous',
+      color = palette[1+(length(h1$params$series)-1)/2],
+      zIndex = 0
+    )
+  }
+  h1$plotOptions(line = list(cursor = 'pointer', point = list(
+    events = list(click = "#! function() { window.open(this.click, 'korap'); } !#")
+  )))
+  h1$set(
+    credits = list(text="KorAP R Client Pakckage", href="//github.com/KorAP/RKorAPClient/"),
+    zoomType = "Y",
+#    xAxis = list(title = list(text="year")),
+    yAxis = if (as.alternatives)
+      list(ceiling=100, floor=0, labels = list(format="{value}\U2009%"))
+    else
+      list(title = list(text=ylabel), floor=0),
+    tooltip = list(
+      formatter = paste0("#! function (tooltip) {
+        var str = tooltip.defaultFormatter.call(this, tooltip);
+        if(Array.isArray(str))  {
+          str = str.join('');
+        }
+        for (var i = 0; i < this.points.length; i++) {
+            str = str.replace(/([0-9.,]+.?)", ylabel, "/, this.points[i].point.count+' ($1@)');
+        }
+        return str.replace(/@/g, '", ylabel, "')
+      } !#"),
+      crosshairs =  T,
+      valueDecimals = 2,
+      shared = T,
+      valueSuffix = paste0('\U2009', ylabel)
+    )
+  )
+  print(h1)
+  h1
+}
+
+saveHPlot <- function(h, fname, local = F) {
+  capture.output(h$show('inline', include_assets = TRUE, cdn = TRUE)) %>%
+  paste(collapse = '\n') %>%
+  { if (local)  gsub("=//", "=https://", .) else . } %>%
+  cat(file=fname)
+}
+
+#h1 <-plotHighchart(c("macht []{0,3} Sinn", "ergibt []{0,3} Sinn"), c(1980:2018))
+h1 <- plotHighchart(c("Leser | Lesern | Lesers", 'Leserin | Leserinnen', 'LeserIn | LeserInnen', '"Leser[_\\*]in.*"'), c(1985:2018))
+#plotHighchart(c("Tollpatsch", "Tolpatsch"), c(1991:2018))
+