insightsengineering / insightsengineering/teal.transform

filter_spec: when not dynamic, column selection will always occur even when widget is deselected

Open
#21 1 comment 0 reactions 0 assignees View on GitHub
core discussion
Dominant language
R
Stars
2
Forks
3
PR merge metrics
No merged PRs in 30d

Description

to reproduce:

```r
library(random.cdisc.data)
unloadNamespace("/home/rstudio/nest_projects/teal.devel")
unloadNamespace("/home/rstudio/nest_projects/teal")
unloadNamespace("/home/rstudio/nest_projects/teal.modules.general/")
devtools::load_all("/home/rstudio/nest_projects/teal/")
devtools::load_all("/home/rstudio/nest_projects/teal.devel/")
devtools::load_all("/home/rstudio/nest_projects/teal.modules.general/")
#library(teal.modules.general)
ADSL <- radsl(cached = TRUE)
# ADSL$EOSDY <- ifelse(ADSL$AGE != 35, ADSL$AGE, -1)
# ADSL$AGE[1:3] <- NA
# ADSL$COUNTRY[1:3] <- NA
# ADSL$RACE[1:3] <- NA

dynamic_filter <- filter_spec(
vars = choices_selected(variable_choices(ADSL), "COUNTRY"),
multiple = TRUE
)

dynamic_filter2 <- filter_spec(
label = "vars, choices delayed, fixed FALSE; selected not provided; multiple false",
vars = choices_selected(choices = variable_choices("ADSL"), selected = variable_choices("ADSL"), fixed = FALSE),
multiple = TRUE
)

static_filter <- filter_spec(
vars = variable_choices("ADSL", "ARMCD"),
choices = value_choices(
"ADSL",
var_choices = "ARMCD",
var_label = "ARM",
subset = function(data) levels(data$ARMCD)[1:2]),
selected = value_choices(
"ADSL",
var_choices = "ARMCD",
var_label = "ARM",
subset = function(data) levels(data$ARMCD)[1])
)

static_filter2 <- filter_spec(
vars = variable_choices("ADSL", "SEX"),
choices = value_choices("ADSL", "SEX"),
sep = "-",
selected = c("F"),
multiple = TRUE
)

# static_filter3 <- filter_spec(
# vars = variable_choices("ADSL", c("ARM", "SEX")),
# choices = value_choices("ADSL", c("ARM", "SEX")),
# sep = " - ",
# selected = c("A: Drug X - M"),
# multiple = TRUE
# )

app <- init(
data = cdisc_data(
cdisc_dataset("ADSL", ADSL, code = "ADSL <- radsl(cached = TRUE)"),
check = FALSE
),
modules = root_modules(
tm_g_scatterplot(
label = "Scatterplot Choices",
x = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADSL, c("AGE", "BMRKR1", "BMRKR2")),
selected = "AGE",
multiple = FALSE,
fixed = FALSE
)
),
y = data_extract_spec(
dataname = "ADSL",
select = select_spec(
label = "Select variable:",
choices = variable_choices(ADSL, c("AGE", "BMRKR1", "BMRKR2")),
selected = "BMRKR1",
multiple = FALSE,
fixed = FALSE
)
),
color_by = data_extract_spec(
dataname = "ADSL",
# select = select_spec(
# choices = variable_choices(ADSL),
# selected = "REGION1",
# multiple = TRUE
# ),
filter = static_filter
)#,
# row_facet = data_extract_spec(
# dataname = "ADSL",
# filter = dynamic_filter
# )#,
# col_facet = data_extract_spec(
# dataname = "ADSL",
# select = select_spec(
# choices = variable_choices(ADSL),
# selected = "SEX",
# multiple = FALSE
# ),
# filter = filter_spec(
# vars = choices_selected(variable_choices(ADSL), "ARM"),
# multiple = TRUE
# )
# )
)
)
)
shinyApp(app$ui, app$server)
```

Recently, filter_spec has been altered to automatically select columns when `select_spec` is not provided to the containing `data_extract_spec` object.

A consequence of this behavior is that when the filter_spec is not dynamic, column selection will aways occur even when all values are deselected:

![image](https://user-images.githubusercontent.com/12943682/128363836-244650e3-9857-4910-9d08-1858cf1e3f87.png)

![image](https://user-images.githubusercontent.com/12943682/128363867-b61f12c7-055d-449d-9c0e-6b55fc0c008f.png)

This is not desired behavior.

Provenance:
```
Creator: junlue
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.