fix: корректное отображение столбцов во вложенной форме

This commit is contained in:
2026-04-13 18:01:17 +03:00
parent 5a6dba25ee
commit 4c3d339361

37
app.R
View File

@@ -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,