diff --git a/README.md b/README.md index 6e402b3..f3bf67e 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ FORM_APP_LOCAL_DB_BACKUP_PATH="path_to_backups" Проверка осуществляется при каждом запуске приложения, бэкапы создаются раз в день (при первом запуске). Количество послдних сохраненных бэкапов: + ``` FORM_APP_LOCAL_DB_BACKUP_LIMITS=3 ``` diff --git a/app.R b/app.R index d326593..14d5aac 100644 --- a/app.R +++ b/app.R @@ -175,7 +175,6 @@ server <- function(input, output, session) { } }) - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # REACTIVE VALUES ================================= # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -253,7 +252,6 @@ server <- function(input, output, session) { hr(), "Для начала работы нужно создать новую запись или загрузить существующую!", hr(), - # сво # загрузка панели для работы с базой данных uiOutput("admin_buttons_panel") ) @@ -280,6 +278,7 @@ server <- function(input, output, session) { output$base_data <- renderUI({ if (main_form_is_empty() == "main_menu") { + con <- db$make_db_connection(scheme(),"base_data") on.exit(db$close_db_connection(con, "base_data"), add = TRUE) @@ -292,13 +291,13 @@ server <- function(input, output, session) { # задачи на сегодня if ("tasks" %in% DBI::dbListTables(con)) { - tasks_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM tasks WHERE task_status = 'active'")) |> + tasks_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM \"tasks\" WHERE task_status = 'active'")) |> dplyr::pull() - tasks_today_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM tasks WHERE task_status = 'active' AND task_due_date = {as.integer(Sys.Date())}")) |> + tasks_today_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM \"tasks\" WHERE task_status = 'active' AND task_due_date = {as.integer(Sys.Date())}")) |> dplyr::pull() - tasks_overdue_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM tasks WHERE task_status = 'active' AND task_due_date < {as.integer(Sys.Date())}")) |> + tasks_overdue_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM \"tasks\" WHERE task_status = 'active' AND task_due_date < {as.integer(Sys.Date())}")) |> dplyr::pull() } else { @@ -709,10 +708,11 @@ server <- function(input, output, session) { # загрузка данных в формы forms$load_data_to_form( df = df, - table_name = values$nested_form_id, - mhcs = mhcs, + table_name = values$nested_form_id, + mhcs = mhcs, ns = NS(values$nested_form_id) ) + } else { utils$clean_forms(values$nested_form_id, mhcs(), NS(values$nested_form_id)) } @@ -1258,7 +1258,7 @@ server <- function(input, output, session) { df <- df |> dplyr::mutate( # даты - к единому формату - dplyr::across(tidyselect::all_of({{date_columns}}), \(x) purrr::map_chr(x, db$excel_to_db_dates_converter)), + dplyr::across(tidyselect::all_of({{date_columns}}), \(x) purrr::map_chr(x, db$excel_to_db_dates_converter)), dplyr::across(tidyselect::all_of({{number_columns}}), num_converter), dplyr::across(tidyselect::all_of({{other_cols}}), \(x) dplyr::if_else(x == "", as.character(NA), as.character(x))) ) |> diff --git a/app/logs.R b/app/logs.R new file mode 100644 index 0000000..7745a0d --- /dev/null +++ b/app/logs.R @@ -0,0 +1,21 @@ +box::use( + shiny[...], + bslib[...] +) + +options(box.path = here::here()) +box::use( + modules/db, + modules/utils, + app/forms +) + +#' @export +server <- function(id, values, scheme, mhcs) { + + ns <- NS(id) + + moduleServer(id, function(input, output, session) { + + }) +} diff --git a/app/tasks.R b/app/tasks.R index c6749e9..4d50fc7 100644 --- a/app/tasks.R +++ b/app/tasks.R @@ -1,4 +1,3 @@ - box::use( shiny[...], bslib[...] @@ -438,13 +437,11 @@ update_task_button_count <- function(con, values, ns) { inputID <- "display_task_modal" if (!missing(ns)) inputID <- ns(inputID) - # если ключ не определен - выход из функции if (is.null(values$main_key)) { updateActionButton(inputId = inputID, label = "Задачи") return() - } # при наличии таблицы - полу diff --git a/modules/global_options.R b/modules/global_options.R index 96231c1..dc94b7c 100644 --- a/modules/global_options.R +++ b/modules/global_options.R @@ -54,6 +54,11 @@ check_and_init_scheme = function() { "modules/utils.R" ) + # проверка существования отслеживаемых файлов + if (!all(file.exists(files_to_watch))) { + cli::cli_abort("проверка схем: {files_to_watch[!file.exists(files_to_watch)]} is not exists") + } + scheme_names <- names(config::get()$form_schemes) scheme_file <- paste0(config::get("form_app_configure_path"), "/schemas/", scheme_names, ".xlsx") scheme_file <- stats::setNames(scheme_file, scheme_names) diff --git a/test.xlsx b/test.xlsx new file mode 100644 index 0000000..dc38ed3 Binary files /dev/null and b/test.xlsx differ