1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| server = function(input, output, session) {
#Création de la fonction shinyInput
shinyInput <- function(FUN, len, id, ...) {
inputs <- character(len)
for (i in seq_len(len)) {
inputs[i] <- as.character(FUN(paste0(id, i), ...))
}
inputs
}
#Création des colonnes bouton
df <- reactiveValues(data = data.frame(
validation = shinyInput(actionButton, 1,
id = "button_",
label = "Check",
onclick = 'Shiny.onInputChange(\"select_button\", this.id)'),
lien_fiches = createLink(base$fiches.donnees)[1]
))
#Création de la règle de filtre a partir des critères
create_rules <- reactive({
paste(c(input$territoire, input$doc), "== 'Oui'", collapse = " | ")
})
#Extraction des critères de la base
FinalData <- eventReactive(input$submit, {
if(is.null(c(input$territoire, input$doc)))
return()
else (base %>% filter_(create_rules()))
})
#Assemblage des deux dataframe
fdt <- eventReactive(input$submit, {
tmp_fdt <- cbind(FinalData()[1:3], df$data)
colnames(tmp_fdt) <- c("Sous-thèmes", "Données", "Insee", "Validation", "Fiches données")
tmp_fdt
})
#Filtres
gfilter <- reactive({
filtered_data <- fdt()
#Filtres simples
if (input$f_st != "Tous" & input$f_don == "Tous"){
filtered_data <- filtered_data[FinalData()$sous.themes == input$f_st,]
updateSelectInput(session, inputId = "f_don", choices = c("Tous", filtered_data[2]))
}
if (input$f_don != "Tous" & input$f_st == "Tous"){
filtered_data <- filtered_data[FinalData()$donnees == input$f_don,]
updateSelectInput(session, inputId = "f_st", choices = c("Tous", filtered_data[1,1]))
}
if (input$f_check != "Tous" & input$f_check == "Check"){
filtered_data <- filtered_data[FinalData()$select_button == input$f_check,]
}
if (input$f_check != "Tous" & input$f_check == "Ok"){
filtered_data <- filtered_data[FinalData()$df$validation == input$f_check,]
}
if (input$f_doc != "Tous" & input$f_doc == "PCAET"){
filtered_data <- filtered_data[FinalData()$PCAET == "Oui",]
updateSelectInput(session, inputId = "f_don", choices = c("Tous", filtered_data[2]))
updateSelectInput(session, inputId = "f_st", choices = c("Tous", filtered_data[1,1]))
}
return(filtered_data)
})
#Rendu de la table d'extraction
output$Synthese <- DT::renderDT(DT::datatable({
gfilter()
},
escape = FALSE,
selection = "none",
extensions="Buttons",
options = list(
pageLength = 100,
#Cache la colonne "Insee"
columnDefs = list(list(visible=FALSE, targets=3)),
#Couleur du header de l'extraction
initComplete = JS(
"function(settings, json) {",
"$(this.api().table().header()).css({'background-color': '#1A242F', 'color': '#fff'});",
"}"),
#Paramètrage des boutons d'export
dom="Bfrtip",
buttons = list(list(
extend = "collection",
filename = "Extraction",
buttons = c("copy", "csv", "excel", "pdf", "print"),
text = "Télécharger la sélection")
),
language = list(paginate =
list('next'="suivant",
'previous'="précédent"),
info = "Pages de _PAGE_ à _PAGES_",
search = "Rechercher",
infoFiltered = "(filtre des _MAX_ lignes)")
)))
} |
Partager