Фильтрация по реактивным значениям в панели управления Sjiny с помощью ShinyAuthr - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь получить разные рамки данных для разных разрешений в моем ShinyApp (я использую shinyauthr и shinydashboard), функция возвращает следующее сообщение об ошибке:

Ошибка в UseMethod : нет применимого метода для 'group_by_', примененного к объекту класса "NULL" [Нет трассировки стека]

Следуйте коду моей стороны сервера:

credentials <- callModule(shinyauthr::login, "login", 
                            data = user_base,
                            user_col = user,
                            pwd_col = password,
                            sodium_hashed = TRUE,
                            log_out = reactive(logout_init()))

  logout_init <- callModule(shinyauthr::logout, "logout", reactive(credentials()$user_auth))

  user_info <- reactive({credentials()$info})

  output$welcome <- renderText({

    req(credentials()$user_auth)

    paste("Bem vindo", user_info()$name)

  })

  user_data <- reactive({
    req(credentials()$user_auth)

    if (user_info()$permissions == "admin") {
      get_data() %>% pre_processing()
    } else if (user_info()$permissions == "standard") {
      get_data() %>% pre_processing() %>% filter(`Responsável` == user_info()$name)
    }

  })

And I ' Убедитесь, что фильтр возвращает эту ошибку.

Следуйте вспомогательным функциям get_data() and pre_processing(), но ошибка возникла только в другой стороне после фильтра.

get_data ()

get_data <- function(){
  get_auth()
  if(gs4_has_token()){
    url    <- "https://docs.google.com/spreadsheets/d/17-c3VYzBhRWnE8BrfWdSyeLwglL4OmttEqS8ln3Jr5s/"
    sheets <- sheet_names(url) %>% .[3:4] %>% str_subset("Novo")
    df     <- sheets %>% 
      map_df(~ range_read(url, sheet = .x, skip = 5, na = "-") %>% 
               mutate("month" = paste0("01.",.x %>% str_sub(start = -7))) %>% 
               mutate("month" = month %>% as_date(format = "%d.%m.%Y")) %>%
               replace_na(list(`Etapa Atual` = "Captação")) %>% 
               mutate("Responsável" = case_when(`Etapa Atual` == "Captação" ~ "Rodrigo", TRUE ~ Responsável))) 
    return(df)
  }
}

pre_processing ()

pre_processing <- function(df){
  df %>%
    mutate("NovasBases" = paste(year(month), 
                                month(month), 
                                parse_number(.$`Exp. Novas Bases`),
                                sep = "-") %>% as_date(),
           "Recebimento" = as.Date(`Data Recebimento`),
           "Conferência" = as.Date(`Data Conf.`),
           "Etapa" = `Etapa Atual`,"Envio" = as.Date(`Data Envio`)) %>% 
    select(Empresa, Corretora, Seguradora, Responsável, Etapa,
           NovasBases, Status, Recebimento, Conferência, Envio) %>% 
    filter(Status == "Ativo" & is.na(Etapa) | Etapa != "Enviado!") %>% 
    mutate("Recebimento" = coalesce(Recebimento, NovasBases)) %>% 
    select(-Status) %>% 
    pivot_longer(c(-Empresa, -Corretora, -Seguradora, -Responsável, -Etapa, -NovasBases), 
                 names_to = "EtAtual", 
                 values_to = "Data") %>% 
    ungroup() -> temp

  return(temp)
}

Obs. Если я запускаю код за пределами shinyapp, я не получаю никакой ошибки.

...