Skip to content

Commit 91fc21e

Browse files
committed
combine in-page and normal display logic
1 parent 5cc361c commit 91fc21e

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

facebook/qsf-tools/generate-codebook.R

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,21 @@ process_qsf <- function(path_to_qsf,
199199

200200
# format display logic
201201
# Not all questions have display logic; if NULL, shown to all respondents within section.
202+
# Also check "InPageDisplayLogic". If not null, combine with normal "DisplayLogic".
203+
inpage_ii <- displayed_questions %>%
204+
map(~ .x$Payload$InPageDisplayLogic) %>% map_lgl(~ !is.null(.x)) %>% which()
205+
inpage_logic <- displayed_questions %>%
206+
map(~ .x$Payload$InPageDisplayLogic)
207+
202208
display_logic <- displayed_questions %>%
203-
map(~ .x$Payload$DisplayLogic) %>%
209+
map(~ .x$Payload$DisplayLogic)
210+
if (display_logic[inpage_ii] %>% map_lgl(~ !is.null(.x)) %>% any()) {
211+
stop("At least one question has both 'DisplayLogic' and 'InPageDisplayLogic'.",
212+
" 'DisplayLogic' would be overwritten.")
213+
}
214+
display_logic[inpage_ii] <- inpage_logic[inpage_ii]
215+
216+
display_logic <- display_logic %>%
204217
map(~ .x$`0`) %>%
205218
map(~ paste(
206219
map(.x, "Conjuction"),

facebook/qsf-tools/qsf-differ.R

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ diff_qsf_files <- function(old_qsf_path, new_qsf_path, output_dir,
5959
get_qsf_file <- function(path, survey_version,
6060
keep_items = c("QuestionID", "DataExportTag",
6161
"QuestionText", "QuestionType",
62-
"Choices", "Answers", "DisplayLogic")
62+
"Choices", "Answers", "DisplayLogic",
63+
"InPageDisplayLogic")
6364
) {
6465
wave <- get_wave(path)
6566
# Read file as json.
@@ -147,6 +148,10 @@ get_qsf_file <- function(path, survey_version,
147148
display_logic <- unlist(question$DisplayLogic)
148149
question$DisplayLogic <- sort(display_logic[!str_detect(names(display_logic), "Description")])
149150
}
151+
if ("InPageDisplayLogic" %in% names(question)) {
152+
display_logic <- unlist(question$InPageDisplayLogic)
153+
question$DisplayLogic <- sort(display_logic[!str_detect(names(display_logic), "Description")])
154+
}
150155

151156

152157
# Deduplicate some UMD items.

0 commit comments

Comments
 (0)