Sto riscontrando qualche problema nell'utilizzo di più pulsanti di azione in modalità lucida. Ho costruito una textarea in cui inserire il testo. Questo testo è manipolato in modo tale che tre stringhe sono il risultato. Queste tre stringhe sono quindi rese l'etichetta dei tre pulsanti di azione. Quando si fa clic su uno dei pulsanti, è necessario manipolare il testo di input.Reset del pulsante di azione necessario (o alternativo)
Quando faccio clic sul pulsante di azione, il testo viene manipolato correttamente, ma l'azione viene ripetuta indefinitamente. Questo perché il pulsante di azione non può essere ripristinato. Ho trovato più pagine web che si occupano di questo problema e ho provato più soluzioni e soluzioni alternative, ma niente sembra funzionare. Ho presentato il codice qui sotto:
server.R
library(shiny)
library(stringi)
new_word_f <- function(x) {
x <- substr(x, nchar(x), nchar(x)) == " "
}
modify_text_input <- function(new_word, input_text, word_to_remove, answer) {
if (new_word == TRUE) {
paste(input_text, answer, " ")
} else {
paste(stri_replace_last_regex(input_text, word_to_remove, answer), " ")
}
}
start_input_text <- "Testing the lines "
ngram_input <- "lines"
answer <- c("a", "b", "c")
## Start shiny app
shinyServer(function(input, output) {
## New word or current mid-word
new_word <- reactive({new_word_f(input$text_in)})
output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, start_input_text)})
output$text1 <- renderText({input$text_in})
output$text2 <- renderText({new_word()})
output$but1 <- renderUI({actionButton("action1", label = answer[1])})
output$but2 <- renderUI({actionButton("action2", label = answer[2])})
output$but3 <- renderUI({actionButton("action3", label = answer[3])})
## On button press
observeEvent(input$action1, {output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, modify_text_input(new_word(), input$text_in, ngram_input, answer[1]))})})
observeEvent(input$action2, {output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, modify_text_input(new_word(), input$text_in, ngram_input, answer[2]))})})
observeEvent(input$action3, {output$input_textarea <- renderUI({tags$textarea(id="text_in", rows=3, cols=40, modify_text_input(new_word(), input$text_in, ngram_input, answer[3]))})})
})
ui.R
library(shiny)
library(stringi)
shinyUI(
fluidPage(
titlePanel("Word prediction"),
sidebarLayout(
sidebarPanel(
uiOutput("input_textarea"),
uiOutput("but1"),
uiOutput("but2"),
uiOutput("but3")
),
mainPanel(
textOutput("text1"),
textOutput("text2")
)
)
)
)
Questo funziona! Ho applicato l'isolamento in 10000 modi diversi, ma non in questo modo sembra .. Grazie! – Maarten