feat: вызов DT актуальный задач + переход к ID из общего списка
This commit is contained in:
103
app/tasks.R
103
app/tasks.R
@@ -43,25 +43,6 @@ server <- function(id, values, scheme, mhcs) {
|
||||
tasks_selector <- NULL
|
||||
}
|
||||
|
||||
## new tasks ----------------
|
||||
get_default_task <- function() {
|
||||
|
||||
tibble::tibble(
|
||||
task_id = paste0(format(Sys.time(), "%Y%m%d%H%M%S"), "_", values$main_key),
|
||||
task_main_key = values$main_key,
|
||||
task_status = "active",
|
||||
task_title = "НОВАЯ ЗАДАЧА",
|
||||
task_description = "",
|
||||
task_due_date = NA,
|
||||
task_user_created = values$current_user,
|
||||
task_datetime_created = Sys.time(),
|
||||
task_user_last_updated = NA,
|
||||
task_datetime_last_updated = NA,
|
||||
task_user_completed = NA,
|
||||
task_datetime_completed = NA
|
||||
)
|
||||
}
|
||||
|
||||
# ui --------------------
|
||||
# очень большой костыль
|
||||
subroup_scheme <- mhcs()$get_scheme("tasks") |>
|
||||
@@ -101,12 +82,31 @@ server <- function(id, values, scheme, mhcs) {
|
||||
))
|
||||
}
|
||||
|
||||
## new tasks ----------------
|
||||
get_default_task <- function() {
|
||||
|
||||
tibble::tibble(
|
||||
task_id = paste0(format(Sys.time(), "%Y%m%d%H%M%S"), "_", values$main_key),
|
||||
task_main_key = values$main_key,
|
||||
task_status = "active",
|
||||
task_title = "НОВАЯ ЗАДАЧА",
|
||||
task_description = "",
|
||||
task_due_date = NA,
|
||||
task_user_created = values$current_user,
|
||||
task_datetime_created = Sys.time(),
|
||||
task_user_last_updated = NA,
|
||||
task_datetime_last_updated = NA,
|
||||
task_user_completed = NA,
|
||||
task_datetime_completed = NA
|
||||
)
|
||||
}
|
||||
|
||||
# button logic ---------------------
|
||||
## отображение окна -----------------
|
||||
observeEvent(input$display_task_modal, {
|
||||
|
||||
con <- db$make_db_connection(scheme(),"nested_tables")
|
||||
on.exit(db$close_db_connection(con, "nested_tables"), add = TRUE)
|
||||
con <- db$make_db_connection(scheme(),"display_task_modal")
|
||||
on.exit(db$close_db_connection(con, "display_task_modal"), add = TRUE)
|
||||
|
||||
values$tasks_data <- if ("tasks" %in% DBI::dbListTables(con)) {
|
||||
DBI::dbGetQuery(con, glue::glue("SELECT * FROM tasks WHERE task_main_key = '{values$main_key}'")) |>
|
||||
@@ -247,7 +247,7 @@ server <- function(id, values, scheme, mhcs) {
|
||||
|
||||
})
|
||||
|
||||
## с
|
||||
## создание новой задачи -------------
|
||||
observeEvent(input$tasks_create_new_task, {
|
||||
new_task <- get_default_task()
|
||||
|
||||
@@ -263,6 +263,7 @@ server <- function(id, values, scheme, mhcs) {
|
||||
show_modal_for_tasks()
|
||||
})
|
||||
|
||||
## создание новой авто-задачи -------------
|
||||
observeEvent(input$tasks_add_autoreview, {
|
||||
new_task <- get_default_task()
|
||||
|
||||
@@ -282,6 +283,64 @@ server <- function(id, values, scheme, mhcs) {
|
||||
show_modal_for_tasks()
|
||||
})
|
||||
|
||||
## отображение списка задач для текущего дня ------------
|
||||
observeEvent(input$show_dt_today, {
|
||||
|
||||
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'")) |>
|
||||
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))
|
||||
|
||||
output$dt_todays_tasks <- DT::renderDataTable(
|
||||
DT::datatable(
|
||||
values$tasks_data,
|
||||
caption = 'Table 1: This is a simple caption for the table.',
|
||||
rownames = FALSE,
|
||||
# colnames = col_types |> dplyr::pull(form_id, form_label),
|
||||
extensions = c('KeyTable', "FixedColumns"),
|
||||
# editable = 'cell',
|
||||
selection = "single",
|
||||
options = list(
|
||||
dom = 'tip',
|
||||
scrollX = TRUE,
|
||||
fixedColumns = list(leftColumns = 1),
|
||||
keys = TRUE
|
||||
)
|
||||
) |>
|
||||
DT::formatDate(c("task_datetime_created", "task_datetime_completed", "task_datetime_last_updated", "task_due_date"), "toLocaleDateString", params = list('ru-RU'))
|
||||
)
|
||||
|
||||
showModal(modalDialog(
|
||||
DT::dataTableOutput(ns("dt_todays_tasks")),
|
||||
size = "xl",
|
||||
footer = tagList(
|
||||
actionButton(ns("jump_to_main_key"), "перейти к id")
|
||||
),
|
||||
easyClose = TRUE
|
||||
))
|
||||
|
||||
})
|
||||
|
||||
observeEvent(input$jump_to_main_key, {
|
||||
|
||||
if (is.null(input$dt_todays_tasks_rows_selected)) {
|
||||
showNotification("необходимо выбрать задачу", type = "error")
|
||||
} else {
|
||||
|
||||
# get key
|
||||
new_main_key <- values$tasks_data[input$dt_todays_tasks_rows_selected,]$task_main_key
|
||||
values$main_key <- new_main_key
|
||||
|
||||
showNotification("TODO: если ключа нет в таблице?!", type = "warning", duration = NULL)
|
||||
removeModal()
|
||||
|
||||
# log_action_to_db("loading data", values$main_key, con = con)
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user