对于闪亮的应用程序,仅在dateRangeInput或dateInput中显示月份[R编程] [英] Display only months in dateRangeInput or dateInput for a shiny app [R programming]

查看:10
本文介绍了对于闪亮的应用程序,仅在dateRangeInput或dateInput中显示月份[R编程]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用SHINY创建Web应用程序。我的其中一个地块仅使用特定年份的几个月来生成地块中的点。

我希望用户只选择月份。虽然我已经提到

format = 'mm-yyyy'startview = 'year'中的dateInputdateRangeInput

每当用户单击日期输入字段时,都会向用户显示月份,然后在单击任何月份时,用户都会显示月份中的日期。

我希望用户显示到月份。如果用户单击月份,则不应显示日期。

如何实现此目标?

推荐答案

我不相信dateInput已经将bootstrap minViewMode option实现为函数参数,所以我将其添加到我自己的函数副本中(见下文)。我必须添加一些其他必需的功能。这不太好。最佳选择可能是向RStudio提交请求,因为添加此minview模式选项似乎很简单。

mydateInput <- function(inputId, label, value = NULL, min = NULL, max = NULL,
                      format = "yyyy-mm-dd", startview = "month", weekstart = 0, language = "en", minviewmode="months",
                      width = NULL) {

  # If value is a date object, convert it to a string with yyyy-mm-dd format
  # Same for min and max
  if (inherits(value, "Date"))  value <- format(value, "%Y-%m-%d")
  if (inherits(min,   "Date"))  min   <- format(min,   "%Y-%m-%d")
  if (inherits(max,   "Date"))  max   <- format(max,   "%Y-%m-%d")

  htmltools::attachDependencies(
    tags$div(id = inputId,
             class = "shiny-date-input form-group shiny-input-container",
             style = if (!is.null(width)) paste0("width: ", validateCssUnit(width), ";"),

             controlLabel(inputId, label),
             tags$input(type = "text",
                        # datepicker class necessary for dropdown to display correctly
                        class = "form-control datepicker",
                        `data-date-language` = language,
                        `data-date-weekstart` = weekstart,
                        `data-date-format` = format,
                        `data-date-start-view` = startview,
                        `data-date-min-view-mode` = minviewmode,
                        `data-min-date` = min,
                        `data-max-date` = max,
                        `data-initial-date` = value
             )
    ),
    datePickerDependency
  )
}

`%AND%` <- function(x, y) {
  if (!is.null(x) && !is.na(x))
    if (!is.null(y) && !is.na(y))
      return(y)
  return(NULL)
}

controlLabel <- function(controlName, label) {
  label %AND% tags$label(class = "control-label", `for` = controlName, label)
}

datePickerDependency <- htmlDependency(
  "bootstrap-datepicker", "1.0.2", c(href = "shared/datepicker"),
  script = "js/bootstrap-datepicker.min.js",
  stylesheet = "css/datepicker.css")

这篇关于对于闪亮的应用程序,仅在dateRangeInput或dateInput中显示月份[R编程]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