DT:: tableau interactif

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

emmanuel Dupont
Messages : 6
Enregistré le : 05 Nov 2019, 14:28

DT:: tableau interactif

Messagepar emmanuel Dupont » 19 Aoû 2020, 20:57

Bonjour,
Je cherche à actualiser mes données filtrées dans une nouvelle variable ou dans la variable 'mytable' lorsque je click sur le bouton GO. Merci pour votre aide

Code : Tout sélectionner

library(shinyBS)
library(DT)
mytable <- reactiveValues()
data("mtcars")
server <- function(input, output, session) {
 
   df <- reactive({
      if(input$buttonfilter %% 9 == 1){
        df.sub <- mtcars
   } else {
     df.sub <- subset(mtcars, subset = am == '1')
   }
   df.sub
   })
  output$mytable <- DT::renderDataTable(isolate(df()), filter = 'top')
  proxy <- dataTableProxy('mytable')
 
  observe({
    replaceData(proxy, df(), resetPaging = FALSE)
  })
}
ui <- fluidPage(h3('données'),
                 bsButton("buttonfilter","Show only ma", type = 'toggle'),
                actionButton(inputId = "go", label = "Go"),
                br(),br(),
                DT::dataTableOutput('mytable')
)
shiny::shinyApp(ui=ui,server=server)

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: DT:: tableau interactif

Messagepar Mickael Canouil » 20 Aoû 2020, 08:04

Bonjour,

qu'entendez-vous exactement par "enregistrer" ?
https://shiny.rstudio.com/gallery/file-download.html
https://shiny.rstudio.com/gallery/

Plus généralement DT dispose de tous les paramètres originaux du plugin jQuery DataTables https://www.datatables.net/
Le site internet de DT (https://rstudio.github.io/DT) dispose également d'un grand nombre d'exemples pouvant vous être utile, comme ajouter des boutons d'exportations, réordonner les lignes, etc.
https://rstudio.github.io/DT/extensions.html

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

emmanuel Dupont
Messages : 6
Enregistré le : 05 Nov 2019, 14:28

Re: DT:: tableau interactif

Messagepar emmanuel Dupont » 20 Aoû 2020, 12:44

Merci pour ta réponse et pour les liens Mickaël.
Il ne s'agit pas de la télécharger les données, mais bien d'actualiser les valeurs dans la variable 'mytable'.
Mon objectif étant d'utiliser la variable avec ces valeurs filtrées voir de filtrer de nouveau les nouvelles valeurs résultantes du premier filtrage.
Merci pour vos réponses.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: DT:: tableau interactif

Messagepar Mickael Canouil » 21 Aoû 2020, 08:34

Conceptuellement, quelque-chose m'échappe ...

Edit : J'ai compris avec la documentation de dataTableProxy et replaceData.
Bouton action corrigé pour avoir un effet.

Code : Tout sélectionner

library(shiny)
library(shinyBS)
library(DT)
data("mtcars")

server <- function(input, output, session) {
  df <- reactive({
    if (input$buttonfilter %% 9 == 1){
      mtcars
    
} else {
      subset(mtcars, subset = am == '1')
    }
  })
  output$mytable <- renderDataTable(df(), filter = "top")
  observeEvent(input$go, {
    replaceData(dataTableProxy("mytable"), mtcars, resetPaging = FALSE)
  })
}

ui <- fluidPage(
  bsButton("buttonfilter","Show only ma", type = 'toggle'),
  actionButton(inputId = "go", label = "Go"),
  dataTableOutput("mytable")
)

shinyApp(ui = ui, server = server)


EN l'état, à chaque fois que vous exploitez le bouton "show only ma" le proxy change, rendant de ce fait impossible la transmission des filtres entre la version de la table avec le bouton actif et celle avec le bouton inactif.
Mickaël
mickael.canouil.fr | rlille.fr

emmanuel Dupont
Messages : 6
Enregistré le : 05 Nov 2019, 14:28

Re: DT:: tableau interactif

Messagepar emmanuel Dupont » 22 Aoû 2020, 10:23

Bonjour, je recherche seulement à obtenir mes données filtrées dans une variable....

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: DT:: tableau interactif

Messagepar Mickael Canouil » 25 Aoû 2020, 08:01

Il va falloir développer un peu ce que vous souhaitez réellement faire ...
Si l'idée est simplement de "stocker" (que veut dire "stocker" ?), ce n'est pas ce que fait dataTableProxy combiner avec replaceData.

Par définition dans shiny "output$mytable" est une table interactive.
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité