feat: вместо встроенных таблиц - вложенные формы, перемещение кода в отдельные модули, инициация таблиц для вложенных форм

This commit is contained in:
2026-03-29 18:40:49 +03:00
parent cdf92a81a3
commit 339f2b9127
9 changed files with 318 additions and 173 deletions

View File

@@ -50,19 +50,28 @@ render_forms <- function(
form_id,
form_label,
form_type,
main_scheme
main_scheme,
ns
) {
# заготовку для формы (проверка на выходе функции)
form <- NULL
# параметры только для этой формы
filterd_line <- dplyr::filter(main_scheme, form_id == {{form_id}})
# check if have condition
# если передана ns() функция то подмеяем id для каждой формы в соответствии с пространством имен
if (!missing(ns)) {
form_id <- ns(form_id)
}
# отдельно извлечение параметров условного отображения
condition <- unique(filterd_line$condition)
# get choices from schema
# элементы выбора
choices <- filterd_line$choices
# get choices from schema
# описание
description <- unique(filterd_line) |>
dplyr::filter(!is.na(form_description)) |>
dplyr::distinct(form_description) |>
@@ -84,12 +93,11 @@ render_forms <- function(
shiny::tagList(
if (!is.na(form_label)) {
shiny::span(form_label, style = "color: #444444; font-weight: 550; line-height: 1.4;")
# если в схеме есть поле с описанием - добавлеяем его следующей строчкой
# если в схеме есть поле с описанием - добавляем его следующей строчкой
},
if (!is.na(description) && !is.na(form_label)) shiny::br(),
if (!is.na(description)) {
shiny::span(shiny::markdown(description)) |> htmltools::tagAppendAttributes(style = "color:gray; font-size:small; line-height: 1.4;")
# span(description, style = "color:gray; font-size:small;")
}
)
}
@@ -130,7 +138,7 @@ render_forms <- function(
})
}
# еденичный выбор
# единичный выбор
if (form_type == "select_one") {
form <- shiny::selectizeInput(
inputId = form_id,
@@ -208,7 +216,8 @@ render_forms <- function(
if (!is.na(condition)) {
form <- shiny::conditionalPanel(
condition = condition,
form
form,
ns = ifelse(missing(ns), shiny::NS(NULL), ns)
)
}
@@ -228,7 +237,6 @@ get_empty_data <- function(type) {
if (type %in% c("number")) as.character(NA)
}
#' @export
#' @description Function to update input forms (default variants only)
#' @param id - input form id;