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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
library(DT)
library(readODS)
library(shiny)
library(shinydashboard)
library(dplyr)
library(shinyWidgets)
#Lecture du fichier
base <- read_ods("base.ods")
ui <- dashboardPage(
dashboardHeader(title ="Test"),
#Mise de en forme de la Sidebar
dashboardSidebar(
#Couleurs de l'entête
tags$head(tags$style(HTML('.logo {
background-color: #8eb06a !important;
}
.navbar {
background-color: #a7cd7f !important;
}
'))),
#Texte principal
h4(strong("Critères de sélection"), align="center"),
#Liste des critères de sélection
prettyCheckboxGroup("territoire", "Territoire",
thick = TRUE,
shape = "curve",
animation = "pulse",
choices = c("Valeur1", "Valeur2", "Valeur3", "Valeur4", "Valeur5", "Valeur6")),
prettyCheckboxGroup("doc", "Documents de planification existants",
thick = TRUE,
shape = "curve",
animation = "pulse",
choices = c("Valeur1", "Valeur2", "Valeur3", "Valeur4", "Valeur5", "Valeur6", "Valeur7")),
#Et le miracle fut !
actionButton("submit", ("Extraction"))
),
#Mise en forme de la page principale
dashboardBody(
fluidPage(
#Onglets Extraction et Ajout de données
mainPanel(width = 12,
tabsetPanel(
#Onglet Extraction
tabPanel("Extraction",
fluidRow(
#Liste des différents filtres possibles sur le résultat
column(width=4,
selectInput("st",
"Sous-Thèmes :",
c("Tous",
unique(as.character(base$sous.themes))))
),
column(width=4,
selectInput("don",
"Données :",
c("Tous",
unique(as.character(base$donnees))))
),
column(width=4,
selectInput("chk",
"Check :",
c("Tous",
unique(as.character(base$check))))
),
column(width=12,
DT::dataTableOutput("Synthese")
)
)
),
#Onglet Ajout de données
tabPanel("Ajout de données",
fluidRow(
selectInput("sous.themes.insert","Sous-Thèmes :", c("", unique(as.character(base$sous.themes)))),
textInput("donnees.insert","Données :"),
actionButton("insert", ("Ajout"))
)
)
)
))))
server = function(input, output, session) {
#Création de la règle de filtre a partir des critères
create_rules <- reactive({
paste(c(input$territoire, input$doc), "== 'Oui'", collapse = " | ")
})
#Méthode pour le click
FinalData <- eventReactive(input$submit,{
base %>% filter_(create_rules())
})
#Rendu de la table d'extraction
output$Synthese <- DT::renderDataTable(DT::datatable({
fdt <- FinalData()
if (input$st != "Tous") {
fdt <- fdt[fdt$sous.themes == input$st,]
}
if (input$don != "Tous") {
fdt <- fdt[fdt$donnees == input$don,]
}
if (input$chk != "Tous") {
fdt <- fdt[fdt$check == input$chk,]
}
fdt[1:4]
}))
}
shinyApp(ui, server) |
Partager