From b16c3f1e58f1cee12ff021238a672abfddf7caee Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 12:05:31 -0600 Subject: [PATCH 01/28] use dev dplyr --- DESCRIPTION | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DESCRIPTION b/DESCRIPTION index e56ba92f..eb8f3c59 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -51,3 +51,5 @@ URL: http://github.com/rnabioco/valr, http://rnabioco.github.io/valr BugReports: https://github.com/rnabioco/valr/issues Roxygen: list(markdown = TRUE) Encoding: UTF-8 +Remotes: + tidyverse/dplyr From a1487c3182a998674776e3b75716267257fed2d6 Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 12:05:49 -0600 Subject: [PATCH 02/28] don't pass chrom to groups more than once --- R/bed_absdist.r | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/bed_absdist.r b/R/bed_absdist.r index ab519f20..d50fc2b0 100644 --- a/R/bed_absdist.r +++ b/R/bed_absdist.r @@ -80,18 +80,18 @@ bed_absdist <- function(x, y, genome) { genome <- inner_join(genome, get_labels(y), by = c("chrom")) ref_points <- summarize(y, .ref_points = n()) - genome <- inner_join(genome, ref_points, by = c("chrom", groups_xy)) + genome <- inner_join(genome, ref_points, by = c(groups_xy)) genome <- mutate(genome, .ref_gap = .ref_points / size) genome <- select(genome, -size, -.ref_points) # calculate scaled reference sizes - res <- full_join(res, genome, by = c("chrom", groups_xy)) + res <- full_join(res, genome, by = c(groups_xy)) res <- mutate(res, .absdist_scaled = .absdist * .ref_gap) res <- select(res, -.ref_gap) # report back original x intervals not found - x_missing <- anti_join(x, res, by = c("chrom", groups_xy)) + x_missing <- anti_join(x, res, by = c(groups_xy)) x_missing <- ungroup(x_missing) x_missing <- mutate(x_missing, .absdist = NA, .absdist_scaled = NA) res <- bind_rows(res, x_missing) From 6dacceceefae5452252ee51eadfb18a1d40a2247 Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 12:29:43 -0600 Subject: [PATCH 03/28] reuse the POS col to work around bug in dplyr (see #4996) --- R/read_vcf.r | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/read_vcf.r b/R/read_vcf.r index 90fd6b50..4a606bb3 100644 --- a/R/read_vcf.r +++ b/R/read_vcf.r @@ -21,7 +21,7 @@ read_vcf <- function(vcf) { res, chrom = stringr::str_c("chr", CHROM), start = POS, - end = start + stringr::str_length(REF) + end = POS + stringr::str_length(REF) ) res From 932945d8c84ffc0273031904c1afe40461558351 Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 12:55:58 -0600 Subject: [PATCH 04/28] using old < dplyr v0.8.0 grouped dataframes now throws an error not a warning. --- tests/testthat/test_groups.r | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test_groups.r b/tests/testthat/test_groups.r index 2d3437ed..5cde2e62 100644 --- a/tests/testthat/test_groups.r +++ b/tests/testthat/test_groups.r @@ -81,11 +81,10 @@ df_new <- structure( ) ) -test_that("old dataframe groupings (dplyr v. < 0.7.9.900) are tolerated", { +test_that("old dataframe groupings (dplyr v. < 0.7.9.900) are no longer tolerated", { if (packageVersion("dplyr") >= "0.7.9.9000"){ - expect_warning(bed_intersect(df_old, df_old)) - res <- suppressWarnings(bed_intersect(df_old, df_old)) + expect_error(bed_intersect(df_old, df_old)) } else { expect_silent(bed_intersect(df_old, df_old)) res <- bed_intersect(df_old, df_old) @@ -94,11 +93,10 @@ test_that("old dataframe groupings (dplyr v. < 0.7.9.900) are tolerated", { df_attr_names <- names(attributes(df_old)) expect_true(all(c("labels", "indices", "group_sizes") %in% df_attr_names)) expect_false("groups" %in% df_attr_names) + expect_is(res, "data.frame") + expect_equal(nrow(res), 6) } - res <- suppressWarnings(bed_intersect(df_old, df_old)) - expect_is(res, "data.frame") - expect_equal(nrow(res), 6) }) From 45888d961cc54a8e7a34191201f465a376d59535 Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 12:59:25 -0600 Subject: [PATCH 05/28] drop equality testing for classes --- tests/testthat/test_intersect.r | 2 +- tests/testthat/test_map.r | 2 +- tests/testthat/test_partition.r | 8 ++++---- tests/testthat/test_sort.r | 2 +- tests/testthat/test_subtract.r | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/testthat/test_intersect.r b/tests/testthat/test_intersect.r index df1f6935..474c716f 100644 --- a/tests/testthat/test_intersect.r +++ b/tests/testthat/test_intersect.r @@ -326,7 +326,7 @@ test_that("unmatched groups are included when invert = TRUE", { ) res <- bed_intersect(x, y, invert = TRUE) - expect_equal(res, pred) + expect_equivalent(res, pred) }) # from https://github.com/arq5x/bedtools2/blob/master/test/intersect/test-intersect.sh diff --git a/tests/testthat/test_map.r b/tests/testthat/test_map.r index 98118c44..1ee94b9c 100644 --- a/tests/testthat/test_map.r +++ b/tests/testthat/test_map.r @@ -101,7 +101,7 @@ test_that("book-ended intervals are not reported", { "chr1", 100, 200, 10 ) res <- bed_map(x, y, value = sum(value)) - expect_equal(res, expected) + expect_equivalent(res, expected) }) test_that("ensure that mapping is calculated with respect to input tbls issue#108", { diff --git a/tests/testthat/test_partition.r b/tests/testthat/test_partition.r index c5a8d8bd..72cda3f5 100644 --- a/tests/testthat/test_partition.r +++ b/tests/testthat/test_partition.r @@ -33,7 +33,7 @@ test_that("basic partition works (bedops partition1 test)", { ) res <- bed_partition(x) - expect_equal(res, pred) + expect_equivalent(res, pred) }) @@ -116,7 +116,7 @@ pred <- trbl_interval( ) res <- bed_partition(x) - expect_equal(res, pred) + expect_equivalent(res, pred) }) @@ -146,7 +146,7 @@ test_that("partition drops non-grouped cols (bedops partition3 test)", { ) res <- bed_partition(x) - expect_equal(res, pred) + expect_equivalent(res, pred) }) @@ -179,7 +179,7 @@ test_that("partition drops non-grouped cols (bedops partition4 test)", { ) res <- bed_partition(x) - expect_equal(res, pred) + expect_equivalent(res, pred) }) diff --git a/tests/testthat/test_sort.r b/tests/testthat/test_sort.r index b4fe0dcd..f5387dcd 100644 --- a/tests/testthat/test_sort.r +++ b/tests/testthat/test_sort.r @@ -86,7 +86,7 @@ test_that("ties in start are sorted by end", { ) res <- bed_sort(x) - expect_equal(res, pred) + expect_equivalent(res, pred) }) # from https://github.com/arq5x/bedtools2/blob/master/test/sort/test-sort.sh diff --git a/tests/testthat/test_subtract.r b/tests/testthat/test_subtract.r index 15ab8726..02969a58 100644 --- a/tests/testthat/test_subtract.r +++ b/tests/testthat/test_subtract.r @@ -175,7 +175,7 @@ test_that("test baseline subtraction", { "chr1", 50, 70, "a2", 2, "-" ) res <- bed_subtract(a, b) - expect_equal(res, c) + expect_equivalent(res, c) }) test_that("test any = TRUE subtraction", { @@ -201,5 +201,5 @@ test_that("test with 2 DBs", { "chr1", 65, 70, "a2", 2, "-" ) res <- bed_subtract(bed_subtract(a, b), b2) - expect_equal(res, c) + expect_equivalent(res, c) }) From ffaed9ab18e3cc7abbd4f2a6c8389c388aad8fe5 Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 13:42:31 -0600 Subject: [PATCH 06/28] bump dplyr version to at least 0.8.0 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index eb8f3c59..eb34cedb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -17,7 +17,7 @@ License: MIT + file LICENSE Depends: R (>= 3.1.2) Imports: - dplyr (>= 0.7.0), + dplyr (>= 0.8.0), rlang, readr, stringr, From 58e97467483d798c1fd48d80d2cc8b97105f8f97 Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 13:59:41 -0600 Subject: [PATCH 07/28] deprecate dplyr < 0.8.0 handling, require dplyr 0.8.0 --- R/bed_absdist.r | 2 +- R/bed_closest.r | 4 -- R/bed_cluster.r | 8 ++-- R/bed_coverage.R | 5 --- R/bed_flank.r | 4 -- R/bed_intersect.r | 5 --- R/bed_makewindows.r | 4 -- R/bed_map.r | 5 --- R/bed_merge.r | 13 +++--- R/bed_partition.r | 13 +++--- R/bed_reldist.r | 16 ++++--- R/bed_shuffle.r | 8 +--- R/bed_subtract.r | 5 --- tests/testthat/test_groups.r | 87 ------------------------------------ 14 files changed, 25 insertions(+), 154 deletions(-) diff --git a/R/bed_absdist.r b/R/bed_absdist.r index d50fc2b0..fc9bbd46 100644 --- a/R/bed_absdist.r +++ b/R/bed_absdist.r @@ -45,7 +45,7 @@ bed_absdist <- function(x, y, genome) { # establish grouping with shared groups (and chrom) groups_xy <- shared_groups(x, y) - groups_xy <- unique(as.character(c("chrom", groups_xy))) + groups_xy <- unique(unique(as.character(c("chrom", groups_xy)))) groups_vars <- rlang::syms(groups_xy) # type convert grouping factors to characters if necessary and ungroup diff --git a/R/bed_closest.r b/R/bed_closest.r index e94f1e67..3aed2cda 100644 --- a/R/bed_closest.r +++ b/R/bed_closest.r @@ -96,10 +96,6 @@ bed_closest <- function(x, y, overlap = TRUE, suffix <- list(x = suffix[1], y = suffix[2]) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - y <- update_groups(y) - } grp_indexes <- shared_group_indexes(x, y) res <- closest_impl(x, y, diff --git a/R/bed_cluster.r b/R/bed_cluster.r index 9260e061..13b4b6e2 100644 --- a/R/bed_cluster.r +++ b/R/bed_cluster.r @@ -45,12 +45,10 @@ bed_cluster <- function(x, max_dist = 0) { if (!is.tbl_interval(x)) x <- as.tbl_interval(x) - res <- group_by(x, chrom, add = TRUE) - res <- bed_sort(res) + groups <- rlang::syms(unique(c("chrom", group_vars(x)))) + res <- group_by(x, !!! groups) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - res <- update_groups(res) - } + res <- bed_sort(res) res <- merge_impl(res, max_dist, collapse = FALSE) diff --git a/R/bed_coverage.R b/R/bed_coverage.R index f5854f30..b6490018 100644 --- a/R/bed_coverage.R +++ b/R/bed_coverage.R @@ -59,11 +59,6 @@ bed_coverage <- function(x, y, ...) { x <- group_by(x, !!! groups_vars) y <- group_by(y, !!! groups_vars) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - y <- update_groups(y) - } - grp_indexes <- shared_group_indexes(x, y) res <- coverage_impl(x, y, grp_indexes$x, diff --git a/R/bed_flank.r b/R/bed_flank.r index 4b1b50b9..4fc3c0b9 100644 --- a/R/bed_flank.r +++ b/R/bed_flank.r @@ -71,10 +71,6 @@ bed_flank <- function(x, genome, both = 0, left = 0, if (both) left <- right <- both - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - } - res <- flank_impl( x, genome, both, left, right, fraction, strand, trim diff --git a/R/bed_intersect.r b/R/bed_intersect.r index 501095ab..5091de13 100644 --- a/R/bed_intersect.r +++ b/R/bed_intersect.r @@ -140,11 +140,6 @@ bed_intersect <- function(x, ..., invert = FALSE, suffix = c(".x", ".y")) { suffix <- list(x = suffix[1], y = suffix[2]) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - y <- update_groups(y) - } - grp_indexes <- shared_group_indexes(x, y) res <- intersect_impl(x, y, diff --git a/R/bed_makewindows.r b/R/bed_makewindows.r index d7712e2e..eeb671b4 100644 --- a/R/bed_makewindows.r +++ b/R/bed_makewindows.r @@ -74,10 +74,6 @@ bed_makewindows <- function(x, # dummy win_ids x <- mutate(x, .win_id = 0) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - } - res <- makewindows_impl(x, win_size, num_win, step_size, reverse) res <- as.tbl_interval(res) diff --git a/R/bed_map.r b/R/bed_map.r index 13ce4551..d0c7af8d 100644 --- a/R/bed_map.r +++ b/R/bed_map.r @@ -56,11 +56,6 @@ bed_map <- function(x, y, ..., min_overlap = 1) { x <- group_by(x, !!! groups_vars) y <- group_by(y, !!! groups_vars) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - y <- update_groups(y) - } - grp_indexes <- shared_group_indexes(x, y) res <- intersect_impl(x, y, diff --git a/R/bed_merge.r b/R/bed_merge.r index 1863e808..55722fb9 100644 --- a/R/bed_merge.r +++ b/R/bed_merge.r @@ -57,21 +57,18 @@ bed_merge <- function(x, max_dist = 0, ...) { if (is_merged(x)) return(x) - groups_x <- groups(x) + groups_x <- group_vars(x) res <- bed_sort(x) - res <- group_by(res, chrom, add = TRUE) - - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - res <- update_groups(res) - } + group_vars <- rlang::syms(unique(c("chrom", groups_x))) + res <- group_by(res, !!! group_vars) # if no dots are passed then use fast internal merge if (!is.null(substitute(...))) { res <- merge_impl(res, max_dist, collapse = FALSE) - group_vars <- rlang::syms(c("chrom", ".id_merge", groups_x)) - res <- group_by(res, !!! group_vars, add = TRUE) + group_vars <- rlang::syms(unique(c("chrom", ".id_merge", groups_x))) + res <- group_by(res, !!! group_vars) res <- summarize(res, !!! rlang::quos( .start = min(start), diff --git a/R/bed_partition.r b/R/bed_partition.r index e633b8e6..37d80c78 100644 --- a/R/bed_partition.r +++ b/R/bed_partition.r @@ -59,16 +59,13 @@ bed_partition <- function(x, ...) { groups_df <- group_vars(x) x <- bed_sort(x) - x <- group_by(x, chrom, add = TRUE) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x_cpp <- update_groups(x) - res <- partition_impl(x_cpp) - } else { - res <- partition_impl(x) - } + groups <- rlang::syms(unique(c("chrom", groups_df))) + x <- group_by(x, !!! groups) + + res <- partition_impl(x) - res <- tbl_df(res) + res <- tibble::as_tibble(res) # drop non-grouped cols as values no longer match ivls res <- select(res, chrom, start, end, one_of(groups_df)) diff --git a/R/bed_reldist.r b/R/bed_reldist.r index 958130ba..85c522c5 100644 --- a/R/bed_reldist.r +++ b/R/bed_reldist.r @@ -37,13 +37,17 @@ bed_reldist <- function(x, y, detail = FALSE) { if (!is.tbl_interval(x)) x <- as.tbl_interval(x) if (!is.tbl_interval(y)) y <- as.tbl_interval(y) - x <- group_by(x, chrom, add = TRUE) - y <- group_by(y, chrom, add = TRUE) + # establish grouping with shared groups (and chrom) + groups_xy <- shared_groups(x, y) + groups_xy <- unique(as.character(c("chrom", groups_xy))) + groups_vars <- rlang::syms(groups_xy) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - y <- update_groups(y) - } + # type convert grouping factors to characters if necessary and ungroup + x <- convert_factors(x, groups_xy) + y <- convert_factors(y, groups_xy) + + x <- group_by(x, !!! groups_vars) + y <- group_by(y, !!! groups_vars) grp_indexes <- shared_group_indexes(x, y) diff --git a/R/bed_shuffle.r b/R/bed_shuffle.r index 628ec03b..6b626383 100644 --- a/R/bed_shuffle.r +++ b/R/bed_shuffle.r @@ -58,13 +58,7 @@ bed_shuffle <- function(x, genome, incl = NULL, excl = NULL, stop("no intervals to sample from", call. = FALSE) } - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x_cpp <- update_groups(x) - # drops all columns except chrom, start, and end - res <- shuffle_impl(x_cpp, incl, within, max_tries, seed) - } else { - res <- shuffle_impl(x, incl, within, max_tries, seed) - } + res <- shuffle_impl(x, incl, within, max_tries, seed) # bind original x column data to result (#81) res <- bind_cols(res, x[, !colnames(x) %in% colnames(res)]) diff --git a/R/bed_subtract.r b/R/bed_subtract.r index 74872366..e3cd1cc8 100644 --- a/R/bed_subtract.r +++ b/R/bed_subtract.r @@ -70,11 +70,6 @@ bed_subtract <- function(x, y, any = FALSE) { # keep x ivls from groups not found in y res_no_y <- semi_join(x, not_y_grps, by = colnames(not_y_grps)) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x <- update_groups(x) - y <- update_groups(y) - } - grp_indexes <- shared_group_indexes(x, y) if (any) { diff --git a/tests/testthat/test_groups.r b/tests/testthat/test_groups.r index 5cde2e62..995a5e90 100644 --- a/tests/testthat/test_groups.r +++ b/tests/testthat/test_groups.r @@ -37,92 +37,5 @@ test_that("mismatched groups are dropped by two table verbs", { expect_equal(nrow(res1), 16) }) -## dplyr v0.7.9 and earlier style grouped data_frame -df_old <- structure( - list( - chrom = c("chr1", "chr1", "chr1", "chr2", "chr2", "chr3"), - start = c(100, 200, 500, 125, 150, 100), - end = c(200,400, 600, 175, 200, 300), - group = c("B", "A", "C", "C", "A","A") - ), - row.names = c(NA,-6L), - class = c("grouped_df", "tbl_df", - "tbl", "data.frame"), - vars = "group", - drop = TRUE, - indices = list(c(1L, 4L, 5L), 0L, 2:3), - group_sizes = c(3L, 1L, 2L), - biggest_group_size = 3L, - labels = structure( - list(group = c("A", "B", "C")), - row.names = c(NA,-3L), - class = "data.frame", - vars = "group", - drop = TRUE - ) - ) - -## dplyr v0.8.0 style grouped data_frame -df_new <- structure( - list( - chrom = c("chr1", "chr1", "chr1", "chr2", "chr2", "chr3"), - start = c(100, 200, 500, 125, 150, 100), - end = c(200, 400, 600, 175, 200, 300), - group = c("B", "A", "C", "C", "A","A") - ), - row.names = c(NA,-6L), - class = c("grouped_df", "tbl_df", - "tbl", "data.frame"), - groups = structure( - list(group = c("A", "B", "C"), - .rows = list(c(2L, 5L, 6L), 1L, 3:4)), - row.names = c(NA,-3L), - class = c("tbl_df", "tbl", "data.frame") - ) - ) - -test_that("old dataframe groupings (dplyr v. < 0.7.9.900) are no longer tolerated", { - - if (packageVersion("dplyr") >= "0.7.9.9000"){ - expect_error(bed_intersect(df_old, df_old)) - } else { - expect_silent(bed_intersect(df_old, df_old)) - res <- bed_intersect(df_old, df_old) - - #check that input data attributes are not modified - df_attr_names <- names(attributes(df_old)) - expect_true(all(c("labels", "indices", "group_sizes") %in% df_attr_names)) - expect_false("groups" %in% df_attr_names) - expect_is(res, "data.frame") - expect_equal(nrow(res), 6) - } - -}) - - -test_that("new style dataframe groupings (dplyr v. >= 0.7.9.900) are tolerated", { - - # dplyr < 0.7.9.9000 will not recognize the new format - # groups therefore not respected until regrouped - if (packageVersion("dplyr") < "0.7.9.9000"){ - res <- bed_intersect(df_new, df_new) - expect_equal(nrow(res), 10) - expect_is(res, "data.frame") - - df_new <- group_by(df_new, group) - res <- bed_intersect(df_new, df_new) - expect_equal(nrow(res), 6) - expect_is(res, "data.frame") - } else { - res <- bed_intersect(df_new, df_new) - expect_is(res, "data.frame") - expect_equal(nrow(res), 6) - - df_new <- ungroup(df_new) - res <- bed_intersect(df_new, df_new) - expect_is(res, "data.frame") - expect_equal(nrow(res), 10) - } -}) From 6fc77e34c4960a66f1b762260b482d9ccca99eba Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 14:00:05 -0600 Subject: [PATCH 08/28] frame_data -> tribble --- tests/testthat/test_absdist.r | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test_absdist.r b/tests/testthat/test_absdist.r index 585fe942..11116adb 100644 --- a/tests/testthat/test_absdist.r +++ b/tests/testthat/test_absdist.r @@ -1,18 +1,18 @@ context("bed_absdist") -genome <- tibble::frame_data( +genome <- tibble::tribble( ~ chrom, ~ size, "chr1", 10000, "chr2", 10000, "chr3", 10000 ) -x <- tibble::frame_data( +x <- tibble::tribble( ~ chrom, ~ start, ~ end, "chr1", 75, 125 ) -y <- tibble::frame_data( +y <- tibble::tribble( ~ chrom, ~ start, ~ end, "chr1", 50, 100, "chr1", 100, 150 @@ -24,7 +24,7 @@ test_that("absdist calculation is correct", { }) test_that("self absdist is 0", { - x <- tibble::frame_data( + x <- tibble::tribble( ~ chrom, ~ start, ~ end, "chr1", 5, 15, "chr1", 50, 150, @@ -37,7 +37,7 @@ test_that("self absdist is 0", { }) test_that("x ivls without matching y-ivls chroms are reported with absdist = NA", { - x <- tibble::frame_data( + x <- tibble::tribble( ~ chrom, ~ start, ~ end, "chr1", 5, 15, "chr1", 50, 150, @@ -45,7 +45,7 @@ test_that("x ivls without matching y-ivls chroms are reported with absdist = NA" "chr3", 3000, 4000 ) - y <- tibble::frame_data( + y <- tibble::tribble( ~ chrom, ~ start, ~ end, "chr1", 25, 125, "chr1", 150, 250, From c20cd0b3b78dd57427347d6ebc43ab985c08a90f Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 15:25:16 -0600 Subject: [PATCH 09/28] fxn no longer need --- R/utils.r | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/R/utils.r b/R/utils.r index d6704d98..39091c77 100644 --- a/R/utils.r +++ b/R/utils.r @@ -117,25 +117,6 @@ get_labels <- function(grp_tbl) { grp_df } -#' Update grouped dataframe attributes for dplyr 0.8.0 version -#' @param df grouped data frame -#' @return grouped data frame with attributes matching dplyr 0.8.0 version -#' @noRd -update_groups <- function(df){ - r_indexes <- lapply(attr(df, "indices"), - function(x) x + 1L) - - attr(df, "groups") <- as_tibble(attr(df, "labels")) - attr(df, "groups")$.rows <- r_indexes - attr(df, "biggest_group_size") <- NULL - attr(df, "group_sizes") <- NULL - attr(df, "indices") <- NULL - attr(df, "labels") <- NULL - attr(df, "vars") <- NULL - attr(df, "drop") <- NULL - df -} - #' Type convert factors if they are grouping columns #' @param x data frame #' @param group_cols group columns to type convert if factors From e0245aee238a048259f384602af6e54951fb5eea Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Fri, 20 Mar 2020 15:25:31 -0600 Subject: [PATCH 10/28] update docs and news --- DESCRIPTION | 2 +- NEWS.md | 4 ++++ man/bed12_to_exons.Rd | 9 +++++---- man/bed_absdist.Rd | 8 +++++--- man/bed_closest.Rd | 9 ++++++--- man/bed_cluster.Rd | 11 +++++++---- man/bed_complement.Rd | 11 +++++++---- man/bed_coverage.Rd | 9 ++++++--- man/bed_fisher.Rd | 8 +++++--- man/bed_flank.Rd | 24 ++++++++++++++++++------ man/bed_intersect.Rd | 11 +++++++---- man/bed_jaccard.Rd | 10 ++++++---- man/bed_makewindows.Rd | 19 +++++++++++++------ man/bed_map.Rd | 9 ++++++--- man/bed_merge.Rd | 11 +++++++---- man/bed_partition.Rd | 11 +++++++---- man/bed_projection.Rd | 8 +++++--- man/bed_random.Rd | 12 +++++++++--- man/bed_reldist.Rd | 8 +++++--- man/bed_shift.Rd | 11 +++++++---- man/bed_shuffle.Rd | 14 +++++++++++--- man/bed_slop.Rd | 24 ++++++++++++++++++------ man/bed_subtract.Rd | 9 ++++++--- man/bed_window.Rd | 9 ++++++--- man/bound_intervals.Rd | 9 +++++---- man/create_introns.Rd | 6 ++++-- man/create_tss.Rd | 6 ++++-- man/create_utrs3.Rd | 6 ++++-- man/create_utrs5.Rd | 6 ++++-- man/db.Rd | 20 ++++++++++++++++---- man/flip_strands.Rd | 9 +++++---- man/interval_spacing.Rd | 8 +++++--- man/read_bed.Rd | 8 ++++---- man/read_genome.Rd | 5 +++-- man/read_vcf.Rd | 5 +++-- 35 files changed, 234 insertions(+), 115 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index eb34cedb..ed5c917d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -46,7 +46,7 @@ Suggests: IRanges, S4Vectors, VignetteBuilder: knitr -RoxygenNote: 6.1.1 +RoxygenNote: 7.0.2 URL: http://github.com/rnabioco/valr, http://rnabioco.github.io/valr BugReports: https://github.com/rnabioco/valr/issues Roxygen: list(markdown = TRUE) diff --git a/NEWS.md b/NEWS.md index e915c7fd..acd20f0c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,9 @@ # valr 0.5.0.9000 +## Minor changes + +* dplyr version < 0.8.0 is no longer supported due to unecessary code bloat and challenges with handling multiple grouping structures (#359). + ## Bug fixes * Fixed `bed_closest()` to prevent erroneous intervals being reported when adjacent closest intervals are present in the `y` table. (#348) diff --git a/man/bed12_to_exons.Rd b/man/bed12_to_exons.Rd index d6cf3ba0..bd7cbf10 100644 --- a/man/bed12_to_exons.Rd +++ b/man/bed12_to_exons.Rd @@ -21,9 +21,10 @@ bed12_to_exons(x) } \seealso{ -Other utilities: \code{\link{bed_makewindows}}, - \code{\link{bound_intervals}}, - \code{\link{flip_strands}}, - \code{\link{interval_spacing}} +Other utilities: +\code{\link{bed_makewindows}()}, +\code{\link{bound_intervals}()}, +\code{\link{flip_strands}()}, +\code{\link{interval_spacing}()} } \concept{utilities} diff --git a/man/bed_absdist.Rd b/man/bed_absdist.Rd index f4528e8a..0512d74b 100644 --- a/man/bed_absdist.Rd +++ b/man/bed_absdist.Rd @@ -50,8 +50,10 @@ bed_absdist(x, y, genome) \seealso{ \url{http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002529} -Other interval statistics: \code{\link{bed_fisher}}, - \code{\link{bed_jaccard}}, \code{\link{bed_projection}}, - \code{\link{bed_reldist}} +Other interval statistics: +\code{\link{bed_fisher}()}, +\code{\link{bed_jaccard}()}, +\code{\link{bed_projection}()}, +\code{\link{bed_reldist}()} } \concept{interval statistics} diff --git a/man/bed_closest.Rd b/man/bed_closest.Rd index 690d14b7..12c694fa 100644 --- a/man/bed_closest.Rd +++ b/man/bed_closest.Rd @@ -91,8 +91,11 @@ res \seealso{ \url{http://bedtools.readthedocs.io/en/latest/content/tools/closest.html} -Other multiple set operations: \code{\link{bed_coverage}}, - \code{\link{bed_intersect}}, \code{\link{bed_map}}, - \code{\link{bed_subtract}}, \code{\link{bed_window}} +Other multiple set operations: +\code{\link{bed_coverage}()}, +\code{\link{bed_intersect}()}, +\code{\link{bed_map}()}, +\code{\link{bed_subtract}()}, +\code{\link{bed_window}()} } \concept{multiple set operations} diff --git a/man/bed_cluster.Rd b/man/bed_cluster.Rd index 017a2b8e..09beaaa5 100644 --- a/man/bed_cluster.Rd +++ b/man/bed_cluster.Rd @@ -55,9 +55,12 @@ bed_glyph(bed_cluster(x), label = '.id') \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/cluster.html} -Other single set operations: \code{\link{bed_complement}}, - \code{\link{bed_flank}}, \code{\link{bed_merge}}, - \code{\link{bed_partition}}, \code{\link{bed_shift}}, - \code{\link{bed_slop}} +Other single set operations: +\code{\link{bed_complement}()}, +\code{\link{bed_flank}()}, +\code{\link{bed_merge}()}, +\code{\link{bed_partition}()}, +\code{\link{bed_shift}()}, +\code{\link{bed_slop}()} } \concept{single set operations} diff --git a/man/bed_complement.Rd b/man/bed_complement.Rd index 788de24b..33aa0dba 100644 --- a/man/bed_complement.Rd +++ b/man/bed_complement.Rd @@ -52,9 +52,12 @@ bed_complement(x, genome) } \seealso{ -Other single set operations: \code{\link{bed_cluster}}, - \code{\link{bed_flank}}, \code{\link{bed_merge}}, - \code{\link{bed_partition}}, \code{\link{bed_shift}}, - \code{\link{bed_slop}} +Other single set operations: +\code{\link{bed_cluster}()}, +\code{\link{bed_flank}()}, +\code{\link{bed_merge}()}, +\code{\link{bed_partition}()}, +\code{\link{bed_shift}()}, +\code{\link{bed_slop}()} } \concept{single set operations} diff --git a/man/bed_coverage.Rd b/man/bed_coverage.Rd index e1c4983c..99a5a425 100644 --- a/man/bed_coverage.Rd +++ b/man/bed_coverage.Rd @@ -58,8 +58,11 @@ bed_coverage(x, y) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/coverage.html} -Other multiple set operations: \code{\link{bed_closest}}, - \code{\link{bed_intersect}}, \code{\link{bed_map}}, - \code{\link{bed_subtract}}, \code{\link{bed_window}} +Other multiple set operations: +\code{\link{bed_closest}()}, +\code{\link{bed_intersect}()}, +\code{\link{bed_map}()}, +\code{\link{bed_subtract}()}, +\code{\link{bed_window}()} } \concept{multiple set operations} diff --git a/man/bed_fisher.Rd b/man/bed_fisher.Rd index aceb73a9..022911de 100644 --- a/man/bed_fisher.Rd +++ b/man/bed_fisher.Rd @@ -38,8 +38,10 @@ bed_fisher(x, y, genome) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/fisher.html} -Other interval statistics: \code{\link{bed_absdist}}, - \code{\link{bed_jaccard}}, \code{\link{bed_projection}}, - \code{\link{bed_reldist}} +Other interval statistics: +\code{\link{bed_absdist}()}, +\code{\link{bed_jaccard}()}, +\code{\link{bed_projection}()}, +\code{\link{bed_reldist}()} } \concept{interval statistics} diff --git a/man/bed_flank.Rd b/man/bed_flank.Rd index 9dba0c88..8ec0f21d 100644 --- a/man/bed_flank.Rd +++ b/man/bed_flank.Rd @@ -4,8 +4,17 @@ \alias{bed_flank} \title{Create flanking intervals from input intervals.} \usage{ -bed_flank(x, genome, both = 0, left = 0, right = 0, - fraction = FALSE, strand = FALSE, trim = FALSE, ...) +bed_flank( + x, + genome, + both = 0, + left = 0, + right = 0, + fraction = FALSE, + strand = FALSE, + trim = FALSE, + ... +) } \arguments{ \item{x}{\code{\link[=tbl_interval]{tbl_interval()}}} @@ -69,9 +78,12 @@ bed_flank(x, genome, both = 0.5, fraction = TRUE) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/flank.html} -Other single set operations: \code{\link{bed_cluster}}, - \code{\link{bed_complement}}, \code{\link{bed_merge}}, - \code{\link{bed_partition}}, \code{\link{bed_shift}}, - \code{\link{bed_slop}} +Other single set operations: +\code{\link{bed_cluster}()}, +\code{\link{bed_complement}()}, +\code{\link{bed_merge}()}, +\code{\link{bed_partition}()}, +\code{\link{bed_shift}()}, +\code{\link{bed_slop}()} } \concept{single set operations} diff --git a/man/bed_intersect.Rd b/man/bed_intersect.Rd index b897fab5..0b25b7c8 100644 --- a/man/bed_intersect.Rd +++ b/man/bed_intersect.Rd @@ -24,7 +24,7 @@ If multiple \code{y} tbls are supplied, the \code{.source} contains variable na associated with each interval. All original columns from the \code{y} are suffixed with \code{.y} in the output. -If \code{...} contains named inputs (i.e \code{a = y, b = z} or \code{list(a = y, b = z)}), +If \code{...} contains named inputs (i.e \verb{a = y, b = z} or \code{list(a = y, b = z)}), then \code{.source} will contain supplied names (see examples). } \description{ @@ -98,8 +98,11 @@ bed_intersect(x, list(exons = y, introns = z)) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/intersect.html} -Other multiple set operations: \code{\link{bed_closest}}, - \code{\link{bed_coverage}}, \code{\link{bed_map}}, - \code{\link{bed_subtract}}, \code{\link{bed_window}} +Other multiple set operations: +\code{\link{bed_closest}()}, +\code{\link{bed_coverage}()}, +\code{\link{bed_map}()}, +\code{\link{bed_subtract}()}, +\code{\link{bed_window}()} } \concept{multiple set operations} diff --git a/man/bed_jaccard.Rd b/man/bed_jaccard.Rd index b48834f3..fb2fc221 100644 --- a/man/bed_jaccard.Rd +++ b/man/bed_jaccard.Rd @@ -28,7 +28,7 @@ base-pairs. Groups that are shared between input are used to calculate the stati for subsets of data. } \details{ -The Jaccard statistic takes values of \code{[0,1]} and is measured as: +The Jaccard statistic takes values of \verb{[0,1]} and is measured as: \deqn{ J(x,y) = \frac{\mid x \bigcap y \mid} {\mid x \bigcup y \mid} = @@ -57,8 +57,10 @@ bed_jaccard(dplyr::group_by(x, chrom), \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/jaccard.html} -Other interval statistics: \code{\link{bed_absdist}}, - \code{\link{bed_fisher}}, \code{\link{bed_projection}}, - \code{\link{bed_reldist}} +Other interval statistics: +\code{\link{bed_absdist}()}, +\code{\link{bed_fisher}()}, +\code{\link{bed_projection}()}, +\code{\link{bed_reldist}()} } \concept{interval statistics} diff --git a/man/bed_makewindows.Rd b/man/bed_makewindows.Rd index e30acbd3..d6ddb423 100644 --- a/man/bed_makewindows.Rd +++ b/man/bed_makewindows.Rd @@ -4,8 +4,14 @@ \alias{bed_makewindows} \title{Divide intervals into new sub-intervals ("windows").} \usage{ -bed_makewindows(x, genome = NULL, win_size = 0, step_size = 0, - num_win = 0, reverse = FALSE) +bed_makewindows( + x, + genome = NULL, + win_size = 0, + step_size = 0, + num_win = 0, + reverse = FALSE +) } \arguments{ \item{x}{\code{\link[=tbl_interval]{tbl_interval()}}} @@ -58,9 +64,10 @@ dplyr::mutate(wins, namenum = stringr::str_c(name, '_', .win_id)) } \seealso{ -Other utilities: \code{\link{bed12_to_exons}}, - \code{\link{bound_intervals}}, - \code{\link{flip_strands}}, - \code{\link{interval_spacing}} +Other utilities: +\code{\link{bed12_to_exons}()}, +\code{\link{bound_intervals}()}, +\code{\link{flip_strands}()}, +\code{\link{interval_spacing}()} } \concept{utilities} diff --git a/man/bed_map.Rd b/man/bed_map.Rd index 1dce46d0..479dcacc 100644 --- a/man/bed_map.Rd +++ b/man/bed_map.Rd @@ -96,8 +96,11 @@ dplyr::mutate(bed_map(x, y, .counts = dplyr::n()), .counts = ifelse(is.na(.count \seealso{ \url{http://bedtools.readthedocs.io/en/latest/content/tools/map.html} -Other multiple set operations: \code{\link{bed_closest}}, - \code{\link{bed_coverage}}, \code{\link{bed_intersect}}, - \code{\link{bed_subtract}}, \code{\link{bed_window}} +Other multiple set operations: +\code{\link{bed_closest}()}, +\code{\link{bed_coverage}()}, +\code{\link{bed_intersect}()}, +\code{\link{bed_subtract}()}, +\code{\link{bed_window}()} } \concept{multiple set operations} diff --git a/man/bed_merge.Rd b/man/bed_merge.Rd index a0b7929b..689e0e01 100644 --- a/man/bed_merge.Rd +++ b/man/bed_merge.Rd @@ -62,9 +62,12 @@ bed_merge(x, .value = sum(value)) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/merge.html} -Other single set operations: \code{\link{bed_cluster}}, - \code{\link{bed_complement}}, \code{\link{bed_flank}}, - \code{\link{bed_partition}}, \code{\link{bed_shift}}, - \code{\link{bed_slop}} +Other single set operations: +\code{\link{bed_cluster}()}, +\code{\link{bed_complement}()}, +\code{\link{bed_flank}()}, +\code{\link{bed_partition}()}, +\code{\link{bed_shift}()}, +\code{\link{bed_slop}()} } \concept{single set operations} diff --git a/man/bed_partition.Rd b/man/bed_partition.Rd index 0fafad54..cf831baa 100644 --- a/man/bed_partition.Rd +++ b/man/bed_partition.Rd @@ -69,9 +69,12 @@ bed_partition(x, value = sum(value)) \seealso{ \url{https://bedops.readthedocs.io/en/latest/content/reference/set-operations/bedops.html#partition-p-partition} -Other single set operations: \code{\link{bed_cluster}}, - \code{\link{bed_complement}}, \code{\link{bed_flank}}, - \code{\link{bed_merge}}, \code{\link{bed_shift}}, - \code{\link{bed_slop}} +Other single set operations: +\code{\link{bed_cluster}()}, +\code{\link{bed_complement}()}, +\code{\link{bed_flank}()}, +\code{\link{bed_merge}()}, +\code{\link{bed_shift}()}, +\code{\link{bed_slop}()} } \concept{single set operations} diff --git a/man/bed_projection.Rd b/man/bed_projection.Rd index 178367d9..459888e7 100644 --- a/man/bed_projection.Rd +++ b/man/bed_projection.Rd @@ -52,8 +52,10 @@ bed_projection(x, y, genome, by_chrom = TRUE) \seealso{ \url{http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1002529} -Other interval statistics: \code{\link{bed_absdist}}, - \code{\link{bed_fisher}}, \code{\link{bed_jaccard}}, - \code{\link{bed_reldist}} +Other interval statistics: +\code{\link{bed_absdist}()}, +\code{\link{bed_fisher}()}, +\code{\link{bed_jaccard}()}, +\code{\link{bed_reldist}()} } \concept{interval statistics} diff --git a/man/bed_random.Rd b/man/bed_random.Rd index ed86b080..2a2798d8 100644 --- a/man/bed_random.Rd +++ b/man/bed_random.Rd @@ -4,8 +4,13 @@ \alias{bed_random} \title{Generate randomly placed intervals on a genome.} \usage{ -bed_random(genome, length = 1000, n = 1e+06, sort_by = c("chrom", - "start"), seed = 0) +bed_random( + genome, + length = 1000, + n = 1e+06, + sort_by = c("chrom", "start"), + seed = 0 +) } \arguments{ \item{genome}{\code{\link[=tbl_genome]{tbl_genome()}}} @@ -48,6 +53,7 @@ bed_random(genome, length = 500, n = 500, seed = 10104) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/random.html} -Other randomizing operations: \code{\link{bed_shuffle}} +Other randomizing operations: +\code{\link{bed_shuffle}()} } \concept{randomizing operations} diff --git a/man/bed_reldist.Rd b/man/bed_reldist.Rd index e698e064..6b4badf8 100644 --- a/man/bed_reldist.Rd +++ b/man/bed_reldist.Rd @@ -49,8 +49,10 @@ bed_reldist(x, y, detail = TRUE) \seealso{ \url{http://bedtools.readthedocs.io/en/latest/content/tools/reldist.html} -Other interval statistics: \code{\link{bed_absdist}}, - \code{\link{bed_fisher}}, \code{\link{bed_jaccard}}, - \code{\link{bed_projection}} +Other interval statistics: +\code{\link{bed_absdist}()}, +\code{\link{bed_fisher}()}, +\code{\link{bed_jaccard}()}, +\code{\link{bed_projection}()} } \concept{interval statistics} diff --git a/man/bed_shift.Rd b/man/bed_shift.Rd index bd9806a8..8300b4a2 100644 --- a/man/bed_shift.Rd +++ b/man/bed_shift.Rd @@ -66,9 +66,12 @@ bed_shift(stranded, genome, 100) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/shift.html} -Other single set operations: \code{\link{bed_cluster}}, - \code{\link{bed_complement}}, \code{\link{bed_flank}}, - \code{\link{bed_merge}}, \code{\link{bed_partition}}, - \code{\link{bed_slop}} +Other single set operations: +\code{\link{bed_cluster}()}, +\code{\link{bed_complement}()}, +\code{\link{bed_flank}()}, +\code{\link{bed_merge}()}, +\code{\link{bed_partition}()}, +\code{\link{bed_slop}()} } \concept{single set operations} diff --git a/man/bed_shuffle.Rd b/man/bed_shuffle.Rd index 74195e4a..fa71bc2e 100644 --- a/man/bed_shuffle.Rd +++ b/man/bed_shuffle.Rd @@ -4,8 +4,15 @@ \alias{bed_shuffle} \title{Shuffle input intervals.} \usage{ -bed_shuffle(x, genome, incl = NULL, excl = NULL, max_tries = 1000, - within = FALSE, seed = 0) +bed_shuffle( + x, + genome, + incl = NULL, + excl = NULL, + max_tries = 1000, + within = FALSE, + seed = 0 +) } \arguments{ \item{x}{\code{\link[=tbl_interval]{tbl_interval()}}} @@ -44,6 +51,7 @@ bed_shuffle(x, genome, seed = 9830491) \seealso{ \url{http://bedtools.readthedocs.io/en/latest/content/tools/shuffle.html} -Other randomizing operations: \code{\link{bed_random}} +Other randomizing operations: +\code{\link{bed_random}()} } \concept{randomizing operations} diff --git a/man/bed_slop.Rd b/man/bed_slop.Rd index 7ab2289f..3b7fcb1d 100644 --- a/man/bed_slop.Rd +++ b/man/bed_slop.Rd @@ -4,8 +4,17 @@ \alias{bed_slop} \title{Increase the size of input intervals.} \usage{ -bed_slop(x, genome, both = 0, left = 0, right = 0, - fraction = FALSE, strand = FALSE, trim = FALSE, ...) +bed_slop( + x, + genome, + both = 0, + left = 0, + right = 0, + fraction = FALSE, + strand = FALSE, + trim = FALSE, + ... +) } \arguments{ \item{x}{\code{\link[=tbl_interval]{tbl_interval()}}} @@ -69,9 +78,12 @@ bed_slop(x, genome, both = 0.5, fraction = TRUE) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/slop.html} -Other single set operations: \code{\link{bed_cluster}}, - \code{\link{bed_complement}}, \code{\link{bed_flank}}, - \code{\link{bed_merge}}, \code{\link{bed_partition}}, - \code{\link{bed_shift}} +Other single set operations: +\code{\link{bed_cluster}()}, +\code{\link{bed_complement}()}, +\code{\link{bed_flank}()}, +\code{\link{bed_merge}()}, +\code{\link{bed_partition}()}, +\code{\link{bed_shift}()} } \concept{single set operations} diff --git a/man/bed_subtract.Rd b/man/bed_subtract.Rd index 67c5200b..5f0797a4 100644 --- a/man/bed_subtract.Rd +++ b/man/bed_subtract.Rd @@ -63,8 +63,11 @@ bed_subtract(x, y, any = TRUE) \seealso{ \url{http://bedtools.readthedocs.io/en/latest/content/tools/subtract.html} -Other multiple set operations: \code{\link{bed_closest}}, - \code{\link{bed_coverage}}, \code{\link{bed_intersect}}, - \code{\link{bed_map}}, \code{\link{bed_window}} +Other multiple set operations: +\code{\link{bed_closest}()}, +\code{\link{bed_coverage}()}, +\code{\link{bed_intersect}()}, +\code{\link{bed_map}()}, +\code{\link{bed_window}()} } \concept{multiple set operations} diff --git a/man/bed_window.Rd b/man/bed_window.Rd index 91f97f50..64321e23 100644 --- a/man/bed_window.Rd +++ b/man/bed_window.Rd @@ -71,8 +71,11 @@ bed_window(x, y, genome, both = 100) \seealso{ \url{http://bedtools.readthedocs.org/en/latest/content/tools/window.html} -Other multiple set operations: \code{\link{bed_closest}}, - \code{\link{bed_coverage}}, \code{\link{bed_intersect}}, - \code{\link{bed_map}}, \code{\link{bed_subtract}} +Other multiple set operations: +\code{\link{bed_closest}()}, +\code{\link{bed_coverage}()}, +\code{\link{bed_intersect}()}, +\code{\link{bed_map}()}, +\code{\link{bed_subtract}()} } \concept{multiple set operations} diff --git a/man/bound_intervals.Rd b/man/bound_intervals.Rd index cb7d6781..e192ad04 100644 --- a/man/bound_intervals.Rd +++ b/man/bound_intervals.Rd @@ -38,9 +38,10 @@ bound_intervals(x, genome, trim = TRUE) } \seealso{ -Other utilities: \code{\link{bed12_to_exons}}, - \code{\link{bed_makewindows}}, - \code{\link{flip_strands}}, - \code{\link{interval_spacing}} +Other utilities: +\code{\link{bed12_to_exons}()}, +\code{\link{bed_makewindows}()}, +\code{\link{flip_strands}()}, +\code{\link{interval_spacing}()} } \concept{utilities} diff --git a/man/create_introns.Rd b/man/create_introns.Rd index 26190cde..b8b486ec 100644 --- a/man/create_introns.Rd +++ b/man/create_introns.Rd @@ -21,7 +21,9 @@ create_introns(x) } \seealso{ -Other feature functions: \code{\link{create_tss}}, - \code{\link{create_utrs3}}, \code{\link{create_utrs5}} +Other feature functions: +\code{\link{create_tss}()}, +\code{\link{create_utrs3}()}, +\code{\link{create_utrs5}()} } \concept{feature functions} diff --git a/man/create_tss.Rd b/man/create_tss.Rd index a0d59978..66455d92 100644 --- a/man/create_tss.Rd +++ b/man/create_tss.Rd @@ -19,7 +19,9 @@ create_tss(x) } \seealso{ -Other feature functions: \code{\link{create_introns}}, - \code{\link{create_utrs3}}, \code{\link{create_utrs5}} +Other feature functions: +\code{\link{create_introns}()}, +\code{\link{create_utrs3}()}, +\code{\link{create_utrs5}()} } \concept{feature functions} diff --git a/man/create_utrs3.Rd b/man/create_utrs3.Rd index b9caf7fe..9c660f6b 100644 --- a/man/create_utrs3.Rd +++ b/man/create_utrs3.Rd @@ -19,7 +19,9 @@ create_utrs3(x) } \seealso{ -Other feature functions: \code{\link{create_introns}}, - \code{\link{create_tss}}, \code{\link{create_utrs5}} +Other feature functions: +\code{\link{create_introns}()}, +\code{\link{create_tss}()}, +\code{\link{create_utrs5}()} } \concept{feature functions} diff --git a/man/create_utrs5.Rd b/man/create_utrs5.Rd index f2a5b9cd..e3297146 100644 --- a/man/create_utrs5.Rd +++ b/man/create_utrs5.Rd @@ -19,7 +19,9 @@ create_utrs5(x) } \seealso{ -Other feature functions: \code{\link{create_introns}}, - \code{\link{create_tss}}, \code{\link{create_utrs3}} +Other feature functions: +\code{\link{create_introns}()}, +\code{\link{create_tss}()}, +\code{\link{create_utrs3}()} } \concept{feature functions} diff --git a/man/db.Rd b/man/db.Rd index e0200519..d3e85fd2 100644 --- a/man/db.Rd +++ b/man/db.Rd @@ -6,11 +6,23 @@ \alias{db_ensembl} \title{Fetch data from remote databases.} \usage{ -db_ucsc(dbname, host = "genome-mysql.cse.ucsc.edu", user = "genomep", - password = "password", port = 3306, ...) +db_ucsc( + dbname, + host = "genome-mysql.cse.ucsc.edu", + user = "genomep", + password = "password", + port = 3306, + ... +) -db_ensembl(dbname, host = "ensembldb.ensembl.org", user = "anonymous", - password = "", port = 3306, ...) +db_ensembl( + dbname, + host = "ensembldb.ensembl.org", + user = "anonymous", + password = "", + port = 3306, + ... +) } \arguments{ \item{dbname}{name of database} diff --git a/man/flip_strands.Rd b/man/flip_strands.Rd index 0528209a..7639c0f7 100644 --- a/man/flip_strands.Rd +++ b/man/flip_strands.Rd @@ -24,9 +24,10 @@ flip_strands(x) } \seealso{ -Other utilities: \code{\link{bed12_to_exons}}, - \code{\link{bed_makewindows}}, - \code{\link{bound_intervals}}, - \code{\link{interval_spacing}} +Other utilities: +\code{\link{bed12_to_exons}()}, +\code{\link{bed_makewindows}()}, +\code{\link{bound_intervals}()}, +\code{\link{interval_spacing}()} } \concept{utilities} diff --git a/man/interval_spacing.Rd b/man/interval_spacing.Rd index 2342ec11..3312808b 100644 --- a/man/interval_spacing.Rd +++ b/man/interval_spacing.Rd @@ -28,8 +28,10 @@ interval_spacing(x) } \seealso{ -Other utilities: \code{\link{bed12_to_exons}}, - \code{\link{bed_makewindows}}, - \code{\link{bound_intervals}}, \code{\link{flip_strands}} +Other utilities: +\code{\link{bed12_to_exons}()}, +\code{\link{bed_makewindows}()}, +\code{\link{bound_intervals}()}, +\code{\link{flip_strands}()} } \concept{utilities} diff --git a/man/read_bed.Rd b/man/read_bed.Rd index af046c72..84b3db93 100644 --- a/man/read_bed.Rd +++ b/man/read_bed.Rd @@ -8,8 +8,7 @@ \alias{read_broadpeak} \title{Read BED and related files.} \usage{ -read_bed(filename, n_fields = 3, col_types = bed12_coltypes, - sort = TRUE, ...) +read_bed(filename, n_fields = 3, col_types = bed12_coltypes, sort = TRUE, ...) read_bed12(filename, ...) @@ -72,7 +71,8 @@ read_broadpeak(valr_example('sample.broadPeak.gz')) } \seealso{ -Other read functions: \code{\link{read_genome}}, - \code{\link{read_vcf}} +Other read functions: +\code{\link{read_genome}()}, +\code{\link{read_vcf}()} } \concept{read functions} diff --git a/man/read_genome.Rd b/man/read_genome.Rd index 3d5f5287..f50e8386 100644 --- a/man/read_genome.Rd +++ b/man/read_genome.Rd @@ -31,7 +31,8 @@ read_genome('https://genome.ucsc.edu/goldenpath/help/hg19.chrom.sizes') } \seealso{ -Other read functions: \code{\link{read_bed}}, - \code{\link{read_vcf}} +Other read functions: +\code{\link{read_bed}()}, +\code{\link{read_vcf}()} } \concept{read functions} diff --git a/man/read_vcf.Rd b/man/read_vcf.Rd index 0f6db992..186002c2 100644 --- a/man/read_vcf.Rd +++ b/man/read_vcf.Rd @@ -25,7 +25,8 @@ read_vcf(vcf_file) } \seealso{ -Other read functions: \code{\link{read_bed}}, - \code{\link{read_genome}} +Other read functions: +\code{\link{read_bed}()}, +\code{\link{read_genome}()} } \concept{read functions} From 68559175a3874b435ca5ef4be73fec24fc654f2a Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Sat, 21 Mar 2020 08:43:51 -0600 Subject: [PATCH 11/28] clean up duplicated unique and leftover dplyr v < 0.8.0 code --- R/bed_absdist.r | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/R/bed_absdist.r b/R/bed_absdist.r index fc9bbd46..c8532066 100644 --- a/R/bed_absdist.r +++ b/R/bed_absdist.r @@ -45,7 +45,7 @@ bed_absdist <- function(x, y, genome) { # establish grouping with shared groups (and chrom) groups_xy <- shared_groups(x, y) - groups_xy <- unique(unique(as.character(c("chrom", groups_xy)))) + groups_xy <- unique(as.character(c("chrom", groups_xy))) groups_vars <- rlang::syms(groups_xy) # type convert grouping factors to characters if necessary and ungroup @@ -55,20 +55,11 @@ bed_absdist <- function(x, y, genome) { x <- group_by(x, !!! groups_vars) y <- group_by(y, !!! groups_vars) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - x_cpp <- update_groups(x) - y_cpp <- update_groups(y) - grp_indexes <- shared_group_indexes(x_cpp, y_cpp) - res <- dist_impl(x_cpp, y_cpp, - grp_indexes$x, - grp_indexes$y, - distcalc = "absdist") - } else { - grp_indexes <- shared_group_indexes(x, y) - res <- dist_impl(x, y, - grp_indexes$x, grp_indexes$y, - distcalc = "absdist") - } + + grp_indexes <- shared_group_indexes(x, y) + res <- dist_impl(x, y, + grp_indexes$x, grp_indexes$y, + distcalc = "absdist") # convert groups_xy to character vector if (!is.null(groups_xy)) { From 5eab1c16e2ced99eb74b4e8a167dffd18321d22b Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Mon, 23 Mar 2020 09:34:34 -0600 Subject: [PATCH 12/28] use length instead of n() --- vignettes/benchmarks.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vignettes/benchmarks.Rmd b/vignettes/benchmarks.Rmd index 825ca519..6f5736af 100644 --- a/vignettes/benchmarks.Rmd +++ b/vignettes/benchmarks.Rmd @@ -62,7 +62,7 @@ res <- microbenchmark( # multi tbl functions bed_closest(x, y), bed_intersect(x, y), - bed_map(x, y, .n = n()), + bed_map(x, y, .n = length(end)), bed_subtract(x, y), bed_window(x, y, genome), # stats @@ -154,7 +154,7 @@ res2 <- microbenchmark( unit = 's') # label experiment pair and software -comp <- as.tibble(summary(res2)) %>% +comp <- as_tibble(summary(res2)) %>% mutate(pair = as.numeric(row_number()) %% (nrow(res2) / nrep / 2)) %>% mutate(software = rep(c("valr", "GR"), each = (nrow(res2) / nrep / 2))) %>% select(expr, pair, software) From 42171aef217de7908e206226e804a08086b1c589 Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Mon, 23 Mar 2020 09:52:45 -0600 Subject: [PATCH 13/28] remove more old dplyr handling code --- R/bed_complement.r | 4 ---- 1 file changed, 4 deletions(-) diff --git a/R/bed_complement.r b/R/bed_complement.r index 26505e40..fa9ca49c 100644 --- a/R/bed_complement.r +++ b/R/bed_complement.r @@ -57,10 +57,6 @@ bed_complement <- function(x, genome) { res <- group_by(res, chrom) - if (utils::packageVersion("dplyr") < "0.7.99.9000"){ - res <- update_groups(res) - } - res <- complement_impl(res, genome) res <- bind_rows(res, chroms_no_overlaps) From 099d435ce11cd60fe7927db3fbefcd0d440539fb Mon Sep 17 00:00:00 2001 From: Kent Riemondy Date: Mon, 23 Mar 2020 13:42:41 -0600 Subject: [PATCH 14/28] sync w/ master --- .github/workflows/pkgdown.yaml | 8 +- .github/workflows/test-coverage.yaml | 8 +- .gitignore | 1 + README.Rmd | 2 +- README.md | 3 +- docs/404.html | 178 -- docs/ISSUE_TEMPLATE.html | 191 --- docs/LICENSE-text.html | 186 --- docs/LICENSE.html | 190 --- docs/apple-touch-icon-120x120.png | Bin 12740 -> 0 bytes docs/apple-touch-icon-60x60.png | Bin 5115 -> 0 bytes docs/apple-touch-icon-76x76.png | Bin 6657 -> 0 bytes docs/apple-touch-icon.png | Bin 16222 -> 0 bytes docs/articles/benchmarks.html | 155 -- .../figure-html/valr_benchmark-1.png | Bin 158846 -> 0 bytes .../figure-html/valr_comparison-1.png | Bin 133878 -> 0 bytes .../header-attrs-2.1/header-attrs.js | 12 - docs/articles/index.html | 187 --- docs/articles/interval-stats.html | 403 ----- .../crosstalk-1.0.0/css/crosstalk.css | 27 - .../crosstalk-1.0.0/js/crosstalk.js | 1471 ----------------- .../crosstalk-1.0.0/js/crosstalk.js.map | 37 - .../crosstalk-1.0.0/js/crosstalk.min.js | 2 - .../crosstalk-1.0.0/js/crosstalk.min.js.map | 1 - .../datatables-binding-0.12/datatables.js | 1323 --------------- .../datatables-crosstalk.css | 7 - .../css/jquery.dataTables.extra.css | 8 - .../css/jquery.dataTables.min.css | 1 - .../js/jquery.dataTables.min.js | 180 -- .../figure-html/ecfs-1.png | Bin 117143 -> 0 bytes .../figure-html/pvalue_viz-1.png | Bin 67164 -> 0 bytes .../header-attrs-2.1/header-attrs.js | 12 - .../htmlwidgets-1.5.1/htmlwidgets.js | 903 ---------- .../jquery-1.12.4/LICENSE.txt | 37 - .../jquery-1.12.4/jquery.min.js | 5 - docs/articles/valr.html | 522 ------ .../figure-html/intersect_glyph-1.png | Bin 40515 -> 0 bytes .../valr_files/figure-html/merge_glyph-1.png | Bin 38755 -> 0 bytes .../valr_files/figure-html/plot-1.png | Bin 69361 -> 0 bytes .../header-attrs-2.1/header-attrs.js | 12 - docs/authors.html | 205 --- docs/bootstrap-toc.css | 60 - docs/bootstrap-toc.js | 159 -- docs/docsearch.css | 148 -- docs/docsearch.js | 85 - docs/favicon-16x16.png | Bin 1200 -> 0 bytes docs/favicon-32x32.png | Bin 2534 -> 0 bytes docs/favicon.ico | Bin 15086 -> 0 bytes docs/index.html | 222 --- docs/link.svg | 12 - docs/logo.png | Bin 7882 -> 0 bytes docs/news/index.html | 398 ----- docs/pkgdown.css | 363 ---- docs/pkgdown.js | 108 -- docs/pkgdown.yml | 12 - docs/reference/as.tbl_genome.html | 209 --- docs/reference/as.tbl_interval.html | 243 --- docs/reference/bed12_to_exons.html | 227 --- docs/reference/bed_absdist.html | 255 --- docs/reference/bed_closest-1.png | Bin 39802 -> 0 bytes docs/reference/bed_closest.html | 307 ---- docs/reference/bed_cluster-1.png | Bin 44242 -> 0 bytes docs/reference/bed_cluster.html | 258 --- docs/reference/bed_complement-1.png | Bin 40056 -> 0 bytes docs/reference/bed_complement.html | 254 --- docs/reference/bed_coverage.html | 259 --- docs/reference/bed_fisher.html | 236 --- docs/reference/bed_flank-1.png | Bin 42908 -> 0 bytes docs/reference/bed_flank.html | 302 ---- docs/reference/bed_glyph-1.png | Bin 40683 -> 0 bytes docs/reference/bed_glyph-2.png | Bin 37099 -> 0 bytes docs/reference/bed_glyph-3.png | Bin 40566 -> 0 bytes docs/reference/bed_glyph.html | 229 --- docs/reference/bed_intersect-1.png | Bin 40683 -> 0 bytes docs/reference/bed_intersect-2.png | Bin 42975 -> 0 bytes docs/reference/bed_intersect.html | 345 ---- docs/reference/bed_jaccard.html | 263 --- docs/reference/bed_makewindows-1.png | Bin 57209 -> 0 bytes docs/reference/bed_makewindows.html | 330 ---- docs/reference/bed_map-1.png | Bin 52550 -> 0 bytes docs/reference/bed_map.html | 326 ---- docs/reference/bed_merge-1.png | Bin 38837 -> 0 bytes docs/reference/bed_merge.html | 282 ---- docs/reference/bed_partition-1.png | Bin 40307 -> 0 bytes docs/reference/bed_partition-2.png | Bin 62493 -> 0 bytes docs/reference/bed_partition.html | 296 ---- docs/reference/bed_projection.html | 263 --- docs/reference/bed_random.html | 285 ---- docs/reference/bed_reldist.html | 267 --- docs/reference/bed_shift-1.png | Bin 43007 -> 0 bytes docs/reference/bed_shift.html | 287 ---- docs/reference/bed_shuffle.html | 263 --- docs/reference/bed_slop-1.png | Bin 44503 -> 0 bytes docs/reference/bed_slop.html | 298 ---- docs/reference/bed_sort.html | 269 --- docs/reference/bed_subtract-1.png | Bin 40990 -> 0 bytes docs/reference/bed_subtract.html | 268 --- docs/reference/bed_window-1.png | Bin 43342 -> 0 bytes docs/reference/bed_window.html | 273 --- docs/reference/bound_intervals.html | 241 --- docs/reference/create_introns.html | 226 --- docs/reference/create_tss.html | 222 --- docs/reference/create_utrs3.html | 222 --- docs/reference/create_utrs5.html | 222 --- docs/reference/db.html | 259 --- .../figures/README-intersect_glyph-1.png | Bin 41070 -> 0 bytes docs/reference/figures/logo.png | Bin 7882 -> 0 bytes docs/reference/flip_strands.html | 220 --- docs/reference/id.html | 222 --- docs/reference/id_var.html | 195 --- docs/reference/index.html | 533 ------ docs/reference/interval_spacing.html | 225 --- docs/reference/is.tbl_genome.html | 201 --- docs/reference/is.tbl_interval.html | 201 --- docs/reference/read_bed.html | 338 ---- docs/reference/read_genome.html | 233 --- docs/reference/read_vcf.html | 229 --- docs/reference/tbl_genome.html | 230 --- docs/reference/tbl_interval.html | 223 --- docs/reference/valr.html | 200 --- docs/reference/valr_example.html | 201 --- docs/sitemap.xml | 150 -- 122 files changed, 13 insertions(+), 19918 deletions(-) delete mode 100644 docs/404.html delete mode 100644 docs/ISSUE_TEMPLATE.html delete mode 100644 docs/LICENSE-text.html delete mode 100644 docs/LICENSE.html delete mode 100644 docs/apple-touch-icon-120x120.png delete mode 100644 docs/apple-touch-icon-60x60.png delete mode 100644 docs/apple-touch-icon-76x76.png delete mode 100644 docs/apple-touch-icon.png delete mode 100644 docs/articles/benchmarks.html delete mode 100644 docs/articles/benchmarks_files/figure-html/valr_benchmark-1.png delete mode 100644 docs/articles/benchmarks_files/figure-html/valr_comparison-1.png delete mode 100644 docs/articles/benchmarks_files/header-attrs-2.1/header-attrs.js delete mode 100644 docs/articles/index.html delete mode 100644 docs/articles/interval-stats.html delete mode 100644 docs/articles/interval-stats_files/crosstalk-1.0.0/css/crosstalk.css delete mode 100644 docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js delete mode 100644 docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js.map delete mode 100644 docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.min.js delete mode 100644 docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.min.js.map delete mode 100644 docs/articles/interval-stats_files/datatables-binding-0.12/datatables.js delete mode 100644 docs/articles/interval-stats_files/datatables-css-0.0.0/datatables-crosstalk.css delete mode 100644 docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.extra.css delete mode 100644 docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.min.css delete mode 100644 docs/articles/interval-stats_files/dt-core-1.10.20/js/jquery.dataTables.min.js delete mode 100644 docs/articles/interval-stats_files/figure-html/ecfs-1.png delete mode 100644 docs/articles/interval-stats_files/figure-html/pvalue_viz-1.png delete mode 100644 docs/articles/interval-stats_files/header-attrs-2.1/header-attrs.js delete mode 100644 docs/articles/interval-stats_files/htmlwidgets-1.5.1/htmlwidgets.js delete mode 100644 docs/articles/interval-stats_files/jquery-1.12.4/LICENSE.txt delete mode 100644 docs/articles/interval-stats_files/jquery-1.12.4/jquery.min.js delete mode 100644 docs/articles/valr.html delete mode 100644 docs/articles/valr_files/figure-html/intersect_glyph-1.png delete mode 100644 docs/articles/valr_files/figure-html/merge_glyph-1.png delete mode 100644 docs/articles/valr_files/figure-html/plot-1.png delete mode 100644 docs/articles/valr_files/header-attrs-2.1/header-attrs.js delete mode 100644 docs/authors.html delete mode 100644 docs/bootstrap-toc.css delete mode 100644 docs/bootstrap-toc.js delete mode 100644 docs/docsearch.css delete mode 100644 docs/docsearch.js delete mode 100644 docs/favicon-16x16.png delete mode 100644 docs/favicon-32x32.png delete mode 100644 docs/favicon.ico delete mode 100644 docs/index.html delete mode 100644 docs/link.svg delete mode 100644 docs/logo.png delete mode 100644 docs/news/index.html delete mode 100644 docs/pkgdown.css delete mode 100644 docs/pkgdown.js delete mode 100644 docs/pkgdown.yml delete mode 100644 docs/reference/as.tbl_genome.html delete mode 100644 docs/reference/as.tbl_interval.html delete mode 100644 docs/reference/bed12_to_exons.html delete mode 100644 docs/reference/bed_absdist.html delete mode 100644 docs/reference/bed_closest-1.png delete mode 100644 docs/reference/bed_closest.html delete mode 100644 docs/reference/bed_cluster-1.png delete mode 100644 docs/reference/bed_cluster.html delete mode 100644 docs/reference/bed_complement-1.png delete mode 100644 docs/reference/bed_complement.html delete mode 100644 docs/reference/bed_coverage.html delete mode 100644 docs/reference/bed_fisher.html delete mode 100644 docs/reference/bed_flank-1.png delete mode 100644 docs/reference/bed_flank.html delete mode 100644 docs/reference/bed_glyph-1.png delete mode 100644 docs/reference/bed_glyph-2.png delete mode 100644 docs/reference/bed_glyph-3.png delete mode 100644 docs/reference/bed_glyph.html delete mode 100644 docs/reference/bed_intersect-1.png delete mode 100644 docs/reference/bed_intersect-2.png delete mode 100644 docs/reference/bed_intersect.html delete mode 100644 docs/reference/bed_jaccard.html delete mode 100644 docs/reference/bed_makewindows-1.png delete mode 100644 docs/reference/bed_makewindows.html delete mode 100644 docs/reference/bed_map-1.png delete mode 100644 docs/reference/bed_map.html delete mode 100644 docs/reference/bed_merge-1.png delete mode 100644 docs/reference/bed_merge.html delete mode 100644 docs/reference/bed_partition-1.png delete mode 100644 docs/reference/bed_partition-2.png delete mode 100644 docs/reference/bed_partition.html delete mode 100644 docs/reference/bed_projection.html delete mode 100644 docs/reference/bed_random.html delete mode 100644 docs/reference/bed_reldist.html delete mode 100644 docs/reference/bed_shift-1.png delete mode 100644 docs/reference/bed_shift.html delete mode 100644 docs/reference/bed_shuffle.html delete mode 100644 docs/reference/bed_slop-1.png delete mode 100644 docs/reference/bed_slop.html delete mode 100644 docs/reference/bed_sort.html delete mode 100644 docs/reference/bed_subtract-1.png delete mode 100644 docs/reference/bed_subtract.html delete mode 100644 docs/reference/bed_window-1.png delete mode 100644 docs/reference/bed_window.html delete mode 100644 docs/reference/bound_intervals.html delete mode 100644 docs/reference/create_introns.html delete mode 100644 docs/reference/create_tss.html delete mode 100644 docs/reference/create_utrs3.html delete mode 100644 docs/reference/create_utrs5.html delete mode 100644 docs/reference/db.html delete mode 100644 docs/reference/figures/README-intersect_glyph-1.png delete mode 100644 docs/reference/figures/logo.png delete mode 100644 docs/reference/flip_strands.html delete mode 100644 docs/reference/id.html delete mode 100644 docs/reference/id_var.html delete mode 100644 docs/reference/index.html delete mode 100644 docs/reference/interval_spacing.html delete mode 100644 docs/reference/is.tbl_genome.html delete mode 100644 docs/reference/is.tbl_interval.html delete mode 100644 docs/reference/read_bed.html delete mode 100644 docs/reference/read_genome.html delete mode 100644 docs/reference/read_vcf.html delete mode 100644 docs/reference/tbl_genome.html delete mode 100644 docs/reference/tbl_interval.html delete mode 100644 docs/reference/valr.html delete mode 100644 docs/reference/valr_example.html delete mode 100644 docs/sitemap.xml diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 94788005..38263786 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -6,7 +6,7 @@ name: pkgdown jobs: pkgdown: - runs-on: ubuntu-16.04 + runs-on: macOS-latest steps: - uses: actions/checkout@v2 @@ -30,11 +30,13 @@ jobs: - name: Install dependencies run: | install.packages("remotes") - remotes::install_deps(dependencies = TRUE) - remotes::install_dev("pkgdown") remotes::install_cran("BiocManager") BiocManager::install(c('GenomicRanges', 'IRanges', 'S4Vectors')) + + remotes::install_deps(dependencies = TRUE) + remotes::install_dev("pkgdown") + shell: Rscript {0} - name: Install package diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index 09eaa375..c3cb699b 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -10,7 +10,7 @@ name: test-coverage jobs: test-coverage: - runs-on: ubuntu-16.04 + runs-on: macOS-latest steps: - uses: actions/checkout@v2 @@ -34,11 +34,13 @@ jobs: - name: Install dependencies run: | install.packages(c("remotes")) - remotes::install_deps(dependencies = TRUE) - remotes::install_cran("covr") remotes::install_cran("BiocManager") BiocManager::install(c('GenomicRanges', 'IRanges', 'S4Vectors')) + + remotes::install_deps(dependencies = TRUE) + remotes::install_cran("covr") + shell: Rscript {0} - name: Test coverage diff --git a/.gitignore b/.gitignore index 15e2286c..9c1f752c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ index.html *.Rprofvis .netlify .env +docs diff --git a/README.Rmd b/README.Rmd index e90dc96f..9bb08e9a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -13,7 +13,7 @@ knitr::opts_chunk$set( # valr [![R build status](https://github.com/rnabioco/valr/workflows/R-CMD-check/badge.svg)](https://github.com/rnabioco/valr/actions) -[![Coverage Status](https://img.shields.io/codecov/c/github/rnabioco/valr/master.svg)](https://codecov.io/github/rnabioco/valr?branch=master) +[![codecov](https://codecov.io/gh/rnabioco/valr/branch/master/graph/badge.svg)](https://codecov.io/gh/rnabioco/valr) [![](https://www.r-pkg.org/badges/version/valr)](https://CRAN.R-project.org/package=valr) [![](https://cranlogs.r-pkg.org/badges/valr?color=FFD700)](https://www.r-pkg.org/pkg/valr) [![DOI](https://zenodo.org/badge/49370633.svg)](https://zenodo.org/badge/latestdoi/49370633) diff --git a/README.md b/README.md index 39802d14..c32c76b3 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ [![R build status](https://github.com/rnabioco/valr/workflows/R-CMD-check/badge.svg)](https://github.com/rnabioco/valr/actions) -[![Coverage -Status](https://img.shields.io/codecov/c/github/rnabioco/valr/master.svg)](https://codecov.io/github/rnabioco/valr?branch=master) +[![codecov](https://codecov.io/gh/rnabioco/valr/branch/master/graph/badge.svg)](https://codecov.io/gh/rnabioco/valr) [![](https://www.r-pkg.org/badges/version/valr)](https://CRAN.R-project.org/package=valr) [![](https://cranlogs.r-pkg.org/badges/valr?color=FFD700)](https://www.r-pkg.org/pkg/valr) [![DOI](https://zenodo.org/badge/49370633.svg)](https://zenodo.org/badge/latestdoi/49370633) diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 37c50d12..00000000 --- a/docs/404.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - -Page not found (404) • valr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -Content not found. Please use links in the navbar. - -
- -
- - - - -
- - - - - - - - diff --git a/docs/ISSUE_TEMPLATE.html b/docs/ISSUE_TEMPLATE.html deleted file mode 100644 index 32aaebe5..00000000 --- a/docs/ISSUE_TEMPLATE.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - - -NA • valr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - - -

