petit app shiny parce que voila quoi
This commit is contained in:
parent
9214b2b2fa
commit
5bc3fc1f10
1 changed files with 96 additions and 0 deletions
96
app.R
Normal file
96
app.R
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
# Load necessary libraries
|
||||
library(shiny)
|
||||
library(jsonlite)
|
||||
library(httr)
|
||||
library(shinycssloaders) # For the spinner
|
||||
|
||||
# Assuming you have your custom functions in a file called 'your_functions.R'
|
||||
devtools::load_all()
|
||||
|
||||
source("secrets")
|
||||
|
||||
# Create a Bearer token header
|
||||
headers.default <- add_headers(
|
||||
accept = "*/*",
|
||||
apikey = token4
|
||||
)
|
||||
|
||||
# Load station data
|
||||
allstations <- read.csv("allstations.csv")
|
||||
|
||||
# Define UI for application
|
||||
ui <- fluidPage(
|
||||
tags$head(
|
||||
tags$style(HTML("
|
||||
#main {
|
||||
height: 100vh; /* Full height of the viewport */
|
||||
overflow-y: auto; /* Scroll if content overflows */
|
||||
}
|
||||
.container-fluid {
|
||||
height: 100vh; /* Full height of the viewport */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.row {
|
||||
flex-grow: 1;
|
||||
display: flex;
|
||||
}
|
||||
.col-sm-8 {
|
||||
flex-grow: 1; /* Allow the main panel to grow */
|
||||
}
|
||||
"))
|
||||
),
|
||||
|
||||
# Application title
|
||||
titlePanel("Beaumont aka SECMONT"),
|
||||
|
||||
# Sidebar for user inputs
|
||||
sidebarLayout(
|
||||
sidebarPanel(
|
||||
width=2,
|
||||
numericInput(
|
||||
inputId = "daysBefore",
|
||||
label = "Nb jour à check:",
|
||||
value = 10,
|
||||
min = 0
|
||||
)
|
||||
),
|
||||
|
||||
# Main panel for displaying plot
|
||||
mainPanel(
|
||||
width = 6,
|
||||
withSpinner( plotOutput("dataPlot"))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
# Define server logic required to generate and plot data
|
||||
server <- function(input, output) {
|
||||
# Reactive expression to fetch data based on input and display spinner while loading
|
||||
|
||||
|
||||
# Render the plot
|
||||
output$dataPlot <- renderPlot({
|
||||
startdate <- format(Sys.Date() - input$daysBefore, "%Y-%m-%d")
|
||||
test1 <- getAllFromCoord(vignass.coor, start_date = startdate, end_date = format(Sys.Date(), "%Y-%m-%d"), allstations, headers = headers.default,btw_station_sleep = .5,within_statio_sleep = 1)
|
||||
|
||||
# Prepare colors
|
||||
cols <- palette.colors()[1:length(unique(test1$Nom_usuel))]
|
||||
names(cols) <- unique(test1$Nom_usuel)
|
||||
|
||||
# Filter data
|
||||
testsep <- test1
|
||||
testsep[testsep[,3] == 0 & !is.na(testsep[,3]), c(3,4)] <- NA
|
||||
|
||||
plot(getDate(testsep[,2]), testsep[,3], pch = 20, col = adjustcolor(cols[testsep$Nom_usuel], .4), cex = 1.3, ylim = c(0, 8))
|
||||
|
||||
# Add legend
|
||||
legend("topleft", col = cols, legend = names(cols), pch = 20, cex = 1)
|
||||
|
||||
# Highlight specific date
|
||||
abline(v = as.numeric(as.POSIXlt("2024-08-07", format = "%Y-%m-%d")), lwd = 3, col = "red")
|
||||
})
|
||||
}
|
||||
|
||||
# Run the application
|
||||
shinyApp(ui = ui, server = server)
|
||||
Loading…
Reference in a new issue