In lab.js, how can I load words from a .txt file?
I'm trying to make a study with lab.js, where on every iteration of the trial a different word shows up, selected randomly from a .txt file, which contains all words, separated by new lines.
Currently I have a sequence which has (2 introduction screens,) a test word screen, where in the script I use the following code to process the file (which is added to the static directory) and split it into words, then select 70 of it for each person who fills out the study. (I do it here to prepare for the following loop.)
console.log("preparing function") before:prepare = function() { console.log("before prepare function") return fetch('static/all_list_sorted_uniq.txt') .then(response => response.text()) .then(text => { const allWords = text.split(/\s+/).filter(Boolean); const selectedWords = this.random.shuffle(allWords).slice(0, 70); this.options.parameters.wordList = selectedWords; }); }
Then I have a loop, where I added
(this.options.parameters.wordList || []).map(word => ({ word }))
to the template parameters, with the name "word". Inside the loop, there's a trial, which includes one screen, on which I have the following text to get the word from the previous codes:
${parameters.word}
Here I would expect one randomly selected word from the .txt file to show up, but instead, it just prints out:
(this.options.parameters.wordList || []).map(word => ({ word }))
(the template parameter from the loop). Also, when I inspect the study after running it and look at the console, "preparing function" is printed out, but "before prepare function" is not showing up, so I'm guessing the function is not even called (?). And it prints out "Can't interpret event string", which I'm also not sure about what it implies. Can you help with where it might have went wrong?
Comments
Hi @pannajanosi,
Your question relates to lab.js, which is not part of and is not related to Open Sesame. For support about Lab-js, please refer to their website: https://lab.js.org/
Best of luck,
Fabrice.
I've figured it out, the only problem was that I put my code into a method and thus it was never called. When I only added the code inside the method to the script, it worked.
And you're right @Fab, thank you! :)