feat: vis update

This commit is contained in:
2026-04-23 18:04:53 +03:00
parent fd5a7927cb
commit c8da651e72
2 changed files with 184 additions and 59 deletions

103
app.R
View File

@@ -160,30 +160,6 @@ server <- function(input, output, session) {
}
})
output$base_data <- renderUI({
con <- db$make_db_connection(scheme(),"base_data")
on.exit(db$close_db_connection(con, "base_data"), add = TRUE)
# записей в базе всего
query <- glue::glue("SELECT COUNT ({mhcs()$get_main_key_id}) FROM main")
records_count <- DBI::dbGetQuery(con, query) |>
dplyr::pull()
# задачи на сегодня
if ("tasks" %in% DBI::dbListTables(con)) {
query <- glue::glue("SELECT COUNT (task_id) FROM tasks WHERE task_status = 'active'")
tasks_count <- DBI::dbGetQuery(con, query) |>
dplyr::pull()
} else {
tasks_count <- 0
}
div(
strong("Записей всего:"), records_count, br(),
if (tasks_count > 0) p(strong("Задач на сегодня:"), actionLink("tasks-show_dt_today", tasks_count)) else "Задач нет"
)
})
# REACTIVE VALUES =================================
# Create a reactive values object to store the input data
@@ -206,21 +182,28 @@ server <- function(input, output, session) {
validator_nested <- reactiveVal(NULL)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ГЛАВНАЯ СТРАНИЦА ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ГЛАВНАЯ СТРАНИЦА -------------------------------
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## reactive ui -----------------------------------
### main screen ------
output$main_ui_navset <- renderUI({
if (main_form_is_empty()) {
validator_main(NULL)
div(
h5("Выбрать базу данных для работы:"),
shiny::radioButtons(
"schmes_selector",
label = strong("Выбрать базу данных для работы:"),
label = NULL,
choices = enabled_schemes,
selected = scheme()
),
hr(),
uiOutput("base_data"),
hr(),
"Для начала работы нужно создать новую запись или загрузить существующую!",
hr(),
# сво
# загрузка панели для работы с базой данных
uiOutput("admin_buttons_panel")
@@ -235,6 +218,72 @@ server <- function(input, output, session) {
}
})
### bases info ----------------
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)
# записей в базе всего
query <- glue::glue("SELECT COUNT ({mhcs()$get_main_key_id}) FROM main")
records_count <- DBI::dbGetQuery(con, query) |>
dplyr::pull()
# задачи на сегодня
if ("tasks" %in% DBI::dbListTables(con)) {
tasks_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM tasks WHERE task_status = 'active'")) |>
dplyr::pull()
tasks_today_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM tasks WHERE task_status = 'active' AND task_due_date = {as.integer(Sys.Date())}")) |>
dplyr::pull()
tasks_overdue_count <- DBI::dbGetQuery(con, glue::glue("SELECT COUNT (task_id) FROM tasks WHERE task_status = 'active' AND task_due_date < {as.integer(Sys.Date())}")) |>
dplyr::pull()
} else {
tasks_count <- 0
tasks_today_count <- 0
tasks_overdue_count <- 0
}
div(
h5("Общая информация о базе данных:"),
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_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()
# )
# }
# )
})
# обновление данных схем ------
observeEvent(input$schmes_selector, {
scheme(input$schmes_selector)
mhcs(schms[[input$schmes_selector]])
@@ -320,6 +369,7 @@ server <- function(input, output, session) {
# ====================================
# NESTED FORMS =======================
# ====================================
## кнопки для каждой вложенной таблицы -------------------------------
observe({
@@ -349,6 +399,7 @@ server <- function(input, output, session) {
observers_started(c(
isolate(observers_started()), isolate(scheme())
))
})
## функция отображения вложенной формы для выбранной таблицы --------