Skip to content

Commit 24d5226

Browse files
authored
Merge pull request #85 from Appsilon/shiny.router_api_update
Change shiny.router functions in showcase
2 parents b0a8a48 + e3f1829 commit 24d5226

File tree

1 file changed

+31
-16
lines changed
  • inst/examples/showcase

1 file changed

+31
-16
lines changed

inst/examples/showcase/app.R

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
library(shiny.blueprint)
22
library(shiny.router)
33
library(shiny)
4+
library(purrr)
45

56
section <- function(name, ...) list(name = name, items = list(...))
67
item <- function(name, id) list(type = "item", name = name, id = id)
@@ -141,23 +142,33 @@ makePage <- function(id, name, ui, rCode) {
141142
)
142143
}
143144

144-
makeRouter <- function(items) {
145+
prepareExamples <- function(items) {
145146
routes <- lapply(items, function(item) {
146147
example <- readExample(item$id)
147148
if (is.null(example)) {
148149
return()
149150
}
150-
route(
151-
path = item$id,
152-
ui = makePage(
153-
id = item$id,
154-
name = item$name,
155-
ui = example$ui(item$id),
156-
rCode = example$rCode
157-
),
158-
server = function() example$server(item$id)
151+
exampleServer <- list()
152+
exampleServer[[item$id]] <- example$server
153+
return(
154+
list(
155+
server = exampleServer,
156+
router = route(
157+
path = item$id,
158+
ui = makePage(
159+
id = item$id,
160+
name = item$name,
161+
ui = example$ui(item$id),
162+
rCode = example$rCode
163+
)
164+
)
165+
)
159166
)
160167
})
168+
return(routes)
169+
}
170+
171+
makeRouter <- function(items, routes) {
161172
routes <- append(
162173
list(route(
163174
path = "/",
@@ -221,15 +232,15 @@ makeRouter <- function(items) {
221232
)
222233
)
223234
)
224-
),
225-
server = function(input, output, session) {}
235+
)
226236
)),
227237
routes
228238
)
229-
do.call(make_router, routes)
239+
do.call(router_ui, routes)
230240
}
231241

232-
router <- makeRouter(items)
242+
examples <- prepareExamples(items)
243+
router <- makeRouter(items, map(examples, "router"))
233244

234245
addResourcePath("showcase-static", "./static")
235246

@@ -254,11 +265,15 @@ shinyApp(
254265
tags$div(
255266
class = "grid",
256267
tags$nav(class = "sidebar", makeNav(sections)),
257-
tags$main(router$ui)
268+
tags$main(router)
258269
)
259270
),
260271
server = function(input, output, session) {
261-
router$server()
272+
router_server()
262273
session$sendCustomMessage("highlight_all", list())
274+
exampleServers <- unlist(map(examples, "server"))
275+
lapply(items, function(item, modules = exampleServers) {
276+
modules[[item$id]](item$id)
277+
})
263278
}
264279
)

0 commit comments

Comments
 (0)