按下提交按钮后重置闪亮的应用程序

Firmo23

我有一个功能强大的闪亮应用程序,其逻辑如下所述:

应用逻辑:

用户通过使用 selectInput() "Label" 选择测试之一。这是主要操作,然后他可以修改其名称,例如测试 1 到测试 A。然后用户可以通过 numericInput()“测试中的项目”在测试中添加项目。这些是总项目。正如您将看到的,“测试中的项目”的数量与所选测试的 hot3 表中的“可用”列相同。通过“选择项目”,他可以选择要显示在 hot5 表中的特定项目。然后用户可以点击 hot5 表来选择一个特定的项目,选择的项目(或行)的数量显示在这个特定测试的“Sel”列下的 hot3 表中。“已选择的项目”仅显示在“选择项目”中选择的项目数。请注意,发生在表上的每次修改都不依赖于其他小部件。这意味着例如不需要更改标签名称。

问题 :

请看一下随附的屏幕截图。我将测试 2 的标签更改为测试 B,添加了 4 个项目,但没有使用 - 单击行 - 功能选择它们。然后我按下提交按钮,我意识到在此之后,“标签”的设置变回测试 1,但测试 B/测试 2 的所有设置都保留在我的应用程序中。这看起来好像我对测试 1 有相同的设置。我希望能够在按下提交按钮或选择另一个测试(“标签”)后,显示的设置是您在“标签”下选择的测试。所以如果您按下它,则进行某种重置,使其与该测试的实际设置相对应。

在此处输入图片说明

应用程序:

library(shiny)
library(DT)
library(rhandsontable)
#library(tidyverse)

ui <- navbarPage(
  "Application",
  tabPanel("Booklets",
           sidebarLayout(
             sidebarPanel(
               uiOutput("tex2"),
               rHandsontableOutput("hot3")
             ),
             mainPanel(
               fluidRow(
                 wellPanel(
                   fluidRow(
                     column(4,
                            DT::dataTableOutput("hot5")
                     ),
                     column(4,
                            fluidRow(
                              uiOutput("book3"),
                              uiOutput("book6")

                            ),
                            fluidRow(
                              uiOutput("book1"),
                              uiOutput("book10"),
                              uiOutput("book11")
                            ),
                            fluidRow(actionButton("submit","submit"))
                     )
                   ))
               )
             )
           )
  )
)
#server
server <- function(input, output, session) {

  rv<-reactiveValues()

  output$tex2<-renderUI({
    numericInput("text2", "#tests", value = 1, min=1)
  })

  output$book1<-renderUI({
    numericInput("bk1",
                 "Items in test",
                 value = 1,
                 min = 1)
  })

  output$book3<-renderUI({

    selectInput("bk3",
                "Label",
                choices=(paste("Test",1:input$text2)))

  })


  output$book6<-renderUI({
    textInput("bk6", "Change to",
              value=NULL
    )
  })


  output$book10<-renderUI({
    # changed from selectize
    selectizeInput(
      "bk10", "Select Items", choices =1:10000,multiple =T,selected = 1,
      options = list(maxItems = input$bk1))#changed from
  })
  output$book11<-renderUI({
    textInput("bk11", "Items chosen",
              value = nrow(rt5())
    )
  })

  #rt4<-reactive({
  observe({
    req(input$text2)

    rv$rt4 = data.frame(
      SNo = rep(TRUE, input$text2),
      Test=paste(1:input$text2),
      Label=paste("Test",1:input$text2),
      Avail=1L,
      Sel =as.integer(rep.int(0,input$text2)),
      stringsAsFactors = FALSE)
  })

  observeEvent(input$submit,{

    # rt4 <- reactive({
    if (is.null( rv$rt4))
      return(NULL)

    if(!is.null(input$bk6) && input$bk6!=""){
      rv$rt4[ rv$rt4$Label==input$bk3, "Avail"] <- input$bk1
      rv$rt4[ rv$rt4$Label==(input$bk3), "Sel"] <- length(input$hot5_rows_selected)

      rv$rt4[ rv$rt4$Label==input$bk3, "Label"] <- input$bk6
    }
    else
    {
      rv$rt4[ rv$rt4$Label==input$bk3, "Avail"] <- input$bk1
      rv$rt4[ rv$rt4$Label==(input$bk3), "Sel"] <- length(input$hot5_rows_selected)

      #rv$rt4[ rv$rt4$Label==input$bk3, "Label"] <- input$bk6

    }
  })

  observeEvent(input$submit,{

    updateSelectInput(session,"bk3","Label", choices=rv$rt4$Label)
  }
  )


  rt55<-reactive({
    DF=data.frame(
      Id=  input$bk10,
      Label=paste("Item",input$bk10),
      Pf=0,
      stringsAsFactors = FALSE
    )
  })

  rt5<-reactive({
    DF=data.frame(
      Id=  input$bk10,
      Label=paste("Item",input$bk10),
      Pf=0,
      stringsAsFactors = FALSE
    )
    cbind(id=rowSelected(), DF)
  })

  rowSelected <- reactive({
    x <- numeric(nrow(rt55()))
    x[input$hot5_rows_selected] <- 1
    x
  })

  output$hot5 <- renderDT(datatable(rt5()[,-1],
                                    selection = list(mode = "multiple",
                                                     selected = (1:nrow(rt5()[,-1]))[as.logical(rowSelected())],
                                                     target = "row"),rownames = F)
  )

  output$hot3 <-renderRHandsontable({
    req(input$text2)
    rhandsontable(rv$rt4)
  })
}
shinyApp(ui,server)
阿什莱奇

