diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e5f9a6..5a3a7b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### 0.18.1 (2026-06-08) +##### fix +- правильный экспорт текстовых данных + ### 0.18.0 (2026-06-06) ##### features - возможность отрганичить доступ к базам данных для отдельных пользователей diff --git a/README.md b/README.md index ac317ba..6e402b3 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ git clone https://gitea.madelirihs.ru/madeliri/shiny_form.git Восстановление окружения ```r +renv::activate() renv::init() ``` diff --git a/app.R b/app.R index f0b8b3b..d326593 100644 --- a/app.R +++ b/app.R @@ -1020,7 +1020,8 @@ server <- function(input, output, session) { date_columns <- subset(scheme, form_type == "date", form_id, drop = TRUE) number_columns <- subset(scheme, form_type == "number", form_id, drop = TRUE) - other_cols <- which(colnames(df) %in% c(date_columns, number_columns)) + # other_cols <- which(colnames(df) %in% c(date_columns, number_columns)) + other_cols <- colnames(df)[!(colnames(df) %in% c(date_columns, number_columns))] df <- df |> dplyr::mutate( @@ -1028,7 +1029,7 @@ server <- function(input, output, session) { dplyr::across(tidyselect::all_of({{date_columns}}), as.Date), # числа - к единому формату десятичных значений dplyr::across(tidyselect::all_of({{number_columns}}), ~ gsub("\\.", "," , .x)), - dplyr::across(tidyselect::all_of({{other_cols}}), as.character) + dplyr::across(tidyselect::all_of({{other_cols}}), \(x) dplyr::if_else(x == "", as.character(NA), as.character(x))) ) |> # очистка от пустых ключей dplyr::filter(!is.na(mhcs()$get_main_key_id)) @@ -1238,7 +1239,8 @@ server <- function(input, output, session) { date_columns <- subset(scheme, form_type == "date", form_id, drop = TRUE) number_columns <- subset(scheme, form_type == "number", form_id, drop = TRUE) - other_cols <- which(colnames(df) %in% c(date_columns, number_columns)) + # other_cols <- which(colnames(df) %in% c(date_columns, number_columns)) + other_cols <- colnames(df)[!(colnames(df) %in% c(date_columns, number_columns))] # функция для преобразование числовых значений и сохранения "NA" num_converter <- function(old_col) { @@ -1258,7 +1260,7 @@ server <- function(input, output, session) { # даты - к единому формату 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}}), as.character) + dplyr::across(tidyselect::all_of({{other_cols}}), \(x) dplyr::if_else(x == "", as.character(NA), as.character(x))) ) |> select(all_of(unique(c(main_key_id, scheme$form_id)))) diff --git a/descr.yml b/descr.yml index 60bb454..a95c37f 100644 --- a/descr.yml +++ b/descr.yml @@ -1,4 +1,4 @@ default: - form_app_version: 0.18.0 + form_app_version: 0.18.1 form_id: formy form_name: FORMY \ No newline at end of file diff --git a/modules/db.R b/modules/db.R index bc83242..1d8f0c5 100644 --- a/modules/db.R +++ b/modules/db.R @@ -200,7 +200,8 @@ write_df_to_db = function( date_columns <- subset(scheme, form_type == "date", form_id, drop = TRUE) number_columns <- subset(scheme, form_type == "number", form_id, drop = TRUE) - other_cols <- which(colnames(df) %in% c(date_columns, number_columns)) + # other_cols <- which(colnames(df) %in% c(date_columns, number_columns)) + other_cols <- colnames(df)[!(colnames(df) %in% c(date_columns, number_columns))] df <- df |> dplyr::mutate( @@ -208,7 +209,7 @@ write_df_to_db = function( dplyr::across(tidyselect::all_of({{date_columns}}), \(x) purrr::map_chr(x, excel_to_db_dates_converter)), # числа - к единому формату десятичных значений dplyr::across(tidyselect::all_of({{number_columns}}), ~ gsub("\\.", "," , .x)), - dplyr::across(tidyselect::all_of({{other_cols}}), as.character), + dplyr::across(tidyselect::all_of({{other_cols}}), \(x) dplyr::if_else(x == "", as.character(NA), as.character(x))) ) if (table_name == "main") {