diff --git a/app.R b/app.R index 308da85..833f3e9 100644 --- a/app.R +++ b/app.R @@ -337,11 +337,11 @@ server <- function(input, output, session) { ## функция отображения вложенной формы для выбранной таблицы -------- show_modal_for_nested_form <- function(con) { - ns <- NS(values$nested_form_id) + ns <- NS(values$nested_form_id) key_id <- mhcs()$get_key_id(values$nested_form_id) # загрузка схемы для данной вложенной формы - this_nested_form_scheme <- mhcs()$get_schema(values$nested_form_id) + this_nested_form_scheme <- mhcs()$get_schema(values$nested_form_id) # мини-схема для ключа this_nested_form_key_scheme <- subset(this_nested_form_scheme, form_id == key_id) @@ -362,8 +362,8 @@ server <- function(input, output, session) { } # nested ui - if (!is.null(values$nested_key)) { - yay_its_fun <- purrr::map( + nested_form_panels <- if (!is.null(values$nested_key)) { + purrr::map( .x = unique(this_nested_form_scheme$subgroup), .f = \(subgroup) { @@ -383,9 +383,8 @@ server <- function(input, output, session) { } ) } else { - yay_its_fun <- list(bslib::nav_panel("", "empty")) + list(bslib::nav_panel("", div("Нет доступных записей.", br(), "Необходимо создать новую запись."))) } - # yay_its_fun <- !!!yay_its_fun # ui для всплывающего окна ui_for_inline_table <- navset_card_underline( @@ -393,19 +392,18 @@ server <- function(input, output, session) { width = 300, selectizeInput( inputId = "nested_key_selector", - label = this_nested_form_key_scheme$form_label, + label = strong(this_nested_form_key_scheme$form_label), choices = kyes_for_this_table, selected = values$nested_key, # options = list(placeholder = "действие комиссии", create = FALSE, onInitialize = I('function() { this.setValue(""); }')) ), - actionButton("add_new_nested_key_button", "add"), - actionButton("nested_form_save_button", "save"), - actionButton("nested_form_dt_button", "dt"), + actionButton("add_new_nested_key_button", "Добавить новую запись", icon("plus", lib = "font-awesome")), + actionButton("nested_form_save_button", "Сохранить данные", icon("floppy-disk", lib = "font-awesome")), + actionButton("nested_form_dt_button", "DT", icon("table", lib = "font-awesome")), uiOutput("validation_nested"), open = list(mobile = "always-above") ), - # if (!is.null(values$nested_key)) {rlang::syms(!!!yay_its_fun)} else bslib::nav_panel("empty") - !!!yay_its_fun + !!!nested_form_panels ) # проверка данных для внутренних таблиц @@ -433,10 +431,11 @@ server <- function(input, output, session) { con = con ) - col_types <- mhcs()$get_schema(values$nested_form_id) |> + col_types <- mhcs()$get_schema_with_values_forms(values$nested_form_id) |> dplyr::distinct(form_id, form_type, form_label) - date_cols <- subset(col_types, form_type == "date", form_id, drop = TRUE) + + date_cols <- which(col_types$form_type == "date") values$data <- values$data |> select(-mhcs()$get_main_key_id) |> @@ -450,7 +449,7 @@ server <- function(input, output, session) { values$data, caption = 'Table 1: This is a simple caption for the table.', rownames = FALSE, - # colnames = dplyr::pull(col_types, form_id, form_label), + colnames = col_types |> dplyr::pull(form_id, form_label), extensions = c('KeyTable', "FixedColumns"), editable = 'cell', selection = "none", @@ -876,7 +875,9 @@ server <- function(input, output, session) { dplyr::across(tidyselect::all_of({{date_columns}}), as.Date), # числа - к единому формату десятичных значений dplyr::across(tidyselect::all_of({{number_columns}}), ~ gsub("\\.", "," , .x)), - ) + ) |> + # очистка от пустых ключей + dplyr::filter(!is.na(main_key)) df } @@ -1111,6 +1112,10 @@ server <- function(input, output, session) { } + # очистка от пустых ключей + df <- df |> + dplyr::filter(!is.na(main_key)) + DBI::dbWriteTable( con, name = table_name,