Skip to content

Commit c643a3b

Browse files
authored
Merge pull request #62 from nathancday/master
Add ability to see validated cases in app
2 parents 931562b + d507bdc commit c643a3b

File tree

5 files changed

+39
-11
lines changed

5 files changed

+39
-11
lines changed

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11

22
# vdiffr 0.3.0.9000
33

4+
- You can now select the validated cases in the Shiny app (#38,
5+
@clauswilke).
6+
47
- The testthat context is now shown on the Shiny app (#14,
58
@paleolimbot).
69

R/cases-ui.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#' @export
1010
manage_cases <- function(package = ".", filter = NULL, ..., options = list()) {
1111
cases <- collect_cases(package, filter = filter)
12-
cases <- filter_cases(cases, c("new_case", "mismatch_case", "orphaned_case"))
12+
cases <- filter_cases(cases, c("new_case", "mismatch_case", "orphaned_case", "success_case"))
1313

1414
vdiffrApp <- shiny::shinyApp(
1515
ui = vdiffrUi(cases),
@@ -28,7 +28,7 @@ manage_cases <- function(package = ".", filter = NULL, ..., options = list()) {
2828
vdiffrAddin <- function() {
2929
pkg_path <- rstudioapi::getActiveProject() %||% "."
3030
cases <- collect_cases(pkg_path)
31-
cases <- filter_cases(cases, c("new_case", "mismatch_case", "orphaned_case"))
31+
cases <- filter_cases(cases, c("new_case", "mismatch_case", "orphaned_case", "success_case"))
3232

3333
vdiffrApp <- shiny::shinyApp(
3434
ui = vdiffrUi(cases),

R/cases.R

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,12 @@ print.cases <- function(x, ...) {
174174
print_cases_names(new)
175175
}
176176

177+
success <- filter_cases(x, "success_case")
178+
if (length(success) > 0) {
179+
cat("\nValidated:\n")
180+
print_cases_names(success)
181+
}
182+
177183
orphaned <- filter_cases(x, "orphaned_case")
178184
if (length(orphaned) > 0) {
179185
figs_path <- file.path(attr(x, "pkg_path"), "tests")

R/shiny-server.R

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
vdiffrServer <- function(cases) {
3-
shiny::shinyServer(function(input, output) {
3+
shiny::shinyServer(function(input, output, session) {
44
cases <- shiny::reactiveValues(all = cases)
55
cases$active <- shiny::reactive({
66
type <- input$type %||% "new_case"
@@ -29,6 +29,8 @@ vdiffrServer <- function(cases) {
2929
output$status <- renderStatus(input, cases)
3030
output$case_context <- renderCaseContext(input, cases)
3131

32+
toggleValidateBtns(input, session)
33+
3234
quitApp(input)
3335
})
3436
}
@@ -39,7 +41,8 @@ diff_text_watcher <- function(input) {
3941

4042
prettify_types <- function(x) {
4143
ifelse(x == "mismatch_case", "Mismatched",
42-
ifelse(x == "new_case", "New", "Orphaned"
44+
ifelse(x == "new_case", "New",
45+
ifelse(x == "success_case", "Validated", "Orphaned")
4346
))
4447
}
4548

@@ -51,13 +54,16 @@ renderTypeInput <- function(input, reactive_cases) {
5154
if (length(types) == 0) {
5255
return(NULL)
5356
}
54-
types <- set_names(types, prettify_types(types))
57+
58+
types <- sort(set_names(types, prettify_types(types)))
59+
60+
selected <- input$type %||% types[[1]]
5561

5662
shiny::selectInput(
5763
inputId = "type",
5864
label = "Type:",
5965
choices = types,
60-
selected = types[[1]]
66+
selected = selected
6167
)
6268
})
6369
}
@@ -152,7 +158,7 @@ validateSingleCase <- function(input, reactive_cases) {
152158
case <- shiny::isolate(input$case)
153159

154160
withdraw_cases(cases[case])
155-
cases <- cases[-match(case, names(cases))]
161+
cases[[case]] <- success_case(cases[[case]])
156162

157163
shiny::isolate(reactive_cases$all <- cases)
158164
}
@@ -169,10 +175,8 @@ validateGroupCases <- function(input, reactive_cases) {
169175
type <- shiny::isolate(input$type)
170176

171177
withdraw_cases(active_cases)
172-
173-
case_types <- c("new_case", "mismatch_case", "orphaned_case")
174-
types <- case_types[!case_types == type]
175-
cases <- filter_cases(cases, types)
178+
idx <- sapply(cases, inherits, type)
179+
cases[idx] <- lapply(cases[idx], success_case)
176180

177181
shiny::isolate(reactive_cases$all <- cases)
178182
}
@@ -218,6 +222,14 @@ renderStatus <- function(input, reactive_cases) {
218222
})
219223
}
220224

225+
toggleValidateBtns <- function(input, session) {
226+
shiny::observeEvent(input$type, {
227+
req(input$type)
228+
message <- input$type == "success_case"
229+
session$sendCustomMessage("toggle-validate-btns-handler", message)
230+
})
231+
}
232+
221233
quitApp <- function(input) {
222234
shiny::observe({
223235
if (input$quit_button > 0) {

inst/www/toggle.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,10 @@ document.addEventListener('toggled', function(event) {
77
status.innerHTML = 'After';
88
}
99
});
10+
11+
// Disable/Enable validate buttons
12+
Shiny.addCustomMessageHandler('toggle-validate-btns-handler', toggleBtns);
13+
function toggleBtns(message) {
14+
document.getElementById('group_validation_button').disabled = message;
15+
document.getElementById('case_validation_button').disabled = message;
16+
}

0 commit comments

Comments
 (0)