试试这个。在测试时我碰巧在 ui 中定义了 bk6,但是您可以使用 renderUI 公式,它仍然可以工作。此外,您可以将两个 observeEvent 块合并为一个。

library(shiny)
library(DT)
library(rhandsontable)
#library(tidyverse)

ui <- navbarPage(
  "Application",
  tabPanel("Booklets",
           sidebarLayout(
             sidebarPanel(
               uiOutput("tex2"),
               rHandsontableOutput("hot3")
             ),
             mainPanel(
               fluidRow(
                 wellPanel(
                   fluidRow(
                     column(4,
                            DT::dataTableOutput("hot5")
                     ),
                     column(4,
                            fluidRow(
                              uiOutput("book3"),
                             textInput("bk6", "Change to",value="")

                            ),
                            fluidRow(
                              uiOutput("book1"),
                              uiOutput("book10"),
                              uiOutput("book11")
                            ),
                            fluidRow(actionButton("submit","submit"))
                     )
                   ))
               )
             )
           )
  )
)
#server
server <- function(input, output, session) {

  rv<-reactiveValues()

  output$tex2<-renderUI({
    numericInput("text2", "#tests", value = 1, min=1)
  })

  output$book1<-renderUI({
    numericInput("bk1",
                 "Items in test",
                 value = 1,
                 min = 1)
  })

  output$book3<-renderUI({

    selectInput("bk3",
                "Label",
                choices=(paste("Test",1:input$text2)),
                selected = rv$selected)

  })
  observeEvent(input$submit,{

    if(!is.null(input$bk6) && input$bk6!=""){
      rv$selected <- input$bk6
    }
    else
      rv$selected <- input$bk3
     }
  )
  # output$book6<-renderUI({
  #   textInput("bk6", "Change to",
  #             value=""
  #   )
  # })


  output$book10<-renderUI({
    # changed from selectize
    selectizeInput(
      "bk10", "Select Items", choices =1:10000,multiple =T,selected = 1,
      options = list(maxItems = input$bk1))#changed from
  })
  output$book11<-renderUI({
    textInput("bk11", "Items chosen",
              value = nrow(rt5())
    )
  })

  #rt4<-reactive({
  observe({
    req(input$text2)

    rv$rt4 = data.frame(
      SNo = rep(TRUE, input$text2),
      Test=paste(1:input$text2),
      Label=paste("Test",1:input$text2),
      Avail=1L,
      Sel =as.integer(rep.int(0,input$text2)),
      stringsAsFactors = FALSE)
  })

  observeEvent(input$submit,{

    # rt4 <- reactive({
    if (is.null( rv$rt4))
      return(NULL)

    if(!is.null(input$bk6) && input$bk6!=""){
      rv$rt4[ rv$rt4$Label==input$bk3, "Avail"] <- input$bk1
      rv$rt4[ rv$rt4$Label==(input$bk3), "Sel"] <- length(input$hot5_rows_selected)

      rv$rt4[ rv$rt4$Label==input$bk3, "Label"] <- input$bk6
    }
    else
    {
      rv$rt4[ rv$rt4$Label==input$bk3, "Avail"] <- input$bk1
      rv$rt4[ rv$rt4$Label==(input$bk3), "Sel"] <- length(input$hot5_rows_selected)

      #rv$rt4[ rv$rt4$Label==input$bk3, "Label"] <- input$bk6

    }
  })

  observeEvent(input$submit,{

    updateSelectInput(session,"bk3","Label", choices=rv$rt4$Label,
                      selected = rv$selected)
    updateTextInput(session, "bk6", value = "")
    print(rv$selected)

  }
  )


  rt55<-reactive({
    DF=data.frame(
      Id=  input$bk10,
      Label=paste("Item",input$bk10),
      Pf=0,
      stringsAsFactors = FALSE
    )
  })

  rt5<-reactive({
    DF=data.frame(
      Id=  input$bk10,
      Label=paste("Item",input$bk10),
      Pf=0,
      stringsAsFactors = FALSE
    )
    cbind(id=rowSelected(), DF)
  })

  rowSelected <- reactive({
    x <- numeric(nrow(rt55()))
    x[input$hot5_rows_selected] <- 1
    x
  })

  output$hot5 <- renderDT(datatable(rt5()[,-1],
                                    selection = list(mode = "multiple",
                                                     selected = (1:nrow(rt5()[,-1]))[as.logical(rowSelected())],
                                                     target = "row"),rownames = F)
  )

  output$hot3 <-renderRHandsontable({
    req(input$text2)
    rhandsontable(rv$rt4)
  })
}
shinyApp(ui,server)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

