Skip to content
Snippets Groups Projects
Commit 8e169d28 authored by lisasmah's avatar lisasmah
Browse files

#51 mise à jour par rapport à la branche dev

parent f23a9a88
No related branches found
No related tags found
Loading
......@@ -107,6 +107,7 @@ server <- function(input, output, session) {
# Affichage des résultats dans un tableau
output$search_results <- DT::renderDataTable({
req(r$filtered_data)
DT::datatable(r$filtered_data, escape = FALSE,
options = list(pageLength = 20, lengthMenu = c(20, 50, 100),
language = list(url = 'https://cdn.datatables.net/plug-ins/1.10.21/i18n/French.json')))
......@@ -146,13 +147,14 @@ server <- function(input, output, session) {
req(input$clic_table == input$table)
message(paste("Mise à jour de l'input table réalisée : ", input$table))
shinyjs::click("visualiserMetadata")
shinygouv::updateTabsetPanel_dsfr(session = session, inputId = "mon_panel1", selected = "Explorer")
shinygouv::updateTabsetPanel_dsfr(session = session, inputId = "navbar_dsfr", selected = "explorer_panel")
})
})
})
})
# Afficher le tableau selected_metadata uniquement si le bouton est cliqué -------------
observeEvent(input$visualiserMetadata, {
req(input$table)
......@@ -413,169 +415,15 @@ server <- function(input, output, session) {
return(NULL)
}
})
# Téléchargement des données CSV - TODO a revoir : 1. ajouter le téléchargement des métadonnées de schemas, bases, 2.recupérer le premier r$selected_data si non nul, 3. utiliser req() pour supprimer les if/else
output$downloadData <- downloadHandler(
filename = function() {
r$nom_csv
},
content = function(file) {
write.csv2(r$data_csv, file, row.names = FALSE)
},
contentType = "text/csv"
)
# Recherche plein texte-------------------------------------
# Événement lors du clic sur le bouton de recherche
observeEvent(input$search_button, {
# Fonction réactive pour filtrer les résultats de recherche
filtered_data <- reactive({
if (is.null(input$search_784_input) || input$search_784_input == '') {
return(NULL)
}
search_results <- base_recherche_txt %>%
dplyr::filter(grepl(input$search_784_input, description, ignore.case = TRUE)) %>%
dplyr::select(base, nom_schema, nom_table)
if (nrow(search_results) > 0) {
search_results <- search_results %>%
left_join(tables_catalog %>% dplyr::select(base, nom_schema, nom_table, commentaire),
by = c("base", "nom_schema", "nom_table")) %>%
dplyr::rename(Libellé = commentaire) %>%
dplyr::distinct() # Éliminer les doublons
}
search_results %>%
dplyr::mutate(
base = paste0('<a href="#" onclick="Shiny.onInputChange(\'selected_base\', \'', base, '\');Shiny.onInputChange(\'nav_to_explorer\', Math.random());">', base, '</a>'),
nom_schema = paste0('<a href="#" onclick="Shiny.onInputChange(\'selected_schema\', \'', nom_schema, '\');Shiny.onInputChange(\'nav_to_explorer\', Math.random());">', nom_schema, '</a>'),
nom_table = paste0('<a href="#" onclick="Shiny.onInputChange(\'selected_table\', \'', nom_table, '\');Shiny.onInputChange(\'nav_to_explorer\', Math.random());">', nom_table, '</a>')
)
})
# Affichage des résultats dans un tableau
output$search_results <- DT::renderDataTable({
DT::datatable(filtered_data(), escape = FALSE, options = list(pageLength = 20, lengthMenu = c(20, 50, 100), language = list(url = 'https://cdn.datatables.net/plug-ins/1.10.21/i18n/French.json')))
})
# Affichage du message si aucun résultat n'est trouvé
output$search_message <- renderUI({
results <- filtered_data()
if (is.null(results) || nrow(results) == 0) {
tagList(
p(
"Aucun lot de données ne correspond à votre recherche, veuillez renouveler votre recherche ou explorer les bases de données disponibles (2e onglet)",
)
)
} else {
NULL
}
})
})
# Réagir à la sélection d'une base
observeEvent(input$selected_base, {
selected_base <- input$selected_base
req(selected_base)
schemas_pour_base <- schemas_pour_base_react()
# Mettre à jour les sélections et vider les champs dépendants
shiny::updateSelectInput(session, "base", choices = c(selected_base), selected = selected_base)
shiny::updateSelectInput(session, "schema", choices = c("Tous", schemas_pour_base$display_name), selected = "Tous")
shiny::updateSelectInput(session, "table", choices = c("Toutes"), selected = "Toutes")
# Simuler un clic sur le bouton "visualiserMetadata"
shinyjs::delay(500, {
shinyjs::click("visualiserMetadata")
})
})
# Réagir à la sélection d'un schéma
observeEvent(input$selected_schema, {
selected_schema <- input$selected_schema
selected_base <- tables_catalog %>%
dplyr::filter(nom_schema == selected_schema) %>%
dplyr::pull(base) %>%
unique()
req(selected_base)
selected_schema <- sub(" : .*", "", input$selected_schema)
tables_pour_schema <- tb_sch_base %>%
dplyr::filter(base == selected_base, nom_schema == selected_schema) %>%
dplyr::pull(table)
# Mettre à jour les sélections et forcer la mise à jour des dépendances
shinyjs::delay(100, {
shiny::updateSelectInput(session, "base", choices = c(selected_base), selected = selected_base)
shinyjs::delay(100, {
shiny::updateSelectInput(session, "schema", choices = c(selected_schema), selected = selected_schema)
shiny::updateSelectInput(session, "table", choices = c("Toutes", tables_pour_schema), selected = "Toutes")
})
})
# Simuler un clic sur le bouton "visualiserMetadata"
shinyjs::delay(300, {
shinyjs::click("visualiserMetadata")
})
})
# Réagir à la sélection d'une table
observeEvent(input$selected_table, {
selected_table <- input$selected_table
req(selected_table)
# Récupérer le schéma correspondant à la table sélectionnée
selected_schema <- tables_catalog %>%
dplyr::filter(nom_table == selected_table) %>%
dplyr::pull(nom_schema) %>%
unique()
req(selected_schema)
# Récupérer la base correspondant au schéma et la table sélectionnés
selected_base <- tables_catalog %>%
dplyr::filter(nom_schema == selected_schema, nom_table == selected_table) %>%
dplyr::pull(base) %>%
unique()
req(selected_base)
# Mettre à jour les sélections et forcer la mise à jour des dépendances
shinyjs::delay(100, {
shiny::updateSelectInput(session, "base", choices = c(selected_base), selected = selected_base)
shinyjs::delay(100, {
shiny::updateSelectInput(session, "schema", choices = c(selected_schema), selected = selected_schema)
shinyjs::delay(100, {
shiny::updateSelectInput(session, "table", choices = c(selected_table), selected = selected_table)
})
})
})
# Simuler un clic sur le bouton "visualiserMetadata"
shinyjs::delay(500, {
shinyjs::click("visualiserMetadata")
})
})
# Observer l'événement nav_to_explorer
observeEvent(input$nav_to_explorer, {
shinygouv::updateTabsetPanel_dsfr(session = session, inputId = "navbar_dsfr", selected = "explorer_panel")
})
#
# # Téléchargement des données CSV - TODO a revoir : 1. ajouter le téléchargement des métadonnées de schemas, bases, 2.recupérer le premier r$selected_data si non nul, 3. utiliser req() pour supprimer les if/else
# output$downloadData <- downloadHandler(
# filename = function() {
# r$nom_csv
# },
# content = function(file) {
# write.csv2(r$data_csv, file, row.names = FALSE)
# },
# contentType = "text/csv"
# )
}
# # Téléchargement des données attributaires au format CSV, géré par DT, a garder pour le projet QGIS
# output$downloadData <- downloadHandler(
# filename = function() {
# r$nom_csv
# },
# content = function(file) {
# write.csv2(r$data_csv, file, row.names = FALSE)
# },
# contentType = "text/csv"
# )
#}
......@@ -26,6 +26,7 @@ ui <- navbarPage_dsfr(
fluidPage_dsfr(
h3("Rechercher un lot de données dans le patrimoine de la DREAL"),
search_bar(),
tags$br(),
DT::dataTableOutput("search_results"),
uiOutput("search_message")
)
......@@ -50,7 +51,7 @@ ui <- navbarPage_dsfr(
uiOutput("title_metadata"), # Titre de l'objet sélectionné
uiOutput("commentaire_metadata"),
uiOutput("table_metadata"), #Nb de lignes et taille de la table
DT::dataTableOutput("data_table"),
DT::dataTableOutput("metadata_table"),
#uiOutput("metadata_section"), # Section des métadonnées avec "Dictionnaire d'attributs"
uiOutput("viz_data"), # Visualisation de la table des donnée
br(),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment