Comments (1)
Ok, I figured this out. I can't define a second ExtendedTask with the same name. I thought shiny module would handle the namespace automatically but apparently not. To fix the issue put ExtendedTask$new
where it only run once (i.e. inside the server function), and pass the task as an argument to shiny module.
if (interactive()) {
library(shiny)
task_btn_ui <- function(id) {
ns <- NS(id)
tagList(
bslib::input_task_button(
id = ns("btn"),
label = "task"
),
shiny::textOutput(ns("msg"))
)
}
task_btn_server <- function(id, task) {
moduleServer(
id,
function(input, output, session) {
ns <- session$ns
task |> bslib::bind_task_button("btn")
shiny::observeEvent(input$btn, {
task$invoke()
})
output$msg <- shiny::renderText({
task$result()
})
}
)
}
ui <- bslib::page_fluid(
shiny::actionButton("add_task", "Add Task"),
shiny::div(
id = "container"
)
)
server <- function(input, output, session) {
future::plan(future::multisession)
task <- ExtendedTask$new(
function() {
promises::future_promise({
Sys.sleep(10)
"Success"
})
}
)
shiny::observeEvent(input$add_task, {
rid <- stringi::stri_rand_strings(1, 10)
shiny::insertUI(
"#container",
ui = task_btn_ui(rid)
)
task_btn_server(rid, task)
})
}
shinyApp(ui, server)
}
from shiny.
Related Issues (20)
- shiny application breaks with release 1.8.1 HOT 2
- Shared input/output IDs shouldn't break apps even in `devmode`
- Concurrent `ExtendedTask`s HOT 3
- documentation tweak for `onStart` argument in `shinyApp` help page HOT 1
- plot brush issue after update to 1.9.0 HOT 9
- Persistent `.recalculating` class if removeUI and output hiding operations are performed HOT 4
- Inconsistent behavior of busy indicators for different outputs: `tableOutput()`, `reactableOutput()`, `textOutput()`
- Version 1.9.1: ggvis plots are greyed out HOT 1
- Writing `testServer()` tests for modules using `ExtendedTask` HOT 3
- Updating choices using updateSelect(ize)Input causes selection to be cleared HOT 3
- Allow creating disabled `downloadButton()`/`downloadLink()`
- Feature Request: Documentation and Examples for Shared Extended Tasks Across Users HOT 2
- How to enable debug logs in shiny server. HOT 2
- Quarto documents HOT 1
- dateInput can't display widget because bootstrap-datepicker.min.js is deprecated HOT 1
- Infinite loop with `conditionalPanel` HOT 1
- Teste
- Allow duplicate selections with InputSelect HOT 4
- Can't move double-ended range slider if from-handle is set to max HOT 3
- Throttle/debounce tests contain a race condition that's causing tests to fail
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shiny.