From eb89b01baae562d2d7ae74e0329cf0b2e1500694 Mon Sep 17 00:00:00 2001 From: madeliri Date: Mon, 13 Apr 2026 15:04:53 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=80=D1=80?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BD=D0=B0=D1=8F=20=D0=B2=D1=8B=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=B7=D0=BA=D0=B0=20xlsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.R | 37 ++++++++----------------- configs/schemas/example_of_scheme.xlsx | Bin 13975 -> 17205 bytes modules/global_options.R | 5 +++- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/app.R b/app.R index f879db3..dfa0dbd 100644 --- a/app.R +++ b/app.R @@ -9,6 +9,8 @@ suppressPackageStartupMessages({ library(shinymanager) }) +# КАК ЗАПРЯТЯАТЬ ID + source("helpers/functions.R") # SOURCE FILES ============================ @@ -507,7 +509,10 @@ server <- function(input, output, session) { ) log_action_to_db("saving data (gt)", values$main_key, con) - + showNotification( + "Данные успешно сохранены", + type = "message" + ) }) ## сохранение данных из вложенной формы --------------- @@ -533,7 +538,6 @@ server <- function(input, output, session) { ) log_action_to_db("saving data", values$main_key, con) - showNotification( "Данные успешно сохранены", type = "message" @@ -839,30 +843,13 @@ server <- function(input, output, session) { }) ## export to .xlsx ====================== - observeEvent(input$export_to_xlsx, { - - ui <- shiny::radioButtons( - "export_scheme_selector", - label = strong("Выбрать базу данных для работы:"), - choices = enabled_schemas, - selected = scheme() - ) - - showModal(modalDialog( - title = "чего учидил", - ui, - footer = tagList( - actionButton("one", "one"), - actionButton("close_modal_button", "Отмена") - ) - )) - - }) - output$downloadData <- downloadHandler( - filename = paste0(isolate(scheme()), "_", format(Sys.time(), "%Y%m%d_%H%M%S"), ".xlsx"), + filename = function(){ + paste0(isolate(scheme()), "_", format(Sys.time(), "%Y%m%d_%H%M%S"), ".xlsx") + }, content = function(file) { - con <- db$make_db_connection(scheme(),"downloadData") + + con <- db$make_db_connection(isolate(scheme()),"downloadData") on.exit(db$close_db_connection(con, "downloadData"), add = TRUE) # get all data @@ -1239,4 +1226,4 @@ server <- function(input, output, session) { app <- shinyApp(ui = ui, server = server) -runApp(app, launch.browser = TRUE) + runApp(app, launch.browser = TRUE) diff --git a/configs/schemas/example_of_scheme.xlsx b/configs/schemas/example_of_scheme.xlsx index 5ad96e1ce623196f709d6220f2a14d2893d40211..40e57236da8c0876bf5988b71c04adcb5bc492a3 100644 GIT binary patch delta 10342 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 VV8?}zjPl{C(~k{?UFa{N{{_}+M)m*z delta 7205 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