From 96afb20d191fc3faf148e744b06120cfa63918c5 Mon Sep 17 00:00:00 2001 From: Ramnath Vaidyanathan Date: Wed, 10 Apr 2013 10:29:40 -0400 Subject: [PATCH] initial commit of the package --- .Rbuildignore | 2 + .gitignore | 5 + DESCRIPTION | 10 ++ NAMESPACE | 4 + R/main.R | 26 +++ R/rCharts.R | 81 +++++++++ R/renderChart.R | 21 +++ R/showOutput.R | 15 ++ R/utils.R | 19 +++ README.md | 74 +++++++++ inst/app/server.R | 10 ++ inst/app/ui.R | 18 ++ inst/polycharts/examples.R | 32 ++++ inst/polycharts/js/polychart2.standalone.js | 248 ++++++++++++++++++++++++++++ inst/polycharts/layouts/polychart1.html | 5 + inst/polycharts/layouts/polychart2.html | 13 ++ inst/shiny/server.R | 6 + inst/shiny/ui.R | 4 + 18 files changed, 593 insertions(+) create mode 100644 .Rbuildignore create mode 100644 .gitignore create mode 100644 DESCRIPTION create mode 100644 NAMESPACE create mode 100644 R/main.R create mode 100644 R/rCharts.R create mode 100644 R/renderChart.R create mode 100644 R/showOutput.R create mode 100644 R/utils.R create mode 100644 README.md create mode 100644 inst/app/server.R create mode 100644 inst/app/ui.R create mode 100644 inst/polycharts/examples.R create mode 100644 inst/polycharts/js/polychart2.standalone.js create mode 100644 inst/polycharts/layouts/polychart1.html create mode 100644 inst/polycharts/layouts/polychart2.html create mode 100644 inst/shiny/server.R create mode 100644 inst/shiny/ui.R diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000..91114bf --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,2 @@ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15b6638 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.Rproj.user +.Rhistory +.RData +.DS_Store +*.Rproj diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 0000000..e9bde01 --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,10 @@ +Package: rCharts +Type: Package +Title: Interactive Charts using Polycharts.js +Version: 0.0.1 +Date: 2013-04-09 +Author: Ramnath Vaidyanathan +Maintainer: Ramnath Vaidyanathan +Description: Create interactive visualizations with a plotting interface familiar to R users + using the Polycharts javascript library +License: MIT diff --git a/NAMESPACE b/NAMESPACE new file mode 100644 index 0000000..d312779 --- /dev/null +++ b/NAMESPACE @@ -0,0 +1,4 @@ +exportPattern("^[[:alpha:]]+") +import(rjson) +import(plyr) +import(whisker) diff --git a/R/main.R b/R/main.R new file mode 100644 index 0000000..c3ec669 --- /dev/null +++ b/R/main.R @@ -0,0 +1,26 @@ +#' Main plotting function +#' +#' @examples +#' names(iris) = gsub('\\.', '', names(iris)) +#' rPlot(SepalLength ~ SepalWidth | Species, data = iris, type = 'point', color = 'Species') +#' +#' + +rPlot <- function(x, ...){ + UseMethod('rPlot') +} + +rPlot.default <- function(x, y, data, ..., width = 800, height = 400){ + myChart <- PolyChart$new() + myChart$addParams(width = width, height = height) + myChart$layer2(x = x, y = y, data = data, ...) + return(myChart$copy()) +} + +rPlot.formula <- function(x, data, ..., width = 800, height = 400){ + myChart <- PolyChart$new() + myChart$addParams(width = width, height = height) + myChart$layer(x, data, ...) + return(myChart$copy()) +} + diff --git a/R/rCharts.R b/R/rCharts.R new file mode 100644 index 0000000..3faef83 --- /dev/null +++ b/R/rCharts.R @@ -0,0 +1,81 @@ +PolyChart = setRefClass('PolyChart', list(params = 'list'), methods = list( + initialize = function(){ + params <<- list(dom = basename(tempfile('chart')), width = 700, height = 300) + params$layers <<- list() + params$facet <<- list() + params$guides <<- list() + }, + addParams = function(...){ + params <<- modifyList(params, list(...)) + }, + layer = function(x, data, ...){ + len = length(params$layers) + fml = lattice::latticeParseFormula(x, data = data) + params$layers[[len + 1]] <<- list(x = fml$right.name, y = fml$left.name, + data = data, ...) + if (!is.null(fml$condition)){ + params$facet <<- c(params$facet, type = 'wrap', var = names(fml$condition)) + # len = length(params$facet) + # params$facet[[len + 1]] <<- list(type = 'type', var = facet) + } + }, + layer2 = function(x, y, data, facet = NULL, ...){ + len = length(params$layers) + params$layers[[len + 1]] <<- list(x = x, y = y, data = data, ...) + if (!is.null(facet)){ + params$facet <<- c(params$facet, type = 'wrap', var = facet) + # len = length(params$facet) + # params$facet[[len + 1]] <<- list(type = 'type', var = facet) + } + }, + facet = function(...){ + len = length(params$facets) + params$facet[[len + 1]] <<- list(...) + }, + guides = function(...){ + params$guides <<- modifyList(params$guides, addGuide(...)) + }, + html = function(chartId = NULL){ + template_file = system.file('polycharts', 'layouts', 'polychart1.html', + package = 'rCharts') + template = paste(readLines(template_file, warn = F), collapse = '\n') + if (is.null(chartId)){ + chartId <- params$dom + } else { + params$dom <<- chartId + } + chartParams = toJSON(params) + html = paste(capture.output(cat(whisker.render(template))), collapse = '\n') + return(html) + }, + printChart = function(chartId = NULL){ + writeLines(.self$html(chartId)) + }, + render = function(chartId = NULL){ + if (is.null(chartId)){ + chartId <- params$dom + } else { + params$dom <<- chartId + } + template_file = system.file('polycharts', 'layouts', 'polychart2.html', + package = 'rCharts') + template = paste(readLines(template_file, warn = F), collapse = '\n') + partials = list(polychart1 = .self$html(chartId)) + html = capture.output(cat(whisker.render(template, partials = partials))) + }, + save = function(destfile = 'index.html'){ + writeLines(.self$render(), destfile) + }, + show = function(static = !("shiny" %in% rownames(installed.packages()))){ + if (static){ + tf <- tempfile(fileext = 'html'); + writeLines(.self$render(), tf) + system(sprintf("open %s", tf)) + } else { + shiny_copy = .self$copy() + shiny_copy$params$dom = 'show' + assign(".rChart_object", shiny_copy, envir = .GlobalEnv) + shiny::runApp(file.path(system.file(package = "rCharts"), "shiny")) + } + } +)) \ No newline at end of file diff --git a/R/renderChart.R b/R/renderChart.R new file mode 100644 index 0000000..a6e8a65 --- /dev/null +++ b/R/renderChart.R @@ -0,0 +1,21 @@ +#' renderChart (use with Shiny) +#' +#' Use rNVD3 charts as Shiny output. First, use \code{renderChart} in +#' \code{server.R} to assign the chart object to an Shiny output. Then create an +#' chartOutput with the same name in \code{ui.R}. \code{chartOutput} is +#' currently just an alias for \code{htmlOutput}. +#' +#' @param expr An expression that returns a chart object +#' @param env The environment in which to evaluate \code{expr}. +#' @param quoted Is expr a quoted expression (with \code{quote()})? This is +#' useful if you want to save an expression in a variable. +#' +#' @export +renderChart <- function(expr, env = parent.frame(), quoted = FALSE) { + func <- shiny::exprToFunction(expr, env, quoted) + + function() { + rChart_ <- func() + rChart_$html() + } +} \ No newline at end of file diff --git a/R/showOutput.R b/R/showOutput.R new file mode 100644 index 0000000..af8f260 --- /dev/null +++ b/R/showOutput.R @@ -0,0 +1,15 @@ +showOutput <- function(outputId) { + # Add javascript resources + suppressMessages(singleton(addResourcePath("polycharts", + system.file('polycharts', package='rCharts')))) + + div(class="rChart", + # Add Javascripts + tagList( + singleton(tags$head(tags$script(src = "polycharts/js/polychart2.standalone.js", + type='text/javascript'))) + ), + # Add chart html + htmlOutput(outputId) + ) +} diff --git a/R/utils.R b/R/utils.R new file mode 100644 index 0000000..3d79c1f --- /dev/null +++ b/R/utils.R @@ -0,0 +1,19 @@ +addGuide <- function(...){ + UseMethod('addGuides') +} + +addGuides.default <- function(...){ + list(...) +} + +addGuides.character <- function(...){ + yaml::yaml.load(...) +} + +addLayer <- function(x, ...){ + UseMethod('addLayer') +} + +addLayer.default <- function(...){ + +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..bedfcf9 --- /dev/null +++ b/README.md @@ -0,0 +1,74 @@ +## rCharts + +This R package provides a familiar plotting interface for R users to create interactive visualizations using [polychart.js](https://github.com/Polychart/polychart2). + +### Installation + +You can install `rCharts` from `github` using the `devtools` package + +``` +require(devtools) +install_github('rCharts', 'ramnathv') +``` + +### Usage + +`rCharts` uses a formula interface to specify plots, just like the `lattice` package. Here are a few examples you can try out in your R console. + +``` +## Example 1 Facetted Scatterplot +names(iris) = gsub("\\.", "", names(iris)) +rPlot(SepalLength ~ SepalWidth | Species, data = iris, color = 'Species', type = 'point') + +## Example 2 Facetted Barplot +hair_eye = as.data.frame(HairEyeColor) +rPlot(Freq ~ Hair | Eye, color = 'Eye', data = hair_eye, type = 'bar') +``` + +`rCharts` is also compatible with [Slidify](http://slidify.org). + +More documentation is underway. + +### Using with Shiny + +``` +## server.r +require(rCharts) +shinyServer(function(input, output) { + output$myChart <- renderChart({ + names(iris) = gsub("\\.", "", names(iris)) + p1 <- rPlot(input$x, input$y, data = iris, color = "Species", + facet = "Species", type = 'point') + p1$addParams(dom = 'myChart') + return(p1) + }) +}) + +## ui.R +require(rCharts) +shinyUI(pageWithSidebar( + headerPanel("rCharts: Interactive Charts from R using polychart.js"), + + sidebarPanel( + selectInput(inputId = "x", + label = "Choose X", + choices = c('SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'), + selected = "SepalLength"), + selectInput(inputId = "y", + label = "Choose Y", + choices = c('SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'), + selected = "SepalWidth") + ), + mainPanel( + showOutput("myChart") + ) +)) +``` + +### Credits + +Most of the implementation in `rCharts` is inspired by [rHighcharts](https://github.com/metagraf/rHighcharts) and [rVega](https://github.com/metagraf/rVega). I have reused some code from these packages verbatim, and would like to acknowledge the efforts of its author [Thomas Reinholdsson](https://github.com/reinholdsson). + +### License + +`rCharts` is licensed under the MIT License. However, the Polycharts JavaScript library that is included in this package is not free for commercial use, and is licensed under Creative Commons 3.0 Attribution & Non-commercial. Read more about its license at http://polychart.com/js/license. \ No newline at end of file diff --git a/inst/app/server.R b/inst/app/server.R new file mode 100644 index 0000000..4dae25d --- /dev/null +++ b/inst/app/server.R @@ -0,0 +1,10 @@ +require(rCharts) +shinyServer(function(input, output) { + output$myChart <- renderChart({ + names(iris) = gsub("\\.", "", names(iris)) + p1 <- rPlot(input$x, input$y, data = iris, color = "Species", + facet = "Species", type = 'point') + p1$addParams(dom = 'myChart') + return(p1) + }) +}) \ No newline at end of file diff --git a/inst/app/ui.R b/inst/app/ui.R new file mode 100644 index 0000000..8ae57bc --- /dev/null +++ b/inst/app/ui.R @@ -0,0 +1,18 @@ +require(rCharts) +shinyUI(pageWithSidebar( + headerPanel("rCharts: Interactive Charts from R using polychart.js"), + + sidebarPanel( + selectInput(inputId = "x", + label = "Choose X", + choices = c('SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'), + selected = "SepalLength"), + selectInput(inputId = "y", + label = "Choose Y", + choices = c('SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'), + selected = "SepalWidth") + ), + mainPanel( + showOutput("myChart") + ) +)) \ No newline at end of file diff --git a/inst/polycharts/examples.R b/inst/polycharts/examples.R new file mode 100644 index 0000000..87c38b8 --- /dev/null +++ b/inst/polycharts/examples.R @@ -0,0 +1,32 @@ +## Example 1 Facetted Scatterplot +names(iris) = gsub("\\.", "", names(iris)) +rPlot(SepalLength ~ SepalWidth | Species, data = iris, color = 'Species', type = 'point') + + +## Example 2 Facetted Barplot +hair_eye = as.data.frame(HairEyeColor) +rPlot(Freq ~ Hair | Eye, color = 'Eye', data = hair_eye, type = 'bar') + +## Example 3 Boxplot +data(tips, package = 'reshape2') +rPlot(x = 'day', y = 'box(tip)', data = tips, type = 'box') + +## Example 4 + +dat = count(mtcars, .(gear, am)) +rPlot(x = 'bin(gear, 1)', y = 'freq', data = dat, type = 'bar', facet = 'am') + +## Example 5 (Heat Map) + +dat = expand.grid(x = 1:5, y = 1:5) +dat = transform(dat, value = sample(1:5, 25, replace = T)) +rPlot(x = 'bin(x, 1)', y = 'bin(y, 1)', color = 'value', data = dat, type = 'tile') + + +# Example 6 (NBA Heat Map) +nba <- read.csv('http://datasets.flowingdata.com/ppg2008.csv') +nba.m <- ddply(melt(nba), .(variable), transform, rescale = rescale(value)) +p1 <- rPlot(Name ~ variable, color = 'rescale', data = nba.m, type = 'tile', height = 600) +p1$guides("{color: {scale: {type: gradient, lower: white, upper: steelblue}}}") +p1 + diff --git a/inst/polycharts/js/polychart2.standalone.js b/inst/polycharts/js/polychart2.standalone.js new file mode 100644 index 0000000..3eac8e6 --- /dev/null +++ b/inst/polycharts/js/polychart2.standalone.js @@ -0,0 +1,248 @@ +; +(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,v=e.reduce,h=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,_=Object.keys,j=i.bind,w=function(n){return n instanceof w?n:this instanceof w?(this._wrapped=n,void 0):new w(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=w),exports._=w):n._=w,w.VERSION="1.4.3";var A=w.each=w.forEach=function(n,t,e){if(null!=n)if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a in n)if(w.has(n,a)&&t.call(e,n[a],a,n)===r)return};w.map=w.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e[e.length]=t.call(r,n,u,i)}),e)};var O="Reduce of empty array with no initial value";w.reduce=w.foldl=w.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduce===v)return e&&(t=w.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},w.reduceRight=w.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduceRight===h)return e&&(t=w.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=w.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},w.find=w.detect=function(n,t,r){var e;return E(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},w.filter=w.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&(e[e.length]=n)}),e)},w.reject=function(n,t,r){return w.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},w.every=w.all=function(n,t,e){t||(t=w.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var E=w.some=w.any=function(n,t,e){t||(t=w.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};w.contains=w.include=function(n,t){return null==n?!1:y&&n.indexOf===y?-1!=n.indexOf(t):E(n,function(n){return n===t})},w.invoke=function(n,t){var r=o.call(arguments,2);return w.map(n,function(n){return(w.isFunction(t)?t:n[t]).apply(n,r)})},w.pluck=function(n,t){return w.map(n,function(n){return n[t]})},w.where=function(n,t){return w.isEmpty(t)?[]:w.filter(n,function(n){for(var r in t)if(t[r]!==n[r])return!1;return!0})},w.max=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.max.apply(Math,n);if(!t&&w.isEmpty(n))return-1/0;var e={computed:-1/0,value:-1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;a>=e.computed&&(e={value:n,computed:a})}),e.value},w.min=function(n,t,r){if(!t&&w.isArray(n)&&n[0]===+n[0]&&65535>n.length)return Math.min.apply(Math,n);if(!t&&w.isEmpty(n))return 1/0;var e={computed:1/0,value:1/0};return A(n,function(n,u,i){var a=t?t.call(r,n,u,i):n;e.computed>a&&(e={value:n,computed:a})}),e.value},w.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=w.random(r++),e[r-1]=e[t],e[t]=n}),e};var F=function(n){return w.isFunction(n)?n:function(t){return t[n]}};w.sortBy=function(n,t,r){var e=F(t);return w.pluck(w.map(n,function(n,t,u){return{value:n,index:t,criteria:e.call(r,n,t,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||void 0===r)return 1;if(e>r||void 0===e)return-1}return n.indexi;){var o=i+a>>>1;u>r.call(e,n[o])?i=o+1:a=o}return i},w.toArray=function(n){return n?w.isArray(n)?o.call(n):n.length===+n.length?w.map(n,w.identity):w.values(n):[]},w.size=function(n){return null==n?0:n.length===+n.length?n.length:w.keys(n).length},w.first=w.head=w.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:o.call(n,0,t)},w.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},w.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},w.rest=w.tail=w.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},w.compact=function(n){return w.filter(n,w.identity)};var R=function(n,t,r){return A(n,function(n){w.isArray(n)?t?a.apply(r,n):R(n,t,r):r.push(n)}),r};w.flatten=function(n,t){return R(n,t,[])},w.without=function(n){return w.difference(n,o.call(arguments,1))},w.uniq=w.unique=function(n,t,r,e){w.isFunction(t)&&(e=r,r=t,t=!1);var u=r?w.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:w.contains(a,r))||(a.push(r),i.push(n[e]))}),i},w.union=function(){return w.uniq(c.apply(e,arguments))},w.intersection=function(n){var t=o.call(arguments,1);return w.filter(w.uniq(n),function(n){return w.every(t,function(t){return w.indexOf(t,n)>=0})})},w.difference=function(n){var t=c.apply(e,o.call(arguments,1));return w.filter(n,function(n){return!w.contains(t,n)})},w.zip=function(){for(var n=o.call(arguments),t=w.max(w.pluck(n,"length")),r=Array(t),e=0;t>e;e++)r[e]=w.pluck(n,""+e);return r},w.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},w.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=w.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},w.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},w.range=function(n,t,r){1>=arguments.length&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=Array(e);e>u;)i[u++]=n,n+=r;return i};var I=function(){};w.bind=function(n,t){var r,e;if(n.bind===j&&j)return j.apply(n,o.call(arguments,1));if(!w.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));I.prototype=n.prototype;var u=new I;I.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},w.bindAll=function(n){var t=o.call(arguments,1);return 0==t.length&&(t=w.functions(n)),A(t,function(t){n[t]=w.bind(n[t],n)}),n},w.memoize=function(n,t){var r={};return t||(t=w.identity),function(){var e=t.apply(this,arguments);return w.has(r,e)?r[e]:r[e]=n.apply(this,arguments)}},w.delay=function(n,t){var r=o.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},w.defer=function(n){return w.delay.apply(w,[n,1].concat(o.call(arguments,1)))},w.throttle=function(n,t){var r,e,u,i,a=0,o=function(){a=new Date,u=null,i=n.apply(r,e)};return function(){var c=new Date,l=t-(c-a);return r=this,e=arguments,0>=l?(clearTimeout(u),u=null,a=c,i=n.apply(r,e)):u||(u=setTimeout(o,l)),i}},w.debounce=function(n,t,r){var e,u;return function(){var i=this,a=arguments,o=function(){e=null,r||(u=n.apply(i,a))},c=r&&!e;return clearTimeout(e),e=setTimeout(o,t),c&&(u=n.apply(i,a)),u}},w.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},w.wrap=function(n,t){return function(){var r=[n];return a.apply(r,arguments),t.apply(this,r)}},w.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},w.after=function(n,t){return 0>=n?t():function(){return 1>--n?t.apply(this,arguments):void 0}},w.keys=_||function(n){if(n!==Object(n))throw new TypeError("Invalid object");var t=[];for(var r in n)w.has(n,r)&&(t[t.length]=r);return t},w.values=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push(n[r]);return t},w.pairs=function(n){var t=[];for(var r in n)w.has(n,r)&&t.push([r,n[r]]);return t},w.invert=function(n){var t={};for(var r in n)w.has(n,r)&&(t[n[r]]=r);return t},w.functions=w.methods=function(n){var t=[];for(var r in n)w.isFunction(n[r])&&t.push(r);return t.sort()},w.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},w.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},w.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)w.contains(r,u)||(t[u]=n[u]);return t},w.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)null==n[r]&&(n[r]=t[r])}),n},w.clone=function(n){return w.isObject(n)?w.isArray(n)?n.slice():w.extend({},n):n},w.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof w&&(n=n._wrapped),t instanceof w&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==t+"";case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;r.push(n),e.push(t);var a=0,o=!0;if("[object Array]"==u){if(a=n.length,o=a==t.length)for(;a--&&(o=S(n[a],t[a],r,e)););}else{var c=n.constructor,f=t.constructor;if(c!==f&&!(w.isFunction(c)&&c instanceof c&&w.isFunction(f)&&f instanceof f))return!1;for(var s in n)if(w.has(n,s)&&(a++,!(o=w.has(t,s)&&S(n[s],t[s],r,e))))break;if(o){for(s in t)if(w.has(t,s)&&!a--)break;o=!a}}return r.pop(),e.pop(),o};w.isEqual=function(n,t){return S(n,t,[],[])},w.isEmpty=function(n){if(null==n)return!0;if(w.isArray(n)||w.isString(n))return 0===n.length;for(var t in n)if(w.has(n,t))return!1;return!0},w.isElement=function(n){return!(!n||1!==n.nodeType)},w.isArray=x||function(n){return"[object Array]"==l.call(n)},w.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){w["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),w.isArguments(arguments)||(w.isArguments=function(n){return!(!n||!w.has(n,"callee"))}),w.isFunction=function(n){return"function"==typeof n},w.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},w.isNaN=function(n){return w.isNumber(n)&&n!=+n},w.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},w.isNull=function(n){return null===n},w.isUndefined=function(n){return void 0===n},w.has=function(n,t){return f.call(n,t)},w.noConflict=function(){return n._=t,this},w.identity=function(n){return n},w.times=function(n,t,r){for(var e=Array(n),u=0;n>u;u++)e[u]=t.call(r,u);return e},w.random=function(n,t){return null==t&&(t=n,n=0),n+(0|Math.random()*(t-n+1))};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"}};T.unescape=w.invert(T.escape);var M={escape:RegExp("["+w.keys(T.escape).join("")+"]","g"),unescape:RegExp("("+w.keys(T.unescape).join("|")+")","g")};w.each(["escape","unescape"],function(n){w[n]=function(t){return null==t?"":(""+t).replace(M[n],function(t){return T[n][t]})}}),w.result=function(n,t){if(null==n)return null;var r=n[t];return w.isFunction(r)?r.call(n):r},w.mixin=function(n){A(w.functions(n),function(t){var r=w[t]=n[t];w.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(w,n))}})};var N=0;w.uniqueId=function(n){var t=""+ ++N;return n?n+t:t},w.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;w.template=function(n,t,r){r=w.defaults({},r,w.templateSettings);var e=RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,a,o){return i+=n.slice(u,o).replace(D,function(n){return"\\"+B[n]}),r&&(i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(i+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),a&&(i+="';\n"+a+"\n__p+='"),u=o+t.length,t}),i+="';\n",r.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var a=Function(r.variable||"obj","_",i)}catch(o){throw o.source=i,o}if(t)return a(t,w);var c=function(n){return a.call(this,n,w)};return c.source="function("+(r.variable||"obj")+"){\n"+i+"}",c},w.chain=function(n){return w(n).chain()};var z=function(n){return this._chain?w(n).chain():n};w.mixin(w),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];w.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];w.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),w.extend(w.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this); +; +// moment.js +// version : 1.7.2 +// author : Tim Wood +// license : MIT +// momentjs.com +(function(a){function E(a,b,c,d){var e=c.lang();return e[a].call?e[a](c,d):e[a][b]}function F(a,b){return function(c){return K(a.call(this,c),b)}}function G(a){return function(b){var c=a.call(this,b);return c+this.lang().ordinal(c)}}function H(a,b,c){this._d=a,this._isUTC=!!b,this._a=a._a||null,this._lang=c||!1}function I(a){var b=this._data={},c=a.years||a.y||0,d=a.months||a.M||0,e=a.weeks||a.w||0,f=a.days||a.d||0,g=a.hours||a.h||0,h=a.minutes||a.m||0,i=a.seconds||a.s||0,j=a.milliseconds||a.ms||0;this._milliseconds=j+i*1e3+h*6e4+g*36e5,this._days=f+e*7,this._months=d+c*12,b.milliseconds=j%1e3,i+=J(j/1e3),b.seconds=i%60,h+=J(i/60),b.minutes=h%60,g+=J(h/60),b.hours=g%24,f+=J(g/24),f+=e*7,b.days=f%30,d+=J(f/30),b.months=d%12,c+=J(d/12),b.years=c,this._lang=!1}function J(a){return a<0?Math.ceil(a):Math.floor(a)}function K(a,b){var c=a+"";while(c.length70?1900:2e3);break;case"YYYY":c[0]=~~Math.abs(b);break;case"a":case"A":d.isPm=(b+"").toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":c[3]=~~b;break;case"m":case"mm":c[4]=~~b;break;case"s":case"ss":c[5]=~~b;break;case"S":case"SS":case"SSS":c[6]=~~(("0."+b)*1e3);break;case"Z":case"ZZ":d.isUTC=!0,e=(b+"").match(x),e&&e[1]&&(d.tzh=~~e[1]),e&&e[2]&&(d.tzm=~~e[2]),e&&e[0]==="+"&&(d.tzh=-d.tzh,d.tzm=-d.tzm)}b==null&&(c[8]=!1)}function W(a,b){var c=[0,0,1,0,0,0,0],d={tzh:0,tzm:0},e=b.match(k),f,g;for(f=0;f0,j[4]=c,Z.apply({},j)}function _(a,c){b.fn[a]=function(a){var b=this._isUTC?"UTC":"";return a!=null?(this._d["set"+b+c](a),this):this._d["get"+b+c]()}}function ab(a){b.duration.fn[a]=function(){return this._data[a]}}function bb(a,c){b.duration.fn["as"+a]=function(){return+this/c}}var b,c="1.7.2",d=Math.round,e,f={},g="en",h=typeof module!="undefined"&&module.exports,i="months|monthsShort|weekdays|weekdaysShort|weekdaysMin|longDateFormat|calendar|relativeTime|ordinal|meridiem".split("|"),j=/^\/?Date\((\-?\d+)/i,k=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|zz?|ZZ?|.)/g,l=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?)/g,m=/([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi,n=/\d\d?/,o=/\d{1,3}/,p=/\d{3}/,q=/\d{1,4}/,r=/[0-9a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+/i,s=/Z|[\+\-]\d\d:?\d\d/i,t=/T/i,u=/^\s*\d{4}-\d\d-\d\d(T(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,v="YYYY-MM-DDTHH:mm:ssZ",w=[["HH:mm:ss.S",/T\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/T\d\d:\d\d:\d\d/],["HH:mm",/T\d\d:\d\d/],["HH",/T\d\d/]],x=/([\+\-]|\d\d)/gi,y="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|"),z={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},A={},B="DDD w M D d".split(" "),C="M D H h m s w".split(" "),D={M:function(){return this.month()+1},MMM:function(a){return E("monthsShort",this.month(),this,a)},MMMM:function(a){return E("months",this.month(),this,a)},D:function(){return this.date()},DDD:function(){var a=new Date(this.year(),this.month(),this.date()),b=new Date(this.year(),0,1);return~~((a-b)/864e5+1.5)},d:function(){return this.day()},dd:function(a){return E("weekdaysMin",this.day(),this,a)},ddd:function(a){return E("weekdaysShort",this.day(),this,a)},dddd:function(a){return E("weekdays",this.day(),this,a)},w:function(){var a=new Date(this.year(),this.month(),this.date()-this.day()+5),b=new Date(a.getFullYear(),0,4);return~~((a-b)/864e5/7+1.5)},YY:function(){return K(this.year()%100,2)},YYYY:function(){return K(this.year(),4)},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return K(~~(this.milliseconds()/10),2)},SSS:function(){return K(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return a<0&&(a=-a,b="-"),b+K(~~(a/60),2)+":"+K(~~a%60,2)},ZZ:function(){var a=-this.zone(),b="+";return a<0&&(a=-a,b="-"),b+K(~~(10*a/6),4)}};while(B.length)e=B.pop(),D[e+"o"]=G(D[e]);while(C.length)e=C.pop(),D[e+e]=F(D[e],2);D.DDDD=F(D.DDD,3),b=function(c,d){if(c===null||c==="")return null;var e,f;return b.isMoment(c)?new H(new Date(+c._d),c._isUTC,c._lang):(d?M(d)?e=X(c,d):e=W(c,d):(f=j.exec(c),e=c===a?new Date:f?new Date(+f[1]):c instanceof Date?c:M(c)?O(c):typeof c=="string"?Y(c):new Date(c)),new H(e))},b.utc=function(a,c){return M(a)?new H(O(a,!0),!0):(typeof a=="string"&&!s.exec(a)&&(a+=" +0000",c&&(c+=" Z")),b(a,c).utc())},b.unix=function(a){return b(a*1e3)},b.duration=function(a,c){var d=b.isDuration(a),e=typeof a=="number",f=d?a._data:e?{}:a,g;return e&&(c?f[c]=a:f.milliseconds=a),g=new I(f),d&&(g._lang=a._lang),g},b.humanizeDuration=function(a,c,d){return b.duration(a,c===!0?null:c).humanize(c===!0?!0:d)},b.version=c,b.defaultFormat=v,b.lang=function(a,c){var d;if(!a)return g;(c||!f[a])&&P(a,c);if(f[a]){for(d=0;d11?c?"pm":"PM":c?"am":"AM"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10;return~~(a%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th"}}),b.fn=H.prototype={clone:function(){return b(this)},valueOf:function(){return+this._d},unix:function(){return Math.floor(+this._d/1e3)},toString:function(){return this._d.toString()},toDate:function(){return this._d},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds(),!!this._isUTC]},isValid:function(){return this._a?this._a[8]!=null?!!this._a[8]:!N(this._a,(this._a[7]?b.utc(this._a):b(this._a)).toArray()):!isNaN(this._d.getTime())},utc:function(){return this._isUTC=!0,this},local:function(){return this._isUTC=!1,this},format:function(a){return T(this,a?a:b.defaultFormat)},add:function(a,c){var d=c?b.duration(+c,a):b.duration(a);return L(this,d,1),this},subtract:function(a,c){var d=c?b.duration(+c,a):b.duration(a);return L(this,d,-1),this},diff:function(a,c,e){var f=this._isUTC?b(a).utc():b(a).local(),g=(this.zone()-f.zone())*6e4,h=this._d-f._d-g,i=this.year()-f.year(),j=this.month()-f.month(),k=this.date()-f.date(),l;return c==="months"?l=i*12+j+k/30:c==="years"?l=i+(j+k/30)/12:l=c==="seconds"?h/1e3:c==="minutes"?h/6e4:c==="hours"?h/36e5:c==="days"?h/864e5:c==="weeks"?h/6048e5:h,e?l:d(l)},from:function(a,c){return b.duration(this.diff(a)).lang(this._lang).humanize(!c)},fromNow:function(a){return this.from(b(),a)},calendar:function(){var a=this.diff(b().sod(),"days",!0),c=this.lang().calendar,d=c.sameElse,e=a<-6?d:a<-1?c.lastWeek:a<0?c.lastDay:a<1?c.sameDay:a<2?c.nextDay:a<7?c.nextWeek:d;return this.format(typeof e=="function"?e.apply(this):e)},isLeapYear:function(){var a=this.year();return a%4===0&&a%100!==0||a%400===0},isDST:function(){return this.zone()f*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(var A in j)if(j[g](A))if(U[g](A)||d.paper.customAttributes[g](A)){u[A]=d.attr(A),u[A]==null&&(u[A]=T[A]),v[A]=j[A];switch(U[A]){case C:w[A]=(v[A]-u[A])/t;break;case"colour":u[A]=a.getRGB(u[A]);var B=a.getRGB(v[A]);w[A]={r:(B.r-u[A].r)/t,g:(B.g-u[A].g)/t,b:(B.b-u[A].b)/t};break;case"path":var D=bR(u[A],v[A]),E=D[1];u[A]=D[0],w[A]=[];for(y=0,z=u[A].length;yd)return d;while(cf?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cq(){return this.x+q+this.y+q+this.width+" × "+this.height}function cp(){return this.x+q+this.y}function cb(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bH(b,c,d){b=a._path2curve(b),c=a._path2curve(c);var e,f,g,h,i,j,k,l,m,n,o=d?0:[];for(var p=0,q=b.length;p=0&&y<=1&&A>=0&&A<=1&&(d?n++:n.push({x:x.x,y:x.y,t1:y,t2:A}))}}return n}function bF(a,b){return bG(a,b,1)}function bE(a,b){return bG(a,b)}function bD(a,b,c,d,e,f,g,h){if(!(x(a,c)x(e,g)||x(b,d)x(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(!k)return;var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(n<+y(a,c).toFixed(2)||n>+x(a,c).toFixed(2)||n<+y(e,g).toFixed(2)||n>+x(e,g).toFixed(2)||o<+y(b,d).toFixed(2)||o>+x(b,d).toFixed(2)||o<+y(f,h).toFixed(2)||o>+x(f,h).toFixed(2))return;return{x:l,y:m}}}function bC(a,b,c,d,e,f,g,h,i){if(!(i<0||bB(a,b,c,d,e,f,g,h)n)k/=2,l+=(m1?1:i<0?0:i;var j=i/2,k=12,l=[-0.1252,.1252,-0.3678,.3678,-0.5873,.5873,-0.7699,.7699,-0.9041,.9041,-0.9816,.9816],m=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],n=0;for(var o=0;od;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function bx(){return this.hex}function bv(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bu(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bu(a,b){for(var c=0,d=a.length;c',bl=bk.firstChild,bl.style.behavior="url(#default#VML)";if(!bl||typeof bl.adj!="object")return a.type=p;bk=null}a.svg=!(a.vml=a.type=="VML"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b=="finite")return!M[g](+a);if(b=="array")return a instanceof Array;return b=="null"&&a===null||b==typeof a&&a!==null||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(fb-d)return c-f+b}return c};var bn=a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve("raphael.setWindow",a,h.win,b),h.win=b,h.doc=h.win.document,a._engine.initWin&&a._engine.initWin(h.win)};var bo=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write(""),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bo=bv(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=h.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",h.doc.body.appendChild(i),bo=bv(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bo(b)},bp=function(){return"hsb("+[this.h,this.s,this.b]+")"},bq=function(){return"hsl("+[this.h,this.s,this.l]+")"},br=function(){return this.hex},bs=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bt=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:br};a.is(e,"finite")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=br;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bp}},a.rgb2hsl=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bq}},a._path2string=function(){return this.join(",").replace(Y,"$1")};var bw=a._preload=function(a,b){var c=h.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bv(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:bx};!X[g](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bo(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bx},k.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx}},a),a.hsb=bv(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bv(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bv(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=function(b){if(!b)return null;var c=bz(b);if(c.arr)return bJ(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];a.is(b,E)&&a.is(b[0],E)&&(e=bJ(b)),e.length||r(b).replace(Z,function(a,b,c){var f=[],g=b.toLowerCase();c.replace(_,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(e.push([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");if(g=="r")e.push([b][n](f));else while(f.length>=d[g]){e.push([b][n](f.splice(0,d[g])));if(!d[g])break}}),e.toString=a._path2string,c.arr=bJ(e);return e},a.parseTransformString=bv(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=bJ(b)),d.length||r(b).replace($,function(a,b,c){var e=[],f=v.call(b);c.replace(_,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d});var bz=function(a){var b=bz.ps=bz.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[g](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},a.isBBoxIntersect=function(b,c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.xc.x||c.xb.x)&&(b.yc.y||c.yb.y)},a.pathIntersection=function(a,b){return bH(a,b)},a.pathIntersectionNumber=function(a,b){return bH(a,b,1)},a.isPointInsidePath=function(b,c,d){var e=a.pathBBox(b);return a.isPointInsideBBox(e,c,d)&&bH(b,[["M",c,d],["H",e.x2+10]],1)%2==1},a._removedFactory=function(a){return function(){eve("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var bI=a.pathBBox=function(a){var b=bz(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=bR(a);var c=0,d=0,e=[],f=[],g;for(var h=0,i=a.length;h1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=aF&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bO(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](",");var V=[];for(var W=0,X=m.length;W"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bR=a._path2curve=bv(function(a,b){var c=!b&&bz(a);if(!b&&c.curve)return bJ(c.curve);var d=bL(a),e=b&&bL(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bO[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bN(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bN(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](bM(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](bM(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](bM(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](bM(b.x,b.y,b.X,b.Y))}return a},i=function(a,b){if(a[b].length>7){a[b].shift();var c=a[b];while(c.length)a.splice(b++,0,["C"][n](c.splice(0,6)));a.splice(b,1),l=x(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=x(d.length,e&&e.length||0))};for(var k=0,l=x(d.length,e&&e.length||0);ke){if(c&&!l.start){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cu=ct(1),cv=ct(),cw=ct(0,1);a.getTotalLength=cu,a.getPointAtLength=cv,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cw(a,b).end;var d=cw(a,c,1);return b?cw(d,b).end:d},cl.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cu(this.attrs.path)}},cl.getPointAtLength=function(a){if(this.type=="path")return cv(this.attrs.path,a)},cl.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cx=a.easing_formulas={linear:function(a){return a},"<":function(a){return A(a,1.7)},">":function(a){return A(a,.48)},"<>":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cx.easeIn=cx["ease-in"]=cx["<"],cx.easeOut=cx["ease-out"]=cx[">"],cx.easeInOut=cx["ease-in-out"]=cx["<>"],cx["back-in"]=cx.backIn,cx["back-out"]=cx.backOut;var cy=[],cz=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cA=function(){var b=+(new Date),c=0;for(;c1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cE(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cE(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cy.length&&cz(cA)},cB=function(a){return a>255?255:a<0?0:a};cl.animateWith=function(b,c,d,e,f,g){var h=this;if(h.removed){g&&g.call(h);return h}var i=d instanceof cD?d:a.animation(d,e,f,g),j,k;cE(i,h,i.percents[0],null,h.attr());for(var l=0,m=cy.length;l.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/);if(j=="linear"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient);if(!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,j=="radial"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(p),i.setAttribute(o,G.hex),o=="stroke"&&G[b]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),o=="stroke"&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":(d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break};default:o=="font-size"&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if(d.type=="text"&&!!(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split("\n"),k=[],m;for(var n=0,o=j.length;n"));var $=X.getBoundingClientRect();t.W=m.w=($.right-$.left)/Y,t.H=m.h=($.bottom-$.top)/Y,t.X=m.x,t.Y=m.y+t.H/2,("x"in i||"y"in i)&&(t.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));var _=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var ba=0,bb=_.length;ba.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\s*\-\s*/);if(l=="linear"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method="none",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error("VML container not found.");var i=new a._Paper,j=i.canvas=a._g.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin="0 0",i.span=a._g.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}(window.Raphael) +; +window.polyjs=function(Ed){if(!Ed){var h={},Fd=[].indexOf||function(a){for(var b=0,c=this.length;bg[0].val||d[0].val===g[0].val&&("lt"===d[0].key||"gt"===g[0].key)))throw"No intersection found!"; +return e};f={};for(e in a)g=a[e],f[e]=e in b?"in"in a[e]?d(e):c(e):g;for(e in b)g=b[e],e in f||(f[e]=g);return f};h.linear=function(a,b,c,d){if(_.isFinite(a)&&_.isFinite(b)&&_.isFinite(c)&&_.isFinite(d))return function(e){return(d-b)/(c-a)*(e-a)+b};throw h.error.input("Attempting to create linear function from infinity");};h.median=function(a,b){var c;null==b&&(b=!1);b||(a=_.sortBy(a,function(a){return a}));c=a.length/2;return 0!==c%1?a[Math.floor(c)]:(a[c-1]+a[c])/2};h.counter=function(){var a;a= +0;return function(){return a++}};h.sample=function(a,b){return _.pick(a,_.shuffle(_.keys(a)).splice(0,b))};h.compare=function(a,b){var c,d,e,f,g,j,h,l,m;m=_.sortBy(a,function(a){return a});l=_.sortBy(b,function(a){return a});d=[];e=[];c=[];for(h=g=0;h=m.length)c.push(f),g+=1;else if(g>=l.length)d.push(j),h+=1;else if(jf)c.push(f),g+=1;else if(j===f)e.push(j),h+=1,g+=1;else throw DataError("Unknown data encounted");return{deleted:d, +kept:e,added:c}};h.flatten=function(a){var b,c,d,e;b=[];if(null!=a)if(_.isObject(a))if("scalefn"===a.t)"novalue"!==a.f&&b.push(a.v);else for(c in a)d=a[c],b=b.concat(h.flatten(d));else if(_.isArray(a)){c=0;for(e=a.length;ca?6*a:5*(a-10)+60};h.sortArrays=function(a, +b){var c;c=_.zip.apply(_,b);c.sort(function(b,c){return a(b[0],c[0])});return _.zip.apply(_,c)};h.isDefined=function(a){return _.isObject(a)?"scalefn"===a.t&&"novalue"!==a.f?h.isDefined(a.v):!0:void 0!==a&&null!==a&&!(_.isNumber(a)&&_.isNaN(a))};h.isURI=function(a){var b;return _.isString(a)?(b=RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i"),b.test(a)):!1};h["const"]= +{aes:"x y color size opacity shape id text".split(" "),noDomain:["id","text","tooltip"],noLegend:["x","y","id","text","tooltip"],trans:{bin:["key","binwidth"],lag:["key","lag"]},stat:{count:["key"],unique:["key"],sum:["key"],mean:["key"],box:["key"],median:["key"]},timerange:"second minute hour day week month 2month quarter 6month year 2year 5year decade".split(" "),metas:{sort:null,stat:null,limit:null,asc:!0},scaleFns:{novalue:function(){return{v:null,f:"novalue",t:"scalefn"}},max:function(a){return{v:a, +f:"max",t:"scalefn"}},min:function(a){return{v:a,f:"min",t:"scalefn"}},upper:function(a,b,c){return{v:a,n:b,m:c,f:"upper",t:"scalefn"}},lower:function(a,b,c){return{v:a,n:b,m:c,f:"lower",t:"scalefn"}},middle:function(a){return{v:a,f:"middle",t:"scalefn"}},jitter:function(a){return{v:a,f:"jitter",t:"scalefn"}},identity:function(a){return{v:a,f:"identity",t:"scalefn"}}},epsilon:Math.pow(10,-7),defaults:{x:{v:null,f:"novalue",t:"scalefn"},y:{v:null,f:"novalue",t:"scalefn"},color:"steelblue",size:2,opacity:0.7}}; +var Gd={}.hasOwnProperty,T=function(a,b){function c(){this.constructor=a}for(var d in b)Gd.call(b,d)&&(a[d]=b[d]);c.prototype=b.prototype;a.prototype=new c;a.__super__=b.prototype;return a},Ub=function(a){this.message=a;this.name="DefinitionError"};T(Ub,Error);var Vb=function(a){this.message=a;this.name="DependencyError"};T(Vb,Error);var Wb=function(a){this.message=a;this.name="ModeError"};T(Wb,Error);var Xb=function(a){this.message=a;this.name="DataError"};T(Xb,Error);var Yb=function(a){this.message= +a;this.name="UnknownInput"};T(Yb,Error);var Zb=function(a){this.message=a;this.name="ModeError"};T(Zb,Error);var $b=function(a){this.message=a;this.name="ScaleError"};T($b,Error);var ac=function(a){this.message=a;this.name="MissingData"};T(ac,Error);var bc=function(a){this.message=a;this.name="Type"};T(bc,Error);h.error=function(a){return Error(a)};h.error.data=function(a){return new Xb(a)};h.error.depn=function(a){return new Vb(a)};h.error.defn=function(a){return new Ub(a)};h.error.mode=function(a){return new Wb(a)}; +h.error.impl=function(a){return new Zb(a)};h.error.input=function(a){return new Yb(a)};h.error.scale=function(a){return new $b(a)};h.error.missing=function(a){return new ac(a)};h.error.type=function(a){return new bc(a)};var cc,dc,Hd={}.hasOwnProperty,pb=function(a,b){function c(){this.constructor=a}for(var d in b)Hd.call(b,d)&&(a[d]=b[d]);c.prototype=b.prototype;a.prototype=new c;a.__super__=b.prototype;return a},da=function(){};da.prototype.render=function(){return h.error.impl()};da.prototype.dispose= +function(){return h.error.impl()};var Oa=function(){return Oa.__super__.constructor.apply(this,arguments)};pb(Oa,da);Oa.prototype.getDimension=function(){throw h.error.impl();};cc=Oa;var la=function(){return la.__super__.constructor.apply(this,arguments)};pb(la,da);la.prototype.getDimension=function(){throw h.error.impl();};la.prototype.make=function(){throw h.error.impl();};dc=la;var X=function(a){this.type=null!=a?a:null;var b=this.dispose,c=this;this.dispose=function(){return b.apply(c,arguments)}; +this.geoms={};this.pts={}};pb(X,da);X.prototype.set=function(a){return this.geoms=a};X.prototype.render=function(a){var b,c,d,e,f,g,j;f={};d=h.compare(_.keys(this.pts),_.keys(this.geoms));c=d.deleted;e=d.kept;b=d.added;g=0;for(j=c.length;ga))+d[0].slice(b).replace(/(\d{3})/g,",$1"),c=d.join("."));return c};h.format.number=function(a){return function(b){var c,d;d=0;c=null!=a?a:Math.floor(Math.log(Math.abs(0===b?1:b))/Math.LN10);null!=a&&(2===c||5===c||8===c||11===c)?(c+=1,d=1):-1===c? +(c=0,d=null!=a?1:2):-2===c?(c=0,d=null!=a?2:3):1===c||2===c?c=0:3c?c=3:6c?c=6:9c?c=9:12c?c=12:d=null!=a?0:1;b=Math.round(b/Math.pow(10,c-d));b/=Math.pow(10,d);b=b.toFixed(d);return fc(ec(b),c)}};h.format.date=function(a){return-1!==_.indexOf(h["const"].timerange,a)?"second"===a?function(a){return moment.unix(a).format("h:mm:ss a")}:"minute"===a?function(a){return moment.unix(a).format("h:mm a")}:"hour"===a?function(a){return moment.unix(a).format("MMM D h a")}:"day"===a|| +"week"===a?function(a){return moment.unix(a).format("MMM D")}:"month"===a||"2month"===a||"quarter"===a||"6month"===a?function(a){return moment.unix(a).format("YYYY/MM")}:function(a){return moment.unix(a).format("YYYY")}:function(b){return moment.unix(b).format(a)}};h.format._number_instance=h.format.number();h.format.value=function(a){return _.isNumber(a)?h.format._number_instance(a):a};var gc,hc;h.type={};h.type.impute=function(a){var b,c,d,e,f,g;f=c=e=b=0;for(g=a.length;f0.95*c?"num":b>0.95*c?"date":"cat"};h.type.coerce=function(a,b){if(_.isUndefined(a)||_.isNull(a)||"cat"===b.type)return a;if("num"===b.type)return isNaN(a)?+(""+a).replace(/\$|\,/g,""):+a;if("date"===b.type)return b.format?"unix"===b.format?moment.unix(a).unix():moment(a,b.format).unix():moment(a).unix()};h.type.compare=function(a){switch(a){case "cat":return gc;default:return hc}}; +gc=function(a,b){var c,d;if(a===b)return 0;_.isString(a)||(a=""+a);_.isString(b)||(b=""+b);c=a.toLowerCase();d=b.toLowerCase();return c===d?ab?1:0:cd?1:0};hc=function(a,b){return a===b?0:null===a?1:null===b?-1:ab?1:0};h.spec={};h.spec.toStrictMode=function(a){var b,c,d,e,f,g,j,k;a=_.clone(a);null==a.layers&&a.layer&&(a.layers=[a.layer]);null==a.guides&&a.guide&&(a.guides=a.guide);null==a.guides&&(a.guides={});if(a.layers){g=a.layers;b=c=0;for(e=g.length;carguments.length?(c=b,b=null):b&&d.overrideMimeType&&d.overrideMimeType(b);d.open("GET",a,!0);b&&d.setRequestHeader("Accept", +b);d.onreadystatechange=function(){var a;if(4===d.readyState)return a=d.status,a=!a&&d.response||200<=a&&300>a||304===a?d:null,c(a)};return d.send(null)};h.text=function(a,b,c){3>arguments.length&&(c=b,b=null);return h.xhr(a,b,function(a){return c(a&&a.responseText)})};h.json=function(a,b){return h.text(a,"application/json",function(a){return b(a?JSON.parse(a):null)})};h.dsv=function(a,b){var c,d,e,f,g,j,k;k=RegExp("\r\n|["+a+"\r\n]","g");j=RegExp('["'+a+"\n]");c=a.charCodeAt(0);e=function(b){return b.map(f).join(a)}; +f=function(a){var b;return null!=(b=j.test(a))?b:'"'+a.replace(/\"/g,'""')+{'"':a}};g=null;d=function(a,c){return h.text(a,b,function(a){return c(a&&d.parse(a))})};d.parse=function(a){return d.parseRows(a,function(a,b){var c,d,e;if(b){e={};c=-1;for(d=g.length;++c=a.length)return d;if(g)return g=!1,e;j=k.lastIndex;if(34===a.charCodeAt(j)){for(f= +j;f++"};y.prototype.contents=function(){return[this.tag]};var pa=function(a){this.name=a;this.name=zb(this.name);pa.__super__.constructor.call(this,y.Tag.symbol)};na(pa,y);pa.prototype.contents=function(){return pa.__super__.contents.call(this).concat([this.name])}; +mc=pa;var qa=function(a){this.val=a;this.val=zb(this.val);qa.__super__.constructor.call(this,y.Tag.literal)};na(qa,y);qa.prototype.contents=function(){return qa.__super__.contents.call(this).concat([this.val])};kc=qa;var Ta,wc,Ab,ra;Ab=[y.Tag.lparen,y.Tag.rparen,y.Tag.comma];ra=[];Ta=0;for(wc=Ab.length;Tac?1:0}:h.type.compare(a.type):function(a){return a}};Cc=function(a){this.type= +a.type;this.min=a.min;this.max=a.max;this.bw=a.bw};Bc=function(a){this.type=a.type;this.min=a.min;this.max=a.max;this.bw=a.bw};Ac=function(a){this.type=a.type;this.levels=a.levels;this.sorted=a.sorted};Y=function(a){switch(a.type){case "num":return new Cc(a);case "date":return new Bc(a);case "cat":return new Ac(a)}};Fc=function(a,b,c,d){var e,f,g,j,k,l,m,n,q,p,s,u,K,r,t;g={};for(e in b)if(f=b[e],!(0<=Ld.call(h["const"].noDomain,e)))if(d)g[e]=Y(c[e]);else{l=Ec(a,e);if(0===l.length)throw h.error.input("Dataset is none?"); +j=function(a){return null!=c[e]?c[e][a]:null};switch(f.type){case "num":f=null!=(m=j("bw"))?m:f.bw;k=null!=(n=j("min"))?n:_.min(l);j=null!=(q=j("max"))?q:_.max(l)+(null!=f?f:0);g[e]=Y({type:"num",min:k,max:j,bw:f});break;case "date":f=null!=(p=j("bw"))?p:f.bw;k=null!=(s=j("min"))?s:_.min(l);j=j("max");null==j&&(j=_.max(l),j="week"===f?moment.unix(j).add("days",7).unix():"decade"===f?moment.unix(j).add("years",10).unix():moment.unix(j).add(f+"s",1).unix());g[e]=Y({type:"date",min:k,max:j,bw:f});break; +case "cat":g[e]=Y({type:"cat",levels:null!=(u=null!=(K=j("levels"))?K:f.levels)?u:_.uniq(l),sorted:null!=(r=null!=(t=j("levels"))?t:f.sorted)?r:!1})}}return g};Ec=function(a,b){var c,d,e,f,g;f=[];for(d in a)for(e in c=a[d],g=c.marks,g)c=g[e],f=f.concat(h.flatten(c[b]));g=[];e=0;for(c=f.length;e=a.min&&b<=a.max}):b.ticks:(g=null!= +(k=b.numticks)?k:5,g=Jc[c](a,g),k=g.ticks,g=g.step);d=b.labels?function(a){var c;return null!=(c=b.labels[a])?c:a}:b.formatter?b.formatter:h.format(c.split("-")[0],g);g={};c=Ic(c,d);if(k){e=d=0;for(l=k.length-1;0<=l?d<=l:d>=l;e=0<=l?++d:--d)j=0===e?null:k[e-1],f=e===k.length-1?null:k[e+1],e=k[e],f=c(e,j,f),g[f.value]=f}return g};Hc=function(a){this.location=a.location;this.value=a.value;this.index=a.index;this.evtData=a.evtData};Ic=function(a,b){var c;c=0;return function(d,e,f){var g;"cat"===a?g= +{"in":[d]}:(g={},null!=e&&(g.ge=e),null!=f&&(g.le=f));return new Hc({location:d,value:b(d),index:c++,evtData:g})}};Cb=function(a,b){var c,d;d=Math.pow(10,Math.floor(Math.log(a/b)/Math.LN10));c=b/a*d;0.15>c?d*=10:0.35>=c?d*=5:0.75>=c&&(d*=2);return d};Jc={none:function(){return{}},cat:function(a,b){var c,d,e,f,g,j,h;e=Math.max(1,Math.round(a.levels.length/b));f=[];h=a.levels;c=g=0;for(j=h.length;g=m%1)){if(m%1>h["const"].epsilon){if(f=Math.floor(m)+d(10*(m%1)),0===f%1){m+=k;continue}}else f=m;f=c(f);fg||l.push(f)}m+=k}return{ticks:l}}, +date:function(a,b){var c,d,e,f,g,j;e=a.min;d=a.max;g=(d-e)/b;g=1.4>g?"second":84>g?"minute":5040>g?"hour":120960>g?"day":846720>g?"week":3628800>g?"month":7257600>g?"2month":14515200>g?"quarter":21772800>g?"6month":44150400>g?"year":88300800>g?"2year":220752E3>g?"5year":"decade";j=[];c=moment.unix(e).startOf(g);f=function(){switch(g){case "2month":return["months",2];case "quarter":return["months",4];case "6month":return["months",6];case "2year":return["years",2];case "5year":return["years",5];case "decade":return["years", +10];default:return[g+"s",1]}}();for(c.unix()Od.call(this.validPositions,j))throw h.error.defn("X-axis position can't be "+this.position+".");this.titletext=f("title",a);this.renderTick= +f("renderTick",this.renderTickDefault);this.renderGrid=f("renderGrid",this.renderGridDefault);this.renderLabel=f("renderLabel",this.renderLabelDefault);this.renderLine=f("renderLine",this.renderLineDefault);this.ticks=h.tick.make(d,e,g);this.maxwidth=_.max(_.map(this.ticks,function(a){return h.strSize(a.value)}));this.maxwidth=Math.max(this.maxwidth,0)};fa(J,h.Guide);J.prototype.renderTickDefault=!0;J.prototype.renderGridDefault=!0;J.prototype.renderLabelDefault=!0;J.prototype.renderLineDefault=!0; +J.prototype.calculate=function(a,b,c){var d,e,f,g,j,h,l;this.coord=b;if("none"===this.position)return{};null==c&&(c={});a.centerx=a.left+a.width/2;a.centery=a.top+a.height/2;a.radius=Math.min(a.width,a.height)/2-10;b={};this.renderLine&&(b.line={marks:{"0":this._renderline(a)}});g=this.ticks;for(d in g){f=g[d];e={};if(this.renderTick&&(null!=(j=c.renderTick)?j:1))e.tick=this._makeTick(a,f);if(this.renderLabel&&(null!=(h=c.renderLabel)?h:1))e.text=this._makeLabel(a,f);if(this.renderGrid&&(null!=(l= +c.renderGrid)?l:1))e.grid=this._makeGrid(a,f);b[d]={marks:e}}return b};J.prototype._makeTick=function(a){if(!a)throw h.error.impl();a.type="path";a.stroke=p.identity("#666");a.color=p.identity("#666");return a};J.prototype._makeLabel=function(a){if(!a)throw h.error.impl();a.type="text";a.stroke=p.identity("#666");a.color=p.identity("#666");return a};J.prototype._makeGrid=function(a){if(!a)throw h.error.impl();a.stroke="#EFEFEF";return a};var C=function(){return C.__super__.constructor.apply(this, +arguments)};fa(C,J);C.prototype.type="x";C.prototype.renderGridDefault=!1;C.prototype.defaultPosition="bottom";C.prototype.validPositions=["top","bottom","none"];C.prototype._renderline=function(a){var b,c;c="top"===this.position?p.identity(a.top):p.identity(a.bottom);b=p.identity(a.left);a=p.identity(a.left+a.width);return{type:"path",y:[c,c],x:[b,a],stroke:p.identity("#666")}};C.prototype._makeTick=function(a,b){var c,d;"top"===this.position?(c=p.identity(a.top),d=p.identity(a.top-5)):(c=p.identity(a.bottom), +d=p.identity(a.bottom+5));return C.__super__._makeTick.call(this,{x:[b.location,b.location],y:[c,d]})};C.prototype._makeLabel=function(a,b){var c;c="top"===this.position?p.identity(a.top-15):p.identity(a.bottom+15);return C.__super__._makeLabel.call(this,{x:b.location,y:c,text:b.value,"text-anchor":"middle"})};C.prototype._makeGrid=function(a,b){var c,d;c=p.identity(a.top);d=p.identity(a.bottom);return C.__super__._makeGrid.call(this,{type:"path",x:[b.location,b.location],y:[c,d]})};C.prototype.getDimension= +function(){var a;return{position:null!=(a=this.position)?a:"bottom",height:30,width:"all"}};Qc=C;var B=function(){return B.__super__.constructor.apply(this,arguments)};fa(B,J);B.prototype.type="y";B.prototype.renderLineDefault=!1;B.prototype.renderTickDefault=!1;B.prototype.defaultPosition="left";B.prototype.validPositions=["left","right","none"];B.prototype._renderline=function(a){var b,c;b="left"===this.position?p.identity(a.left):p.identity(a.right);c=p.identity(a.top);a=p.identity(a.top+a.height); +return{type:"path",x:[b,b],y:[c,a],stroke:p.identity("#666")}};B.prototype._makeTick=function(a,b){var c,d;"left"===this.position?(c=p.identity(a.left),d=p.identity(a.left-5)):(c=p.identity(a.right),d=p.identity(a.right+5));return B.__super__._makeTick.call(this,{x:[c,d],y:[b.location,b.location]})};B.prototype._makeLabel=function(a,b){var c;c="left"===this.position?p.identity(a.left-7):p.identity(a.right+7);return B.__super__._makeLabel.call(this,{x:c,y:b.location,text:b.value,"text-anchor":"left"=== +this.position?"end":"start"})};B.prototype._makeGrid=function(a,b){var c,d;c=p.identity(a.left);d=p.identity(a.right);return B.__super__._makeGrid.call(this,{type:"path",y:[b.location,b.location],x:[c,d]})};B.prototype.getDimension=function(){var a;return{position:null!=(a=this.position)?a:"right",height:"all",width:5+this.maxwidth}};Rc=B;var D=function(){return D.__super__.constructor.apply(this,arguments)};fa(D,J);D.prototype.type="r";D.prototype.defaultPosition="left";D.prototype.validPositions= +["left","right","none"];D.prototype._renderline=function(a){var b,c;b=p.identity(a.left);c=p.identity(a.top);a=p.identity(a.top+a.height/2);return{type:"path",x:[b,b],y:[c,a],stroke:p.identity("#666")}};D.prototype._makeTick=function(a,b){return D.__super__._makeTick.call(this,{x:[p.identity(a.left),p.identity(a.left-5)],y:[b.location,b.location]})};D.prototype._makeLabel=function(a,b){return D.__super__._makeLabel.call(this,{x:p.identity(a.left-7),y:b.location,text:b.value,"text-anchor":"end"})}; +D.prototype._makeGrid=function(a,b){return D.__super__._makeGrid.call(this,{type:"circle",x:p.identity(a.centerx),y:p.identity(a.centery),size:p.identity(this.coord.getScale("r")(b.location)),color:p.identity("none"),"fill-opacity":0,"stroke-width":1})};D.prototype.getDimension=function(){return{position:"left",height:"all",width:5+this.maxwidth}};Oc=D;var E=function(){return E.__super__.constructor.apply(this,arguments)};fa(E,J);E.prototype.type="t";E.prototype.defaultPosition="out";E.prototype.validPositions= +["out","none"];E.prototype._renderline=function(a){return{type:"circle",x:p.identity(a.centerx),y:p.identity(a.centery),size:p.identity(a.radius),color:p.identity("none"),stroke:p.identity("#666"),"stroke-width":1}};E.prototype._makeTick=function(a,b){return E.__super__._makeTick.call(this,{x:[b.location,b.location],y:[p.max(0),p.max(3)]})};E.prototype._makeLabel=function(a,b){return E.__super__._makeLabel.call(this,{x:b.location,y:p.max(12),text:b.value,"text-anchor":"middle"})};E.prototype._makeGrid= +function(a,b){var c,d,e,f;d=p.identity(a.centerx);f=p.identity(a.centery);c=this.coord.getScale("t")(b.location)-Math.PI/2;e=p.identity(a.centerx+a.radius*Math.cos(c));c=p.identity(a.centery+a.radius*Math.sin(c));return E.__super__._makeGrid.call(this,{type:"path",y:[f,c],x:[d,e]})};E.prototype.getDimension=function(){return{}};Pc=E;null==h.guide&&(h.guide={});h.guide.axis=function(a,b){if("x"===a)return new Qc(b);if("y"===a)return new Rc(b);if("r"===a)return new Oc(b);if("t"===a)return new Pc(b)}; +h.guide.axes=function(a){return new ga(a)};var Sc,Tc,Uc,F,Pd={}.hasOwnProperty,Xa=function(a,b){function c(){this.constructor=a}for(var d in b)Pd.call(b,d)&&(a[d]=b[d]);c.prototype=b.prototype;a.prototype=new c;a.__super__=b.prototype;return a},Ya=[].indexOf||function(a){for(var b=0,c=this.length;be&&(b+=f+5,f=c=0),d.width>f&&(f=d.width),c+=d.height;return b+f};M.prototype._topbottomHeight=function(a){var b,c,d,e,f;c=10;f=this.legends;d=0;for(e=f.length;dg&&(l+=j+5,j=m=0),h.width>j&&(j=h.width),n={x:l+e,y:m+d},f.render(b(n,!1,!1),j),u.push(m+= +h.height);return u};M.prototype._renderH=function(a,b,c){var d,e,f,g,j,h;d=a.paddingLeft;e="top"===this.position?a.paddingTop:a.height-a.guideBottom-a.paddingBottom;e={x:d,y:"top"===this.position?c.top+e:c.bottom+e+10};j=this.legends;h=[];f=0;for(g=j.length;fthis.domain.min)throw h.error.input("Log scale cannot handle zero or negative input.");a=Math.log;c=h.linear(a(this.domain.min),this.range.min,a(this.domain.max),this.range.max);this.f=this._numWrapper(this.domain,function(b){return c(a(b))});d=h.linear(this.range.min,a(this.domain.min),this.range.max,a(this.domain.max));b=function(a){return Math.exp(d(a))};return this.finv=function(a,c){var d;d=[b(a),b(c)];return{ge:_.min(d),le:_.max(d)}}};ya.prototype._tickNum=function(){return"num-log"};Zc= +ya;var Za=function(){this._makeNum=W(this._makeNum,this);return Za.__super__.constructor.apply(this,arguments)};N(Za,v);Za.prototype._makeNum=function(){var a,b,c;a=0===this.domain.min?0:1;b=Math.sqrt;c=h.linear(b(this.domain.min),a,b(this.domain.max),10);return this.f=this._identityWrapper(function(a){return c(b(a))})};Wc=Za;var $a=function(){this._makeNum=W(this._makeNum,this);return $a.__super__.constructor.apply(this,arguments)};N($a,v);$a.prototype._makeNum=function(){return this.f=this._identityWrapper(h.linear(this.domain.min, +0===this.domain.min?0:0.1,this.domain.max,1))};$c=$a;var ab=function(){this._makeCat=W(this._makeCat,this);return ab.__super__.constructor.apply(this,arguments)};N(ab,v);ab.prototype._makeCat=function(){var a,b,c,d=this;c=this.domain.levels.length;if(9>=c)return a="#E41A1C #377EB8 #4DAF4A #984EA3 #FF7F00 #FFFF33 #A65628 #F781BF #999999".split(" "),this.f=function(b){b=_.indexOf(d.domain.levels,b);return a[b]};b=function(a){return _.indexOf(d.domain.levels,a)/c+1/(2*c)};return this.f=function(a){return Raphael.hsl(b(a), +0.5,0.5)}};ad=ab;var Db=function(a){this._makeNum=W(this._makeNum,this);this.lower=a.lower;this.upper=a.upper};N(Db,v);Db.prototype._makeNum=function(){var a,b,c,d,e;c=Raphael.color(this.lower);e=Raphael.color(this.upper);d=h.linear(this.domain.min,c.r,this.domain.max,e.r);b=h.linear(this.domain.min,c.g,this.domain.max,e.g);a=h.linear(this.domain.min,c.b,this.domain.max,e.b);return this.f=this._identityWrapper(function(c){return Raphael.rgb(d(c),b(c),a(c))})};var bb=function(a){this._makeCat=W(this._makeCat, +this);this._makeNum=W(this._makeNum,this);this.lower=a.lower;this.middle=a.middle;this.upper=a.upper;this.midpoint=a.midpoint;null==this.midpoint&&(this.midpoint=0)};N(bb,v);bb.prototype._makeNum=function(){var a,b,c,d,e,f,g,j,k,l=this;e=Raphael.color(this.lower);f=Raphael.color(this.middle);k=Raphael.color(this.upper);g=h.linear(this.domain.min,e.r,this.midpoint,f.r);c=h.linear(this.domain.min,e.g,this.midpoint,f.g);a=h.linear(this.domain.min,e.b,this.midpoint,f.b);j=h.linear(this.midpoint,f.r,this.domain.max, +k.r);d=h.linear(this.midpoint,f.g,this.domain.max,k.g);b=h.linear(this.midpoint,f.b,this.domain.max,k.b);return this.f=this._identityWrapper(function(e){return e_.keys(a).length&&"data"in a?(b=a.data,c=a.meta):b=a;switch(eb(b)){case "json-object":case "json-grid":case "json-array":return h.data.json(b,c,void 0);case "url":return h.data.url(b,c,void 0);case "csv":return h.data.csv(b, +c);default:throw h.error.data("Unknown data format.");}};h.data.json=function(a,b,c){return new Gb({data:a,meta:b,type:c})};h.data.csv=function(a,b){return new Gb({data:a,meta:b,csv:"csv"})};h.data.url=function(a,b,c){return new cd({url:a,computeBackend:b,limit:c})};eb=function(a){if(_.isArray(a))return _.isArray(a[0])?"json-grid":"json-array";if(_.isObject(a))return"json-object";if(_.isString(a))return h.isURI(a)?"url":"csv";throw h.error.data("Unknown data format.");};db=function(a,b){var c,d,e, +f,g,j,k;if(0=m;c=0<=m?++j:--j){f={};k=0;for(l=e.length;k_.keys(a).length&&"data"in a?(b=a.data,c=null!=(d=a.meta)?d:{}):(b=a,c={});d=function(){var d;switch(null!=(d=a.type)?d:eb(b)){case "json-object":return Jb(b, +c);case "json-grid":return Hb(b,c);case "json-array":return db(b,c);case "csv":return Ib(b,c);default:throw h.error.data("Unknown data format.");}}();this.key=d.key;this.raw=d.raw;this.meta=d.meta;return this.data=this.raw};H.prototype._checkRename=function(a,b){if(""===b)throw h.error.defn("Column names cannot be an empty string");if(-1===_.indexOf(this.key,a))throw h.error.defn("The key "+a+" doesn't exist!");if(-1!==_.indexOf(this.key,b))throw h.error.defn("The key "+b+" already exists!");};H.prototype.rename= +function(a,b,c){var d,e,f;null==c&&(c=!1);a=a.toString();b=b.toString();if(a===b)return!0;c||this._checkRename(a,b);f=this.raw;d=0;for(e=f.length;d_.keys(b).length&&"data"in b?(c=b.data,d=null!=(k=b.meta)?k:{}):(c=b,d={});b=function(){switch(eb(c)){case "json-object":return Jb(c,d);case "json-grid":return Hb(c,d);case "json-array":return db(c,d);case "csv":return Ib(c,d);default:throw h.error.data("Unknown data format.");}}();e.key=b.key; +e.raw=b.raw;e.meta=b.meta;e.data=e.raw;return a(e)})};ba.prototype.update=function(){this.raw=null;return ba.__super__.update.call(this)};ba.prototype.renameMany=function(a){return 0===_.keys(a).length};cd=ba;var ed,fd,Kb,Lb,gd,Mb,hd,id,jd,kd,ld=[].indexOf||function(a){for(var b=0,c=this.length;b=b;1<=b?++e:--e)f.push(void 0);return{trans:function(b){f.push(b[a]);return b[d]=f.shift()},meta:{type:c.type}}}};jd= +function(a,b,c){return kd[b.trans](a,b,null!=c?c:{})};gd={lt:function(a,b){return ab},ge:function(a,b){return a>=b},"in":function(a,b){return 0<=ld.call(b,a)}};Lb=function(a){var b;b=[];_.each(a,function(a,d){return _.each(a,function(a,c){return b.push(function(b){return gd[c](b[d],a)})})});return function(a){var d,e,f;e=0;for(f=b.length;e=d&&a<=f}),{q1:_.min(b["true"]),q2:e,q3:h.median(a,!0),q4:c,q5:_.max(b["true"]),outliers:null!=(g=b["false"])?g:[]}):{outliers:a}}}};id=function(a){return hd[a.stat](a)};Kb=function(a,b){var c,d;d={};_.each(b.stats,function(a){var b,c,h;b=a.key;c=a.name;h=id(a); +return d[c]=function(a){return h(_.pluck(a,b))}});c=h.groupBy(a,b.groups);return _.map(c,function(a){var c;c={};_.each(b.groups,function(b){return c[b]=a[0][b]});_.each(d,function(b,d){return c[d]=b(a)});return c})};fd=function(a,b,c){var d,e,f,g;f=b.sort;g=b.stat;d=b.limit;b=b.asc;g&&(g={stats:[g],groups:[a]},c=Kb(c,g));e=b?1:-1;c.sort(function(a,b){return a[f]===b[f]?0:a[f]>=b[f]?1*e:-1*e});d&&(c=c.slice(0,+(d-1)+1||9E9));a=_.uniq(_.pluck(c,a));return{meta:{levels:a,sorted:!0},filter:{"in":a}}}; +Mb=function(a,b,c){var d,e,f,g,j,k,l,m,n,q,p,s,u;l=_.clone(b.meta);b=_.clone(b.raw);null==l&&(l={});d=function(a,b){var c;return l[a]=_.extend(null!=(c=l[a])?c:{},b)};if(a.trans){u=a.trans;g=0;for(p=u.length;gb&&(a.guideLeft=b);a.guideRight>b&&(a.guideRight=b);a.guideTop>e&&(a.guideTop=e);a.guideBottom>e&&(a.guideBottom= +e);a.chartHeight=a.height-a.paddingTop-a.paddingBottom-a.guideTop-a.guideBottom;a.chartWidth=a.width-a.paddingLeft-a.paddingRight-a.guideLeft-a.guideRight;null!=c.cols&&1=f;d=0<=f?++c:--c)g.push(void 0===a[d]||void 0===b[d]);return g}()))throw h.error.missing(""+c+" cannot be plotted due to too many missing points."); +};x.prototype._checkArrayNaN=function(a,b){var c,d;d=_.map(_.zip(a,b),function(a){return isNaN(a[0])||isNaN(a[1])?void 0:a});var e,f,g;g=[];e=0;for(f=d.length;e=n;g=1<=n?++m:--m)j=Math.abs(k[g]-k[g-1])>Math.PI?1:0, +f=0Math.PI?1:0;b="M "+g[0]+" "+h[0]+" A "+e[0]+" "+e[0]+" 0 "+c+" 1 "+g[1]+" "+h[1];c=Math.abs(f[3]-f[2])>Math.PI?1:0;b+="L "+g[2]+ +" "+h[2]+" A "+e[2]+" "+e[2]+" 0 "+c+" 0 "+g[3]+" "+h[3]+" Z";c=this._maybeApply(a,d,d.stroke?"stroke":"color");return this._shared(a,d,{path:b,fill:this._maybeApply(a,d,"color"),stroke:c,"stroke-width":this._maybeApply(a,d,"stroke-width")})};zd=Ka;var La=function(){return La.__super__.constructor.apply(this,arguments)};O(La,x);La.prototype._make=function(a){return a.text()};La.prototype.attr=function(a,b,c,d,e){var f;e=b.getXY(e,d);b=e.x;e=e.y;this._checkPointUndefined(b,e,"Text");c=this._applyOffset(b, +e,c);b=c.x;e=c.y;return this._shared(a,d,{x:b,y:e,r:10,text:this._maybeApply(a,d,"text"),"font-size":this._maybeApply(a,d,"size"),"text-anchor":null!=(f=d["text-anchor"])?f:"left",fill:this._maybeApply(a,d,"color")||"black"})};Tb=La;var ob=function(){return ob.__super__.constructor.apply(this,arguments)};O(ob,ca);ob.prototype.attr=function(a,b,c,d,e){var f,g;f=h.sortArrays(a.x.compare,[d.x,d.y]);d.x=f[0];d.y=f[1];e=b.getXY(e,d);b=e.x;e=e.y;this._checkArrayUndefined(b,e,"Spline");f=0;for(g=b.length;f< +g;++f);c=this._applyOffset(b,e,c);b=c.x;e=c.y;c=this._checkArrayNaN(b,e);b=c.x;e=c.y;f=this._maybeApply(a,d,d.stroke?"stroke":"color");c=this._maybeApply(a,d,d.size?"size":"stroke-width");return this._shared(a,d,{path:this._makePath(b,e,"spline"),stroke:f,"stroke-width":c})};Sb=ob;var Ma=function(){return Ma.__super__.constructor.apply(this,arguments)};O(Ma,ca);Ma.prototype._make=function(a){return a.path()};Ma.prototype.attr=function(a,b,c,d,e){var f,g;f=h.sortArrays(a.x.compare,[d.x,d.y]);d.x=f[0]; +d.y=f[1];e=b.getXY(e,d);b=e.x;e=e.y;this._checkArrayUndefined(b,e,"Spline");f=0;for(g=b.length;fYd.call(h["const"].aes,a))throw h.error.input("Unknown aesthetic "+a+".");d=0;e=[c];return function(c,g,h,k){var l,m;if("reset"===c&&0h["const"].epsilon)null==p[g]&&(p[g]={min:null,max:null}),x=[f[a].ge,f[a].le],p[g].min=x[0],p[g].max=x[1];"cat"===n.axes.domains[g].type&&0!==f[a]["in"].length&&(null==p[g]&&(p[g]={levels:null}),p[g].levels=f[a]["in"])}n.handlers=_.map(n.handlers,j);y.push(n.make(n.spec))}return y}}}};var Dd,Zd=[].indexOf||function(a){for(var b=0,c=this.length;be||e>=this.cols||0>g||g>=this.rows)return null;f={x:a.paddingLeft+a.guideLeft+(a.eachWidth+a.horizontalSpacing)*e,y:a.paddingTop+a.guideTop+(a.eachHeight+a.verticalSpacing)*g+a.verticalSpacing};b={x:b-f.x,y:c-f.y};if(!d&&(b.x> +a.eachWidth||b.y>a.eachHeight))return null;b.x=Math.max(Math.min(b.x,a.eachWidth),0);b.y=Math.max(Math.min(b.y,a.eachHeight),0);return{row:g,col:e,offset:f,adjusted:b,evtData:this.getEvtData(e,g)}};I.prototype._getMappings=function(a){var b;b={type:"none",mapping:{}};if(_.isObject(a))if("wrap"===a.type){b.type="wrap";if(!a["var"])throw h.error.defn("You didn't specify a variable to facet on.");a["var"]&&(b.mapping["var"]=a["var"]["var"])}else if("grid"===a.type){b.type="grid";if(!a.x&&a.y)throw h.error.defn("You didn't specify a variable to facet on."); +a.x&&(b.mapping.x=a.x["var"]);a.y&&(b.mapping.y=a.y["var"])}return b};I.prototype._makeIndices=function(a,b){var c,d,e,f,g,j,k,l;k={};for(c in b)if(f=b[c],f.levels)k[f["var"]]=f.levels;else{j=[];for(e in a){d=a[e];if(g=d.metaData[f["var"]])g&&("num"===(l=g.type)||"date"===l)&&h.type.compare(g.type);j=_.uniq(_.union(j,_.pluck(d.statData,f["var"])))}k[f["var"]]=j}c=h.cross(k);d={};e=h.stringify(_.pluck(b,"var"));g=0;for(j=c.length;g$d.call(this.handlers, +a))return this.handlers.push(a)};L.prototype.removeHandler=function(a){return this.handlers.splice(_.indexOf(this.handlers,a),1)};L.prototype.handleEvent=function(a){var b;b=this;return _.throttle(function(c){var d,e,f,g,h;if("select"===a){e=c.start;d=c.end;e=b.facet.getFacetInfo(b.dims,e.x,e.y);if(!e)return;g=e.col;h=e.row;f=e.adjusted;e=_.clone(f);f=b.facet.getFacetInfo(b.dims,d.x,d.y,{col:g,row:h}).adjusted;d=_.clone(f);this.evtData="cartesian"===b.coord.type?b.scaleSet.fromPixels(e,d):null}else if("data"=== +a)this.evtData={};else if("reset"===a||"click"===a||"mover"===a||"mout"===a||"guide-click"===a)this.tooltip=this.data("t"),this.evtData=this.data("e");h=b.handlers;f=[];e=0;for(g=h.length;e + var chartParams = {{{ chartParams }}} + _.each(chartParams.layers, function(el){el.data = polyjs.data(el.data)}) + polyjs.chart(chartParams); + \ No newline at end of file diff --git a/inst/polycharts/layouts/polychart2.html b/inst/polycharts/layouts/polychart2.html new file mode 100644 index 0000000..e9e2fed --- /dev/null +++ b/inst/polycharts/layouts/polychart2.html @@ -0,0 +1,13 @@ + + + + + + +
+ {{> polychart1 }} + + + diff --git a/inst/shiny/server.R b/inst/shiny/server.R new file mode 100644 index 0000000..88bf0c5 --- /dev/null +++ b/inst/shiny/server.R @@ -0,0 +1,6 @@ +require(rCharts) +shinyServer(function(input, output) { + output$show <- renderChart({ + return(.rChart_object) + }) +}) diff --git a/inst/shiny/ui.R b/inst/shiny/ui.R new file mode 100644 index 0000000..3e40116 --- /dev/null +++ b/inst/shiny/ui.R @@ -0,0 +1,4 @@ +require(rCharts) +shinyUI(bootstrapPage( + showOutput("show") +)) \ No newline at end of file