Please briefly describe your problem and what output you expect.

-

Please include a minimal reprex. The goal of a reprex is to make it as easy as possible for me to recreate your problem so that I can fix it.

-

Delete these instructions once you have read them.

-
-

Brief description of the problem

-
# insert reprex here
- - -
- - - -
- - - - -
- - - - - - - - diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html deleted file mode 100644 index efc9df01..00000000 --- a/docs/LICENSE-text.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - - - - - -License • valr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
YEAR: 2016--2018
-COPYRIGHT HOLDER: Jay R. Hesselberth, Kent Riemondy
-
- -
- - - -
- - - - -
- - - - - - - - diff --git a/docs/LICENSE.html b/docs/LICENSE.html deleted file mode 100644 index 4c3905a7..00000000 --- a/docs/LICENSE.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - -MIT License • valr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
- -

Copyright (c) 2016-2018 Jay R Hesselberth and Kent Riemondy

-

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

-

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

-

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-
- -
- - - -
- - - - -
- - - - - - - - diff --git a/docs/apple-touch-icon-120x120.png b/docs/apple-touch-icon-120x120.png deleted file mode 100644 index 4c957d97f06226ed96c65b7aa3598b10098476ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12740 zcmZ`=cQjm4za0!lAAR&1ndn6HHfj)r7>N+Qh9HREONgi;>gYiX(R=SCI?*C}7*V44 z_OA8*`QBUWTgqiPbMKsU&;IS--g`bg)lwxPq$dP{KqP99m2`ol=iL_s5BM%&DLM`u zz%~d?1PD|SOLS$13;fP%@mNpxe8T?3Tg=;1PT`HBDvwRR|>xNXSoq*aQR;v{F+-=z0Fy@$+)ln@-)` zMfvz7zqG}vfW$#yr7@%!*53M;%kMbnn{;|bGF)6Y*YH~-CfNMNqVK4Njig@%4UqEklvZEtdJV6gultv0WQlMNklXcDYTcUY}`W)1C*jfrub zgk8$6`i8+FFnW50*~wzy2^F8)+=tv_4aEkDW1dpuvazu}o~tKk(4BxX%d(^uV9Rsl z99dO;cS~|L&OlW=7O?D>3fd5q7CV92y1CWHW8d$bxRF}wC}j5wbMx@TWu=GPPt)gc z6M}V`tr*hK!8j37Mv+mPbdQa)h^uV;@d8opfq~d9#fwJ*B=t9hW0!z!&!>&-aTR@#RnrmY;^%j!xDPPFs(wxCxhw^^Q}xm zJkJ%NVCP{vi)|dxq8N@XI-62CL*o+#u#$OCCT`-P=4_!G z7nj~TFP;Xj4w7iiC6vu99{vQKg`6(cy{A;l!sc~(Kcz-$>*_+F*pdiy zCp-*eWUi^dXMKP_DG5m!8jaGGRCsXyy*b+p7v!?Csy|e1`!B*k<8HYlaw8DwB*AcN z!rZg>Xn3(aL{Ax^iKIR_bQybULS~@D8Y48Kr4Nrp2ZLVJ`br3kTA9BxXD3$SfZ0HC zE3}Z47&;4D9Bk}tJ9=HQk}SLU=yTpG(nmGNAgG{2oq#FoR>i%^0v8d19e8r${s$!& z`yx)=7*>**stPPpLSG{2fRL>_c6^n{E!yZ$RQ?ED-?&xradEoC6s3tY&c^+R3V zXYmyeD9MRvgK?rBioOv?2(!bujnXcCd`j4rl2U37sTpCI><@C$lUGx zMCQ@IZm^0u9UbHM&A*MRYiqT>|L>D>6SA|jm%n|+HRUuDxU^&nkL*15mf;A!Djrz7 z5X;cIKazBI5=C*hk9DZV=I4lXprpVyZvma?C`6?d~www97Q8f1=poj7K5 z6Mkhi_0ppfeppq$-g=omy_I8^)*YnCmA7A?3*UVo9G$JuDocR>U>K5?2K_kqbXc)ysg6F)xpGLVQGvruBR_dz!=S__d|e{QET>9T1yo z+LVPLjNZ-rnhay`E#Er9j+5Q|ChEvl1;WqU3I^$X;_RVNFwRfpzZYt1>kPf8tlU2` z($(JHUQPe>8SXGlPg7A|9yC5a9v7ebp?vRrDbt=~s=Zw}nUm=cO3d+zMg!)$sSuo; zgbdVeY+rMcSxQ>7kx;FL6FQ5l=olCWHUIu-Yv+h(?VOpx3$u8Nr2a_5r_fvQg!7w8 zY_`{7Hkw-;gLx-8Kc|wnOw{W+(h}vgNO=cqrZZp{ZqfH5eXE8Doqv|{w8fGQK| z8&~VzYPpqaio0D8&zDqlF%;4Ci`TtS9B#m3-Prlt+e1X_ytYXl6%!Su!Q?vJA%TzO zxW#_niVq5nGwjWyvl!hvzUilKdE-M2YOpYx^N?G#6{RPBQFS8gFk4Hl!G66p;HWuq z^9tH+^7lA5M5y$MjjzuyNU422Ufmp%Q{CKzI7V&_Wr&Lq1UBZfiyFZJzp;{uiNIIZ zyEFE(Zn_Dk4?3&y_gDH3EWRB^5ClDfLqeedUWB||zu)JYVg5>&y;9Wa{U4X*qoQZF z4h~l@eNe6=e#+!&1wlBJX_C@6RgtXr(D8@DakWA?IXO9|Q5v8+oU@=F2Y!)_?)Y z0~5ItJ#7-s+2Cla4Fz)oJ0~=B($?Ny+1Qa8rPWujaxio~EkY8nk!1QzpJs}StCQaL z_^Ydq0~PM_T6T7JRaC`hQH+yzs)d2ELG;PG_0iE0FRk)^9lF5kVK3r=@~by|2mI^V zjcCGBwZW>i0<$4M`}k%y+@2og$LdcMw4KPbGNiq_qybnDoQwn@#%$CY2SYsPv8{x( zx(94AnK6MCorY<9kg^VF*s;D4jebGR@G+eE22WB-s={hZ6kZuzWz)*&>gUCKR*+R& zE9!f(-v@7c83~{@d2$@6cZM*v;+C;|c9;i!u_F+ZWory04?2Ek88QE;13_(aAvRskRn87I_4I^Q@|xUtz{0^1t*)&xpDvx>__x{F$KnT0=0wzMihwla$S6R7(n-(2P|nVUCz?*el|XJ?MW9uP z1H!c+4#L8M5D}?rXz+;JIEyp-=MAcs&RTXxrocAbyd8cF-YpCv;lXaCDH7R17s47D zXGMpLd;YbksJCG7$(JwrY@D1T#umKqDGvI-PMoXD%eUJM@x4Jt=E4)AonoCRnsEs~ zYCzdPw1!V)e7$%wE=4NSe#u$dqk1BasQ9^>fT%7PMt6#r=f;Hqp z`eg<nk2Mw}&_C2+#CX2$8_z@@J<^mk`a!4Y{20Q{!2xg- zOM~~Ukvdzb*O#L!*O)NIrbniqB}lE!58F4#p+l z*xCVxZ+-bbDMGTmyzIGRsBOOg>E73GMIFnES)H=NEBowVEWV+kjm>Q(ufIr3>o>jV zdU5sv7gmdHTI&Qad!6rVbyms}ZLGY+k!bT~3G>yYa)5BP4b}eqD#q*~jtT(xx#q(8 zVU@Ga+x-~Nt=Is0wYNf+1}DQ+-M7vi9UU_@K4ihc>ueU!xb%B^5zi(+XhcHYs_XJ9 zD#)*|uOB~ASI~DCT|!H-V&Dn{af8BCx8|eWaZQJNhBIUlVPw+k%u;dw8Wh~I;ofxGz-cEC zh?5KN+;PvV1&ERat~;9`*|X^N0_%ue$XqswNv3323z>98eJHs89zmAh#RI%IqMU^e@`{Q$-rn9^`I!q-XBy7TRJX8J+hzD&6{;# zVy5#-0~t~EtUgyCAQS5SQn4~;(VFCitIQf2D%6WcB8fP<6ZjL-U9qUw)&QoIGx4|Y zx;(7_@eHZNYZQSqB2CoN5$Lh#O}WFwL`lJHL#zkg8|(-Xq>mPN{{zXCbOw26Fw=a* zO;%TT-WV+ugQV(4hK7Pmj9c&&6+__M+`&WEIQb^C5RGI$Mb8)Fzvkvfe~ky9g@UC| zuNGIj$QJrO^CYuHQhMx)XeyeUvuAp`$o&`?*qbfPYF~C%pz0wg@-av<6M;dq;sQ&y z`Cc$Hk*s);Up&a)M;+c&P!RW4=Vr;Ay|GQRwvKAap7=ZXyv(Qrf4B8xZ!aDIuG=FQ zM)~ATOniKNFY5To?f*5A9lxtt&0G}6uqGgGL_if#v#$W9s+1YfssHl?{FY!H;G{hFR;7WooB=_ zCm11>J2xjiH~->%E&kSFljVJ;)n3gI{q~~7F1v#9oLM7FZ=y7Os7!M#^(Nl&nXj7n;1P$SUWpAb7IWg z&S|EQKxw)9Di8EXvGMWbocHeMeXF5n2{>YF754^naB!FyMzDr@8nJ>xef@O0Twfj8 zQYb)y9Wzt!sh5~+=4RQ=fe*rKVFt>fAdL717uP?5Z+VWUid&RMTgDF*Jzct-5G(iI z;wRQyRL*S0nQ2<&@QHhMO|^e?p3s`i0>e}7D6*J%^8QcYgdXgW@8Gd5DXj=g9VH(h zsfB=3Ch5x^r_~SlPgk!`7dl3lSi#H1{B~$U1XYEIFa>~E5CRfKZEZ32GUJ}TJt#NN zkBXDlcMwv7jySR9>kD#G8b^-|dwTuu?si*|+{#?+y%?jAv50w}Q+9VGuZoK5*b9@` z%1T|gckbRaY|Ve{(3n$g*<&h6Ny)waa29hnH@D7ZO}V0|jvaSJ7s=%$&e%1Xptp~1 znkYaEb;?L&)UTa5BmR^@Ygn|(C;sIDFNt~ED>Bu>HJtLc6)EHe@F&&O6dDF+@IZu^lAFJw$EviF@ULf-Ec-_6l7 zzUM`%&Hl`4>}uEPVmKN-lM)}6(FD9`HF2MHVstTj3C4tr37q3YK$Y*RQGPydtjvwL zsMCV)b2BBD4#^f~0JYD~@?w|Vo38)B(ZQX;zPF#uUf9BP$93aB*U(i|RGe*3XtSwN zWXd{&9Mw8iS$qS7f^O7W+$wpy)|@?8cBaXtbTlRGf}OZtx;N$Y3m@U(4AKw*E#FxL z7dRK53qU*Y5@j=I+E{>-gDnkuFa8|E`FT74P814?h;K|Y?-9-vs%hPprCQ`uCw}RL5WE zrE8BxgtpU2{rBVeLT*BoF>(-={;B5o0|Wjef(1S`=G`s-w~h z6rgZDBo3RHH?jZLZz;^w^z`aX{K)=1t#SL+Inmy*p;K;Nm8(%{mbNG`Lpv^rPn@<3 z9_wfPncG~Cc?}3_U(T8tb^$j#mA4oF3Rk6 zRN;&sdUaf#KVFCnj;3R%@Z4ul8KNoMb85vuzxZ~IMg<(d+x75$-q6w?OTQ?C7wMR;sfJ4lPV_x%gI?du^TzRBl7SY z*hE`oLgX<&?Qci1C>4$;G#^#1=9MZ7?8;y8dR~3F4{dOJV0?RRpCT6^%Y4%-)-HZ{ znKRg=OGQf?J~TTE^g5wHqxkOKyR(fhIkQnwXTzQCiqf`|=`z2cu#i~?mDjJiPZk2? z+;@IO|7w&($+*&drd}(LjXG;%hQT84w;ppQ@ft*VEO--r`}WOq`@{Y6-HN^?XGvg@ z-wni<6mc8zCx^c%^AVry*5c_{V8#KZ6mo(RLUQBS`}b{o2*BTg0{6ma(Ql^Gis;iPie)#o{(&LI;V>dw$3{E@o!+0M3Ch46 zX=O@(I6883m~Es6I!k2>MULSNnU5OD{ARYc5Hi^#!6X5b7>`9S2HpDBjJ^ zpD{mxeRj3Ww+R%F-;PV|VpYgKxipR|`yEwg#FO_O418j=R8vFT^xNsmWR`v=si8P7+2@GbuzH+^~_PD{Cot+i;J$v{SO*qTfvF3)@ zw@!W{Rw4VlYDl&fUzZv;&v=@9^tH0}I#+ddb@tc#vqp)5hm8V8;<2xqJlJGqhZkd5 zAus3~z#1IMzl%#3K?rEM=f3%d8{X9lMo!h>FY@UHGE|*P+0ET8`)fJKjzMhYY=3pb z!RhoTPO6gV!2C+46U!bQMdchxi*an&N7~gNYZ@>nx(2iJC|yELq?2H!H6<7!Z(>p= zhS^o|P@fd}IW?tFINfC{*v_YRV}DBju=dr6s;Pya%xfmK$3;;40USe%mQB)HJg3Z`n;!aCDLEa%rhPX~&wd$~~3~C|Ud6 zIfW3)S05UfRJJ+F$;hq+kez09zOXxY%@AS z6IVq=CA`6dWbXfUj&-VA2r)uveVk;6odD z$J5LFPJw12xCCBR7&!z>nFQkmzHx?r`t!cW91kS^N-OcR@v*huX6b73Z($lu5K!;B zdwb0MyRRM`7USdNvo*~>YYp;63l$TbH0Ykhlgo7kVFk@JTM;>kGJthJ%|&LCI`|4- zJv7f$`YWTp9B-Kkr*eH}^5U6sz5r-X>W17Ml? zlSPXBXYt+u+dbnLk46w5;@&jBvAI#dyvv_FkkHe=Je1DvX@2YP^y{0TwILG|6NHFF z`LQirPqSydKR+{W11vN;9eZ(4FF8icFH9{CrF{( zq)Wj8KT}_JkpO5gL3kIz#~$JgE&Nwcp`do_s^yHj#oq62sK7DH=64*KuWSHv1_@r8 zO_0uv6Tv)vM1oH$`!V1K6M)AC{>JxhV|ydzr*U3tJ8I(|8yF}hFvjY0j+e5448>BL z*H%WRlDA*GbEYERq^230|JqNAA%pZjXynRg?FV&KRMe9n7nuZu1i{KW-8J^pqf=Aw z?`b$bsePC}Uqs?ourD{>!o2jT=hi-aXgO z+v5Sp0x3aepclyLKu}TBn038RWY7-<#Q)a)=(^UT%qlRy@%lTd-gM z_wOAO-`>1v^_>k3(CCk5e5PLEyxb{u6C?Cq?q->6V|O>p6+BY3psPOSyF<@!BraF9 z=<|bC)Azczww6=^<9cN%jiFd)?9eKtEY!|a^6)qf_1AzPyuBrpG@bw0(|7ft7)5?g z52d-La|KH%3ogA)<)=1L@b|w74PYQA$FetF3iY2DTZpkxjRjix5s72sL7m{86Ent( zKTt`jrhly+bMi>!)%l1?HgMg;N~MmyC=M9t$Xn*XMPQ}#{Lq9*N{bq1v9Z0~S&`Sb zu5@$wA|(O*(CONWGU}&joED09qgr2+y0{ z8)l6p-VUdLLzb^)#WKTNW=}aruV?qI_Lu{%{tP+4W=Q#nnHtHUywhDmm3;4#$vQ9ni`F$fKgKzy2j` zadI-+6p_Egcn2WQLS-frceY9~pOP`(Ifw%J{;L3MxND zxn7;m2r)|d!Y-Ku7@JPE_n*6F?W9a{yqFM)_4d60jZcWJL@&0z&%L^0=s!l3O|QPR z;JBG43y5gD9`@MVX!V1Tku|NtT^l&5X#T9q`CqfZA8;SU{@y|qVVd(fvY3L$Y}@NH zf0Om_tqx2ST3`OA%b(L_Yc#T+jo{jm{$pplF-fFJ=mKPvkO))nohd`dABg*->ysaJJKoRo@eKZ z^E~siX6k75U2P$gjRi(#Has%G zYQsJ6L?5^U{$!%vmP1lvJe0F=vdxn8n+k+bYan<(cau^QC-dyU@Wb094BDwe=RQRSiJ7? zh)+aG7X{BxL>mB`mppUUvUgt~W_bn^?j-)(t8%Y}wKZV6u1_Ky9{E^HtphN8$mwZB z9Y3k6s_ca?w#6i^TRZ&t5!_*ldY5zzCgnZ26??PyM)dNKwy)jqe#sM8`5+-YK&x`v zS&U6gq`DeOHdb)*5Ze&fj|C&zm$FHmnoqc&a6QyRHr&U8%3?A1Y6`9rr%B2v7nk9) zbywLte|qiJxrat(z`bMGp`iqm^T4#!-uMfaaiuugJ~@11wJP$rH*x7WTwZ7xpu-e^ z{y7uiKIXQP*~Ekj@xq}^NL4LjeInHW$Y+3QY61<)*GLWySzQllbPN;nS$ili{f-t{ z@~Vzh;41busH#vquf7~w8-#T`-0Fk1m_sdln?l$*?am30T;UVuzZk(jVJgBfd`^rj z`@G(E53-LU%0c@Zz!y4KC3g*|PPZG7)BqMdR$mC*X>w=h_6`fUXq;HSZ$aT8n#v04 z{5rRDquTqW1-06Ku%;uvw~Z)Sj0=8PsI{{BnI~@kpIyM6lKM`vBq};gr%YADp67iF zzS(&xrNW(Mf5= zOUzrU%khad#q>8^P*M5W_$6M*vWA+=E#T*85#**+@C%XinCmYA4y6{eTug!e^i{aD z)^z%iL|@+G6<1|d)qd}8K&+hK*)mD`_h3bZy%h}sGeGe_tIN6qzsks%xjmYgIi0b9 zK#0NO;T_rG6Ze)k;`7e-<~^32#T_LUDLktY>+25N0h?;gH@~(bA|l$KjW7lRhS=?4 z)(t@j4$i7@H`jjl&1>Iyjbt-S=KNz#4b{tasS zqc0~p=@T(X2JnJpa75?)v703~ox9V9lD-ZZ)|wxu)rbe2@baUiJ}zW32Od6HY+B{% z)%8B+Zr$(Cd#tJ5_hGe9XoZix6wSS|vRdIiME`SoGN;4GAKQZX{QSIL&nRj+hmF^$ z8gfa-*j|O7g>cdqi(!_PF7Q5VE(Ze+LH%t9K6!;8wpD)qSKhKfzZw6zF*yU z5~8kx5?&xVf7rSWl{4|H7`k^#Ug#xT0w^@G%U2*-Ob}) z&5OZVAm*TtoWuv_mqz+x$muS4G3@I_--8S`_dE+1i|m2tqL z<}qNCWCci^C6UoRb51wpclgDbJRsMnP3?Q=0GR)uK8cym4QBw}=$0#k4!<#}@HS22_OoxHGvD0sE?I#Pg1`hm19c-&>POw6-r%DaO-$;3| z3)#s4Opr=>885_4Z=yP&GB&C?x#oeNE+RrrLypf1r_EVtH$vl+R%m#bgq4B64iv26 zq8`a_J*iGbOLJEfY~MKIfwaGeG%=1v3H@1HUja-`MfKN&F^o6FIDURFYPe~5^h?@{ z67G*KOyMD*?XZyV4!yNIa}`!|qDm?%7hOp~`aIr^O}h@9ULONNw7#C>kVaM;E8@m;Rx%DHTQmMH*-ZUL>bPeBH2} z2@kJedqf?oi<0u8L8Adn50FoNF+Pi3ii@7GcQxB_%9-JNgQPV@}DD( zsi>+->5h*B^BW!!0r7o%1jh@PUOUFs=|<1I0JLi=TI!r{-vEo70JsiGCuX2w!NbQd zT$BH12pBm~_4sn{N3}b@!+=hl917bQ82yiI!}|7M)Pt7OL{+%Cz7m%FyH{N`uj}Ug z^e3uC3hd-2{~k{zR=cgDXT+)gU{*DDeboX98W;gJ_gg;ha{&{?$<&*f)3a3=3?~0p zM@R%20vK>WL(??R8fyA?{Bg>V^({d@ne>%lCuXD%i1R#Gjn|@tS(rwdA(X(iJ2M|N z4GbV8L?H!2YDlCM+aG+Dket!%>F0f=k*P_tPYfZikxxX_`AxowramG0^hdVDZu2AR zkOdD9m(G1>Hso^ZTUY8tVVs9hpULWL>3BBv2f+R$JUFbdnC35e)kKr!dqD6qt@J#a zbyy;jkg(il*LZuOiB=_#{LP!4i0F@so}S_t7Z*?%Y-4C;=|(pKFXZ&M#cm525!hjx zQvP<0V~Ue>RtvoN#}Kx(@j>lDkTEyh-QoEwaQ z2nRXN^)+iKD=#mxeld0a^RnE=#$P^L6_@LWHqj~^6w~)tKU`l{*pC>4hlub_mw+tN zMXeUq?L1%8E4sgS+sBJ-q8U`b=R|VHD+!;f)7Bf6;{UF^;>Gk&{Z$fIQGL7i!wMzw zj<9BOQVccbEM=B9X#G^3t-;8|(DszT$JkkL-D`Ce2L}hp67XVS0hTfUZbM6=?rqUm zKo1EJ{;E}YS9wd|%%20&Z_e~*%=JsVYnh}fWFJu@^m+6~Qp5fub)|hE5;K!7#6h4G z){_ikRsZzmg+hOE;&^_dE>J@Hn>@*Zt*Zbe&I0F}kg_Ja&|ZE)ATPAov;WP1e$!*{ zQp|gP(YIKqE?w4lQ(Rh_adxhj!)HrBG%P&iE$Q$~#3RA-!Fy`>5}0U)3Eh7UB{sZ@ zy!XXe>?tTle=TI@^dF3%_@74sHaTddU~A&OcDA70Vu0{3hdJ&QL)yBR-yUme_6*Pa zluL8}U@;bf5tB%^+=L&NOzBpA7oi{*3Q)O_$a@e7joLbiEs5hek{P5N?o#|FjiC<g5U+F{qhDuV6}6!g2MqEP4gAOtV-k{zHi^e{Z_#0ghYbdL+BL#TsjNWG(5m= zy<>-$H<#o!?0De70z1uI_!JNXgb)&MV+l$kmwSr3OE_Vm(!?Z1DrMjvfGP<+gZ7B& zDI2VP|E&8|NB_NmcE(-p=2S~Nc!k?)R8oHic9^fg*-A*r5u@)&!P9|m=^_0xh1`W$ zSwU$9%UY?_55s`m>9MV?12#r_KvX*=sWS~`$}JIi|8P(PDZ_U?YJAGrYFDc5XKRA7Lqta|-f zU?)kaR~EGA7t&#hL23LgVz7P*rtCy<%!D^ys6Z7;K5<^#&NymgP&PX1IdI`p zLajU?rRAtb?`jWFTHp@mv9PFk(?`nb^f>6d!%5NK|Hv=zugedK4jKge!TE|oY@Gf- zmuG(bZ^C-m9z{({y)sxd0pu+kJH8zht@danvHHx3ez9@r1Y#S0eJhVB)J;UwpV&xX zCQpSOrI}I=!I#eY)j(pnyNUBbG{pg7{!c>C{Hs^u0qev-5IO`15nvdBW@jcP^}~*o zhxuDePRM`Fec!wW?!wgXiCP`3kF5R)7qi+f#(TPpXK%J@LD z%6}!J#JC{}-@aR3AOm}RyB%tyepC+jCb&w|?mfR#nTp`~mbRWLF1^Ms;u+}>HZmRc z4|6*wHioa!KO``!(JIgQ^Zz947k?J&J$up{U5FF#4r~$|oJ#?KX@BHZV8QDVUG*vn zj8WkPc?P_7)vdvp3fv)TxY9cj)b{#LIUB+UGW_3drGLOI^q{Q_6pTg#u&tNmExrX! zV&BdJG&SRr$7`xAf%hQXb5nldW@+YTC28Se1sp)afr&z;kcC7jC*{9<0tTPS$n~R;+Gb&Q`2;&TbaK zn=4SO2gH!K`f&IU?SVnHHC+%62NAyo5hVwuMgkQMC96`PNS7rJN0lDyz|7D7?!j)x hZv273$Jy%qpiNqGw*!SopMg_=)ReW9N)=3l{|D7L6}$id diff --git a/docs/apple-touch-icon-60x60.png b/docs/apple-touch-icon-60x60.png deleted file mode 100644 index 497938abe0b33dbb9fc32e1442b815cfd141b0de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5115 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 diff --git a/docs/apple-touch-icon-76x76.png b/docs/apple-touch-icon-76x76.png deleted file mode 100644 index b52e0ca2ed178ea86026a0510af761884f8345e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6657 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 diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png deleted file mode 100644 index bcbb2f784514c766ea9ecdf6eeca2a9b0eb9f3f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16222 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 diff --git a/docs/articles/benchmarks.html b/docs/articles/benchmarks.html deleted file mode 100644 index 4bff5c4a..00000000 --- a/docs/articles/benchmarks.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -valr Benchmarks • valr - - - - - - - - - - - - - - - - - -

