From 93961e2a6c9429d58fdee7384a864c8458b8afb6 Mon Sep 17 00:00:00 2001 From: dylanbenzi Date: Wed, 8 Apr 2026 13:55:25 -0400 Subject: [PATCH] add storm metric summary in storm selector --- app/server.R | 88 +++++++++++++++++++++++++++++++++++++++++++--------- app/ui.R | 30 +++++++++--------- 2 files changed, 89 insertions(+), 29 deletions(-) diff --git a/app/server.R b/app/server.R index 5a80fa7..c9f7fce 100644 --- a/app/server.R +++ b/app/server.R @@ -20,7 +20,19 @@ server <- function(input, output, session) { ) )) ) %>% - select(hurdatid, storm_name, storm_year, data, mmh, mmp, total) + select( + hurdatid, + storm_name, + storm_year, + data, + mmh, + mmp, + total_direct_deaths, + total_observations, + max_category, + max_windspeed, + min_pressure + ) output$dt_storm_badges <- renderUI({ div(HTML(dt_storm_selected()$data)) @@ -28,7 +40,16 @@ server <- function(input, output, session) { output$storm_coverage_table <- renderDT({ datatable( - storm_coverage, + storm_coverage %>% + select( + hurdatid, + storm_name, + storm_year, + data, + mmh, + mmp, + total_direct_deaths + ), fillContainer = TRUE, rownames = F, escape = F, @@ -59,6 +80,57 @@ server <- function(input, output, session) { storm_coverage[input$storm_coverage_table_rows_selected, ] }) + output$dt_max_category <- renderText({ + if (!is.null(input$storm_coverage_table_rows_selected)) { + if (is.na(dt_storm_selected()$max_category)) { + "N/A" + } else { + paste( + "Cat ", + dt_storm_selected()$max_category + ) + } + } + }) + + output$dt_track_observations <- renderText({ + if (!is.null(input$storm_coverage_table_rows_selected)) { + if (is.na(dt_storm_selected()$total_observations)) { + "N/A" + } else { + paste0( + dt_storm_selected()$total_observations + ) + } + } + }) + + output$dt_max_windspeed <- renderText({ + if (!is.null(input$storm_coverage_table_rows_selected)) { + if (is.na(dt_storm_selected()$max_windspeed)) { + "N/A" + } else { + paste( + dt_storm_selected()$max_windspeed, + "kts" + ) + } + } + }) + + output$dt_min_pressure <- renderText({ + if (!is.null(input$storm_coverage_table_rows_selected)) { + if (is.na(dt_storm_selected()$min_pressure)) { + "N/A" + } else { + paste( + dt_storm_selected()$min_pressure, + "mb" + ) + } + } + }) + output$dt_storm_name_year <- renderText({ if (is.null(input$storm_coverage_table_rows_selected)) { "Select a storm" @@ -72,18 +144,6 @@ server <- function(input, output, session) { } }) - best_track_summary <- reactive({ - req(input$storm_coverage_table_rows_selected) - - storm <- list( - storm_basin = "AL", - storm_year = dt_storm_selected()$storm_year, - storm_name = dt_storm_selected()$storm_name - ) - - get_best_track_summary(storm) - }) - normalized_loss_summary <- reactive({ req(input$storm_coverage_table_rows_selected) diff --git a/app/ui.R b/app/ui.R index d0b57f5..ea01d12 100644 --- a/app/ui.R +++ b/app/ui.R @@ -68,18 +68,8 @@ ui <- page_navbar( card_body( class = "p-1", div( - div(tags$small(class = "text-muted", "MMH23 Loss")), - #div(textOutput("dt_mmh_loss")) - ) - ) - ), - card( - class = "bg-light", - card_body( - class = "p-1", - div( - div(tags$small(class = "text-muted", "Direct Deaths")), - div("hi") + div(tags$small(class = "text-muted", "Track Observations")), + h6(strong(textOutput("dt_track_observations"))) ) ) ), @@ -89,7 +79,7 @@ ui <- page_navbar( class = "p-1", div( div(tags$small(class = "text-muted", "Max Category")), - div("hi") + h6(strong(textOutput("dt_max_category"))) ) ) ), @@ -98,8 +88,18 @@ ui <- page_navbar( card_body( class = "p-1", div( - div(tags$small(class = "text-muted", "Track Observations")), - div("hi") + div(tags$small(class = "text-muted", "Max Windspeed")), + h6(strong(textOutput("dt_max_windspeed"))) + ) + ) + ), + card( + class = "bg-light", + card_body( + class = "p-1", + div( + div(tags$small(class = "text-muted", "Min Pressure")), + h6(strong(textOutput("dt_min_pressure"))) ) ) )