Skip to content
Snippets Groups Projects
Commit cb801aef authored by LE DURAND Matteo's avatar LE DURAND Matteo
Browse files

changement des filtres pour du selectize input

parent bce0bf76
No related branches found
No related tags found
2 merge requests!27ajout de gitlabr pour récupérer efficacement les commits des différentes...,!18MAJ de main de la branche dev
server <- function(input, output, session) { server <- function(input, output, session) {
r <- reactiveValues( r <- reactiveValues(
filteredData = all_data, filteredData = all_data,
filteredByProject = all_data, # Étape intermédiaire filtrée par daterange et project_name
filteredTopics = NULL, filteredTopics = NULL,
filteredProjects = NULL, filteredProjects = NULL,
filteredAuthors = NULL, filteredAuthors = NULL,
filteredReCodes = NULL, filteredReCodes = NULL,
filteredCategories = NULL filteredCategories = NULL,
filteredByDate = NULL,
) )
# Mise à jour des filtres selon la date # Filtrage par date et project_name uniquement
observeEvent(input$daterange, { observeEvent(input$daterange, {
req(input$daterange) req(input$daterange)
r$filteredData <- all_data %>% r$filteredByDate <- all_data %>%
filter(updated_at >= as.Date(input$daterange[[1]]) & filter(
updated_at <= as.Date(input$daterange[[2]])) updated_at >= as.Date(input$daterange[[1]]) &
updated_at <= as.Date(input$daterange[[2]]) &
(if (length(input$project_name)) project_name %in% input$project_name else TRUE)
)
updateFilters() # Mise à jour des choix basés sur le filtrage intermédiaire
})
# Mise à jour des autres filtres
observe({
req(input$daterange)
r$filteredData <- r$filteredByDate %>%
filter(
(if (length(input$topics)) sapply(input$topics, function(t) grepl(t, topics)) %>% rowSums() > 0 else TRUE) &
(if (length(input$author)) author %in% input$author else TRUE) &
(if (length(input$re_code)) re_code %in% input$re_code else TRUE) &
(if (length(input$categorie)) categorie %in% input$categorie else TRUE)
)
updateFilters() updateFilters()
}) })
# Fonction de mise à jour des filtres # Fonction de mise à jour des choix pour les filtres
updateFilters <- reactive({ updateFilters <- reactive({
filteredTopics <- r$filteredData$topics %>% # Basé sur les données filtrées par date et projet
strsplit(",") %>% updateSelectizeInput(session, "topics", choices = unique(r$filteredByDate$topics)%>%
unlist() %>% strsplit(split = ",") %>% # Divise les chaînes en éléments séparés
trimws() %>% unlist() %>% # Aplatit la liste obtenue
unique() na.omit() %>% # Supprime les NA (au cas où)
updateSelectizeInput(session, "topics", choices = filteredTopics, selected = input$topics) .[. != ""] %>% # Supprime les chaînes vides
trimws() %>% # suppremie les espace avnt et apres
updateSelectizeInput(session, "project_name", choices = unique(r$filteredData$project_name), selected = input$project_name) unique() , selected = input$topics)
updateSelectizeInput(session, "author", choices = unique(r$filteredData$author), selected = input$author) updateSelectizeInput(session, "author", choices = unique(r$filteredByDate$author), selected = input$author)
updateSelectizeInput(session, "re_code", choices = unique(r$filteredData$re_code), selected = input$re_code) updateSelectizeInput(session, "categorie", choices = unique(r$filteredByDate$categorie), selected = input$categorie)
updateSelectizeInput(session, "categorie", choices = unique(r$filteredData$categorie), selected = input$categorie)
# Basé uniquement sur les données globales pour éviter que project_name soit affecté
updateSelectizeInput(session, "project_name", choices = sort(unique(r$filteredByDate$project_name)), selected = input$project_name)
}) })
# Réinitialisation des filtres sauf les dates # Réinitialisation des filtres
observeEvent(input$reset, { observeEvent(input$reset, {
r$filteredData <- all_data %>% r$filteredByDate <- all_data %>%
filter(updated_at >= as.Date(input$daterange[[1]]) & filter(updated_at >= as.Date(input$daterange[[1]]) &
updated_at <= as.Date(input$daterange[[2]])) updated_at <= as.Date(input$daterange[[2]]))
r$filteredData <- r$filteredByDate
updateSelectizeInput(session, "topics", selected = NULL) updateSelectizeInput(session, "topics", selected = NULL)
updateSelectizeInput(session, "project_name", selected = NULL)
updateSelectizeInput(session, "author", selected = NULL) updateSelectizeInput(session, "author", selected = NULL)
updateSelectizeInput(session, "re_code", selected = NULL)
updateSelectizeInput(session, "categorie", selected = NULL) updateSelectizeInput(session, "categorie", selected = NULL)
updateFilters() updateFilters()
}) })
# Mise à jour des données filtrées
observe({
req(input$daterange)
r$filteredData <- all_data %>%
filter(
updated_at >= as.Date(input$daterange[[1]]) &
updated_at <= as.Date(input$daterange[[2]]) &
(if (length(input$topics)) sapply(input$topics, function(t) grepl(t, topics)) %>% rowSums() > 0 else TRUE) &
(if (length(input$project_name)) project_name %in% input$project_name else TRUE) &
(if (length(input$author)) author %in% input$author else TRUE) &
(if (length(input$re_code)) re_code %in% input$re_code else TRUE) &
(if (length(input$categorie)) categorie %in% input$categorie else TRUE)
)
updateFilters()
})
# Liens dynamiques pour les projets va partir car les projet en sous groupe ne fonctionne pas
output$lien <- renderUI({ output$lien <- renderUI({
projects_with_links <- r$filteredData %>% projects_with_links <- r$filteredData %>%
filter(origine == "Gitlab_Forge" & project_name %in% input$project_name) filter(origine == "Gitlab_Forge" & project_name %in% input$project_name)
...@@ -87,7 +87,6 @@ server <- function(input, output, session) { ...@@ -87,7 +87,6 @@ server <- function(input, output, session) {
ggplot2::labs(shape = "Événement", color = "Événement", x = "") + ggplot2::labs(shape = "Événement", color = "Événement", x = "") +
ggplot2::scale_x_datetime(timezone = "Europe/Paris") + ggplot2::scale_x_datetime(timezone = "Europe/Paris") +
gouvdown::theme_gouv()+ gouvdown::theme_gouv()+
gouvdown::scale_color_gouv_discrete(palette = "pal_gouv_qual2")+
ggplot2::theme( ggplot2::theme(
axis.text.x = ggplot2::element_text(angle = 0, hjust = 1), axis.text.x = ggplot2::element_text(angle = 0, hjust = 1),
axis.title.y = ggplot2::element_blank() axis.title.y = ggplot2::element_blank()
...@@ -96,6 +95,7 @@ server <- function(input, output, session) { ...@@ -96,6 +95,7 @@ server <- function(input, output, session) {
plotly::ggplotly(p, tooltip = "text") plotly::ggplotly(p, tooltip = "text")
}) })
output$table <- renderDataTable({ output$table <- renderDataTable({
req(r$filteredData) req(r$filteredData)
datatable(r$filteredData , datatable(r$filteredData ,
...@@ -111,4 +111,8 @@ server <- function(input, output, session) { ...@@ -111,4 +111,8 @@ server <- function(input, output, session) {
) )
}) })
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment