From 4b05fbafc2b6f9529333115a36e942823638068d Mon Sep 17 00:00:00 2001 From: madeliri Date: Fri, 24 Apr 2026 12:15:38 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BD=D0=BE=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=87=D0=B5=D1=82=D1=87=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B5=20+=20=D1=81=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BE=D0=BA=20=D0=BF=D1=80=D0=BE=D1=81=D1=80=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.R | 70 +++++++++++++++++++++-------------------------------- app/tasks.R | 24 ++++++++++++++++++ 2 files changed, 51 insertions(+), 43 deletions(-) diff --git a/app.R b/app.R index 8108a4b..316aa2b 100644 --- a/app.R +++ b/app.R @@ -222,15 +222,16 @@ server <- function(input, output, session) { observeEvent(main_form_is_empty(), { if (main_form_is_empty() == TRUE) { - print("fired!") + output$base_data <- renderUI({ con <- db$make_db_connection(scheme(),"base_data") on.exit(db$close_db_connection(con, "base_data"), add = TRUE) + tasks$update_task_button_count(con, values, NS("tasks")) + # записей в базе всего - query <- glue::glue("SELECT COUNT ({mhcs()$get_main_key_id}) FROM main") - records_count <- DBI::dbGetQuery(con, query) |> + records_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT ({mhcs()$get_main_key_id}) FROM main")) |> dplyr::pull() # задачи на сегодня @@ -256,31 +257,13 @@ server <- function(input, output, session) { strong("Записей всего:"), records_count, hr(), h5("Задачи:"), - span(strong("Активных всего:"), if (tasks_count > 0) actionLink("tasks-show_dt_all", tasks_count) else "0", br()), + span(strong("Активных всего:"), if (tasks_count > 0) actionLink("tasks-show_dt_all", tasks_count) else "0", br()), span(strong("Активных на сегодня:"), if (tasks_today_count > 0) actionLink("tasks-show_dt_today", tasks_today_count) else "0", br()), span(strong("Просроченных:"), if (tasks_overdue_count > 0) actionLink("tasks-show_dt_overdue", tasks_overdue_count) else "0", br()) ) - }) } - # buttons_to_toggle <- c( - # "save_data_button", - # "clean_data_button", - # "downloadDocx", - # "tasks-display_task_modal" - # ) - - # purrr::walk( - # buttons_to_toggle, - # \(x) { - # updateActionButton( - # inputId = x, - # disabled = main_form_is_empty() - # ) - # } - # ) - }) # обновление данных схем ------ @@ -907,40 +890,41 @@ server <- function(input, output, session) { ## логика: смена ключа ------- observeEvent(values$main_key, { - req(values$main_key) con <- db$make_db_connection(scheme(),"load_data") on.exit(db$close_db_connection(con, "load_data"), add = TRUE) - existed_main_keys <- db$get_keys_from_table("main", mhcs(), con) + if (!is.null(values$main_key)) { + existed_main_keys <- db$get_keys_from_table("main", mhcs(), con) - if (values$main_key %in% existed_main_keys) { + if (values$main_key %in% existed_main_keys) { - df <- db$read_df_from_db_by_id( - table_name = "main", - schm = mhcs(), - main_key_value = values$main_key, - con = con - ) + df <- db$read_df_from_db_by_id( + table_name = "main", + schm = mhcs(), + main_key_value = values$main_key, + con = con + ) - forms$load_data_to_form( - df = df, - table_name = "main", - mhcs - ) + forms$load_data_to_form( + df = df, + table_name = "main", + mhcs + ) - log_action_to_db("loading data", values$main_key, con = con) + log_action_to_db("loading data", values$main_key, con = con) - } else { + } else { - utils$clean_forms("main", mhcs()) + utils$clean_forms("main", mhcs()) + + } + + main_form_is_empty(FALSE) } - - # обновление счетичка задач - tasks$update_task_button_count(con, values, NS("tasks")) - main_form_is_empty(FALSE) + tasks$update_task_button_count(con, values, NS("tasks")) removeModal() }) diff --git a/app/tasks.R b/app/tasks.R index e7503d9..bf802e8 100644 --- a/app/tasks.R +++ b/app/tasks.R @@ -329,6 +329,19 @@ server <- function(id, values, scheme, mhcs) { display_tasks_dt_review() }) + ### просроченные ------------ + observeEvent(input$show_dt_overdue, { + + con <- db$make_db_connection(scheme(),"display_task_modal") + on.exit(db$close_db_connection(con, "display_task_modal"), add = TRUE) + + values$tasks_data <- DBI::dbGetQuery(con, glue::glue("SELECT * FROM tasks WHERE task_status = 'active' AND task_due_date < {as.integer(Sys.Date())}")) |> + dplyr::mutate(dplyr::across(c("task_datetime_created", "task_datetime_last_updated", "task_datetime_completed"), as.POSIXct)) |> + dplyr::mutate(dplyr::across(c("task_due_date"), as.Date)) + + display_tasks_dt_review() + }) + ### modal ----- display_tasks_dt_review <- function() { @@ -408,14 +421,25 @@ update_task_button_count <- function(con, values, ns) { inputID <- "display_task_modal" if (!missing(ns)) inputID <- ns(inputID) + + if (is.null(values$main_key)) { + updateActionButton(inputId = inputID, label = "Задачи: нет активных") + return() + } if ("tasks" %in% DBI::dbListTables(con)) { + tasks_num <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT ('task_id') FROM tasks WHERE task_main_key = '{values$main_key}' AND task_status = 'active'")) |> dplyr::pull() + if (tasks_num > 0) { + updateActionButton(inputId = inputID, label = paste("активных задач:", tasks_num)) + } else { + updateActionButton(inputId = inputID, label = "Задачи: нет активных") + } }