add homekeeper stack
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
screen_queen_ui <- function(id) {
|
||||
ns <- NS(id)
|
||||
shiny::div(
|
||||
shiny::uiOutput(ns("current_queen")),
|
||||
section_card("Neue Königin erfassen",
|
||||
shiny::div(class = "row g-2 py-2",
|
||||
shiny::div(class = "col-6",
|
||||
shiny::numericInput(ns("year"), "Jahrgang",
|
||||
value = as.integer(format(Sys.Date(), "%Y")), min = 2000, max = 2100, step = 1)
|
||||
),
|
||||
shiny::div(class = "col-6",
|
||||
shiny::textInput(ns("breed"), "Rasse / Zucht")
|
||||
)
|
||||
),
|
||||
btn_group_row(ns, "color", "Markierungsfarbe",
|
||||
c("Weiß" = "weiss", "Gelb" = "gelb", "Rot" = "rot", "Grün" = "gruen", "Blau" = "blau")
|
||||
),
|
||||
shiny::div(class = "py-2",
|
||||
shiny::uiOutput(ns("origin_sel")),
|
||||
shiny::dateInput(ns("introduced"), "Eingeweiselt am",
|
||||
value = Sys.Date(), language = "de", weekstart = 1),
|
||||
shiny::textAreaInput(ns("notes"), "Notizen", rows = 2, width = "100%")
|
||||
)
|
||||
),
|
||||
shiny::div(class = "d-grid mt-2 mb-5",
|
||||
shiny::actionButton(ns("save"), "Königin speichern", class = "btn btn-info btn-lg")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
screen_queen_server <- function(id, db, nav) {
|
||||
moduleServer(id, function(input, output, session) {
|
||||
ns <- session$ns
|
||||
color_v <- btn_group_server("color", ns, input, output,
|
||||
c("Weiß" = "weiss", "Gelb" = "gelb", "Rot" = "rot", "Grün" = "gruen", "Blau" = "blau"))
|
||||
|
||||
output$current_queen <- renderUI({
|
||||
req(nav$colony_id)
|
||||
co <- db_colonies_get(db, nav$colony_id)
|
||||
req(nrow(co) > 0, !is.na(co$current_queen_id))
|
||||
q <- db_queens_get(db, co$current_queen_id)
|
||||
req(nrow(q) > 0)
|
||||
bslib::card(
|
||||
class = "mb-3",
|
||||
bslib::card_header("Aktuelle Königin"),
|
||||
bslib::card_body(
|
||||
shiny::div(class = "row g-2",
|
||||
shiny::div(class = "col-4",
|
||||
shiny::tags$small(class = "text-muted", "Jahrgang"), shiny::tags$br(),
|
||||
shiny::tags$strong(q$year %||% "–")
|
||||
),
|
||||
shiny::div(class = "col-4",
|
||||
shiny::tags$small(class = "text-muted", "Rasse"), shiny::tags$br(),
|
||||
shiny::tags$strong(q$breed %||% "–")
|
||||
),
|
||||
shiny::div(class = "col-4",
|
||||
shiny::tags$small(class = "text-muted", "Farbe"), shiny::tags$br(),
|
||||
shiny::tags$strong(q$marked_color %||% "–")
|
||||
)
|
||||
),
|
||||
shiny::div(class = "mt-2",
|
||||
shiny::actionButton(ns("supersede"), "Ablösen (neue Königin)",
|
||||
class = "btn btn-sm btn-outline-warning")
|
||||
)
|
||||
)
|
||||
)
|
||||
})
|
||||
|
||||
observeEvent(input$supersede, {
|
||||
req(nav$colony_id)
|
||||
co <- db_colonies_get(db, nav$colony_id)
|
||||
if (!is.na(co$current_queen_id)) db_queens_supersede(db, co$current_queen_id)
|
||||
})
|
||||
|
||||
output$origin_sel <- renderUI({
|
||||
cols <- db_colonies_list(db)
|
||||
shiny::selectInput(ns("origin"), "Herkunft (Muttervolk)",
|
||||
choices = c("Unbekannt" = "", setNames(cols$id, cols$name))
|
||||
)
|
||||
})
|
||||
|
||||
observeEvent(nav$screen, {
|
||||
if (nav$screen == "queens") color_v(NA)
|
||||
}, ignoreInit = TRUE)
|
||||
|
||||
observeEvent(input$save, {
|
||||
req(nav$colony_id)
|
||||
origin <- if (!is.null(input$origin) && input$origin != "")
|
||||
as.integer(input$origin) else NA
|
||||
db_queens_insert(db,
|
||||
colony_id = nav$colony_id,
|
||||
year = input$year,
|
||||
breed = input$breed,
|
||||
origin_colony_id = origin,
|
||||
marked_color = color_v(),
|
||||
notes = input$notes,
|
||||
introduced_at = as.character(input$introduced)
|
||||
)
|
||||
nav$screen <- "colony"
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user