-
- - - - -
-
- - - - -
-

-valr Functions

-

Many valr functions are written in Rcpp/C++ to maximize speed. Here are benchmarks for 1 million random x and y intervals.

-

-
-
-

-Comparison to GenomicRanges

-

Several functions in valr are comparable in speed to the equivalent function in GenomicRanges.

-

-
-
- - - -
- - - - -
- - - - - - diff --git a/docs/articles/benchmarks_files/figure-html/valr_benchmark-1.png b/docs/articles/benchmarks_files/figure-html/valr_benchmark-1.png deleted file mode 100644 index f1bedb2750368c14ee00f3778cbc631fef22a181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158846 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�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
  • K+m?oFhg6vuMjJc?=I8H>eB28)9E}3>O`CCuJ01=gwXx91W&bPL{;_rPJ=5lNv-<(gd6U|3$WW16b zUA?)_g3|+&EE^q$0N(u*dZVHOldN7r>#E$LR#IrUB@zvPmoBSmc(7OqkQfg8ju%!r z?{%2W^s7zvJJeWzdb+vZ8Q+;;Wi=i6cFU8)VD?GZdWe;G?z-1!$GbPicAWLM?|uWS zljrg->A|^_{ZV39!1h|}j^Hn=h5O?|L!mNtfcwdK_PIHEUY`H)u6AS#vf@fc&(UJs zLT29FR(PLan{QmZroWcNu3||<3FeGF2R4Rz4X{P-u1nwl zRh&LsSOgk78mg=gdTb2iZ^pR1S-#q(vHd7T?1pRF&n~AMVJxINWSMK*u`lovoQ&&q zmlQH4p>}UT6$Yiz5l9JAO8Cel>mc=x3`8|+5%pom9&?>?rL zDsxL^toCy^qbH2W!*N&Md(vaat#_!HwMi=ObR7hd1)V9%?D>G<49(==mnKihrwU

    1qN63&MTC@tK|BvJNLQa!uecx{I~ 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 iX})<5Lwe0R=h0N4*yax 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 diff --git a/docs/articles/benchmarks_files/header-attrs-2.1/header-attrs.js b/docs/articles/benchmarks_files/header-attrs-2.1/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/articles/benchmarks_files/header-attrs-2.1/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/articles/index.html b/docs/articles/index.html deleted file mode 100644 index afa11906..00000000 --- a/docs/articles/index.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - -Articles • valr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -
    - - - - -
    - -
    -
    - - -
    -

    All vignettes

    -

    - -
    -
    valr Benchmarks
    -
    -
    Interval statistics
    -
    -
    valr overview
    -
    -
    -
    -
    -
    - - - -
    - - - - - - - - diff --git a/docs/articles/interval-stats.html b/docs/articles/interval-stats.html deleted file mode 100644 index 0c40c8ee..00000000 --- a/docs/articles/interval-stats.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - - -Interval statistics • valr - - - - - - - - - - - - - - - - - -
    -
    - - - - -
    - - - -
    -
    - - - - -
    -

    -Overview

    -

    valr includes several functions for exploring statistical relationships between sets of intervals.

    - -

    In this vignette we explore the relationship between transcription start sites and repetitive elements in the human genome.

    -
    library(valr)
    -library(dplyr)
    -library(ggplot2)
    -library(cowplot)
    -library(tidyr)
    -
    -# load repeats and genes. Data in the valr package is restricted to chr22; the entire
    -# files can be downloaded from UCSC.
    -rpts <- read_bed(valr_example('hg19.rmsk.chr22.bed.gz'), n_fields = 6) 
    -genes <- read_bed(valr_example('hg19.refGene.chr22.bed.gz'), n_fields = 12)
    -
    -# load chrom sizes
    -genome <- read_genome(valr_example('hg19.chrom.sizes.gz'))
    -
    -# create 1 bp intervals representing transcription start sites
    -tss <- create_tss(genes)
    -
    -tss
    -#> # A tibble: 1,267 x 6
    -#>    chrom    start      end name         score strand
    -#>    <chr>    <dbl>    <dbl> <chr>        <chr> <chr> 
    -#>  1 chr22 16193008 16193009 NR_122113    0     -     
    -#>  2 chr22 16157078 16157079 NR_133911    0     +     
    -#>  3 chr22 16162065 16162066 NR_073459    0     +     
    -#>  4 chr22 16162065 16162066 NR_073460    0     +     
    -#>  5 chr22 16231288 16231289 NR_132385    0     -     
    -#>  6 chr22 16287936 16287937 NM_001136213 0     -     
    -#>  7 chr22 16274608 16274609 NR_046571    0     +     
    -#>  8 chr22 16449803 16449804 NM_001005239 0     -     
    -#>  9 chr22 17073699 17073700 NM_014406    0     -     
    -#> 10 chr22 17082800 17082801 NR_001591    0     +     
    -#> # … with 1,257 more rows
    -
    -
    -

    -Distance metrics

    -

    First we define a function that takes x and y intervals and computes distance statistics (using bed_reldist() and bed_absdist()) for specified groups. The value of each statistic is assigned to a .value column.

    -
    distance_stats <- function(x, y, genome, group_var, type = NA) {
    -  group_by_(x, .dots = group_var) %>%
    -    do(
    -       reldist = bed_reldist(., y, detail = TRUE) %>%
    -         select(.value = .reldist),
    -       absdist = bed_absdist(., y, genome) %>%
    -         select(.value = .absdist)
    -       ) %>%
    -    tidyr::gather_('stat', 'value', setdiff(names(.), list(group_var))) %>%
    -    mutate(type = type)
    -} 
    -

    We use the distance_stats() function to apply the bed_absdist() function to each group of data.

    -
    obs_stats <- distance_stats(rpts, tss, genome, 'name', 'obs')
    -#> Warning: group_by_() is deprecated. 
    -#> Please use group_by() instead
    -#> 
    -#> The 'programming' vignette or the tidyeval book can help you
    -#> to program with group_by() : https://tidyeval.tidyverse.org
    -#> This warning is displayed once per session.
    -obs_stats
    -#> # A tibble: 2,106 x 4
    -#>    name       stat    value             type 
    -#>    <chr>      <chr>   <list>            <chr>
    -#>  1 (A)n       reldist <tibble [27 × 1]> obs  
    -#>  2 (AAAAACA)n reldist <tibble [1 × 1]>  obs  
    -#>  3 (AAAAC)n   reldist <tibble [6 × 1]>  obs  
    -#>  4 (AAAAG)n   reldist <tibble [2 × 1]>  obs  
    -#>  5 (AAAAT)n   reldist <tibble [3 × 1]>  obs  
    -#>  6 (AAAATA)n  reldist <tibble [1 × 1]>  obs  
    -#>  7 (AAAATAA)n reldist <tibble [1 × 1]>  obs  
    -#>  8 (AAAC)n    reldist <tibble [2 × 1]>  obs  
    -#>  9 (AAACA)n   reldist <tibble [1 × 1]>  obs  
    -#> 10 (AAACAA)n  reldist <tibble [1 × 1]>  obs  
    -#> # … with 2,096 more rows
    -

    And the same is done for a set of shuffled group of data. bed_shuffle() is used to shuffle coordinates of the repeats within each chromosome (i.e., the coordinates change, but the chromosome stays the same.)

    -
    shfs <- bed_shuffle(rpts, genome, within = TRUE)
    -shf_stats <- distance_stats(shfs, tss, genome, 'name', 'shuf')
    -

    Now we can bind the observed and shuffled data together, and do some tidying to put the data into a format appropriate for a statistical test. This involves:

    -
      -
    1. -unnest()ing the data frames
    2. -
    3. creating groups for each repeat (name), stat (reldist or absdist) and type (obs or shf)
    4. -
    5. adding unique surrogate row numbers for each group
    6. -
    7. using tidyr::spread() to create two new obs and shuf columns
    8. -
    9. removing rows with NA values.
    10. -
    -
    res <- bind_rows(obs_stats, shf_stats) %>%
    -  tidyr::unnest(value) %>% 
    -  group_by(name, stat, type) %>%
    -  mutate(.id = row_number()) %>%
    -  tidyr::spread(type, .value) %>%
    -  na.omit()
    -
    -res
    -#> # A tibble: 16,765 x 5
    -#> # Groups:   name, stat [1,899]
    -#>    name  stat      .id     obs     shuf
    -#>    <chr> <chr>   <int>   <dbl>    <dbl>
    -#>  1 (A)n  absdist     1 5120782 15025438
    -#>  2 (A)n  absdist     2  226477 14874846
    -#>  3 (A)n  absdist     3   31242 14490997
    -#>  4 (A)n  absdist     4    8930 13705949
    -#>  5 (A)n  absdist     5   41316 13039378
    -#>  6 (A)n  absdist     6   22519 11775276
    -#>  7 (A)n  absdist     7   15173  7401324
    -#>  8 (A)n  absdist     8   21985  2544408
    -#>  9 (A)n  absdist     9   13458  2417395
    -#> 10 (A)n  absdist    10  134007  1556817
    -#> # … with 16,755 more rows
    -

    Now that the data are formatted, we can use the non-parametric ks.test() to determine whether there are significant differences between the observed and shuffled data for each group. broom::tidy() is used to reformat the results of each test into a data_frame, and the results of each test are gathered to into a type column for each test type.

    -
    library(broom)
    -
    -pvals <- res %>% do(twosided = tidy(ks.test(.$obs, .$shuf)),
    -                    less = tidy(ks.test(.$obs, .$shuf, alternative = 'less')),
    -                    greater = tidy(ks.test(.$obs, .$shuf, alternative = 'greater'))) %>%
    -  tidyr::gather(alt, type, -name, -stat) %>%
    -  unnest(type) %>%
    -  select(name:p.value) %>%
    -  arrange(p.value)
    -

    Histgrams of the different stats help visulaize the distribution of p.values.

    -
    ggplot(pvals, aes(p.value)) +
    -  geom_histogram(binwidth = 0.05) +
    -  facet_grid(stat ~ alt) + theme_cowplot()
    -

    -

    We can also assess false discovery rates (q.values) using p.adjust().

    -
    pvals <-
    -  group_by(pvals, stat, alt) %>%
    -  mutate(q.value = p.adjust(p.value)) %>%
    -  ungroup() %>%
    -  arrange(q.value)
    -

    Finally we can visualize these results using stat_ecdf().

    -
    res_gather <- tidyr::gather(res, type, value, -name, -stat, -.id)
    -
    -signif <- head(pvals, 5)
    -
    -res_signif <-
    -  signif %>%
    -  left_join(res_gather, by = c('name', 'stat'))
    -
    -ggplot(res_signif, aes(x = value, color = type)) +
    -  stat_ecdf() + 
    -  facet_grid(stat ~ name) + theme_cowplot() + scale_x_log10() +
    -  scale_color_brewer(palette = 'Set1')
    -

    -
    -
    -

    -Projection test

    -

    bed_projection() is a statistical approach to assess the relationship between two intervals based on the binomial distribution. Here, we examine the distribution of repetitive elements within the promoters of coding or non-coding genes.

    -

    First we’ll extract 5 kb regions upstream of the transcription start sites to represent the promoter regions for coding and non-coding genes.

    -
    # create intervals 5kb upstream of tss representing promoters
    -promoters <-
    -  bed_flank(genes, genome, left = 5000, strand = TRUE) %>%
    -  mutate(name = ifelse(grepl('NR_', name), 'non-coding', 'coding')) %>%
    -  select(chrom:strand)
    -  
    -# select coding and non-coding promoters
    -promoters_coding <- filter(promoters, name == 'coding')
    -promoters_ncoding <- filter(promoters, name == 'non-coding')
    -
    -promoters_coding
    -#> # A tibble: 973 x 6
    -#>    chrom    start      end name   score strand
    -#>    <chr>    <int>    <int> <chr>  <chr> <chr> 
    -#>  1 chr22 16287937 16292937 coding 0     -     
    -#>  2 chr22 16449804 16454804 coding 0     -     
    -#>  3 chr22 17073700 17078700 coding 0     -     
    -#>  4 chr22 17302589 17307589 coding 0     -     
    -#>  5 chr22 17302589 17307589 coding 0     -     
    -#>  6 chr22 17489112 17494112 coding 0     -     
    -#>  7 chr22 17560848 17565848 coding 0     +     
    -#>  8 chr22 17560848 17565848 coding 0     +     
    -#>  9 chr22 17602213 17607213 coding 0     -     
    -#> 10 chr22 17602257 17607257 coding 0     -     
    -#> # … with 963 more rows
    -
    -promoters_ncoding
    -#> # A tibble: 294 x 6
    -#>    chrom    start      end name       score strand
    -#>    <chr>    <int>    <int> <chr>      <chr> <chr> 
    -#>  1 chr22 16152078 16157078 non-coding 0     +     
    -#>  2 chr22 16157065 16162065 non-coding 0     +     
    -#>  3 chr22 16157065 16162065 non-coding 0     +     
    -#>  4 chr22 16193009 16198009 non-coding 0     -     
    -#>  5 chr22 16231289 16236289 non-coding 0     -     
    -#>  6 chr22 16269608 16274608 non-coding 0     +     
    -#>  7 chr22 17077800 17082800 non-coding 0     +     
    -#>  8 chr22 17156430 17161430 non-coding 0     -     
    -#>  9 chr22 17229328 17234328 non-coding 0     -     
    -#> 10 chr22 17303363 17308363 non-coding 0     +     
    -#> # … with 284 more rows
    -

    Next we’ll apply the bed_projection() test for each repeat class for both coding and non-coding regions.

    -
    
    -# function to apply bed_projection to groups
    -projection_stats <- function(x, y, genome, group_var, type = NA) {
    -  group_by_(x, .dots = group_var) %>%
    -    do(n_repeats = nrow(.),
    -       projection = bed_projection(., y, genome)) %>%
    -    mutate(type = type)
    -} 
    -
    -pvals_coding <- projection_stats(rpts, promoters_coding, genome, 'name', 'coding')
    -pvals_ncoding <- projection_stats(rpts, promoters_ncoding, genome, 'name', 'non_coding')
    -
    -pvals <-
    -  bind_rows(pvals_ncoding, pvals_coding) %>%
    -  ungroup() %>% 
    -  tidyr::unnest() %>%
    -  select(-chrom)
    -#> Warning: `cols` is now required.
    -#> Please use `cols = c(n_repeats, projection)`
    -
    -# filter for repeat classes with at least 10 intervals
    -pvals <- filter(pvals,
    -                n_repeats > 10,
    -                obs_exp_ratio != 0)
    -
    -# adjust pvalues 
    -pvals <- mutate(pvals, q.value = p.adjust(p.value))
    -
    -pvals
    -#> # A tibble: 179 x 7
    -#>    name   n_repeats p.value obs_exp_ratio lower_tail type       q.value
    -#>    <chr>      <int>   <dbl>         <dbl> <chr>      <chr>        <dbl>
    -#>  1 (A)n          28 0.00353         4.72  FALSE      non_coding   0.558
    -#>  2 (AT)n         48 0.298           0.917 FALSE      non_coding   1    
    -#>  3 (CA)n         31 0.156           1.42  FALSE      non_coding   1    
    -#>  4 (GT)n         42 0.247           1.05  FALSE      non_coding   1    
    -#>  5 (T)n          61 0.405           0.721 FALSE      non_coding   1    
    -#>  6 (TG)n         40 0.0622          2.20  FALSE      non_coding   1    
    -#>  7 A-rich        54 0.348           0.815 FALSE      non_coding   1    
    -#>  8 Alu           15 0.0446          2.93  FALSE      non_coding   1    
    -#>  9 AluJb        271 0.0225          1.79  FALSE      non_coding   1    
    -#> 10 AluJo        208 0.0216          1.90  FALSE      non_coding   1    
    -#> # … with 169 more rows
    -

    The projection test is a two-tailed statistical test. A significant p-value indicates either enrichment or depletion of query intervals compared to the reference interval sets. A value of lower_tail = TRUE column indicates that the query intervals are depleted, whereas lower_tail = FALSE indicates that the query intervals are enriched.

    -
    library(DT)
    -
    -# find and show top 5 most significant repeats
    -signif_tests <-
    -  pvals %>% 
    -  arrange(q.value) %>%
    -  group_by(type) %>%
    -  top_n(-5, q.value) %>%
    -  arrange(type)
    -
    -DT::datatable(signif_tests)
    -
    - -
    -
    - - - -
    - - - - -
    - - - - - - diff --git a/docs/articles/interval-stats_files/crosstalk-1.0.0/css/crosstalk.css b/docs/articles/interval-stats_files/crosstalk-1.0.0/css/crosstalk.css deleted file mode 100644 index 46befd2e..00000000 --- a/docs/articles/interval-stats_files/crosstalk-1.0.0/css/crosstalk.css +++ /dev/null @@ -1,27 +0,0 @@ -/* Adjust margins outwards, so column contents line up with the edges of the - parent of container-fluid. */ -.container-fluid.crosstalk-bscols { - margin-left: -30px; - margin-right: -30px; - white-space: normal; -} - -/* But don't adjust the margins outwards if we're directly under the body, - i.e. we were the top-level of something at the console. */ -body > .container-fluid.crosstalk-bscols { - margin-left: auto; - margin-right: auto; -} - -.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { - display: inline-block; - padding-right: 12px; - vertical-align: top; -} - -@media only screen and (max-width:480px) { - .crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { - display: block; - padding-right: inherit; - } -} diff --git a/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js b/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js deleted file mode 100644 index 8e6ee305..00000000 --- a/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js +++ /dev/null @@ -1,1471 +0,0 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o b) { - return 1; - } -} - -/** - * @private - */ - -var FilterSet = function () { - function FilterSet() { - _classCallCheck(this, FilterSet); - - this.reset(); - } - - _createClass(FilterSet, [{ - key: "reset", - value: function reset() { - // Key: handle ID, Value: array of selected keys, or null - this._handles = {}; - // Key: key string, Value: count of handles that include it - this._keys = {}; - this._value = null; - this._activeHandles = 0; - } - }, { - key: "update", - value: function update(handleId, keys) { - if (keys !== null) { - keys = keys.slice(0); // clone before sorting - keys.sort(naturalComparator); - } - - var _diffSortedLists = (0, _util.diffSortedLists)(this._handles[handleId], keys), - added = _diffSortedLists.added, - removed = _diffSortedLists.removed; - - this._handles[handleId] = keys; - - for (var i = 0; i < added.length; i++) { - this._keys[added[i]] = (this._keys[added[i]] || 0) + 1; - } - for (var _i = 0; _i < removed.length; _i++) { - this._keys[removed[_i]]--; - } - - this._updateValue(keys); - } - - /** - * @param {string[]} keys Sorted array of strings that indicate - * a superset of possible keys. - * @private - */ - - }, { - key: "_updateValue", - value: function _updateValue() { - var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._allKeys; - - var handleCount = Object.keys(this._handles).length; - if (handleCount === 0) { - this._value = null; - } else { - this._value = []; - for (var i = 0; i < keys.length; i++) { - var count = this._keys[keys[i]]; - if (count === handleCount) { - this._value.push(keys[i]); - } - } - } - } - }, { - key: "clear", - value: function clear(handleId) { - if (typeof this._handles[handleId] === "undefined") { - return; - } - - var keys = this._handles[handleId]; - if (!keys) { - keys = []; - } - - for (var i = 0; i < keys.length; i++) { - this._keys[keys[i]]--; - } - delete this._handles[handleId]; - - this._updateValue(); - } - }, { - key: "value", - get: function get() { - return this._value; - } - }, { - key: "_allKeys", - get: function get() { - var allKeys = Object.keys(this._keys); - allKeys.sort(naturalComparator); - return allKeys; - } - }]); - - return FilterSet; -}(); - -exports.default = FilterSet; - -},{"./util":11}],4:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.default = group; - -var _var2 = require("./var"); - -var _var3 = _interopRequireDefault(_var2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Use a global so that multiple copies of crosstalk.js can be loaded and still -// have groups behave as singletons across all copies. -global.__crosstalk_groups = global.__crosstalk_groups || {}; -var groups = global.__crosstalk_groups; - -function group(groupName) { - if (groupName && typeof groupName === "string") { - if (!groups.hasOwnProperty(groupName)) { - groups[groupName] = new Group(groupName); - } - return groups[groupName]; - } else if ((typeof groupName === "undefined" ? "undefined" : _typeof(groupName)) === "object" && groupName._vars && groupName.var) { - // Appears to already be a group object - return groupName; - } else if (Array.isArray(groupName) && groupName.length == 1 && typeof groupName[0] === "string") { - return group(groupName[0]); - } else { - throw new Error("Invalid groupName argument"); - } -} - -var Group = function () { - function Group(name) { - _classCallCheck(this, Group); - - this.name = name; - this._vars = {}; - } - - _createClass(Group, [{ - key: "var", - value: function _var(name) { - if (!name || typeof name !== "string") { - throw new Error("Invalid var name"); - } - - if (!this._vars.hasOwnProperty(name)) this._vars[name] = new _var3.default(this, name); - return this._vars[name]; - } - }, { - key: "has", - value: function has(name) { - if (!name || typeof name !== "string") { - throw new Error("Invalid var name"); - } - - return this._vars.hasOwnProperty(name); - } - }]); - - return Group; -}(); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./var":12}],5:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _group = require("./group"); - -var _group2 = _interopRequireDefault(_group); - -var _selection = require("./selection"); - -var _filter = require("./filter"); - -require("./input"); - -require("./input_selectize"); - -require("./input_checkboxgroup"); - -require("./input_slider"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var defaultGroup = (0, _group2.default)("default"); - -function var_(name) { - return defaultGroup.var(name); -} - -function has(name) { - return defaultGroup.has(name); -} - -if (global.Shiny) { - global.Shiny.addCustomMessageHandler("update-client-value", function (message) { - if (typeof message.group === "string") { - (0, _group2.default)(message.group).var(message.name).set(message.value); - } else { - var_(message.name).set(message.value); - } - }); -} - -var crosstalk = { - group: _group2.default, - var: var_, - has: has, - SelectionHandle: _selection.SelectionHandle, - FilterHandle: _filter.FilterHandle -}; - -/** - * @namespace crosstalk - */ -exports.default = crosstalk; - -global.crosstalk = crosstalk; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./group":4,"./input":6,"./input_checkboxgroup":7,"./input_selectize":8,"./input_slider":9,"./selection":10}],6:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.register = register; -var $ = global.jQuery; - -var bindings = {}; - -function register(reg) { - bindings[reg.className] = reg; - if (global.document && global.document.readyState !== "complete") { - $(function () { - bind(); - }); - } else if (global.document) { - setTimeout(bind, 100); - } -} - -function bind() { - Object.keys(bindings).forEach(function (className) { - var binding = bindings[className]; - $("." + binding.className).not(".crosstalk-input-bound").each(function (i, el) { - bindInstance(binding, el); - }); - }); -} - -// Escape jQuery identifier -function $escape(val) { - return val.replace(/([!"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~])/g, "\\$1"); -} - -function bindEl(el) { - var $el = $(el); - Object.keys(bindings).forEach(function (className) { - if ($el.hasClass(className) && !$el.hasClass("crosstalk-input-bound")) { - var binding = bindings[className]; - bindInstance(binding, el); - } - }); -} - -function bindInstance(binding, el) { - var jsonEl = $(el).find("script[type='application/json'][data-for='" + $escape(el.id) + "']"); - var data = JSON.parse(jsonEl[0].innerText); - - var instance = binding.factory(el, data); - $(el).data("crosstalk-instance", instance); - $(el).addClass("crosstalk-input-bound"); -} - -if (global.Shiny) { - (function () { - var inputBinding = new global.Shiny.InputBinding(); - var $ = global.jQuery; - $.extend(inputBinding, { - find: function find(scope) { - return $(scope).find(".crosstalk-input"); - }, - initialize: function initialize(el) { - if (!$(el).hasClass("crosstalk-input-bound")) { - bindEl(el); - } - }, - getId: function getId(el) { - return el.id; - }, - getValue: function getValue(el) {}, - setValue: function setValue(el, value) {}, - receiveMessage: function receiveMessage(el, data) {}, - subscribe: function subscribe(el, callback) { - $(el).data("crosstalk-instance").resume(); - }, - unsubscribe: function unsubscribe(el) { - $(el).data("crosstalk-instance").suspend(); - } - }); - global.Shiny.inputBindings.register(inputBinding, "crosstalk.inputBinding"); - })(); -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{}],7:[function(require,module,exports){ -(function (global){ -"use strict"; - -var _input = require("./input"); - -var input = _interopRequireWildcard(_input); - -var _filter = require("./filter"); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var $ = global.jQuery; - -input.register({ - className: "crosstalk-input-checkboxgroup", - - factory: function factory(el, data) { - /* - * map: {"groupA": ["keyA", "keyB", ...], ...} - * group: "ct-groupname" - */ - var ctHandle = new _filter.FilterHandle(data.group); - - var lastKnownKeys = void 0; - var $el = $(el); - $el.on("change", "input[type='checkbox']", function () { - var checked = $el.find("input[type='checkbox']:checked"); - if (checked.length === 0) { - lastKnownKeys = null; - ctHandle.clear(); - } else { - (function () { - var keys = {}; - checked.each(function () { - data.map[this.value].forEach(function (key) { - keys[key] = true; - }); - }); - var keyArray = Object.keys(keys); - keyArray.sort(); - lastKnownKeys = keyArray; - ctHandle.set(keyArray); - })(); - } - }); - - return { - suspend: function suspend() { - ctHandle.clear(); - }, - resume: function resume() { - if (lastKnownKeys) ctHandle.set(lastKnownKeys); - } - }; - } -}); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./input":6}],8:[function(require,module,exports){ -(function (global){ -"use strict"; - -var _input = require("./input"); - -var input = _interopRequireWildcard(_input); - -var _util = require("./util"); - -var util = _interopRequireWildcard(_util); - -var _filter = require("./filter"); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var $ = global.jQuery; - -input.register({ - className: "crosstalk-input-select", - - factory: function factory(el, data) { - /* - * items: {value: [...], label: [...]} - * map: {"groupA": ["keyA", "keyB", ...], ...} - * group: "ct-groupname" - */ - - var first = [{ value: "", label: "(All)" }]; - var items = util.dataframeToD3(data.items); - var opts = { - options: first.concat(items), - valueField: "value", - labelField: "label", - searchField: "label" - }; - - var select = $(el).find("select")[0]; - - var selectize = $(select).selectize(opts)[0].selectize; - - var ctHandle = new _filter.FilterHandle(data.group); - - var lastKnownKeys = void 0; - selectize.on("change", function () { - if (selectize.items.length === 0) { - lastKnownKeys = null; - ctHandle.clear(); - } else { - (function () { - var keys = {}; - selectize.items.forEach(function (group) { - data.map[group].forEach(function (key) { - keys[key] = true; - }); - }); - var keyArray = Object.keys(keys); - keyArray.sort(); - lastKnownKeys = keyArray; - ctHandle.set(keyArray); - })(); - } - }); - - return { - suspend: function suspend() { - ctHandle.clear(); - }, - resume: function resume() { - if (lastKnownKeys) ctHandle.set(lastKnownKeys); - } - }; - } -}); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./input":6,"./util":11}],9:[function(require,module,exports){ -(function (global){ -"use strict"; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _input = require("./input"); - -var input = _interopRequireWildcard(_input); - -var _filter = require("./filter"); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var $ = global.jQuery; -var strftime = global.strftime; - -input.register({ - className: "crosstalk-input-slider", - - factory: function factory(el, data) { - /* - * map: {"groupA": ["keyA", "keyB", ...], ...} - * group: "ct-groupname" - */ - var ctHandle = new _filter.FilterHandle(data.group); - - var opts = {}; - var $el = $(el).find("input"); - var dataType = $el.data("data-type"); - var timeFormat = $el.data("time-format"); - var timeFormatter = void 0; - - // Set up formatting functions - if (dataType === "date") { - timeFormatter = strftime.utc(); - opts.prettify = function (num) { - return timeFormatter(timeFormat, new Date(num)); - }; - } else if (dataType === "datetime") { - var timezone = $el.data("timezone"); - if (timezone) timeFormatter = strftime.timezone(timezone);else timeFormatter = strftime; - - opts.prettify = function (num) { - return timeFormatter(timeFormat, new Date(num)); - }; - } - - $el.ionRangeSlider(opts); - - function getValue() { - var result = $el.data("ionRangeSlider").result; - - // Function for converting numeric value from slider to appropriate type. - var convert = void 0; - var dataType = $el.data("data-type"); - if (dataType === "date") { - convert = function convert(val) { - return formatDateUTC(new Date(+val)); - }; - } else if (dataType === "datetime") { - convert = function convert(val) { - // Convert ms to s - return +val / 1000; - }; - } else { - convert = function convert(val) { - return +val; - }; - } - - if ($el.data("ionRangeSlider").options.type === "double") { - return [convert(result.from), convert(result.to)]; - } else { - return convert(result.from); - } - } - - var lastKnownKeys = null; - - $el.on("change.crosstalkSliderInput", function (event) { - if (!$el.data("updating") && !$el.data("animating")) { - var _getValue = getValue(), - _getValue2 = _slicedToArray(_getValue, 2), - from = _getValue2[0], - to = _getValue2[1]; - - var keys = []; - for (var i = 0; i < data.values.length; i++) { - var val = data.values[i]; - if (val >= from && val <= to) { - keys.push(data.keys[i]); - } - } - keys.sort(); - ctHandle.set(keys); - lastKnownKeys = keys; - } - }); - - // let $el = $(el); - // $el.on("change", "input[type="checkbox"]", function() { - // let checked = $el.find("input[type="checkbox"]:checked"); - // if (checked.length === 0) { - // ctHandle.clear(); - // } else { - // let keys = {}; - // checked.each(function() { - // data.map[this.value].forEach(function(key) { - // keys[key] = true; - // }); - // }); - // let keyArray = Object.keys(keys); - // keyArray.sort(); - // ctHandle.set(keyArray); - // } - // }); - - return { - suspend: function suspend() { - ctHandle.clear(); - }, - resume: function resume() { - if (lastKnownKeys) ctHandle.set(lastKnownKeys); - } - }; - } -}); - -// Convert a number to a string with leading zeros -function padZeros(n, digits) { - var str = n.toString(); - while (str.length < digits) { - str = "0" + str; - }return str; -} - -// Given a Date object, return a string in yyyy-mm-dd format, using the -// UTC date. This may be a day off from the date in the local time zone. -function formatDateUTC(date) { - if (date instanceof Date) { - return date.getUTCFullYear() + "-" + padZeros(date.getUTCMonth() + 1, 2) + "-" + padZeros(date.getUTCDate(), 2); - } else { - return null; - } -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./input":6}],10:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SelectionHandle = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _events = require("./events"); - -var _events2 = _interopRequireDefault(_events); - -var _group = require("./group"); - -var _group2 = _interopRequireDefault(_group); - -var _util = require("./util"); - -var util = _interopRequireWildcard(_util); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var SelectionHandle = exports.SelectionHandle = function () { - - /** - * @classdesc - * Use this class to read and write (and listen for changes to) the selection - * for a Crosstalk group. This is intended to be used for linked brushing. - * - * If two (or more) `SelectionHandle` instances in the same webpage share the - * same group name, they will share the same state. Setting the selection using - * one `SelectionHandle` instance will result in the `value` property instantly - * changing across the others, and `"change"` event listeners on all instances - * (including the one that initiated the sending) will fire. - * - * @param {string} [group] - The name of the Crosstalk group, or if none, - * null or undefined (or any other falsy value). This can be changed later - * via the [SelectionHandle#setGroup](#setGroup) method. - * @param {Object} [extraInfo] - An object whose properties will be copied to - * the event object whenever an event is emitted. - */ - function SelectionHandle() { - var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var extraInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - _classCallCheck(this, SelectionHandle); - - this._eventRelay = new _events2.default(); - this._emitter = new util.SubscriptionTracker(this._eventRelay); - - // Name of the group we're currently tracking, if any. Can change over time. - this._group = null; - // The Var we're currently tracking, if any. Can change over time. - this._var = null; - // The event handler subscription we currently have on var.on("change"). - this._varOnChangeSub = null; - - this._extraInfo = util.extend({ sender: this }, extraInfo); - - this.setGroup(group); - } - - /** - * Changes the Crosstalk group membership of this SelectionHandle. The group - * being switched away from (if any) will not have its selection value - * modified as a result of calling `setGroup`, even if this handle was the - * most recent handle to set the selection of the group. - * - * The group being switched to (if any) will also not have its selection value - * modified as a result of calling `setGroup`. If you want to set the - * selection value of the new group, call `set` explicitly. - * - * @param {string} group - The name of the Crosstalk group, or null (or - * undefined) to clear the group. - */ - - - _createClass(SelectionHandle, [{ - key: "setGroup", - value: function setGroup(group) { - var _this = this; - - // If group is unchanged, do nothing - if (this._group === group) return; - // Treat null, undefined, and other falsy values the same - if (!this._group && !group) return; - - if (this._var) { - this._var.off("change", this._varOnChangeSub); - this._var = null; - this._varOnChangeSub = null; - } - - this._group = group; - - if (group) { - this._var = (0, _group2.default)(group).var("selection"); - var sub = this._var.on("change", function (e) { - _this._eventRelay.trigger("change", e, _this); - }); - this._varOnChangeSub = sub; - } - } - - /** - * Retrieves the current selection for the group represented by this - * `SelectionHandle`. - * - * - If no selection is active, then this value will be falsy. - * - If a selection is active, but no data points are selected, then this - * value will be an empty array. - * - If a selection is active, and data points are selected, then the keys - * of the selected data points will be present in the array. - */ - - }, { - key: "_mergeExtraInfo", - - - /** - * Combines the given `extraInfo` (if any) with the handle's default - * `_extraInfo` (if any). - * @private - */ - value: function _mergeExtraInfo(extraInfo) { - // Important incidental effect: shallow clone is returned - return util.extend({}, this._extraInfo ? this._extraInfo : null, extraInfo ? extraInfo : null); - } - - /** - * Overwrites the current selection for the group, and raises the `"change"` - * event among all of the group's '`SelectionHandle` instances (including - * this one). - * - * @fires SelectionHandle#change - * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see - * {@link SelectionHandle#value}). - * @param {Object} [extraInfo] - Extra properties to be included on the event - * object that's passed to listeners (in addition to any options that were - * passed into the `SelectionHandle` constructor). - */ - - }, { - key: "set", - value: function set(selectedKeys, extraInfo) { - if (this._var) this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo)); - } - - /** - * Overwrites the current selection for the group, and raises the `"change"` - * event among all of the group's '`SelectionHandle` instances (including - * this one). - * - * @fires SelectionHandle#change - * @param {Object} [extraInfo] - Extra properties to be included on the event - * object that's passed to listeners (in addition to any that were passed - * into the `SelectionHandle` constructor). - */ - - }, { - key: "clear", - value: function clear(extraInfo) { - if (this._var) this.set(void 0, this._mergeExtraInfo(extraInfo)); - } - - /** - * Subscribes to events on this `SelectionHandle`. - * - * @param {string} eventType - Indicates the type of events to listen to. - * Currently, only `"change"` is supported. - * @param {SelectionHandle~listener} listener - The callback function that - * will be invoked when the event occurs. - * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel - * this subscription. - */ - - }, { - key: "on", - value: function on(eventType, listener) { - return this._emitter.on(eventType, listener); - } - - /** - * Cancels event subscriptions created by {@link SelectionHandle#on}. - * - * @param {string} eventType - The type of event to unsubscribe. - * @param {string|SelectionHandle~listener} listener - Either the callback - * function previously passed into {@link SelectionHandle#on}, or the - * string that was returned from {@link SelectionHandle#on}. - */ - - }, { - key: "off", - value: function off(eventType, listener) { - return this._emitter.off(eventType, listener); - } - - /** - * Shuts down the `SelectionHandle` object. - * - * Removes all event listeners that were added through this handle. - */ - - }, { - key: "close", - value: function close() { - this._emitter.removeAllListeners(); - this.setGroup(null); - } - - /** - * @callback SelectionHandle~listener - * @param {Object} event - An object containing details of the event. For - * `"change"` events, this includes the properties `value` (the new - * value of the selection, or `undefined` if no selection is active), - * `oldValue` (the previous value of the selection), and `sender` (the - * `SelectionHandle` instance that made the change). - */ - - /** - * @event SelectionHandle#change - * @type {object} - * @property {object} value - The new value of the selection, or `undefined` - * if no selection is active. - * @property {object} oldValue - The previous value of the selection. - * @property {SelectionHandle} sender - The `SelectionHandle` instance that - * changed the value. - */ - - }, { - key: "value", - get: function get() { - return this._var ? this._var.get() : null; - } - }]); - - return SelectionHandle; -}(); - -},{"./events":1,"./group":4,"./util":11}],11:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.extend = extend; -exports.checkSorted = checkSorted; -exports.diffSortedLists = diffSortedLists; -exports.dataframeToD3 = dataframeToD3; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function extend(target) { - for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - sources[_key - 1] = arguments[_key]; - } - - for (var i = 0; i < sources.length; i++) { - var src = sources[i]; - if (typeof src === "undefined" || src === null) continue; - - for (var key in src) { - if (src.hasOwnProperty(key)) { - target[key] = src[key]; - } - } - } - return target; -} - -function checkSorted(list) { - for (var i = 1; i < list.length; i++) { - if (list[i] <= list[i - 1]) { - throw new Error("List is not sorted or contains duplicate"); - } - } -} - -function diffSortedLists(a, b) { - var i_a = 0; - var i_b = 0; - - if (!a) a = []; - if (!b) b = []; - - var a_only = []; - var b_only = []; - - checkSorted(a); - checkSorted(b); - - while (i_a < a.length && i_b < b.length) { - if (a[i_a] === b[i_b]) { - i_a++; - i_b++; - } else if (a[i_a] < b[i_b]) { - a_only.push(a[i_a++]); - } else { - b_only.push(b[i_b++]); - } - } - - if (i_a < a.length) a_only = a_only.concat(a.slice(i_a)); - if (i_b < b.length) b_only = b_only.concat(b.slice(i_b)); - return { - removed: a_only, - added: b_only - }; -} - -// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... } -// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ] -function dataframeToD3(df) { - var names = []; - var length = void 0; - for (var name in df) { - if (df.hasOwnProperty(name)) names.push(name); - if (_typeof(df[name]) !== "object" || typeof df[name].length === "undefined") { - throw new Error("All fields must be arrays"); - } else if (typeof length !== "undefined" && length !== df[name].length) { - throw new Error("All fields must be arrays of the same length"); - } - length = df[name].length; - } - var results = []; - var item = void 0; - for (var row = 0; row < length; row++) { - item = {}; - for (var col = 0; col < names.length; col++) { - item[names[col]] = df[names[col]][row]; - } - results.push(item); - } - return results; -} - -/** - * Keeps track of all event listener additions/removals and lets all active - * listeners be removed with a single operation. - * - * @private - */ - -var SubscriptionTracker = exports.SubscriptionTracker = function () { - function SubscriptionTracker(emitter) { - _classCallCheck(this, SubscriptionTracker); - - this._emitter = emitter; - this._subs = {}; - } - - _createClass(SubscriptionTracker, [{ - key: "on", - value: function on(eventType, listener) { - var sub = this._emitter.on(eventType, listener); - this._subs[sub] = eventType; - return sub; - } - }, { - key: "off", - value: function off(eventType, listener) { - var sub = this._emitter.off(eventType, listener); - if (sub) { - delete this._subs[sub]; - } - return sub; - } - }, { - key: "removeAllListeners", - value: function removeAllListeners() { - var _this = this; - - var current_subs = this._subs; - this._subs = {}; - Object.keys(current_subs).forEach(function (sub) { - _this._emitter.off(current_subs[sub], sub); - }); - } - }]); - - return SubscriptionTracker; -}(); - -},{}],12:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _events = require("./events"); - -var _events2 = _interopRequireDefault(_events); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Var = function () { - function Var(group, name, /*optional*/value) { - _classCallCheck(this, Var); - - this._group = group; - this._name = name; - this._value = value; - this._events = new _events2.default(); - } - - _createClass(Var, [{ - key: "get", - value: function get() { - return this._value; - } - }, { - key: "set", - value: function set(value, /*optional*/event) { - if (this._value === value) { - // Do nothing; the value hasn't changed - return; - } - var oldValue = this._value; - this._value = value; - // Alert JavaScript listeners that the value has changed - var evt = {}; - if (event && (typeof event === "undefined" ? "undefined" : _typeof(event)) === "object") { - for (var k in event) { - if (event.hasOwnProperty(k)) evt[k] = event[k]; - } - } - evt.oldValue = oldValue; - evt.value = value; - this._events.trigger("change", evt, this); - - // TODO: Make this extensible, to let arbitrary back-ends know that - // something has changed - if (global.Shiny && global.Shiny.onInputChange) { - global.Shiny.onInputChange(".clientValue-" + (this._group.name !== null ? this._group.name + "-" : "") + this._name, typeof value === "undefined" ? null : value); - } - } - }, { - key: "on", - value: function on(eventType, listener) { - return this._events.on(eventType, listener); - } - }, { - key: "off", - value: function off(eventType, listener) { - return this._events.off(eventType, listener); - } - }]); - - return Var; -}(); - -exports.default = Var; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./events":1}]},{},[5]) -//# sourceMappingURL=crosstalk.js.map diff --git a/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js.map b/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js.map deleted file mode 100644 index 508b24fa..00000000 --- a/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.js.map +++ /dev/null @@ -1,37 +0,0 @@ -{ - "version": 3, - "sources": [ - "node_modules/browser-pack/_prelude.js", - "javascript/src/events.js", - "javascript/src/filter.js", - "javascript/src/filterset.js", - "javascript/src/group.js", - "javascript/src/index.js", - "javascript/src/input.js", - "javascript/src/input_checkboxgroup.js", - "javascript/src/input_selectize.js", - "javascript/src/input_slider.js", - "javascript/src/selection.js", - "javascript/src/util.js", - "javascript/src/var.js" - ], - "names": [], - "mappings": "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", - "file": "generated.js", - "sourceRoot": "", - "sourcesContent": [ - "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n /**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n}\n", - "import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n", - "import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n", - "import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n", - "let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nfunction bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,.\\/:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n", - "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", - "import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", - "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n", - "import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\nexport class SelectionHandle {\n\n /**\n * @classdesc\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n\n /**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n /**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n}\n", - "export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n", - "import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n" - ] -} \ No newline at end of file diff --git a/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.min.js b/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.min.js deleted file mode 100644 index 55262e87..00000000 --- a/docs/articles/interval-stats_files/crosstalk-1.0.0/js/crosstalk.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;gb?1:void 0}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:this._allKeys,b=Object.keys(this._handles).length;if(0===b)this._value=null;else{this._value=[];for(var c=0;c?@\[\\\]^`{|}~])/g,"\\$1")}function f(a){var b=h(a);Object.keys(i).forEach(function(c){if(b.hasClass(c)&&!b.hasClass("crosstalk-input-bound")){var d=i[c];g(d,a)}})}function g(a,b){var c=h(b).find("script[type='application/json'][data-for='"+e(b.id)+"']"),d=JSON.parse(c[0].innerText),f=a.factory(b,d);h(b).data("crosstalk-instance",f),h(b).addClass("crosstalk-input-bound")}Object.defineProperty(c,"__esModule",{value:!0}),c.register=b;var h=a.jQuery,i={};a.Shiny&&!function(){var b=new a.Shiny.InputBinding,c=a.jQuery;c.extend(b,{find:function(a){return c(a).find(".crosstalk-input")},initialize:function(a){c(a).hasClass("crosstalk-input-bound")||f(a)},getId:function(a){return a.id},getValue:function(a){},setValue:function(a,b){},receiveMessage:function(a,b){},subscribe:function(a,b){c(a).data("crosstalk-instance").resume()},unsubscribe:function(a){c(a).data("crosstalk-instance").suspend()}}),a.Shiny.inputBindings.register(b,"crosstalk.inputBinding")}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(a,b,c){(function(b){"use strict";function c(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}var d=a("./input"),e=c(d),f=a("./filter"),g=b.jQuery;e.register({className:"crosstalk-input-checkboxgroup",factory:function(a,b){var c=new f.FilterHandle(b.group),d=void 0,e=g(a);return e.on("change","input[type='checkbox']",function(){var a=e.find("input[type='checkbox']:checked");0===a.length?(d=null,c.clear()):!function(){var e={};a.each(function(){b.map[this.value].forEach(function(a){e[a]=!0})});var f=Object.keys(e);f.sort(),d=f,c.set(f)}()}),{suspend:function(){c.clear()},resume:function(){d&&c.set(d)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6}],8:[function(a,b,c){(function(b){"use strict";function c(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}var d=a("./input"),e=c(d),f=a("./util"),g=c(f),h=a("./filter"),i=b.jQuery;e.register({className:"crosstalk-input-select",factory:function(a,b){var c=[{value:"",label:"(All)"}],d=g.dataframeToD3(b.items),e={options:c.concat(d),valueField:"value",labelField:"label",searchField:"label"},f=i(a).find("select")[0],j=i(f).selectize(e)[0].selectize,k=new h.FilterHandle(b.group),l=void 0;return j.on("change",function(){0===j.items.length?(l=null,k.clear()):!function(){var a={};j.items.forEach(function(c){b.map[c].forEach(function(b){a[b]=!0})});var c=Object.keys(a);c.sort(),l=c,k.set(c)}()}),{suspend:function(){k.clear()},resume:function(){l&&k.set(l)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6,"./util":11}],9:[function(a,b,c){(function(b){"use strict";function c(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}function d(a,b){for(var c=a.toString();c.length=i&&m<=j&&k.push(b.keys[l])}k.sort(),d.set(k),p=k}}),{suspend:function(){d.clear()},resume:function(){p&&d.set(p)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6}],10:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}function e(a){return a&&a.__esModule?a:{default:a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.SelectionHandle=void 0;var g=function(){function a(a,b){for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:null,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;f(this,a),this._eventRelay=new i.default,this._emitter=new m.SubscriptionTracker(this._eventRelay),this._group=null,this._var=null,this._varOnChangeSub=null,this._extraInfo=m.extend({sender:this},c),this.setGroup(b)}return g(a,[{key:"setGroup",value:function(a){var b=this;if(this._group!==a&&(this._group||a)&&(this._var&&(this._var.off("change",this._varOnChangeSub),this._var=null,this._varOnChangeSub=null),this._group=a,a)){this._var=(0,k.default)(a).var("selection");var c=this._var.on("change",function(a){b._eventRelay.trigger("change",a,b)});this._varOnChangeSub=c}}},{key:"_mergeExtraInfo",value:function(a){return m.extend({},this._extraInfo?this._extraInfo:null,a?a:null)}},{key:"set",value:function(a,b){this._var&&this._var.set(a,this._mergeExtraInfo(b))}},{key:"clear",value:function(a){this._var&&this.set(void 0,this._mergeExtraInfo(a))}},{key:"on",value:function(a,b){return this._emitter.on(a,b)}},{key:"off",value:function(a,b){return this._emitter.off(a,b)}},{key:"close",value:function(){this._emitter.removeAllListeners(),this.setGroup(null)}},{key:"value",get:function(){return this._var?this._var.get():null}}]),a}()},{"./events":1,"./group":4,"./util":11}],11:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function e(a){for(var b=arguments.length,c=Array(b>1?b-1:0),d=1;d {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n /**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n}\n","import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n","import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n","import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n","let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nfunction bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,.\\/:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n","import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\nexport class SelectionHandle {\n\n /**\n * @classdesc\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n\n /**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n /**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n}\n","export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n","import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n"]} \ No newline at end of file diff --git a/docs/articles/interval-stats_files/datatables-binding-0.12/datatables.js b/docs/articles/interval-stats_files/datatables-binding-0.12/datatables.js deleted file mode 100644 index 7c12ebc3..00000000 --- a/docs/articles/interval-stats_files/datatables-binding-0.12/datatables.js +++ /dev/null @@ -1,1323 +0,0 @@ -(function() { - -// some helper functions: using a global object DTWidget so that it can be used -// in JS() code, e.g. datatable(options = list(foo = JS('code'))); unlike R's -// dynamic scoping, when 'code' is eval()'ed, JavaScript does not know objects -// from the "parent frame", e.g. JS('DTWidget') will not work unless it was made -// a global object -var DTWidget = {}; - -// 123456666.7890 -> 123,456,666.7890 -var markInterval = function(d, digits, interval, mark, decMark, precision) { - x = precision ? d.toPrecision(digits) : d.toFixed(digits); - if (!/^-?[\d.]+$/.test(x)) return x; - var xv = x.split('.'); - if (xv.length > 2) return x; // should have at most one decimal point - xv[0] = xv[0].replace(new RegExp('\\B(?=(\\d{' + interval + '})+(?!\\d))', 'g'), mark); - return xv.join(decMark); -}; - -DTWidget.formatCurrency = function(thiz, row, data, col, currency, digits, interval, mark, decMark, before) { - var d = parseFloat(data[col]); - if (isNaN(d)) return; - var res = markInterval(d, digits, interval, mark, decMark); - res = before ? (/^-/.test(res) ? '-' + currency + res.replace(/^-/, '') : currency + res) : - res + currency; - $(thiz.api().cell(row, col).node()).html(res); -}; - -DTWidget.formatString = function(thiz, row, data, col, prefix, suffix) { - var d = data[col]; - if (d === null) return; - var cell = $(thiz.api().cell(row, col).node()); - cell.html(prefix + cell.html() + suffix); -}; - -DTWidget.formatPercentage = function(thiz, row, data, col, digits, interval, mark, decMark) { - var d = parseFloat(data[col]); - if (isNaN(d)) return; - $(thiz.api().cell(row, col).node()) - .html(markInterval(d * 100, digits, interval, mark, decMark) + '%'); -}; - -DTWidget.formatRound = function(thiz, row, data, col, digits, interval, mark, decMark) { - var d = parseFloat(data[col]); - if (isNaN(d)) return; - $(thiz.api().cell(row, col).node()).html(markInterval(d, digits, interval, mark, decMark)); -}; - -DTWidget.formatSignif = function(thiz, row, data, col, digits, interval, mark, decMark) { - var d = parseFloat(data[col]); - if (isNaN(d)) return; - $(thiz.api().cell(row, col).node()) - .html(markInterval(d, digits, interval, mark, decMark, true)); -}; - -DTWidget.formatDate = function(thiz, row, data, col, method, params) { - var d = data[col]; - if (d === null) return; - // (new Date('2015-10-28')).toDateString() may return 2015-10-27 because the - // actual time created could be like 'Tue Oct 27 2015 19:00:00 GMT-0500 (CDT)', - // i.e. the date-only string is treated as UTC time instead of local time - if ((method === 'toDateString' || method === 'toLocaleDateString') && /^\d{4,}\D\d{2}\D\d{2}$/.test(d)) { - d = d.split(/\D/); - d = new Date(d[0], d[1] - 1, d[2]); - } else { - d = new Date(d); - } - $(thiz.api().cell(row, col).node()).html(d[method].apply(d, params)); -}; - -window.DTWidget = DTWidget; - -var transposeArray2D = function(a) { - return a.length === 0 ? a : HTMLWidgets.transposeArray2D(a); -}; - -var crosstalkPluginsInstalled = false; - -function maybeInstallCrosstalkPlugins() { - if (crosstalkPluginsInstalled) - return; - crosstalkPluginsInstalled = true; - - $.fn.dataTable.ext.afnFiltering.push( - function(oSettings, aData, iDataIndex) { - var ctfilter = oSettings.nTable.ctfilter; - if (ctfilter && !ctfilter[iDataIndex]) - return false; - - var ctselect = oSettings.nTable.ctselect; - if (ctselect && !ctselect[iDataIndex]) - return false; - - return true; - } - ); -} - -HTMLWidgets.widget({ - name: "datatables", - type: "output", - renderOnNullValue: true, - initialize: function(el, width, height) { - $(el).html(' '); - return { - data: null, - ctfilterHandle: new crosstalk.FilterHandle(), - ctfilterSubscription: null, - ctselectHandle: new crosstalk.SelectionHandle(), - ctselectSubscription: null - }; - }, - renderValue: function(el, data, instance) { - if (el.offsetWidth === 0 || el.offsetHeight === 0) { - instance.data = data; - return; - } - instance.data = null; - var $el = $(el); - $el.empty(); - - if (data === null) { - $el.append(' '); - // clear previous Shiny inputs (if any) - for (var i in instance.clearInputs) instance.clearInputs[i](); - instance.clearInputs = {}; - return; - } - - var crosstalkOptions = data.crosstalkOptions; - if (!crosstalkOptions) crosstalkOptions = { - 'key': null, 'group': null - }; - if (crosstalkOptions.group) { - maybeInstallCrosstalkPlugins(); - instance.ctfilterHandle.setGroup(crosstalkOptions.group); - instance.ctselectHandle.setGroup(crosstalkOptions.group); - } - - // If we are in a flexdashboard scroll layout then we: - // (a) Always want to use pagination (otherwise we'll have - // a "double scroll bar" effect on the phone); and - // (b) Never want to fill the container (we want the pagination - // level to determine the size of the container) - if (window.FlexDashboard && !window.FlexDashboard.isFillPage()) { - data.options.bPaginate = true; - data.fillContainer = false; - } - - // if we are in the viewer then we always want to fillContainer and - // and autoHideNavigation (unless the user has explicitly set these) - if (window.HTMLWidgets.viewerMode) { - if (!data.hasOwnProperty("fillContainer")) - data.fillContainer = true; - if (!data.hasOwnProperty("autoHideNavigation")) - data.autoHideNavigation = true; - } - - // propagate fillContainer to instance (so we have it in resize) - instance.fillContainer = data.fillContainer; - - var cells = data.data; - - if (cells instanceof Array) cells = transposeArray2D(cells); - - $el.append(data.container); - var $table = $el.find('table'); - if (data.class) $table.addClass(data.class); - if (data.caption) $table.prepend(data.caption); - - if (!data.selection) data.selection = { - mode: 'none', selected: null, target: 'row' - }; - if (HTMLWidgets.shinyMode && data.selection.mode !== 'none' && - data.selection.target === 'row+column') { - if ($table.children('tfoot').length === 0) { - $table.append($('')); - $table.find('thead tr').clone().appendTo($table.find('tfoot')); - } - } - - // column filters - var filterRow; - switch (data.filter) { - case 'top': - $table.children('thead').append(data.filterHTML); - filterRow = $table.find('thead tr:last td'); - break; - case 'bottom': - if ($table.children('tfoot').length === 0) { - $table.append($('')); - } - $table.children('tfoot').prepend(data.filterHTML); - filterRow = $table.find('tfoot tr:first td'); - break; - } - - var options = { searchDelay: 1000 }; - if (cells !== null) $.extend(options, { - data: cells - }); - - // options for fillContainer - var bootstrapActive = typeof($.fn.popover) != 'undefined'; - if (instance.fillContainer) { - - // force scrollX/scrollY and turn off autoWidth - options.scrollX = true; - options.scrollY = "100px"; // can be any value, we'll adjust below - - // if we aren't paginating then move around the info/filter controls - // to save space at the bottom and rephrase the info callback - if (data.options.bPaginate === false) { - - // we know how to do this cleanly for bootstrap, not so much - // for other themes/layouts - if (bootstrapActive) { - options.dom = "<'row'<'col-sm-4'i><'col-sm-8'f>>" + - "<'row'<'col-sm-12'tr>>"; - } - - options.fnInfoCallback = function(oSettings, iStart, iEnd, - iMax, iTotal, sPre) { - return Number(iTotal).toLocaleString() + " records"; - }; - } - } - - // auto hide navigation if requested - if (data.autoHideNavigation === true) { - if (bootstrapActive && data.options.bPaginate !== false) { - // strip all nav if length >= cells - if ((cells instanceof Array) && data.options.iDisplayLength >= cells.length) - options.dom = "<'row'<'col-sm-12'tr>>"; - // alternatively lean things out for flexdashboard mobile portrait - else if (window.FlexDashboard && window.FlexDashboard.isMobilePhone()) - options.dom = "<'row'<'col-sm-12'f>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-12'p>>"; - } - } - - $.extend(true, options, data.options || {}); - - var searchCols = options.searchCols; - if (searchCols) { - searchCols = searchCols.map(function(x) { - return x === null ? '' : x.search; - }); - // FIXME: this means I don't respect the escapeRegex setting - delete options.searchCols; - } - - // server-side processing? - var server = options.serverSide === true; - - // use the dataSrc function to pre-process JSON data returned from R - var DT_rows_all = [], DT_rows_current = []; - if (server && HTMLWidgets.shinyMode && typeof options.ajax === 'object' && - /^session\/[\da-z]+\/dataobj/.test(options.ajax.url) && !options.ajax.dataSrc) { - options.ajax.dataSrc = function(json) { - DT_rows_all = $.makeArray(json.DT_rows_all); - DT_rows_current = $.makeArray(json.DT_rows_current); - var data = json.data; - if (!colReorderEnabled()) return data; - var table = $table.DataTable(), order = table.colReorder.order(), flag = true, i, j, row; - for (i = 0; i < order.length; ++i) if (order[i] !== i) flag = false; - if (flag) return data; - for (i = 0; i < data.length; ++i) { - row = data[i].slice(); - for (j = 0; j < order.length; ++j) data[i][j] = row[order[j]]; - } - return data; - }; - } - - var thiz = this; - if (instance.fillContainer) $table.on('init.dt', function(e) { - thiz.fillAvailableHeight(el, $(el).innerHeight()); - }); - // If the page contains serveral datatables and one of which enables colReorder, - // the table.colReorder.order() function will exist but throws error when called. - // So it seems like the only way to know if colReorder is enabled or not is to - // check the options. - var colReorderEnabled = function() { return "colReorder" in options; }; - var table = $table.DataTable(options); - $el.data('datatable', table); - - // Unregister previous Crosstalk event subscriptions, if they exist - if (instance.ctfilterSubscription) { - instance.ctfilterHandle.off("change", instance.ctfilterSubscription); - instance.ctfilterSubscription = null; - } - if (instance.ctselectSubscription) { - instance.ctselectHandle.off("change", instance.ctselectSubscription); - instance.ctselectSubscription = null; - } - - if (!crosstalkOptions.group) { - $table[0].ctfilter = null; - $table[0].ctselect = null; - } else { - var key = crosstalkOptions.key; - function keysToMatches(keys) { - if (!keys) { - return null; - } else { - var selectedKeys = {}; - for (var i = 0; i < keys.length; i++) { - selectedKeys[keys[i]] = true; - } - var matches = {}; - for (var j = 0; j < key.length; j++) { - if (selectedKeys[key[j]]) - matches[j] = true; - } - return matches; - } - } - - function applyCrosstalkFilter(e) { - $table[0].ctfilter = keysToMatches(e.value); - table.draw(); - } - instance.ctfilterSubscription = instance.ctfilterHandle.on("change", applyCrosstalkFilter); - applyCrosstalkFilter({value: instance.ctfilterHandle.filteredKeys}); - - function applyCrosstalkSelection(e) { - if (e.sender !== instance.ctselectHandle) { - table - .rows('.' + selClass, {search: 'applied'}) - .nodes() - .to$() - .removeClass(selClass); - if (selectedRows) - changeInput('rows_selected', selectedRows(), void 0, true); - } - - if (e.sender !== instance.ctselectHandle && e.value && e.value.length) { - var matches = keysToMatches(e.value); - - // persistent selection with plotly (& leaflet) - var ctOpts = crosstalk.var("plotlyCrosstalkOpts").get() || {}; - if (ctOpts.persistent === true) { - var matches = $.extend(matches, $table[0].ctselect); - } - - $table[0].ctselect = matches; - table.draw(); - } else { - if ($table[0].ctselect) { - $table[0].ctselect = null; - table.draw(); - } - } - } - instance.ctselectSubscription = instance.ctselectHandle.on("change", applyCrosstalkSelection); - // TODO: This next line doesn't seem to work when renderDataTable is used - applyCrosstalkSelection({value: instance.ctselectHandle.value}); - } - - var inArray = function(val, array) { - return $.inArray(val, $.makeArray(array)) > -1; - }; - - // encode + to %2B when searching in the table on server side, because - // shiny::parseQueryString() treats + as spaces, and DataTables does not - // encode + to %2B (or % to %25) when sending the request - var encode_plus = function(x) { - return server ? x.replace(/%/g, '%25').replace(/\+/g, '%2B') : x; - }; - - // search the i-th column - var searchColumn = function(i, value) { - var regex = false, ci = true; - if (options.search) { - regex = options.search.regex, - ci = options.search.caseInsensitive !== false; - } - return table.column(i).search(encode_plus(value), regex, !regex, ci); - }; - - if (data.filter !== 'none') { - - filterRow.each(function(i, td) { - - var $td = $(td), type = $td.data('type'), filter; - var $input = $td.children('div').first().children('input'); - $input.prop('disabled', !table.settings()[0].aoColumns[i].bSearchable || type === 'disabled'); - $input.on('input blur', function() { - $input.next('span').toggle(Boolean($input.val())); - }); - // Bootstrap sets pointer-events to none and we won't be able to click - // the clear button - $input.next('span').css('pointer-events', 'auto').hide().click(function() { - $(this).hide().prev('input').val('').trigger('input').focus(); - }); - var searchCol; // search string for this column - if (searchCols && searchCols[i]) { - searchCol = searchCols[i]; - $input.val(searchCol).trigger('input'); - } - var $x = $td.children('div').last(); - - // remove the overflow: hidden attribute of the scrollHead - // (otherwise the scrolling table body obscures the filters) - // The workaround and the discussion from - // https://github.com/rstudio/DT/issues/554#issuecomment-518007347 - // Otherwise the filter selection will not be anchored to the values - // when the columns number is many and scrollX is enabled. - var scrollHead = $(el).find('.dataTables_scrollHead,.dataTables_scrollFoot'); - var cssOverflowHead = scrollHead.css('overflow'); - var scrollBody = $(el).find('.dataTables_scrollBody'); - var cssOverflowBody = scrollBody.css('overflow'); - var scrollTable = $(el).find('.dataTables_scroll'); - var cssOverflowTable = scrollTable.css('overflow'); - if (cssOverflowHead === 'hidden') { - $x.on('show hide', function(e) { - if (e.type === 'show') { - scrollHead.css('overflow', 'visible'); - scrollBody.css('overflow', 'visible'); - scrollTable.css('overflow-x', 'scroll'); - } else { - scrollHead.css('overflow', cssOverflowHead); - scrollBody.css('overflow', cssOverflowBody); - scrollTable.css('overflow-x', cssOverflowTable); - } - }); - $x.css('z-index', 25); - } - - if (inArray(type, ['factor', 'logical'])) { - $input.on({ - click: function() { - $input.parent().hide(); $x.show().trigger('show'); filter[0].selectize.focus(); - }, - input: function() { - if ($input.val() === '') filter[0].selectize.setValue([]); - } - }); - var $input2 = $x.children('select'); - filter = $input2.selectize({ - options: $input2.data('options').map(function(v, i) { - return ({text: v, value: v}); - }), - plugins: ['remove_button'], - hideSelected: true, - onChange: function(value) { - if (value === null) value = []; // compatibility with jQuery 3.0 - $input.val(value.length ? JSON.stringify(value) : ''); - if (value.length) $input.trigger('input'); - $input.attr('title', $input.val()); - if (server) { - table.column(i).search(value.length ? encode_plus(JSON.stringify(value)) : '').draw(); - return; - } - // turn off filter if nothing selected - $td.data('filter', value.length > 0); - table.draw(); // redraw table, and filters will be applied - } - }); - if (searchCol) filter[0].selectize.setValue(JSON.parse(searchCol)); - filter[0].selectize.on('blur', function() { - $x.hide().trigger('hide'); $input.parent().show(); $input.trigger('blur'); - }); - filter.next('div').css('margin-bottom', 'auto'); - } else if (type === 'character') { - var fun = function() { - searchColumn(i, $input.val()).draw(); - }; - if (server) { - fun = $.fn.dataTable.util.throttle(fun, options.searchDelay); - } - $input.on('input', fun); - } else if (inArray(type, ['number', 'integer', 'date', 'time'])) { - var $x0 = $x; - $x = $x0.children('div').first(); - $x0.css({ - 'background-color': '#fff', - 'border': '1px #ddd solid', - 'border-radius': '4px', - 'padding': '20px 20px 10px 20px' - }); - var $spans = $x0.children('span').css({ - 'margin-top': '10px', - 'white-space': 'nowrap' - }); - var $span1 = $spans.first(), $span2 = $spans.last(); - var r1 = +$x.data('min'), r2 = +$x.data('max'); - // when the numbers are too small or have many decimal places, the - // slider may have numeric precision problems (#150) - var scale = Math.pow(10, Math.max(0, +$x.data('scale') || 0)); - r1 = Math.round(r1 * scale); r2 = Math.round(r2 * scale); - var scaleBack = function(x, scale) { - if (scale === 1) return x; - var d = Math.round(Math.log(scale) / Math.log(10)); - // to avoid problems like 3.423/100 -> 0.034230000000000003 - return (x / scale).toFixed(d); - }; - $input.on({ - focus: function() { - $x0.show().trigger('show'); - // first, make sure the slider div leaves at least 20px between - // the two (slider value) span's - $x0.width(Math.max(160, $span1.outerWidth() + $span2.outerWidth() + 20)); - // then, if the input is really wide, make the slider the same - // width as the input - if ($x0.outerWidth() < $input.outerWidth()) { - $x0.outerWidth($input.outerWidth()); - } - // make sure the slider div does not reach beyond the right margin - if ($(window).width() < $x0.offset().left + $x0.width()) { - $x0.offset({ - 'left': $input.offset().left + $input.outerWidth() - $x0.outerWidth() - }); - } - }, - blur: function() { - $x0.hide().trigger('hide'); - }, - input: function() { - if ($input.val() === '') filter.val([r1, r2]); - }, - change: function() { - var v = $input.val().replace(/\s/g, ''); - if (v === '') return; - v = v.split('...'); - if (v.length !== 2) { - $input.parent().addClass('has-error'); - return; - } - if (v[0] === '') v[0] = r1; - if (v[1] === '') v[1] = r2; - $input.parent().removeClass('has-error'); - // treat date as UTC time at midnight - var strTime = function(x) { - var s = type === 'date' ? 'T00:00:00Z' : ''; - var t = new Date(x + s).getTime(); - // add 10 minutes to date since it does not hurt the date, and - // it helps avoid the tricky floating point arithmetic problems, - // e.g. sometimes the date may be a few milliseconds earlier - // than the midnight due to precision problems in noUiSlider - return type === 'date' ? t + 3600000 : t; - }; - if (inArray(type, ['date', 'time'])) { - v[0] = strTime(v[0]); - v[1] = strTime(v[1]); - } - if (v[0] != r1) v[0] *= scale; - if (v[1] != r2) v[1] *= scale; - filter.val(v); - } - }); - var formatDate = function(d, isoFmt) { - d = scaleBack(d, scale); - if (type === 'number') return d; - if (type === 'integer') return parseInt(d); - var x = new Date(+d); - var fmt = ('filterDateFmt' in data) ? data.filterDateFmt[i] : undefined; - if (fmt !== undefined && isoFmt === false) return x[fmt.method].apply(x, fmt.params); - if (type === 'date') { - var pad0 = function(x) { - return ('0' + x).substr(-2, 2); - }; - return x.getUTCFullYear() + '-' + pad0(1 + x.getUTCMonth()) - + '-' + pad0(x.getUTCDate()); - } else { - return x.toISOString(); - } - }; - var opts = type === 'date' ? { step: 60 * 60 * 1000 } : - type === 'integer' ? { step: 1 } : {}; - filter = $x.noUiSlider($.extend({ - start: [r1, r2], - range: {min: r1, max: r2}, - connect: true - }, opts)); - if (scale > 1) (function() { - var t1 = r1, t2 = r2; - var val = filter.val(); - while (val[0] > r1 || val[1] < r2) { - if (val[0] > r1) { - t1 -= val[0] - r1; - } - if (val[1] < r2) { - t2 += r2 - val[1]; - } - filter = $x.noUiSlider($.extend({ - start: [t1, t2], - range: {min: t1, max: t2}, - connect: true - }, opts), true); - val = filter.val(); - } - r1 = t1; r2 = t2; - })(); - var updateSliderText = function(v1, v2) { - $span1.text(formatDate(v1, false)); $span2.text(formatDate(v2, false)); - }; - updateSliderText(r1, r2); - var updateSlider = function(e) { - var val = filter.val(); - // turn off filter if in full range - $td.data('filter', val[0] > r1 || val[1] < r2); - var v1 = formatDate(val[0]), v2 = formatDate(val[1]), ival; - if ($td.data('filter')) { - ival = v1 + ' ... ' + v2; - $input.attr('title', ival).val(ival).trigger('input'); - } else { - $input.attr('title', '').val(''); - } - updateSliderText(val[0], val[1]); - if (e.type === 'slide') return; // no searching when sliding only - if (server) { - table.column(i).search($td.data('filter') ? ival : '').draw(); - return; - } - table.draw(); - }; - filter.on({ - set: updateSlider, - slide: updateSlider - }); - } - - // server-side processing will be handled by R (or whatever server - // language you use); the following code is only needed for client-side - // processing - if (server) { - // if a search string has been pre-set, search now - if (searchCol) searchColumn(i, searchCol).draw(); - return; - } - - var customFilter = function(settings, data, dataIndex) { - // there is no way to attach a search function to a specific table, - // and we need to make sure a global search function is not applied to - // all tables (i.e. a range filter in a previous table should not be - // applied to the current table); we use the settings object to - // determine if we want to perform searching on the current table, - // since settings.sTableId will be different to different tables - if (table.settings()[0] !== settings) return true; - // no filter on this column or no need to filter this column - if (typeof filter === 'undefined' || !$td.data('filter')) return true; - - var r = filter.val(), v, r0, r1; - var i_data = function(i) { - if (!colReorderEnabled()) return i; - var order = table.colReorder.order(), k; - for (k = 0; k < order.length; ++k) if (order[k] === i) return k; - return i; // in theory it will never be here... - } - v = data[i_data(i)]; - if (type === 'number' || type === 'integer') { - v = parseFloat(v); - // how to handle NaN? currently exclude these rows - if (isNaN(v)) return(false); - r0 = parseFloat(scaleBack(r[0], scale)) - r1 = parseFloat(scaleBack(r[1], scale)); - if (v >= r0 && v <= r1) return true; - } else if (type === 'date' || type === 'time') { - v = new Date(v); - r0 = new Date(r[0] / scale); r1 = new Date(r[1] / scale); - if (v >= r0 && v <= r1) return true; - } else if (type === 'factor') { - if (r.length === 0 || inArray(v, r)) return true; - } else if (type === 'logical') { - if (r.length === 0) return true; - if (inArray(v === '' ? 'na' : v, r)) return true; - } - return false; - }; - - $.fn.dataTable.ext.search.push(customFilter); - - // search for the preset search strings if it is non-empty - if (searchCol) { - if (inArray(type, ['factor', 'logical'])) { - filter[0].selectize.setValue(JSON.parse(searchCol)); - } else if (type === 'character') { - $input.trigger('input'); - } else if (inArray(type, ['number', 'integer', 'date', 'time'])) { - $input.trigger('change'); - } - } - - }); - - } - - // highlight search keywords - var highlight = function() { - var body = $(table.table().body()); - // removing the old highlighting first - body.unhighlight(); - - // don't highlight the "not found" row, so we get the rows using the api - if (table.rows({ filter: 'applied' }).data().length === 0) return; - // highlight global search keywords - body.highlight($.trim(table.search()).split(/\s+/)); - // then highlight keywords from individual column filters - if (filterRow) filterRow.each(function(i, td) { - var $td = $(td), type = $td.data('type'); - if (type !== 'character') return; - var $input = $td.children('div').first().children('input'); - var column = table.column(i).nodes().to$(), - val = $.trim($input.val()); - if (type !== 'character' || val === '') return; - column.highlight(val.split(/\s+/)); - }); - }; - - if (options.searchHighlight) { - table - .on('draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth', highlight) - .on('destroy', function() { - // remove event handler - table.off('draw.dt.dth column-visibility.dt.dth column-reorder.dt.dth'); - }); - - // Set the option for escaping regex characters in our search string. This will be used - // for all future matching. - jQuery.fn.highlight.options.escapeRegex = (!options.search || !options.search.regex); - - // initial highlight for state saved conditions and initial states - highlight(); - } - - // run the callback function on the table instance - if (typeof data.callback === 'function') data.callback(table); - - // double click to edit the cell, row, column, or all cells - if (data.editable) table.on('dblclick.dt', 'tbody td', function(e) { - // only bring up the editor when the cell itself is dbclicked, and ignore - // other dbclick events bubbled up (e.g. from the ) - if (e.target !== this) return; - var target = [], immediate = false; - switch (data.editable.target) { - case 'cell': - target = [this]; - immediate = true; // edit will take effect immediately - break; - case 'row': - target = table.cells(table.cell(this).index().row, '*').nodes(); - break; - case 'column': - target = table.cells('*', table.cell(this).index().column).nodes(); - break; - case 'all': - target = table.cells().nodes(); - break; - default: - throw 'The editable parameter must be "cell", "row", "column", or "all"'; - } - var disableCols = data.editable.disable ? data.editable.disable.columns : null; - for (var i = 0; i < target.length; i++) { - (function(cell, current) { - var $cell = $(cell), html = $cell.html(); - var _cell = table.cell(cell), value = _cell.data(); - var $input = $(''), changed = false; - if (!immediate) { - $cell.data('input', $input).data('html', html); - $input.attr('title', 'Hit Ctrl+Enter to finish editing, or Esc to cancel'); - } - $input.val(value); - if (inArray(_cell.index().column, disableCols)) { - $input.attr('readonly', '').css('filter', 'invert(25%)'); - } - $cell.empty().append($input); - if (cell === current) $input.focus(); - $input.css('width', '100%'); - - if (immediate) $input.on('change', function() { - changed = true; - var valueNew = $input.val(); - if (valueNew != value) { - _cell.data(valueNew); - if (HTMLWidgets.shinyMode) { - changeInput('cell_edit', [cellInfo(cell)], 'DT.cellInfo', null, {priority: "event"}); - } - // for server-side processing, users have to call replaceData() to update the table - if (!server) table.draw(false); - } else { - $cell.html(html); - } - $input.remove(); - }).on('blur', function() { - if (!changed) $input.trigger('change'); - }).on('keyup', function(e) { - // hit Escape to cancel editing - if (e.keyCode === 27) $input.trigger('blur'); - }); - - // bulk edit (row, column, or all) - if (!immediate) $input.on('keyup', function(e) { - var removeInput = function($cell, restore) { - $cell.data('input').remove(); - if (restore) $cell.html($cell.data('html')); - } - if (e.keyCode === 27) { - for (var i = 0; i < target.length; i++) { - removeInput($(target[i]), true); - } - } else if (e.keyCode === 13 && e.ctrlKey) { - // Ctrl + Enter - var cell, $cell, _cell, cellData = []; - for (var i = 0; i < target.length; i++) { - cell = target[i]; $cell = $(cell); _cell = table.cell(cell); - _cell.data($cell.data('input').val()); - HTMLWidgets.shinyMode && cellData.push(cellInfo(cell)); - removeInput($cell, false); - } - if (HTMLWidgets.shinyMode) { - changeInput('cell_edit', cellData, 'DT.cellInfo', null, {priority: "event"}); - } - if (!server) table.draw(false); - } - }); - })(target[i], this); - } - }); - - // interaction with shiny - if (!HTMLWidgets.shinyMode && !crosstalkOptions.group) return; - - var methods = {}; - var shinyData = {}; - - methods.updateCaption = function(caption) { - if (!caption) return; - $table.children('caption').replaceWith(caption); - } - - // register clear functions to remove input values when the table is removed - instance.clearInputs = {}; - - var changeInput = function(id, value, type, noCrosstalk, opts) { - var event = id; - id = el.id + '_' + id; - if (type) id = id + ':' + type; - // do not update if the new value is the same as old value - if (event !== 'cell_edit' && shinyData.hasOwnProperty(id) && shinyData[id] === JSON.stringify(value)) - return; - shinyData[id] = JSON.stringify(value); - if (HTMLWidgets.shinyMode && Shiny.setInputValue) { - Shiny.setInputValue(id, value, opts); - if (!instance.clearInputs[id]) instance.clearInputs[id] = function() { - Shiny.setInputValue(id, null); - } - } - - // HACK - if (event === "rows_selected" && !noCrosstalk) { - if (crosstalkOptions.group) { - var keys = crosstalkOptions.key; - var selectedKeys = null; - if (value) { - selectedKeys = []; - for (var i = 0; i < value.length; i++) { - // The value array's contents use 1-based row numbers, so we must - // convert to 0-based before indexing into the keys array. - selectedKeys.push(keys[value[i] - 1]); - } - } - instance.ctselectHandle.set(selectedKeys); - } - } - }; - - var addOne = function(x) { - return x.map(function(i) { return 1 + i; }); - }; - - var unique = function(x) { - var ux = []; - $.each(x, function(i, el){ - if ($.inArray(el, ux) === -1) ux.push(el); - }); - return ux; - } - - // change the row index of a cell - var tweakCellIndex = function(cell) { - var info = cell.index(); - // some cell may not be valid. e.g, #759 - // when using the RowGroup extension, datatables will - // generate the row label and the cells are not part of - // the data thus contain no row/col info - if (info === undefined) - return {row: null, col: null}; - if (server) { - info.row = DT_rows_current[info.row]; - } else { - info.row += 1; - } - return {row: info.row, col: info.column}; - } - - // a flag to indicates if select extension is initialized or not - var flagSelectExt = table.settings()[0]._select !== undefined; - // the Select extension should only be used in the client mode and - // when the selection.mode is set to none - if (data.selection.mode === 'none' && !server && flagSelectExt) { - var updateRowsSelected = function() { - var rows = table.rows({selected: true}); - var selected = []; - $.each(rows.indexes().toArray(), function(i, v) { - selected.push(v + 1); - }); - changeInput('rows_selected', selected); - } - var updateColsSelected = function() { - var columns = table.columns({selected: true}); - changeInput('columns_selected', columns.indexes().toArray()); - } - var updateCellsSelected = function() { - var cells = table.cells({selected: true}); - var selected = []; - cells.every(function() { - var row = this.index().row; - var col = this.index().column; - selected = selected.concat([[row + 1, col]]); - }); - changeInput('cells_selected', transposeArray2D(selected), 'shiny.matrix'); - } - table.on('select deselect', function(e, dt, type, indexes) { - updateRowsSelected(); - updateColsSelected(); - updateCellsSelected(); - }) - } - - var selMode = data.selection.mode, selTarget = data.selection.target; - if (inArray(selMode, ['single', 'multiple'])) { - var selClass = inArray(data.style, ['bootstrap', 'bootstrap4']) ? 'active' : 'selected'; - var selected = data.selection.selected, selected1, selected2; - // selected1: row indices; selected2: column indices - if (selected === null) { - selected1 = selected2 = []; - } else if (selTarget === 'row') { - selected1 = $.makeArray(selected); - } else if (selTarget === 'column') { - selected2 = $.makeArray(selected); - } else if (selTarget === 'row+column') { - selected1 = $.makeArray(selected.rows); - selected2 = $.makeArray(selected.cols); - } - - // After users reorder the rows or filter the table, we cannot use the table index - // directly. Instead, we need this function to find out the rows between the two clicks. - // If user filter the table again between the start click and the end click, the behavior - // would be undefined, but it should not be a problem. - var shiftSelRowsIndex = function(start, end) { - var indexes = server ? DT_rows_all : table.rows({ search: 'applied' }).indexes().toArray(); - start = indexes.indexOf(start); end = indexes.indexOf(end); - // if start is larger than end, we need to swap - if (start > end) { - var tmp = end; end = start; start = tmp; - } - return indexes.slice(start, end + 1); - } - - var serverRowIndex = function(clientRowIndex) { - return server ? DT_rows_current[clientRowIndex] : clientRowIndex + 1; - } - - // row, column, or cell selection - var lastClickedRow; - if (inArray(selTarget, ['row', 'row+column'])) { - var selectedRows = function() { - var rows = table.rows('.' + selClass); - var idx = rows.indexes().toArray(); - if (!server) return addOne(idx); - idx = idx.map(function(i) { - return DT_rows_current[i]; - }); - selected1 = selMode === 'multiple' ? unique(selected1.concat(idx)) : idx; - return selected1; - } - table.on('mousedown.dt', 'tbody tr', function(e) { - var $this = $(this), thisRow = table.row(this); - if (selMode === 'multiple') { - if (e.shiftKey && lastClickedRow !== undefined) { - // select or de-select depends on the last clicked row's status - var flagSel = !$this.hasClass(selClass); - var crtClickedRow = serverRowIndex(thisRow.index()); - if (server) { - var rowsIndex = shiftSelRowsIndex(lastClickedRow, crtClickedRow); - // update current page's selClass - rowsIndex.map(function(i) { - var rowIndex = DT_rows_current.indexOf(i); - if (rowIndex >= 0) { - var row = table.row(rowIndex).nodes().to$(); - var flagRowSel = !row.hasClass(selClass); - if (flagSel === flagRowSel) row.toggleClass(selClass); - } - }); - // update selected1 - if (flagSel) { - selected1 = unique(selected1.concat(rowsIndex)); - } else { - selected1 = selected1.filter(function(index) { - return !inArray(index, rowsIndex); - }); - } - } else { - // js starts from 0 - shiftSelRowsIndex(lastClickedRow - 1, crtClickedRow - 1).map(function(value) { - var row = table.row(value).nodes().to$(); - var flagRowSel = !row.hasClass(selClass); - if (flagSel === flagRowSel) row.toggleClass(selClass); - }); - } - e.preventDefault(); - } else { - $this.toggleClass(selClass); - } - } else { - if ($this.hasClass(selClass)) { - $this.removeClass(selClass); - } else { - table.$('tr.' + selClass).removeClass(selClass); - $this.addClass(selClass); - } - } - if (server && !$this.hasClass(selClass)) { - var id = DT_rows_current[thisRow.index()]; - // remove id from selected1 since its class .selected has been removed - if (inArray(id, selected1)) selected1.splice($.inArray(id, selected1), 1); - } - changeInput('rows_selected', selectedRows()); - changeInput('row_last_clicked', serverRowIndex(thisRow.index())); - lastClickedRow = serverRowIndex(thisRow.index()); - }); - changeInput('rows_selected', selected1); - var selectRows = function() { - table.$('tr.' + selClass).removeClass(selClass); - if (selected1.length === 0) return; - if (server) { - table.rows({page: 'current'}).every(function() { - if (inArray(DT_rows_current[this.index()], selected1)) { - $(this.node()).addClass(selClass); - } - }); - } else { - var selected0 = selected1.map(function(i) { return i - 1; }); - $(table.rows(selected0).nodes()).addClass(selClass); - } - } - selectRows(); // in case users have specified pre-selected rows - // restore selected rows after the table is redrawn (e.g. sort/search/page); - // client-side tables will preserve the selections automatically; for - // server-side tables, we have to *real* row indices are in `selected1` - if (server) table.on('draw.dt', selectRows); - methods.selectRows = function(selected) { - selected1 = $.makeArray(selected); - selectRows(); - changeInput('rows_selected', selected1); - } - } - - if (inArray(selTarget, ['column', 'row+column'])) { - if (selTarget === 'row+column') { - $(table.columns().footer()).css('cursor', 'pointer'); - } - var callback = function() { - var colIdx = selTarget === 'column' ? table.cell(this).index().column : - $.inArray(this, table.columns().footer()), - thisCol = $(table.column(colIdx).nodes()); - if (colIdx === -1) return; - if (thisCol.hasClass(selClass)) { - thisCol.removeClass(selClass); - selected2.splice($.inArray(colIdx, selected2), 1); - } else { - if (selMode === 'single') $(table.cells().nodes()).removeClass(selClass); - thisCol.addClass(selClass); - selected2 = selMode === 'single' ? [colIdx] : unique(selected2.concat([colIdx])); - } - changeInput('columns_selected', selected2); - } - if (selTarget === 'column') { - $(table.table().body()).on('click.dt', 'td', callback); - } else { - $(table.table().footer()).on('click.dt', 'tr th', callback); - } - changeInput('columns_selected', selected2); - var selectCols = function() { - table.columns().nodes().flatten().to$().removeClass(selClass); - if (selected2.length > 0) - table.columns(selected2).nodes().flatten().to$().addClass(selClass); - } - selectCols(); // in case users have specified pre-selected columns - if (server) table.on('draw.dt', selectCols); - methods.selectColumns = function(selected) { - selected2 = $.makeArray(selected); - selectCols(); - changeInput('columns_selected', selected2); - } - } - - if (selTarget === 'cell') { - var selected3; - if (selected === null) { - selected3 = []; - } else { - selected3 = selected; - } - var findIndex = function(ij) { - for (var i = 0; i < selected3.length; i++) { - if (ij[0] === selected3[i][0] && ij[1] === selected3[i][1]) return i; - } - return -1; - } - table.on('click.dt', 'tbody td', function() { - var $this = $(this), info = tweakCellIndex(table.cell(this)); - if ($this.hasClass(selClass)) { - $this.removeClass(selClass); - selected3.splice(findIndex([info.row, info.col]), 1); - } else { - if (selMode === 'single') $(table.cells().nodes()).removeClass(selClass); - $this.addClass(selClass); - selected3 = selMode === 'single' ? [[info.row, info.col]] : - unique(selected3.concat([[info.row, info.col]])); - } - changeInput('cells_selected', transposeArray2D(selected3), 'shiny.matrix'); - }); - changeInput('cells_selected', transposeArray2D(selected3), 'shiny.matrix'); - var selectCells = function() { - table.$('td.' + selClass).removeClass(selClass); - if (selected3.length === 0) return; - if (server) { - table.cells({page: 'current'}).every(function() { - var info = tweakCellIndex(this); - if (findIndex([info.row, info.col], selected3) > -1) - $(this.node()).addClass(selClass); - }); - } else { - selected3.map(function(ij) { - $(table.cell(ij[0] - 1, ij[1]).node()).addClass(selClass); - }); - } - }; - selectCells(); // in case users have specified pre-selected columns - if (server) table.on('draw.dt', selectCells); - methods.selectCells = function(selected) { - selected3 = selected ? selected : []; - selectCells(); - changeInput('cells_selected', transposeArray2D(selected3), 'shiny.matrix'); - } - } - } - - // expose some table info to Shiny - var updateTableInfo = function(e, settings) { - // TODO: is anyone interested in the page info? - // changeInput('page_info', table.page.info()); - var updateRowInfo = function(id, modifier) { - var idx; - if (server) { - idx = modifier.page === 'current' ? DT_rows_current : DT_rows_all; - } else { - var rows = table.rows($.extend({ - search: 'applied', - page: 'all' - }, modifier)); - idx = addOne(rows.indexes().toArray()); - } - changeInput('rows' + '_' + id, idx); - }; - updateRowInfo('current', {page: 'current'}); - updateRowInfo('all', {}); - } - table.on('draw.dt', updateTableInfo); - updateTableInfo(); - - // state info - table.on('draw.dt column-visibility.dt', function() { - changeInput('state', table.state()); - }); - changeInput('state', table.state()); - - // search info - var updateSearchInfo = function() { - changeInput('search', table.search()); - if (filterRow) changeInput('search_columns', filterRow.toArray().map(function(td) { - return $(td).find('input').first().val(); - })); - } - table.on('draw.dt', updateSearchInfo); - updateSearchInfo(); - - var cellInfo = function(thiz) { - var info = tweakCellIndex(table.cell(thiz)); - info.value = table.cell(thiz).data(); - return info; - } - // the current cell clicked on - table.on('click.dt', 'tbody td', function() { - changeInput('cell_clicked', cellInfo(this)); - }) - changeInput('cell_clicked', {}); - - // do not trigger table selection when clicking on links unless they have classes - table.on('click.dt', 'tbody td a', function(e) { - if (this.className === '') e.stopPropagation(); - }); - - methods.addRow = function(data, rowname) { - var data0 = table.row(0).data(), n = data0.length, d = n - data.length; - if (d === 1) { - data = rowname.concat(data) - } else if (d !== 0) { - console.log(data); - console.log(data0); - throw 'New data must be of the same length as current data (' + n + ')'; - }; - table.row.add(data).draw(); - } - - methods.updateSearch = function(keywords) { - if (keywords.global !== null) - $(table.table().container()).find('input[type=search]').first() - .val(keywords.global).trigger('input'); - var columns = keywords.columns; - if (!filterRow || columns === null) return; - filterRow.toArray().map(function(td, i) { - var v = typeof columns === 'string' ? columns : columns[i]; - if (typeof v === 'undefined') { - console.log('The search keyword for column ' + i + ' is undefined') - return; - } - $(td).find('input').first().val(v); - searchColumn(i, v); - }); - table.draw(); - } - - methods.hideCols = function(hide, reset) { - if (reset) table.columns().visible(true, false); - table.columns(hide).visible(false); - } - - methods.showCols = function(show, reset) { - if (reset) table.columns().visible(false, false); - table.columns(show).visible(true); - } - - methods.colReorder = function(order, origOrder) { - table.colReorder.order(order, origOrder); - } - - methods.selectPage = function(page) { - if (table.page.info().pages < page || page < 1) { - throw 'Selected page is out of range'; - }; - table.page(page - 1).draw(false); - } - - methods.reloadData = function(resetPaging, clearSelection) { - // empty selections first if necessary - if (methods.selectRows && inArray('row', clearSelection)) methods.selectRows([]); - if (methods.selectColumns && inArray('column', clearSelection)) methods.selectColumns([]); - if (methods.selectCells && inArray('cell', clearSelection)) methods.selectCells([]); - table.ajax.reload(null, resetPaging); - } - - table.shinyMethods = methods; - }, - resize: function(el, width, height, instance) { - if (instance.data) this.renderValue(el, instance.data, instance); - - // dynamically adjust height if fillContainer = TRUE - if (instance.fillContainer) - this.fillAvailableHeight(el, height); - - this.adjustWidth(el); - }, - - // dynamically set the scroll body to fill available height - // (used with fillContainer = TRUE) - fillAvailableHeight: function(el, availableHeight) { - - // see how much of the table is occupied by header/footer elements - // and use that to compute a target scroll body height - var dtWrapper = $(el).find('div.dataTables_wrapper'); - var dtScrollBody = $(el).find($('div.dataTables_scrollBody')); - var framingHeight = dtWrapper.innerHeight() - dtScrollBody.innerHeight(); - var scrollBodyHeight = availableHeight - framingHeight; - - // set the height - dtScrollBody.height(scrollBodyHeight + 'px'); - }, - - // adjust the width of columns; remove the hard-coded widths on table and the - // scroll header when scrollX/Y are enabled - adjustWidth: function(el) { - var $el = $(el), table = $el.data('datatable'); - if (table) table.columns.adjust(); - $el.find('.dataTables_scrollHeadInner').css('width', '') - .children('table').css('margin-left', ''); - } -}); - - if (!HTMLWidgets.shinyMode) return; - - Shiny.addCustomMessageHandler('datatable-calls', function(data) { - var id = data.id; - var el = document.getElementById(id); - var table = el ? $(el).data('datatable') : null; - if (!table) { - console.log("Couldn't find table with id " + id); - return; - } - - var methods = table.shinyMethods, call = data.call; - if (methods[call.method]) { - methods[call.method].apply(table, call.args); - } else { - console.log("Unknown method " + call.method); - } - }); - -})(); diff --git a/docs/articles/interval-stats_files/datatables-css-0.0.0/datatables-crosstalk.css b/docs/articles/interval-stats_files/datatables-css-0.0.0/datatables-crosstalk.css deleted file mode 100644 index 43422d25..00000000 --- a/docs/articles/interval-stats_files/datatables-css-0.0.0/datatables-crosstalk.css +++ /dev/null @@ -1,7 +0,0 @@ -.dt-crosstalk-fade { - opacity: 0.2; -} - -html body div.DTS div.dataTables_scrollBody { - background: none; -} diff --git a/docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.extra.css b/docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.extra.css deleted file mode 100644 index dbbac6dd..00000000 --- a/docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.extra.css +++ /dev/null @@ -1,8 +0,0 @@ -/* Selected rows/cells */ -table.dataTable tr.selected td, table.dataTable td.selected { - background-color: #b0bed9 !important; -} -/* In case of scrollX/Y or FixedHeader */ -.dataTables_scrollBody .dataTables_sizing { - visibility: hidden; -} diff --git a/docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.min.css b/docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.min.css deleted file mode 100644 index 71ae98a4..00000000 --- a/docs/articles/interval-stats_files/dt-core-1.10.20/css/jquery.dataTables.min.css +++ /dev/null @@ -1 +0,0 @@ -table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC)}table.dataTable thead .sorting_asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}table.dataTable thead .sorting_desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}table.dataTable thead .sorting_asc_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAW0lEQVQoz2NgoCm4w3Vnwh02wspK7/y6k01Ikdadx3f+37l9RxmfIsY7c4GKQHDiHUbcyhzvvIMq+3THBpci3jv7oIpAcMcdduzKEu/8vPMdDn/eiWQYBYMKAAC3ykIEuYQJUgAAAABJRU5ErkJggg==)}table.dataTable thead .sorting_desc_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAWUlEQVQoz2NgGAWDCtyJvPPzznc4/HknEbsy9js77vyHw313eHGZZ3PnE1TRuzuOuK1lvDMRqmzuHUZ87lO+cxuo6PEdLUIeyb7z604pYf+y3Zlwh4u2YQoAc7ZCBHH4jigAAAAASUVORK5CYII=)}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} diff --git a/docs/articles/interval-stats_files/dt-core-1.10.20/js/jquery.dataTables.min.js b/docs/articles/interval-stats_files/dt-core-1.10.20/js/jquery.dataTables.min.js deleted file mode 100644 index d297f256..00000000 --- a/docs/articles/interval-stats_files/dt-core-1.10.20/js/jquery.dataTables.min.js +++ /dev/null @@ -1,180 +0,0 @@ -/*! - Copyright 2008-2019 SpryMedia Ltd. - - This source file is free software, available under the following license: - MIT license - http://datatables.net/license - - This source file is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - - For details please refer to: http://www.datatables.net - DataTables 1.10.20 - ©2008-2019 SpryMedia Ltd - datatables.net/license -*/ -var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(f,z,y){f instanceof String&&(f=String(f));for(var p=f.length,H=0;H").css({position:"fixed",top:0,left:-1*f(z).scrollLeft(),height:1,width:1, -overflow:"hidden"}).append(f("
    ").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(f("
    ").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}f.extend(a.oBrowser,q.__browser);a.oScroll.iBarWidth=q.__browser.barWidth} -function mb(a,b,c,d,e,h){var g=!1;if(c!==p){var k=c;g=!0}for(;d!==e;)a.hasOwnProperty(d)&&(k=g?b(k,a[d],d,a):a[d],g=!0,d+=h);return k}function Ia(a,b){var c=q.defaults.column,d=a.aoColumns.length;c=f.extend({},q.models.oColumn,c,{nTh:b?b:y.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=f.extend({},q.models.oSearch,c[d]);ma(a,d,f(b).data())}function ma(a,b,c){b=a.aoColumns[b]; -var d=a.oClasses,e=f(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==p&&null!==c&&(kb(c),L(q.defaults.column,c,!0),c.mDataProp===p||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),f.extend(b,c),M(b,c,"sWidth","sWidthOrig"),c.iDataSort!==p&&(b.aDataSort=[c.iDataSort]),M(b,c,"aDataSort"));var g=b.mData,k=U(g), -l=b.mRender?U(b.mRender):null;c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=f.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=k(a,b,p,c);return l&&b?l(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==f.inArray("asc",b.asSorting);c=-1!==f.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass= -d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function aa(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ja(a);for(var c=0,d=b.length;cn[m])d(k.length+ -n[m],l);else if("string"===typeof n[m]){var w=0;for(g=k.length;wb&&a[e]--; -1!=d&&c===p&&a.splice(d,1)}function ea(a,b,c,d){var e=a.aoData[b],h,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=I(a,b,d,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var k=e.anCells;if(k)if(d!==p)g(k[d],d);else for(c=0,h=k.length;c").appendTo(d));var l=0;for(b=k.length;ltr").attr("role","row");f(d).find(">tr>th, >tr>td").addClass(g.sHeaderTH);f(e).find(">tr>th, >tr>td").addClass(g.sFooterTH);if(null!==e)for(a=a.aoFooter[0],l=0,b=a.length;l=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);g=a._iDisplayStart;var n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,K(a,!1);else if(!k)a.iDraw++;else if(!a.bDestroying&&!qb(a))return;if(0!==l.length)for(h=k?a.aoData.length:n,k=k?0:g;k",{"class":e?d[0]:""}).append(f("",{valign:"top",colSpan:W(a),"class":a.oClasses.sRowEmpty}).html(c))[0];A(a,"aoHeaderCallback","header",[f(a.nTHead).children("tr")[0], -Oa(a),g,n,l]);A(a,"aoFooterCallback","footer",[f(a.nTFoot).children("tr")[0],Oa(a),g,n,l]);d=f(a.nTBody);d.children().detach();d.append(f(b));A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function V(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&rb(a);d?ia(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;S(a);a._drawHold=!1}function sb(a){var b=a.oClasses,c=f(a.nTable);c=f("
    ").insertBefore(c);var d=a.oFeatures,e= -f("
    ",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),g,k,l,n,m,p,u=0;u")[0];n=h[u+1];if("'"==n||'"'==n){m="";for(p=2;h[u+p]!=n;)m+=h[u+p],p++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),l.id=n[0].substr(1,n[0].length-1),l.className=n[1]):"#"==m.charAt(0)?l.id=m.substr(1, -m.length-1):l.className=m;u+=p}e.append(l);e=f(l)}else if(">"==k)e=e.parent();else if("l"==k&&d.bPaginate&&d.bLengthChange)g=tb(a);else if("f"==k&&d.bFilter)g=ub(a);else if("r"==k&&d.bProcessing)g=vb(a);else if("t"==k)g=wb(a);else if("i"==k&&d.bInfo)g=xb(a);else if("p"==k&&d.bPaginate)g=yb(a);else if(0!==q.ext.feature.length)for(l=q.ext.feature,p=0,n=l.length;p',k=d.sSearch;k=k.match(/_INPUT_/)?k.replace("_INPUT_",g):k+g;b=f("
    ",{id:h.f?null:c+"_filter","class":b.sFilter}).append(f("
    ").addClass(b.sLength);a.aanFeatures.l||(l[0].id=c+"_length");l.children().append(a.oLanguage.sLengthMenu.replace("_MENU_", -e[0].outerHTML));f("select",l).val(a._iDisplayLength).on("change.DT",function(b){Va(a,f(this).val());S(a)});f(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&f("select",l).val(d)});return l[0]}function yb(a){var b=a.sPaginationType,c=q.ext.pager[b],d="function"===typeof c,e=function(a){S(a)};b=f("
    ").addClass(a.oClasses.sPaging+b)[0];var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,g=a._iDisplayLength, -f=a.fnRecordsDisplay(),m=-1===g;b=m?0:Math.ceil(b/g);g=m?1:Math.ceil(f/g);f=c(b,g);var p;m=0;for(p=h.p.length;mh&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function K(a,b){a.oFeatures.bProcessing&&f(a.aanFeatures.r).css("display",b?"block":"none");A(a,null,"processing",[a,b])}function wb(a){var b=f(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY, -h=a.oClasses,g=b.children("caption"),k=g.length?g[0]._captionSide:null,l=f(b[0].cloneNode(!1)),n=f(b[0].cloneNode(!1)),m=b.children("tfoot");m.length||(m=null);l=f("
    ",{"class":h.sScrollWrapper}).append(f("
    ",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?B(d):null:"100%"}).append(f("
    ",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(l.removeAttr("id").css("margin-left",0).append("top"===k?g:null).append(b.children("thead"))))).append(f("
    ", -{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?B(d):null}).append(b));m&&l.append(f("
    ",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?B(d):null:"100%"}).append(f("
    ",{"class":h.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===k?g:null).append(b.children("tfoot")))));b=l.children();var p=b[0];h=b[1];var u=m?b[2]:null;if(d)f(h).on("scroll.DT",function(a){a=this.scrollLeft;p.scrollLeft=a;m&&(u.scrollLeft=a)}); -f(h).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=u;a.aoDrawCallback.push({fn:na,sName:"scrolling"});return l[0]}function na(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=f(a.nScrollHead),g=h[0].style,k=h.children("div"),l=k[0].style,n=k.children("table");k=a.nScrollBody;var m=f(k),w=k.style,u=f(a.nScrollFoot).children("div"),q=u.children("table"),t=f(a.nTHead),r=f(a.nTable),v=r[0],za=v.style,T=a.nTFoot?f(a.nTFoot):null,A=a.oBrowser, -x=A.bScrollOversize,ac=J(a.aoColumns,"nTh"),Ya=[],y=[],z=[],C=[],G,H=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};var D=k.scrollHeight>k.clientHeight;if(a.scrollBarVis!==D&&a.scrollBarVis!==p)a.scrollBarVis=D,aa(a);else{a.scrollBarVis=D;r.children("thead, tfoot").remove();if(T){var E=T.clone().prependTo(r);var F=T.find("tr");E=E.find("tr")}var I=t.clone().prependTo(r);t=t.find("tr");D=I.find("tr");I.find("th, td").removeAttr("tabindex"); -c||(w.width="100%",h[0].style.width="100%");f.each(ua(a,I),function(b,c){G=ba(a,b);c.style.width=a.aoColumns[G].sWidth});T&&N(function(a){a.style.width=""},E);h=r.outerWidth();""===c?(za.width="100%",x&&(r.find("tbody").height()>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(r.outerWidth()-b)),h=r.outerWidth()):""!==d&&(za.width=B(d),h=r.outerWidth());N(H,D);N(function(a){z.push(a.innerHTML);Ya.push(B(f(a).css("width")))},D);N(function(a,b){-1!==f.inArray(a,ac)&&(a.style.width=Ya[b])}, -t);f(D).height(0);T&&(N(H,E),N(function(a){C.push(a.innerHTML);y.push(B(f(a).css("width")))},E),N(function(a,b){a.style.width=y[b]},F),f(E).height(0));N(function(a,b){a.innerHTML='
    '+z[b]+"
    ";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=Ya[b]},D);T&&N(function(a,b){a.innerHTML='
    '+C[b]+"
    ";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=y[b]},E);r.outerWidth()< -h?(F=k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y")?h+b:h,x&&(k.scrollHeight>k.offsetHeight||"scroll"==m.css("overflow-y"))&&(za.width=B(F-b)),""!==c&&""===d||O(a,1,"Possible column misalignment",6)):F="100%";w.width=B(F);g.width=B(F);T&&(a.nScrollFoot.style.width=B(F));!e&&x&&(w.height=B(v.offsetHeight+b));c=r.outerWidth();n[0].style.width=B(c);l.width=B(c);d=r.height()>k.clientHeight||"scroll"==m.css("overflow-y");e="padding"+(A.bScrollbarLeft?"Left":"Right");l[e]=d?b+"px":"0px";T&& -(q[0].style.width=B(c),u[0].style.width=B(c),u[0].style[e]=d?b+"px":"0px");r.children("colgroup").insertBefore(r.children("thead"));m.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(k.scrollTop=0)}}function N(a,b,c){for(var d=0,e=0,h=b.length,g,k;e").appendTo(k.find("tbody"));k.find("thead, tfoot").remove(); -k.append(f(a.nTHead).clone()).append(f(a.nTFoot).clone());k.find("tfoot th, tfoot td").css("width","");n=ua(a,k.find("thead")[0]);for(q=0;q").css({width:r.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(q=0;q").css(h|| -e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(k).appendTo(p);h&&g?k.width(g):h?(k.css("width","auto"),k.removeAttr("width"),k.width()").css("width",B(a)).appendTo(b||y.body);b=a[0].offsetWidth;a.remove();return b}function Kb(a,b){var c=Lb(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:f("").html(I(a,c,b,"display"))[0]}function Lb(a,b){for(var c,d=-1,e=-1,h=0,g=a.aoData.length;hd&&(d=c.length,e=h);return e} -function B(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Y(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=f.isPlainObject(d);var h=[];var g=function(a){a.length&&!f.isArray(a[0])?h.push(a):f.merge(h,a)};f.isArray(d)&&g(d);e&&d.pre&&g(d.pre);g(a.aaSorting);e&&d.post&&g(d.post);for(a=0;an?1:0; -if(0!==m)return"asc"===l.dir?m:-m}m=c[a];n=c[b];return mn?1:0}):g.sort(function(a,b){var h,g=k.length,f=e[a]._aSortData,l=e[b]._aSortData;for(h=0;hp?1:0})}a.bSorted=!0}function Nb(a){var b=a.aoColumns,c=Y(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d/g,"");var f=h.nTh;f.removeAttribute("aria-sort"); -h.bSortable&&(0e?e+1:3))}e=0;for(h=d.length;ee?e+1:3))}a.aLastSort=d}function Mb(a,b){var c=a.aoColumns[b],d=q.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ca(a,b)));for(var h,g=q.ext.type.order[c.sType+"-pre"],k=0,f=a.aoData.length;k=h.length?[0,c[1]]:c)}));b.search!==p&&f.extend(a.oPreviousSearch, -Gb(b.search));if(b.columns)for(d=0,e=b.columns.length;d=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ra(a,b){a=a.renderer;var c=q.ext.renderer[b];return f.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function D(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ka(a,b){var c=Pb.numbers_length,d=Math.floor(c/2);b<=c?a=Z(0,b):a<=d?(a=Z(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=Z(b-(c-2),b):(a=Z(a-d+2,a+d-1),a.push("ellipsis"), -a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Ha(a){f.each({num:function(b){return Da(b,a)},"num-fmt":function(b){return Da(b,a,bb)},"html-num":function(b){return Da(b,a,Ea)},"html-num-fmt":function(b){return Da(b,a,Ea,bb)}},function(b,c){C.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(C.type.search[b+a]=C.type.search.html)})}function Qb(a){return function(){var b=[Ca(this[q.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return q.ext.internal[a].apply(this, -b)}}var q=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new v(Ca(this[C.iApiIndex])):new v(this)};this.fnAddData=function(a,b){var c=this.api(!0);a=f.isArray(a)&&(f.isArray(a[0])||f.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===p||b)&&c.draw();return a.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===p||a?b.draw(!1): -(""!==d.sX||""!==d.sY)&&na(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===p||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0);a=d.rows(a);var e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===p||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,f){e=this.api(!0);null===b||b===p? -e.search(a,c,d,f):e.column(b).search(a,c,d,f);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==p){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==p||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==p?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(), -[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){a=this.api(!0).page(a);(b===p||b)&&a.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===p||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Ca(this[C.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener= -function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===p||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===p||e)&&h.columns.adjust();(d===p||d)&&h.draw();return 0};this.fnVersionCheck=C.fnVersionCheck;var b=this,c=a===p,d=this.length;c&&(a={});this.oApi=this.internal=C.internal;for(var e in q.ext.internal)e&&(this[e]=Qb(e));this.each(function(){var e={},g=1").appendTo(w));r.nTHead=b[0];b=w.children("tbody");0===b.length&&(b=f("").appendTo(w));r.nTBody=b[0];b=w.children("tfoot");0===b.length&&0").appendTo(w));0===b.length||0===b.children().length?w.addClass(x.sNoFooter):0/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,bb=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,P=function(a){return a&&!0!==a&&"-"!==a?!1: -!0},Sb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Tb=function(a,b){cb[b]||(cb[b]=new RegExp(Ua(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(cb[b],"."):a},db=function(a,b,c){var d="string"===typeof a;if(P(a))return!0;b&&d&&(a=Tb(a,b));c&&d&&(a=a.replace(bb,""));return!isNaN(parseFloat(a))&&isFinite(a)},Ub=function(a,b,c){return P(a)?!0:P(a)||"string"===typeof a?db(a.replace(Ea,""),b,c)?!0:null:null},J=function(a,b,c){var d=[],e=0,h=a.length;if(c!== -p)for(;ea.length)){var b=a.slice().sort();for(var c=b[0],d=1, -e=b.length;d")[0],$b=ya.textContent!==p,bc=/<.*?>/g,Sa=q.util.throttle,Wb=[],G=Array.prototype,ec=function(a){var b,c=q.settings,d=f.map(c,function(a,b){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=f.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=f(a):a instanceof f&&(b=a)}else return[];if(b)return b.map(function(a){e=f.inArray(this, -d);return-1!==e?c[e]:null}).toArray()};var v=function(a,b){if(!(this instanceof v))return new v(a,b);var c=[],d=function(a){(a=ec(a))&&c.push.apply(c,a)};if(f.isArray(a))for(var e=0,h=a.length;ea?new v(b[a],this[a]):null},filter:function(a){var b=[];if(G.filter)b=G.filter.call(this,a,this);else for(var c=0,d=this.length;c").addClass(c),f("td",d).addClass(c).html(b)[0].colSpan=W(a),e.push(d[0]))};h(c,d);b._details&&b._details.detach();b._details=f(e);b._detailsShow&&b._details.insertAfter(b.nTr)},hb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==p?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=p,a._details=p)},Yb=function(a,b){var c=a.context;c.length&&a.length&&(a=c[0].aoData[a[0]],a._details&&((a._detailsShow=b)?a._details.insertAfter(a.nTr): -a._details.detach(),ic(c[0])))},ic=function(a){var b=new v(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0g){var m=f.map(d,function(a,b){return a.bVisible?b:null});return[m[m.length+g]]}return[ba(a,g)];case "name":return f.map(e,function(a,b){return a===n[1]?b:null});default:return[]}if(b.nodeName&&b._DT_CellIndex)return[b._DT_CellIndex.column];g=f(h).filter(b).map(function(){return f.inArray(this, -h)}).toArray();if(g.length||!b.nodeName)return g;g=f(b).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};t("columns()",function(a,b){a===p?a="":f.isPlainObject(a)&&(b=a,a="");b=fb(b);var c=this.iterator("table",function(c){return kc(c,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});x("columns().header()","column().header()",function(a,b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});x("columns().footer()","column().footer()",function(a, -b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});x("columns().data()","column().data()",function(){return this.iterator("column-rows",Zb,1)});x("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});x("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return la(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});x("columns().nodes()", -"column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return la(a.aoData,e,"anCells",b)},1)});x("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(b,c){if(a===p)return b.aoColumns[c].bVisible;var d=b.aoColumns,e=d[c],h=b.aoData,n;if(a!==p&&e.bVisible!==a){if(a){var m=f.inArray(!0,J(d,"bVisible"),c+1);d=0;for(n=h.length;dd;return!0};q.isDataTable=q.fnIsDataTable=function(a){var b=f(a).get(0),c=!1;if(a instanceof -q.Api)return!0;f.each(q.settings,function(a,e){a=e.nScrollHead?f("table",e.nScrollHead)[0]:null;var d=e.nScrollFoot?f("table",e.nScrollFoot)[0]:null;if(e.nTable===b||a===b||d===b)c=!0});return c};q.tables=q.fnTables=function(a){var b=!1;f.isPlainObject(a)&&(b=a.api,a=a.visible);var c=f.map(q.settings,function(b){if(!a||a&&f(b.nTable).is(":visible"))return b.nTable});return b?new v(c):c};q.camelToHungarian=L;t("$()",function(a,b){b=this.rows(b).nodes();b=f(b);return f([].concat(b.filter(a).toArray(), -b.find(a).toArray()))});f.each(["on","one","off"],function(a,b){t(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=f.map(a[0].split(/\s/),function(a){return a.match(/\.dt\b/)?a:a+".dt"}).join(" ");var d=f(this.tables().nodes());d[b].apply(d,a);return this})});t("clear()",function(){return this.iterator("table",function(a){qa(a)})});t("settings()",function(){return new v(this.context,this.context)});t("init()",function(){var a=this.context;return a.length?a[0].oInit:null});t("data()", -function(){return this.iterator("table",function(a){return J(a.aoData,"_aData")}).flatten()});t("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,h=b.nTBody,g=b.nTHead,k=b.nTFoot,l=f(e);h=f(h);var n=f(b.nTableWrapper),m=f.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);a||(new v(b)).columns().visible(!0);n.off(".DT").find(":not(tbody *)").off(".DT");f(z).off(".DT-"+b.sInstance); -e!=g.parentNode&&(l.children("thead").detach(),l.append(g));k&&e!=k.parentNode&&(l.children("tfoot").detach(),l.append(k));b.aaSorting=[];b.aaSortingFixed=[];Aa(b);f(m).removeClass(b.asStripeClasses.join(" "));f("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);h.children().detach();h.append(m);g=a?"remove":"detach";l[g]();n[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),l.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&& -h.children().each(function(a){f(this).addClass(b.asDestroyStripes[a%p])}));c=f.inArray(b,q.settings);-1!==c&&q.settings.splice(c,1)})});f.each(["column","row","cell"],function(a,b){t(b+"s().every()",function(a){var c=this.selector.opts,e=this;return this.iterator(b,function(d,f,k,l,n){a.call(e[b](f,"cell"===b?k:c,"cell"===b?c:p),f,k,l,n)})})});t("i18n()",function(a,b,c){var d=this.context[0];a=U(a)(d.oLanguage);a===p&&(a=b);c!==p&&f.isPlainObject(a)&&(a=a[c]!==p?a[c]:a._);return a.replace("%d",c)}); -q.version="1.10.20";q.settings=[];q.models={};q.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};q.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};q.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null, -sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};q.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1, -bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}}, -fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last", -sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:f.extend({},q.models.oSearch),sAjaxDataProp:"data", -sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};H(q.defaults);q.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};H(q.defaults.column);q.models.oSettings= -{oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{}, -aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0, -aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:p,oAjaxData:p,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==D(this)?1*this._iRecordsTotal: -this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==D(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};q.ext=C={buttons:{}, -classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:q.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:q.version};f.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oApi:C.internal,oStdClasses:C.classes,oPagination:C.pager}); -f.extend(q.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled", -sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"", -sJUIHeader:"",sJUIFooter:""});var Pb=q.ext.pager;f.extend(Pb,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[ka(a,b)]},simple_numbers:function(a,b){return["previous",ka(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ka(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ka(a,b),"last"]},_numbers:ka,numbers_length:7});f.extend(!0,q.ext.renderer,{pageButton:{_:function(a,b, -c,d,e,h){var g=a.oClasses,k=a.oLanguage.oPaginate,l=a.oLanguage.oAria.paginate||{},n,m,q=0,t=function(b,d){var p,r=g.sPageButtonDisabled,u=function(b){Xa(a,b.data.action,!0)};var w=0;for(p=d.length;w").appendTo(b);t(x,v)}else{n=null;m=v;x=a.iTabIndex;switch(v){case "ellipsis":b.append('');break;case "first":n=k.sFirst;0===e&&(x=-1,m+=" "+r);break;case "previous":n=k.sPrevious;0===e&&(x=-1,m+= -" "+r);break;case "next":n=k.sNext;e===h-1&&(x=-1,m+=" "+r);break;case "last":n=k.sLast;e===h-1&&(x=-1,m+=" "+r);break;default:n=v+1,m=e===v?g.sPageButtonActive:""}null!==n&&(x=f("",{"class":g.sPageButton+" "+m,"aria-controls":a.sTableId,"aria-label":l[v],"data-dt-idx":q,tabindex:x,id:0===c&&"string"===typeof v?a.sTableId+"_"+v:null}).html(n).appendTo(b),$a(x,{action:v},u),q++)}}};try{var v=f(b).find(y.activeElement).data("dt-idx")}catch(mc){}t(f(b).empty(),d);v!==p&&f(b).find("[data-dt-idx="+ -v+"]").focus()}}});f.extend(q.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return db(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!cc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||P(a)?"date":null},function(a,b){b=b.oLanguage.sDecimal;return db(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Ub(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return P(a)||"string"=== -typeof a&&-1!==a.indexOf("<")?"html":null}]);f.extend(q.ext.type.search,{html:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," ").replace(Ea,""):""},string:function(a){return P(a)?a:"string"===typeof a?a.replace(Rb," "):a}});var Da=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Tb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};f.extend(C.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return P(a)? -"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return P(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a,b){return ab?-1:0}});Ha("");f.extend(!0,q.ext.renderer,{header:{_:function(a,b,c,d){f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc: -c.sSortingClass))})},jqueryui:function(a,b,c,d){f("
    ").addClass(d.sSortJUIWrapper).append(b.contents()).append(f("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"== -k[e]?d.sSortJUIAsc:"desc"==k[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var ib=function(a){return"string"===typeof a?a.replace(//g,">").replace(/"/g,"""):a};q.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return ib(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g, -a)+f+(e||"")}}},text:function(){return{display:ib,filter:ib}}};f.extend(q.ext.internal,{_fnExternApiFunc:Qb,_fnBuildAjax:va,_fnAjaxUpdate:qb,_fnAjaxParameters:zb,_fnAjaxUpdateDraw:Ab,_fnAjaxDataSrc:wa,_fnAddColumn:Ia,_fnColumnOptions:ma,_fnAdjustColumnSizing:aa,_fnVisibleToColumnIndex:ba,_fnColumnIndexToVisible:ca,_fnVisbleColumns:W,_fnGetColumns:oa,_fnColumnTypes:Ka,_fnApplyColumnDefs:nb,_fnHungarianMap:H,_fnCamelToHungarian:L,_fnLanguageCompat:Ga,_fnBrowserDetect:lb,_fnAddData:R,_fnAddTr:pa,_fnNodeToDataIndex:function(a, -b){return b._DT_RowIndex!==p?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return f.inArray(c,a.aoData[b].anCells)},_fnGetCellData:I,_fnSetCellData:ob,_fnSplitObjNotation:Na,_fnGetObjectDataFn:U,_fnSetObjectDataFn:Q,_fnGetDataMaster:Oa,_fnClearTable:qa,_fnDeleteIndex:ra,_fnInvalidate:ea,_fnGetRowElements:Ma,_fnCreateTr:La,_fnBuildHead:pb,_fnDrawHead:ha,_fnDraw:S,_fnReDraw:V,_fnAddOptionsHtml:sb,_fnDetectHeader:fa,_fnGetUniqueThs:ua,_fnFeatureHtmlFilter:ub,_fnFilterComplete:ia,_fnFilterCustom:Db, -_fnFilterColumn:Cb,_fnFilter:Bb,_fnFilterCreateSearch:Ta,_fnEscapeRegex:Ua,_fnFilterData:Eb,_fnFeatureHtmlInfo:xb,_fnUpdateInfo:Hb,_fnInfoMacros:Ib,_fnInitialise:ja,_fnInitComplete:xa,_fnLengthChange:Va,_fnFeatureHtmlLength:tb,_fnFeatureHtmlPaginate:yb,_fnPageChange:Xa,_fnFeatureHtmlProcessing:vb,_fnProcessingDisplay:K,_fnFeatureHtmlTable:wb,_fnScrollDraw:na,_fnApplyToChildren:N,_fnCalculateColumnWidths:Ja,_fnThrottle:Sa,_fnConvertToWidth:Jb,_fnGetWidestNode:Kb,_fnGetMaxLenString:Lb,_fnStringToCss:B, -_fnSortFlatten:Y,_fnSort:rb,_fnSortAria:Nb,_fnSortListener:Za,_fnSortAttachListener:Qa,_fnSortingClasses:Aa,_fnSortData:Mb,_fnSaveState:Ba,_fnLoadState:Ob,_fnSettingsFromNode:Ca,_fnLog:O,_fnMap:M,_fnBindAction:$a,_fnCallbackReg:E,_fnCallbackFire:A,_fnLengthOverflow:Wa,_fnRenderer:Ra,_fnDataSource:D,_fnRowAttributes:Pa,_fnExtend:ab,_fnCalculateEnd:function(){}});f.fn.dataTable=q;q.$=f;f.fn.dataTableSettings=q.settings;f.fn.dataTableExt=q.ext;f.fn.DataTable=function(a){return f(this).dataTable(a).api()}; -f.each(q,function(a,b){f.fn.DataTable[a]=b});return f.fn.dataTable}); diff --git a/docs/articles/interval-stats_files/figure-html/ecfs-1.png b/docs/articles/interval-stats_files/figure-html/ecfs-1.png deleted file mode 100644 index fcab726d093c4296b9db513e210447d3e9268a2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117143 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

    Le@p4lpd}SBH?}1 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

  • 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 dKIwh<&$wddd1=|ct?S|F!%rf diff --git a/docs/articles/interval-stats_files/figure-html/pvalue_viz-1.png b/docs/articles/interval-stats_files/figure-html/pvalue_viz-1.png deleted file mode 100644 index 27401defad14990aa460496d1ff267d15662c3d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67164 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 diff --git a/docs/articles/interval-stats_files/header-attrs-2.1/header-attrs.js b/docs/articles/interval-stats_files/header-attrs-2.1/header-attrs.js deleted file mode 100644 index dd57d92e..00000000 --- a/docs/articles/interval-stats_files/header-attrs-2.1/header-attrs.js +++ /dev/null @@ -1,12 +0,0 @@ -// Pandoc 2.9 adds attributes on both header and div. We remove the former (to -// be compatible with the behavior of Pandoc < 2.8). -document.addEventListener('DOMContentLoaded', function(e) { - var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); - var i, h, a; - for (i = 0; i < hs.length; i++) { - h = hs[i]; - if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 - a = h.attributes; - while (a.length > 0) h.removeAttribute(a[0].name); - } -}); diff --git a/docs/articles/interval-stats_files/htmlwidgets-1.5.1/htmlwidgets.js b/docs/articles/interval-stats_files/htmlwidgets-1.5.1/htmlwidgets.js deleted file mode 100644 index 6f3d672d..00000000 --- a/docs/articles/interval-stats_files/htmlwidgets-1.5.1/htmlwidgets.js +++ /dev/null @@ -1,903 +0,0 @@ -(function() { - // If window.HTMLWidgets is already defined, then use it; otherwise create a - // new object. This allows preceding code to set options that affect the - // initialization process (though none currently exist). - window.HTMLWidgets = window.HTMLWidgets || {}; - - // See if we're running in a viewer pane. If not, we're in a web browser. - var viewerMode = window.HTMLWidgets.viewerMode = - /\bviewer_pane=1\b/.test(window.location); - - // See if we're running in Shiny mode. If not, it's a static document. - // Note that static widgets can appear in both Shiny and static modes, but - // obviously, Shiny widgets can only appear in Shiny apps/documents. - var shinyMode = window.HTMLWidgets.shinyMode = - typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings; - - // We can't count on jQuery being available, so we implement our own - // version if necessary. - function querySelectorAll(scope, selector) { - if (typeof(jQuery) !== "undefined" && scope instanceof jQuery) { - return scope.find(selector); - } - if (scope.querySelectorAll) { - return scope.querySelectorAll(selector); - } - } - - function asArray(value) { - if (value === null) - return []; - if ($.isArray(value)) - return value; - return [value]; - } - - // Implement jQuery's extend - function extend(target /*, ... */) { - if (arguments.length == 1) { - return target; - } - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - target[prop] = source[prop]; - } - } - } - return target; - } - - // IE8 doesn't support Array.forEach. - function forEach(values, callback, thisArg) { - if (values.forEach) { - values.forEach(callback, thisArg); - } else { - for (var i = 0; i < values.length; i++) { - callback.call(thisArg, values[i], i, values); - } - } - } - - // Replaces the specified method with the return value of funcSource. - // - // Note that funcSource should not BE the new method, it should be a function - // that RETURNS the new method. funcSource receives a single argument that is - // the overridden method, it can be called from the new method. The overridden - // method can be called like a regular function, it has the target permanently - // bound to it so "this" will work correctly. - function overrideMethod(target, methodName, funcSource) { - var superFunc = target[methodName] || function() {}; - var superFuncBound = function() { - return superFunc.apply(target, arguments); - }; - target[methodName] = funcSource(superFuncBound); - } - - // Add a method to delegator that, when invoked, calls - // delegatee.methodName. If there is no such method on - // the delegatee, but there was one on delegator before - // delegateMethod was called, then the original version - // is invoked instead. - // For example: - // - // var a = { - // method1: function() { console.log('a1'); } - // method2: function() { console.log('a2'); } - // }; - // var b = { - // method1: function() { console.log('b1'); } - // }; - // delegateMethod(a, b, "method1"); - // delegateMethod(a, b, "method2"); - // a.method1(); - // a.method2(); - // - // The output would be "b1", "a2". - function delegateMethod(delegator, delegatee, methodName) { - var inherited = delegator[methodName]; - delegator[methodName] = function() { - var target = delegatee; - var method = delegatee[methodName]; - - // The method doesn't exist on the delegatee. Instead, - // call the method on the delegator, if it exists. - if (!method) { - target = delegator; - method = inherited; - } - - if (method) { - return method.apply(target, arguments); - } - }; - } - - // Implement a vague facsimilie of jQuery's data method - function elementData(el, name, value) { - if (arguments.length == 2) { - return el["htmlwidget_data_" + name]; - } else if (arguments.length == 3) { - el["htmlwidget_data_" + name] = value; - return el; - } else { - throw new Error("Wrong number of arguments for elementData: " + - arguments.length); - } - } - - // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex - function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - } - - function hasClass(el, className) { - var re = new RegExp("\\b" + escapeRegExp(className) + "\\b"); - return re.test(el.className); - } - - // elements - array (or array-like object) of HTML elements - // className - class name to test for - // include - if true, only return elements with given className; - // if false, only return elements *without* given className - function filterByClass(elements, className, include) { - var results = []; - for (var i = 0; i < elements.length; i++) { - if (hasClass(elements[i], className) == include) - results.push(elements[i]); - } - return results; - } - - function on(obj, eventName, func) { - if (obj.addEventListener) { - obj.addEventListener(eventName, func, false); - } else if (obj.attachEvent) { - obj.attachEvent(eventName, func); - } - } - - function off(obj, eventName, func) { - if (obj.removeEventListener) - obj.removeEventListener(eventName, func, false); - else if (obj.detachEvent) { - obj.detachEvent(eventName, func); - } - } - - // Translate array of values to top/right/bottom/left, as usual with - // the "padding" CSS property - // https://developer.mozilla.org/en-US/docs/Web/CSS/padding - function unpackPadding(value) { - if (typeof(value) === "number") - value = [value]; - if (value.length === 1) { - return {top: value[0], right: value[0], bottom: value[0], left: value[0]}; - } - if (value.length === 2) { - return {top: value[0], right: value[1], bottom: value[0], left: value[1]}; - } - if (value.length === 3) { - return {top: value[0], right: value[1], bottom: value[2], left: value[1]}; - } - if (value.length === 4) { - return {top: value[0], right: value[1], bottom: value[2], left: value[3]}; - } - } - - // Convert an unpacked padding object to a CSS value - function paddingToCss(paddingObj) { - return paddingObj.top + "px " + paddingObj.right + "px " + paddingObj.bottom + "px " + paddingObj.left + "px"; - } - - // Makes a number suitable for CSS - function px(x) { - if (typeof(x) === "number") - return x + "px"; - else - return x; - } - - // Retrieves runtime widget sizing information for an element. - // The return value is either null, or an object with fill, padding, - // defaultWidth, defaultHeight fields. - function sizingPolicy(el) { - var sizingEl = document.querySelector("script[data-for='" + el.id + "'][type='application/htmlwidget-sizing']"); - if (!sizingEl) - return null; - var sp = JSON.parse(sizingEl.textContent || sizingEl.text || "{}"); - if (viewerMode) { - return sp.viewer; - } else { - return sp.browser; - } - } - - // @param tasks Array of strings (or falsy value, in which case no-op). - // Each element must be a valid JavaScript expression that yields a - // function. Or, can be an array of objects with "code" and "data" - // properties; in this case, the "code" property should be a string - // of JS that's an expr that yields a function, and "data" should be - // an object that will be added as an additional argument when that - // function is called. - // @param target The object that will be "this" for each function - // execution. - // @param args Array of arguments to be passed to the functions. (The - // same arguments will be passed to all functions.) - function evalAndRun(tasks, target, args) { - if (tasks) { - forEach(tasks, function(task) { - var theseArgs = args; - if (typeof(task) === "object") { - theseArgs = theseArgs.concat([task.data]); - task = task.code; - } - var taskFunc = tryEval(task); - if (typeof(taskFunc) !== "function") { - throw new Error("Task must be a function! Source:\n" + task); - } - taskFunc.apply(target, theseArgs); - }); - } - } - - // Attempt eval() both with and without enclosing in parentheses. - // Note that enclosing coerces a function declaration into - // an expression that eval() can parse - // (otherwise, a SyntaxError is thrown) - function tryEval(code) { - var result = null; - try { - result = eval(code); - } catch(error) { - if (!error instanceof SyntaxError) { - throw error; - } - try { - result = eval("(" + code + ")"); - } catch(e) { - if (e instanceof SyntaxError) { - throw error; - } else { - throw e; - } - } - } - return result; - } - - function initSizing(el) { - var sizing = sizingPolicy(el); - if (!sizing) - return; - - var cel = document.getElementById("htmlwidget_container"); - if (!cel) - return; - - if (typeof(sizing.padding) !== "undefined") { - document.body.style.margin = "0"; - document.body.style.padding = paddingToCss(unpackPadding(sizing.padding)); - } - - if (sizing.fill) { - document.body.style.overflow = "hidden"; - document.body.style.width = "100%"; - document.body.style.height = "100%"; - document.documentElement.style.width = "100%"; - document.documentElement.style.height = "100%"; - if (cel) { - cel.style.position = "absolute"; - var pad = unpackPadding(sizing.padding); - cel.style.top = pad.top + "px"; - cel.style.right = pad.right + "px"; - cel.style.bottom = pad.bottom + "px"; - cel.style.left = pad.left + "px"; - el.style.width = "100%"; - el.style.height = "100%"; - } - - return { - getWidth: function() { return cel.offsetWidth; }, - getHeight: function() { return cel.offsetHeight; } - }; - - } else { - el.style.width = px(sizing.width); - el.style.height = px(sizing.height); - - return { - getWidth: function() { return el.offsetWidth; }, - getHeight: function() { return el.offsetHeight; } - }; - } - } - - // Default implementations for methods - var defaults = { - find: function(scope) { - return querySelectorAll(scope, "." + this.name); - }, - renderError: function(el, err) { - var $el = $(el); - - this.clearError(el); - - // Add all these error classes, as Shiny does - var errClass = "shiny-output-error"; - if (err.type !== null) { - // use the classes of the error condition as CSS class names - errClass = errClass + " " + $.map(asArray(err.type), function(type) { - return errClass + "-" + type; - }).join(" "); - } - errClass = errClass + " htmlwidgets-error"; - - // Is el inline or block? If inline or inline-block, just display:none it - // and add an inline error. - var display = $el.css("display"); - $el.data("restore-display-mode", display); - - if (display === "inline" || display === "inline-block") { - $el.hide(); - if (err.message !== "") { - var errorSpan = $("").addClass(errClass); - errorSpan.text(err.message); - $el.after(errorSpan); - } - } else if (display === "block") { - // If block, add an error just after the el, set visibility:none on the - // el, and position the error to be on top of the el. - // Mark it with a unique ID and CSS class so we can remove it later. - $el.css("visibility", "hidden"); - if (err.message !== "") { - var errorDiv = $("
    ").addClass(errClass).css("position", "absolute") - .css("top", el.offsetTop) - .css("left", el.offsetLeft) - // setting width can push out the page size, forcing otherwise - // unnecessary scrollbars to appear and making it impossible for - // the element to shrink; so use max-width instead - .css("maxWidth", el.offsetWidth) - .css("height", el.offsetHeight); - errorDiv.text(err.message); - $el.after(errorDiv); - - // Really dumb way to keep the size/position of the error in sync with - // the parent element as the window is resized or whatever. - var intId = setInterval(function() { - if (!errorDiv[0].parentElement) { - clearInterval(intId); - return; - } - errorDiv - .css("top", el.offsetTop) - .css("left", el.offsetLeft) - .css("maxWidth", el.offsetWidth) - .css("height", el.offsetHeight); - }, 500); - } - } - }, - clearError: function(el) { - var $el = $(el); - var display = $el.data("restore-display-mode"); - $el.data("restore-display-mode", null); - - if (display === "inline" || display === "inline-block") { - if (display) - $el.css("display", display); - $(el.nextSibling).filter(".htmlwidgets-error").remove(); - } else if (display === "block"){ - $el.css("visibility", "inherit"); - $(el.nextSibling).filter(".htmlwidgets-error").remove(); - } - }, - sizing: {} - }; - - // Called by widget bindings to register a new type of widget. The definition - // object can contain the following properties: - // - name (required) - A string indicating the binding name, which will be - // used by default as the CSS classname to look for. - // - initialize (optional) - A function(el) that will be called once per - // widget element; if a value is returned, it will be passed as the third - // value to renderValue. - // - renderValue (required) - A function(el, data, initValue) that will be - // called with data. Static contexts will cause this to be called once per - // element; Shiny apps will cause this to be called multiple times per - // element, as the data changes. - window.HTMLWidgets.widget = function(definition) { - if (!definition.name) { - throw new Error("Widget must have a name"); - } - if (!definition.type) { - throw new Error("Widget must have a type"); - } - // Currently we only support output widgets - if (definition.type !== "output") { - throw new Error("Unrecognized widget type '" + definition.type + "'"); - } - // TODO: Verify that .name is a valid CSS classname - - // Support new-style instance-bound definitions. Old-style class-bound - // definitions have one widget "object" per widget per type/class of - // widget; the renderValue and resize methods on such widget objects - // take el and instance arguments, because the widget object can't - // store them. New-style instance-bound definitions have one widget - // object per widget instance; the definition that's passed in doesn't - // provide renderValue or resize methods at all, just the single method - // factory(el, width, height) - // which returns an object that has renderValue(x) and resize(w, h). - // This enables a far more natural programming style for the widget - // author, who can store per-instance state using either OO-style - // instance fields or functional-style closure variables (I guess this - // is in contrast to what can only be called C-style pseudo-OO which is - // what we required before). - if (definition.factory) { - definition = createLegacyDefinitionAdapter(definition); - } - - if (!definition.renderValue) { - throw new Error("Widget must have a renderValue function"); - } - - // For static rendering (non-Shiny), use a simple widget registration - // scheme. We also use this scheme for Shiny apps/documents that also - // contain static widgets. - window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || []; - // Merge defaults into the definition; don't mutate the original definition. - var staticBinding = extend({}, defaults, definition); - overrideMethod(staticBinding, "find", function(superfunc) { - return function(scope) { - var results = superfunc(scope); - // Filter out Shiny outputs, we only want the static kind - return filterByClass(results, "html-widget-output", false); - }; - }); - window.HTMLWidgets.widgets.push(staticBinding); - - if (shinyMode) { - // Shiny is running. Register the definition with an output binding. - // The definition itself will not be the output binding, instead - // we will make an output binding object that delegates to the - // definition. This is because we foolishly used the same method - // name (renderValue) for htmlwidgets definition and Shiny bindings - // but they actually have quite different semantics (the Shiny - // bindings receive data that includes lots of metadata that it - // strips off before calling htmlwidgets renderValue). We can't - // just ignore the difference because in some widgets it's helpful - // to call this.renderValue() from inside of resize(), and if - // we're not delegating, then that call will go to the Shiny - // version instead of the htmlwidgets version. - - // Merge defaults with definition, without mutating either. - var bindingDef = extend({}, defaults, definition); - - // This object will be our actual Shiny binding. - var shinyBinding = new Shiny.OutputBinding(); - - // With a few exceptions, we'll want to simply use the bindingDef's - // version of methods if they are available, otherwise fall back to - // Shiny's defaults. NOTE: If Shiny's output bindings gain additional - // methods in the future, and we want them to be overrideable by - // HTMLWidget binding definitions, then we'll need to add them to this - // list. - delegateMethod(shinyBinding, bindingDef, "getId"); - delegateMethod(shinyBinding, bindingDef, "onValueChange"); - delegateMethod(shinyBinding, bindingDef, "onValueError"); - delegateMethod(shinyBinding, bindingDef, "renderError"); - delegateMethod(shinyBinding, bindingDef, "clearError"); - delegateMethod(shinyBinding, bindingDef, "showProgress"); - - // The find, renderValue, and resize are handled differently, because we - // want to actually decorate the behavior of the bindingDef methods. - - shinyBinding.find = function(scope) { - var results = bindingDef.find(scope); - - // Only return elements that are Shiny outputs, not static ones - var dynamicResults = results.filter(".html-widget-output"); - - // It's possible that whatever caused Shiny to think there might be - // new dynamic outputs, also caused there to be new static outputs. - // Since there might be lots of different htmlwidgets bindings, we - // schedule execution for later--no need to staticRender multiple - // times. - if (results.length !== dynamicResults.length) - scheduleStaticRender(); - - return dynamicResults; - }; - - // Wrap renderValue to handle initialization, which unfortunately isn't - // supported natively by Shiny at the time of this writing. - - shinyBinding.renderValue = function(el, data) { - Shiny.renderDependencies(data.deps); - // Resolve strings marked as javascript literals to objects - if (!(data.evals instanceof Array)) data.evals = [data.evals]; - for (var i = 0; data.evals && i < data.evals.length; i++) { - window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]); - } - if (!bindingDef.renderOnNullValue) { - if (data.x === null) { - el.style.visibility = "hidden"; - return; - } else { - el.style.visibility = "inherit"; - } - } - if (!elementData(el, "initialized")) { - initSizing(el); - - elementData(el, "initialized", true); - if (bindingDef.initialize) { - var result = bindingDef.initialize(el, el.offsetWidth, - el.offsetHeight); - elementData(el, "init_result", result); - } - } - bindingDef.renderValue(el, data.x, elementData(el, "init_result")); - evalAndRun(data.jsHooks.render, elementData(el, "init_result"), [el, data.x]); - }; - - // Only override resize if bindingDef implements it - if (bindingDef.resize) { - shinyBinding.resize = function(el, width, height) { - // Shiny can call resize before initialize/renderValue have been - // called, which doesn't make sense for widgets. - if (elementData(el, "initialized")) { - bindingDef.resize(el, width, height, elementData(el, "init_result")); - } - }; - } - - Shiny.outputBindings.register(shinyBinding, bindingDef.name); - } - }; - - var scheduleStaticRenderTimerId = null; - function scheduleStaticRender() { - if (!scheduleStaticRenderTimerId) { - scheduleStaticRenderTimerId = setTimeout(function() { - scheduleStaticRenderTimerId = null; - window.HTMLWidgets.staticRender(); - }, 1); - } - } - - // Render static widgets after the document finishes loading - // Statically render all elements that are of this widget's class - window.HTMLWidgets.staticRender = function() { - var bindings = window.HTMLWidgets.widgets || []; - forEach(bindings, function(binding) { - var matches = binding.find(document.documentElement); - forEach(matches, function(el) { - var sizeObj = initSizing(el, binding); - - if (hasClass(el, "html-widget-static-bound")) - return; - el.className = el.className + " html-widget-static-bound"; - - var initResult; - if (binding.initialize) { - initResult = binding.initialize(el, - sizeObj ? sizeObj.getWidth() : el.offsetWidth, - sizeObj ? sizeObj.getHeight() : el.offsetHeight - ); - elementData(el, "init_result", initResult); - } - - if (binding.resize) { - var lastSize = { - w: sizeObj ? sizeObj.getWidth() : el.offsetWidth, - h: sizeObj ? sizeObj.getHeight() : el.offsetHeight - }; - var resizeHandler = function(e) { - var size = { - w: sizeObj ? sizeObj.getWidth() : el.offsetWidth, - h: sizeObj ? sizeObj.getHeight() : el.offsetHeight - }; - if (size.w === 0 && size.h === 0) - return; - if (size.w === lastSize.w && size.h === lastSize.h) - return; - lastSize = size; - binding.resize(el, size.w, size.h, initResult); - }; - - on(window, "resize", resizeHandler); - - // This is needed for cases where we're running in a Shiny - // app, but the widget itself is not a Shiny output, but - // rather a simple static widget. One example of this is - // an rmarkdown document that has runtime:shiny and widget - // that isn't in a render function. Shiny only knows to - // call resize handlers for Shiny outputs, not for static - // widgets, so we do it ourselves. - if (window.jQuery) { - window.jQuery(document).on( - "shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets", - resizeHandler - ); - window.jQuery(document).on( - "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets", - resizeHandler - ); - } - - // This is needed for the specific case of ioslides, which - // flips slides between display:none and display:block. - // Ideally we would not have to have ioslide-specific code - // here, but rather have ioslides raise a generic event, - // but the rmarkdown package just went to CRAN so the - // window to getting that fixed may be long. - if (window.addEventListener) { - // It's OK to limit this to window.addEventListener - // browsers because ioslides itself only supports - // such browsers. - on(document, "slideenter", resizeHandler); - on(document, "slideleave", resizeHandler); - } - } - - var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']"); - if (scriptData) { - var data = JSON.parse(scriptData.textContent || scriptData.text); - // Resolve strings marked as javascript literals to objects - if (!(data.evals instanceof Array)) data.evals = [data.evals]; - for (var k = 0; data.evals && k < data.evals.length; k++) { - window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]); - } - binding.renderValue(el, data.x, initResult); - evalAndRun(data.jsHooks.render, initResult, [el, data.x]); - } - }); - }); - - invokePostRenderHandlers(); - } - - - function has_jQuery3() { - if (!window.jQuery) { - return false; - } - var $version = window.jQuery.fn.jquery; - var $major_version = parseInt($version.split(".")[0]); - return $major_version >= 3; - } - - /* - / Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's - / on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now - / really means $(setTimeout(fn)). - / https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous - / - / Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny - / one tick later than it did before, which means staticRender() is - / called renderValue() earlier than (advanced) widget authors might be expecting. - / https://github.com/rstudio/shiny/issues/2630 - / - / For a concrete example, leaflet has some methods (e.g., updateBounds) - / which reference Shiny methods registered in initShiny (e.g., setInputValue). - / Since leaflet is privy to this life-cycle, it knows to use setTimeout() to - / delay execution of those methods (until Shiny methods are ready) - / https://github.com/rstudio/leaflet/blob/18ec981/javascript/src/index.js#L266-L268 - / - / Ideally widget authors wouldn't need to use this setTimeout() hack that - / leaflet uses to call Shiny methods on a staticRender(). In the long run, - / the logic initShiny should be broken up so that method registration happens - / right away, but binding happens later. - */ - function maybeStaticRenderLater() { - if (shinyMode && has_jQuery3()) { - window.jQuery(window.HTMLWidgets.staticRender); - } else { - window.HTMLWidgets.staticRender(); - } - } - - if (document.addEventListener) { - document.addEventListener("DOMContentLoaded", function() { - document.removeEventListener("DOMContentLoaded", arguments.callee, false); - maybeStaticRenderLater(); - }, false); - } else if (document.attachEvent) { - document.attachEvent("onreadystatechange", function() { - if (document.readyState === "complete") { - document.detachEvent("onreadystatechange", arguments.callee); - maybeStaticRenderLater(); - } - }); - } - - - window.HTMLWidgets.getAttachmentUrl = function(depname, key) { - // If no key, default to the first item - if (typeof(key) === "undefined") - key = 1; - - var link = document.getElementById(depname + "-" + key + "-attachment"); - if (!link) { - throw new Error("Attachment " + depname + "/" + key + " not found in document"); - } - return link.getAttribute("href"); - }; - - window.HTMLWidgets.dataframeToD3 = function(df) { - var names = []; - var length; - for (var name in df) { - if (df.hasOwnProperty(name)) - names.push(name); - if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") { - throw new Error("All fields must be arrays"); - } else if (typeof(length) !== "undefined" && length !== df[name].length) { - throw new Error("All fields must be arrays of the same length"); - } - length = df[name].length; - } - var results = []; - var item; - for (var row = 0; row < length; row++) { - item = {}; - for (var col = 0; col < names.length; col++) { - item[names[col]] = df[names[col]][row]; - } - results.push(item); - } - return results; - }; - - window.HTMLWidgets.transposeArray2D = function(array) { - if (array.length === 0) return array; - var newArray = array[0].map(function(col, i) { - return array.map(function(row) { - return row[i] - }) - }); - return newArray; - }; - // Split value at splitChar, but allow splitChar to be escaped - // using escapeChar. Any other characters escaped by escapeChar - // will be included as usual (including escapeChar itself). - function splitWithEscape(value, splitChar, escapeChar) { - var results = []; - var escapeMode = false; - var currentResult = ""; - for (var pos = 0; pos < value.length; pos++) { - if (!escapeMode) { - if (value[pos] === splitChar) { - results.push(currentResult); - currentResult = ""; - } else if (value[pos] === escapeChar) { - escapeMode = true; - } else { - currentResult += value[pos]; - } - } else { - currentResult += value[pos]; - escapeMode = false; - } - } - if (currentResult !== "") { - results.push(currentResult); - } - return results; - } - // Function authored by Yihui/JJ Allaire - window.HTMLWidgets.evaluateStringMember = function(o, member) { - var parts = splitWithEscape(member, '.', '\\'); - for (var i = 0, l = parts.length; i < l; i++) { - var part = parts[i]; - // part may be a character or 'numeric' member name - if (o !== null && typeof o === "object" && part in o) { - if (i == (l - 1)) { // if we are at the end of the line then evalulate - if (typeof o[part] === "string") - o[part] = tryEval(o[part]); - } else { // otherwise continue to next embedded object - o = o[part]; - } - } - } - }; - - // Retrieve the HTMLWidget instance (i.e. the return value of an - // HTMLWidget binding's initialize() or factory() function) - // associated with an element, or null if none. - window.HTMLWidgets.getInstance = function(el) { - return elementData(el, "init_result"); - }; - - // Finds the first element in the scope that matches the selector, - // and returns the HTMLWidget instance (i.e. the return value of - // an HTMLWidget binding's initialize() or factory() function) - // associated with that element, if any. If no element matches the - // selector, or the first matching element has no HTMLWidget - // instance associated with it, then null is returned. - // - // The scope argument is optional, and defaults to window.document. - window.HTMLWidgets.find = function(scope, selector) { - if (arguments.length == 1) { - selector = scope; - scope = document; - } - - var el = scope.querySelector(selector); - if (el === null) { - return null; - } else { - return window.HTMLWidgets.getInstance(el); - } - }; - - // Finds all elements in the scope that match the selector, and - // returns the HTMLWidget instances (i.e. the return values of - // an HTMLWidget binding's initialize() or factory() function) - // associated with the elements, in an array. If elements that - // match the selector don't have an associated HTMLWidget - // instance, the returned array will contain nulls. - // - // The scope argument is optional, and defaults to window.document. - window.HTMLWidgets.findAll = function(scope, selector) { - if (arguments.length == 1) { - selector = scope; - scope = document; - } - - var nodes = scope.querySelectorAll(selector); - var results = []; - for (var i = 0; i < nodes.length; i++) { - results.push(window.HTMLWidgets.getInstance(nodes[i])); - } - return results; - }; - - var postRenderHandlers = []; - function invokePostRenderHandlers() { - while (postRenderHandlers.length) { - var handler = postRenderHandlers.shift(); - if (handler) { - handler(); - } - } - } - - // Register the given callback function to be invoked after the - // next time static widgets are rendered. - window.HTMLWidgets.addPostRenderHandler = function(callback) { - postRenderHandlers.push(callback); - }; - - // Takes a new-style instance-bound definition, and returns an - // old-style class-bound definition. This saves us from having - // to rewrite all the logic in this file to accomodate both - // types of definitions. - function createLegacyDefinitionAdapter(defn) { - var result = { - name: defn.name, - type: defn.type, - initialize: function(el, width, height) { - return defn.factory(el, width, height); - }, - renderValue: function(el, x, instance) { - return instance.renderValue(x); - }, - resize: function(el, width, height, instance) { - return instance.resize(width, height); - } - }; - - if (defn.find) - result.find = defn.find; - if (defn.renderError) - result.renderError = defn.renderError; - if (defn.clearError) - result.clearError = defn.clearError; - - return result; - } -})(); - diff --git a/docs/articles/interval-stats_files/jquery-1.12.4/LICENSE.txt b/docs/articles/interval-stats_files/jquery-1.12.4/LICENSE.txt deleted file mode 100644 index 5bf4f5e6..00000000 --- a/docs/articles/interval-stats_files/jquery-1.12.4/LICENSE.txt +++ /dev/null @@ -1,37 +0,0 @@ -Copyright 2005, 2014 jQuery Foundation and other contributors, -https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/jquery/jquery - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -All files located in the node_modules and external directories are -externally maintained libraries used by this software which have their -own licenses; we recommend you read them, as their terms may differ from -the terms above. diff --git a/docs/articles/interval-stats_files/jquery-1.12.4/jquery.min.js b/docs/articles/interval-stats_files/jquery-1.12.4/jquery.min.js deleted file mode 100644 index e8364758..00000000 --- a/docs/articles/interval-stats_files/jquery-1.12.4/jquery.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; -}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
    a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:l.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("