当我按下“提交”按钮时,为什么我的应用程序总是崩溃?我尝试了几种不同的方法,但没有任何效果

来自分类Dev

按下主屏幕按钮并重新打开应用程序后,如何在Android中恢复MediaPlayer

来自分类Dev

按下提交按钮后加载php

来自分类Dev

闪亮的应用程序中的“重置输入”按钮

来自分类Dev

闪亮的应用程序:禁用下载按钮

来自分类Dev

按“重置应用程序首选项”后,我的应用程序的所有权限都被撤消

来自分类Dev

单击按钮后,在闪亮的应用程序主面板中显示文本

来自分类Dev

当我按下后如何关闭应用程序?

来自分类Dev

按下Mail Composer中的发送按钮后,应用程序崩溃

来自分类Dev

闪亮的应用程序:如何按列获取总和

来自分类Dev

按下闪亮的重置按钮后,出现conditionalPanel

来自分类Dev

闪亮:如何在禁用操作按钮的情况下启动应用程序?

来自分类Dev

超时后按提交按钮重置websocket页面

来自分类Dev

按下主屏幕按钮后,Android应用程序未显示在最小化列表中

来自分类Dev

Android应用程序:按下按钮并打开新的布局

来自分类Dev

按下按钮后iOS重置浮动

来自分类Dev

Android:返回并按下按钮后,应用程序崩溃

来自分类Dev

按下提交按钮后,将jQuery Ajax加载程序延迟3秒

来自分类Dev

用户按下按钮后如何更新ASP Web应用程序的文字或标签

来自分类Dev

按下按钮后应用崩溃

来自分类Dev

按下主屏幕按钮并返回应用程序会导致应用程序崩溃

来自分类Dev

按下按钮时Java应用程序创建Rectangle

来自分类Dev

按下Mail Composer中的发送按钮后,应用程序崩溃

来自分类Dev

为什么我按下按钮后我的应用程序停止运行

来自分类Dev

闪亮的应用程序,图表的下载按钮

来自分类Dev

使用闪亮的反应式应用程序重置输入

来自分类Dev

按下按钮时应用程序保持停止

来自分类Dev

提交表单并更改状态后,应用程序重置为初始屏幕

来自分类Dev

当按下后退按钮时,我的应用程序会关闭最近的应用程序

Related 相关文章

  1. 1

    当我按下“提交”按钮时,为什么我的应用程序总是崩溃?我尝试了几种不同的方法,但没有任何效果

  2. 2

    按下主屏幕按钮并重新打开应用程序后,如何在Android中恢复MediaPlayer

  3. 3

    按下提交按钮后加载php

  4. 4

    闪亮的应用程序中的“重置输入”按钮

  5. 5

    闪亮的应用程序:禁用下载按钮

  6. 6

    按“重置应用程序首选项”后,我的应用程序的所有权限都被撤消

  7. 7

    单击按钮后,在闪亮的应用程序主面板中显示文本

  8. 8

    当我按下后如何关闭应用程序?

  9. 9

    按下Mail Composer中的发送按钮后,应用程序崩溃

  10. 10

    闪亮的应用程序:如何按列获取总和

  11. 11

    按下闪亮的重置按钮后,出现conditionalPanel

  12. 12

    闪亮:如何在禁用操作按钮的情况下启动应用程序?

  13. 13

    超时后按提交按钮重置websocket页面

  14. 14

    按下主屏幕按钮后,Android应用程序未显示在最小化列表中

  15. 15

    Android应用程序:按下按钮并打开新的布局

  16. 16

    按下按钮后iOS重置浮动

  17. 17

    Android:返回并按下按钮后,应用程序崩溃

  18. 18

    按下提交按钮后,将jQuery Ajax加载程序延迟3秒

  19. 19

    用户按下按钮后如何更新ASP Web应用程序的文字或标签

  20. 20

    按下按钮后应用崩溃

  21. 21

    按下主屏幕按钮并返回应用程序会导致应用程序崩溃

  22. 22

    按下按钮时Java应用程序创建Rectangle

  23. 23

    按下Mail Composer中的发送按钮后,应用程序崩溃

  24. 24

    为什么我按下按钮后我的应用程序停止运行

  25. 25

    闪亮的应用程序,图表的下载按钮

  26. 26

    使用闪亮的反应式应用程序重置输入

  27. 27

    按下按钮时应用程序保持停止

  28. 28

    提交表单并更改状态后,应用程序重置为初始屏幕

  29. 29

    当按下后退按钮时,我的应用程序会关闭最近的应用程序

热门标签

归档