|
1 | 1 | library(shiny.blueprint) |
2 | 2 | library(shiny.router) |
3 | 3 | library(shiny) |
| 4 | +library(purrr) |
4 | 5 |
|
5 | 6 | section <- function(name, ...) list(name = name, items = list(...)) |
6 | 7 | item <- function(name, id) list(type = "item", name = name, id = id) |
@@ -141,22 +142,36 @@ makePage <- function(id, name, ui, rCode) { |
141 | 142 | ) |
142 | 143 | } |
143 | 144 |
|
144 | | -makeRouter <- function(items) { |
| 145 | +prepareExamples <- function(items) { |
145 | 146 | routes <- lapply(items, function(item) { |
146 | 147 | example <- readExample(item$id) |
147 | 148 | if (is.null(example)) { |
148 | 149 | return() |
149 | 150 | } |
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 |
| 151 | + |
| 152 | + example_server <- list() |
| 153 | + example_server[[item$id]] <- example$server |
| 154 | + return( |
| 155 | + list( |
| 156 | + server = example_server, |
| 157 | + router = route( |
| 158 | + path = item$id, |
| 159 | + ui = makePage( |
| 160 | + id = item$id, |
| 161 | + name = item$name, |
| 162 | + ui = example$ui(item$id), |
| 163 | + rCode = example$rCode |
| 164 | + ) |
| 165 | + ) |
157 | 166 | ) |
158 | 167 | ) |
159 | 168 | }) |
| 169 | + |
| 170 | + return(routes) |
| 171 | +} |
| 172 | + |
| 173 | +makeRouter <- function(items, routes) { |
| 174 | + |
160 | 175 | routes <- append( |
161 | 176 | list(route( |
162 | 177 | path = "/", |
@@ -227,7 +242,8 @@ makeRouter <- function(items) { |
227 | 242 | do.call(router_ui, routes) |
228 | 243 | } |
229 | 244 |
|
230 | | -router <- makeRouter(items) |
| 245 | +examples <- prepareExamples(items) |
| 246 | +router <- makeRouter(items, map(examples, "router")) |
231 | 247 |
|
232 | 248 | addResourcePath("showcase-static", "./static") |
233 | 249 |
|
@@ -258,5 +274,10 @@ shinyApp( |
258 | 274 | server = function(input, output, session) { |
259 | 275 | router_server() |
260 | 276 | session$sendCustomMessage("highlight_all", list()) |
| 277 | + |
| 278 | + example_servers <- unlist(map(examples, "server")) |
| 279 | + lapply(items, function(item, modules = example_servers) { |
| 280 | + modules[[item$id]](item$id) |
| 281 | + }) |
261 | 282 | } |
262 | 283 | ) |
0 commit comments