Я хочу использовать персидский календарь Джалали в своем блестящем приложении, чтобы выбрать дату. Я не нашел такой возможности в функции dateInput () для отображения календаря jalali, более того, я не нашел подобного вопроса для решения этой проблемы. Но я нашел файл персидского календаря jalali, предоставленный в javascrip (js) с его CSS форматами здесь . Я пытался включить эти файлы в мой код, но они не работали. Сначала я нахожу код функции dateInput () и меняю его имя на функцию MYdateInput следующим образом:
library(htmltools)
MYdateInput <- function(inputId, label, value = NULL, min = NULL, max = NULL,
format = "yyyy-mm-dd", startview = "day", weekstart = 0,
language = "en", width = NULL, autoclose = TRUE,
datesdisabled = NULL, daysofweekdisabled = NULL) {
value <- dateYMD(value, "value")
min <- dateYMD(min, "min")
max <- dateYMD(max, "max")
datesdisabled <- dateYMD(datesdisabled, "datesdisabled")
value <- restoreInput(id = inputId, default = value)
tags$div(id = inputId,
class = "shiny-date-input form-group shiny-input-container",
style = if (!is.null(width)) paste0("width: ", validateCssUnit(width), ";"),
shinyInputLabel(inputId, label),
tags$input(type = "text",
class = "form-control",
`data-date-language` = language,
`data-date-week-start` = weekstart,
`data-date-format` = format,
`data-date-start-view` = startview,
`data-min-date` = min,
`data-max-date` = max,
`data-initial-date` = value,
`data-date-autoclose` = if (autoclose) "true" else "false",
`data-date-dates-disabled` =
# Ensure NULL is not sent as `{}` but as 'null'
jsonlite::toJSON(datesdisabled, null = 'null'),
`data-date-days-of-week-disabled` =
jsonlite::toJSON(daysofweekdisabled, null = 'null')
),
datePickerDependency
)
}
# Make user-supplied dates are either NULL or can be coerced
# to a yyyy-mm-dd formatted string. If a date is specified, this
# function returns a string for consistency across locales.
# Also, `as.Date()` is used to coerce strings to date objects
# so that strings like "2016-08-9" are expanded to "2016-08-09"
dateYMD <- function(date = NULL, argName = "value") {
if (!length(date)) return(NULL)
if (length(date) > 1) warning("Expected `", argName, "` to be of length 1.")
tryCatch(date <- format(as.Date(date), "%Y-%m-%d"),
error = function(e) {
warning(
"Couldn't coerce the `", argName,
"` argument to a date string with format yyyy-mm-dd",
call. = FALSE
)
}
)
date
}
shinyInputLabel <- function(inputId, label = NULL) {
tags$label(
label,
class = "control-label",
class = if (is.null(label)) "shiny-label-null",
`for` = inputId
)
}
, затем я изменил код datePickerDependency следующим образом, чтобы определить зависимые файлы js и css из календарь:
datePickerDependency <- htmlDependency(name = "date-picker", version = "0.1",
src = getwd(),
script = c("www/bootstrap-datepicker.fa.js","www/bootstrap-datepicker.fa.min.js",
"www/bootstrap-datepicker.js","www/bootstrap-datepicker.min.js"),
stylesheet = c("www/bootstrap-datepicker.css", "www/bootstrap-datepicker.min.css")
)
, затем я запускаю блестящий код следующим образом:
library(shiny)
ui<-fluidPage(
MYdateInput(inputId="date", "Select data")
)
server<-function(input,output){
#getDate <- input$sDate
#getDate
}
shinyApp(ui=ui,server=server)
, но после запуска приложения каландар Джалали не может быть отображен. На самом деле я хочу, чтобы календарь jalali отображался вместо грузинского календаря, используя код, подобный следующему коду, но включенный в файл календаря js jalali, доступный по ссылке выше. Заранее спасибо за любую помощь.
ui<-fluidPage(
dateRangeInput(inputId="date", "Select data")
)
server<-function(input,output){
}
shinyApp(ui=ui,server=server)