diff --git a/R/apex.R b/R/apex.R index 1266508..3310a3b 100644 --- a/R/apex.R +++ b/R/apex.R @@ -113,7 +113,7 @@ apex <- function(data, mapping, type = "column", ..., # Construct series -make_series <- function(mapdata, mapping, type = NULL, serie_name = NULL) { +make_series <- function(mapdata, mapping, type = NULL, serie_name = NULL, force_datetime_names = FALSE) { if (identical(type, "candlestick")) { if (!all(c("x", "open", "high", "low", "close") %in% names(mapping))) stop("For candlestick charts 'x', 'open', 'high', 'low', and 'close' aesthetics must be provided.", call. = FALSE) @@ -141,7 +141,7 @@ make_series <- function(mapdata, mapping, type = NULL, serie_name = NULL) { mapdata$x[is.na(mapdata$x)] <- "NA" x_order <- unique(mapdata$x) if (is_x_datetime(mapdata)) { - add_names <- c("x", "y") + add_names <- force_datetime_names x_order <- sort(x_order) } else { add_names <- names(mapping) diff --git a/R/mixed-charts.R b/R/mixed-charts.R index 8ef6407..72af3e0 100644 --- a/R/mixed-charts.R +++ b/R/mixed-charts.R @@ -40,7 +40,7 @@ add_line <- function(ax, mapdata <- lapply(mapping, rlang::eval_tidy, data = data) ax$x$ax_opts$series <- c( ax$x$ax_opts$series, - make_series(mapdata, mapping, type, serie_name) + make_series(mapdata, mapping, type, serie_name, force_datetime_names = c("x", "y")) ) if (identical(apex_type, "scatter")) { if (is.null(ax$x$ax_opts$markers$size)) { diff --git a/R/parse-data.R b/R/parse-data.R index 73888e4..4b71751 100644 --- a/R/parse-data.R +++ b/R/parse-data.R @@ -31,12 +31,11 @@ parse_df <- function(data, add_names = FALSE) { X = data[], FUN = function(x) { if (inherits(x, "Date")) { - # as.numeric(x) * 86400000 - # format(x) - js_date(x) + # js_date(x) + as.numeric(x) * 1000 * 60*60*24 } else if (inherits(x, "POSIXt")) { - # as.numeric(x) * 1000 - js_date(x) + # js_date(x) + as.numeric(x) * 1000 } else if (inherits(x, "factor")) { as.character(x) } else { @@ -119,7 +118,8 @@ parse_candlestick_data <- function(.list) { FUN = function(i) { val <- lapply(.list, `[[`, i) list( - x = js_date(val$x)[[1]], + # x = js_date(val$x)[[1]], + x = as.numeric(val$x) * 1000, y = c(val$open, val$high, val$low, val$close) ) } diff --git a/tests/testthat/test-parse-data.R b/tests/testthat/test-parse-data.R index 4d53f2b..44371fa 100644 --- a/tests/testthat/test-parse-data.R +++ b/tests/testthat/test-parse-data.R @@ -44,11 +44,11 @@ test_that("parse_df works with Date/POSIXt", { ) res <- parse_df(x, add_names = TRUE) - expect_is(res[[1]]$date, "JS_EVAL") + expect_is(res[[1]]$date, "numeric") expect_is(res[[1]]$datetime, "numeric") res <- parse_df(x, add_names = FALSE) - expect_is(res[[1]][[1]], "JS_EVAL") + expect_is(res[[1]][[1]], "numeric") expect_is(res[[1]][[2]], "numeric") })