R/gtm_variables_help.R

Defines functions gtm_var_id_check gtm_var_dictionary gtm_var_missing gtm_var_md gtm_var_fup gtm_var_gas gtm_var_lookup_tbl

gtm_var_lookup_tbl <- function(var) {

  mapping_tbl <- tibble()

  if (var$parameter[[1]]$value == 'false' | length(var$parameter) < 4) {

    for (i in 1:length(var$parameter[[3]]$list)) {

      mk <- var$parameter[[3]]$list[[i]]$map[[1]]$value
      mv <- var$parameter[[3]]$list[[i]]$map[[2]]$value

      if (is_empty(mk)==TRUE) {

        next()

      } else {

        new_tbl <- tibble(map_id = i,
                          map_key = mk,
                          map_value = mv)

        mapping_tbl <- bind_rows(mapping_tbl,new_tbl)

      }

    }

  } else {

    for (i in 1:length(var$parameter[[4]]$list)) {

      mk <- var$parameter[[4]]$list[[i]]$map[[1]]$value
      mv <- var$parameter[[4]]$list[[i]]$map[[2]]$value

      if (is_empty(mk)==TRUE) {

        next()

      } else {

        new_tbl <- tibble(map_id = i,
                          map_key = mk,
                          map_value = mv)

        mapping_tbl <- bind_rows(mapping_tbl,new_tbl)

      }

    }

  }

  otbl <- tibble(set_default_value = ifelse(var$parameter[[1]]$value == 'true',TRUE,FALSE),
                 map_input = var$parameter[[2]]$value,
                 test = "i")

  if (var$parameter[[1]]$value == 'true') {

    defval <- var$parameter[[3]]$value

  }

  var$parameter <- NULL

  var_tbl <- as_tibble(var) %>%
    mutate(test = 'i')

  mapping_tbl <- mapping_tbl %>%
    mutate(test = 'i') %>%
    full_join(otbl,by='test') %>%
    full_join(var_tbl,by='test') %>%
    select(-test) %>%
    tidycols() %>%
    variable_type_fix()

  if (mapping_tbl$set_default_value[[1]] == FALSE) {

    mapping_tbl <- mapping_tbl %>%
        gtm_var_missing()
  } else {

    mapping_tbl <- mapping_tbl %>%
      mutate(default_value = defval,
             key = as.character(NA))
  }

  return(mapping_tbl)

}

gtm_var_gas <- function(var) {

if (var$parameter[[1]]$key == 'collectAdId') {

  ga_params <- tibble(tracking_id = var$parameter[[2]]$value,
                      collect_ad_id = ifelse(var$parameter[[1]]$value == 'false',FALSE,TRUE),
                      variable_id = var$variableId)
} else {

  ga_params <- tibble(tracking_id = var$parameter[[1]]$value,
                      variable_id = var$variableId)
}

  var$parameter <- NULL

  ga_tbl <- as_tibble(var) %>%
    tidycols() %>%
    inner_join(ga_params,by='variable_id') %>%
    variable_type_fix()

return(ga_tbl)

}

gtm_var_fup <- function(var) {

  fup_params <- tibble(set_default_value = ifelse(var$parameter[[1]]$value == 'true',TRUE,FALSE),
                     default_value = ifelse(set_default_value == TRUE, var$parameter[[2]]$value,NA),
                     key = ifelse(set_default_value == TRUE,var$parameter[[3]]$value,var$parameter[[2]]$value),
                     variable_id = var$variableId)

var$parameter <- NULL

fup_tbl <- as_tibble(var) %>%
  tidycols() %>%
  variable_type_fix() %>%
  inner_join(fup_params,by='variable_id')

  return(fup_tbl)

}

gtm_var_md <- function(var) {

  require(purrr)

  md_params <- do.call('bind_rows',map(var$parameter,as_tibble)) %>%
    select(-type) %>%
    pivot_wider(names_from = key,values_from=value) %>%
    tidycols() %>%
    mutate(set_default_value = ifelse(set_default_value == 'false',FALSE,
                              ifelse(set_default_value == 'true',TRUE,NA)),
         variable_id = var$variableId)


  var$parameter <- NULL

  md_tbl <- as_tibble(compact(var)) %>%
    tidycols() %>%
    variable_type_fix() %>%
    inner_join(md_params,by='variable_id')

return(md_tbl)

}

gtm_var_missing <- function(df) {

  z <- df %>%
    mutate(set_default_value = as.logical(NA),
           default_value = as.character(NA),
         key = as.character(NA))

  return(z)

}

gtm_var_dictionary <- function(x,type = 'name') {

  require(tidyverse)

x <- str_to_lower(gsub(' ','_',x))
x <- str_to_lower(gsub('-','_',x))

  dictionary <- tibble(
    var_code = c("k", "aev", "c", "ctv", "e", "jsm",
"v", "dbg", "d", "f", "j", "smm", "r", "u", "md", "fup", "gas",
"fn"),
  var_code_name = c("1st_party_cookie", "auto_event_variable",
"constant_string", "container_version_number", "custom_event",
"custom_javascript", "data_layer_variable", "debug_mode", "dom_element",
"http_referrer", "javascript_variable", "lookup_table", "random_number",
"url", "parameter", "user_property", "ga_settings", "function_call"
))

if (type == 'name') {

z <- dictionary %>%
  filter(var_code_name == x)

} else {

  z <- dictionary %>%
    filter(var_code == x)

  if (nrow(z) == 0) {

    z <- dictionary %>%
      filter(str_detect(var_code_name,x)==TRUE)

    if (nrow(z) > 1) {

      t <- z %>% pull(var_code_name)

      message <- paste('Your variable selection is not specific; please specify whether you want a ',t[1],' or a ',t[2],sep='')

      stop(message)
    } else if (nrow(z) == 0) {

      stop('Your variable is not recognized. Please refer to the list of possible variables and try again')
    }
  }
}

  z <- z %>% pull(var_code)

  return(z)

}

gtm_var_id_check <- function(account_id,container_id,workspace_id,variable_id,token,variable_name) {

  require(purrr)
  require(tidyverse)

  if (is_empty(variable_id) == TRUE) {

    variable_id <- gtm_variables_list(account_id,container_id,workspace_id,token) %>%
      filter(name == variable_name) %>%
      distinct(variable_id) %>%
      pull(variable_id)

  } else {

    variable_id <- variable_id

  }

  return(variable_id)

}
neugelb/gtmr documentation built on June 25, 2020, 10:06 a.m.