',
},
{
type: 'lab.canvas.Screen',
@@ -254,7 +254,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {
+ hooks: {
end: function anonymous() {
this.data.correct_response = false;
},
@@ -275,7 +275,7 @@ export const facesHousesExperiment = {
responses: {
'keypress(Space)': 'continue',
},
- messageHandlers: {},
+ hooks: {},
title: 'Main task',
content:
'\u003Cheader class="content-vertical-center content-horizontal-center"\u003E\n \u003Ch1\u003EReady for the real data collection?\u003C\u002Fh1\u003E\n\u003C\u002Fheader\u003E\n\u003Cmain\u003E\n\n \u003Cp\u003E\n Press the the space bar to start the main task.\n \u003C\u002Fp\u003E\n\n\u003C\u002Fmain\u003E\n\u003Cfooter class="content-vertical-center content-horizontal-center"\u003E\n \n\u003C\u002Ffooter\u003E',
@@ -290,7 +290,7 @@ export const facesHousesExperiment = {
n: '',
},
responses: {},
- messageHandlers: {
+ hooks: {
'before:prepare': function anonymous() {
let initialParameters = [...this.parameters.stimuli] || [];
console.log('before:prepare initial params 2', initialParameters);
@@ -384,7 +384,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Trial',
content: [
{
@@ -416,7 +416,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Fixation cross',
timeout: '${parameters.iti}',
@@ -426,7 +426,7 @@ export const facesHousesExperiment = {
files: {},
responses: {},
parameters: {},
- messageHandlers: {
+ hooks: {
'before:prepare': function anonymous() {
// This code registers an event listener for this screen.
// We have a timeout for this screen, but we also want to record responses.
@@ -477,7 +477,7 @@ export const facesHousesExperiment = {
timeout:
"${parameters.selfPaced ? '3600000' : parameters.presentationTime}",
content:
- '\u003Cmain class="content-horizontal-center content-vertical-center"\u003E\n \u003Cdiv\u003E\n \u003Cimg src=${ this.files[this.parameters.image] } height=${ this.parameters.imageHeight } \u002F\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Fmain\u003E\n\n\u003Cfooter class="content-vertical-center content-horizontal-center"\u003E\n \u003Cp\u003E\n ${this.parameters.taskHelp} \n \u003C\u002Fp\u003E\n\u003C\u002Ffooter\u003E',
+ '',
},
{
type: 'lab.canvas.Screen',
@@ -504,7 +504,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Feedback',
tardy: true,
@@ -521,7 +521,7 @@ export const facesHousesExperiment = {
responses: {
'keypress(Space)': 'end',
},
- messageHandlers: {},
+ hooks: {},
title: 'End',
content:
'\u003Cheader class="content-vertical-center content-horizontal-center"\u003E\n \n\u003C\u002Fheader\u003E\n\n\u003Cmain\u003E\n \u003Ch1\u003E\n Thank you!\n \u003C\u002Fh1\u003E\n \u003Ch1\u003E\n Press the space bar to finish the task.\n \u003C\u002Fh1\u003E\n\u003C\u002Fmain\u003E\n\n',
diff --git a/src/renderer/experiments/faces_houses/experiment.ts b/src/renderer/experiments/faces_houses/experiment.ts
index d3f085b7..f48c0d9c 100644
--- a/src/renderer/experiments/faces_houses/experiment.ts
+++ b/src/renderer/experiments/faces_houses/experiment.ts
@@ -21,7 +21,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'The face-house task',
content: [
{
@@ -32,7 +32,7 @@ export const facesHousesExperiment = {
'keypress(Space)': 'continue',
'keypress(q)': 'skipPractice',
},
- messageHandlers: {},
+ hooks: {},
title: 'Instruction',
content:
'\u003Cheader class="content-vertical-center content-horizontal-center"\u003E\n \u003Ch1\u003EThe face-house task\u003C\u002Fh1\u003E\n\u003C\u002Fheader\u003E\n\n\u003Cmain\u003E\n\n \u003Cp\u003E\n ${this.parameters.intro}\n \u003C\u002Fp\u003E\n \n\u003C\u002Fmain\u003E\n\n\u003Cfooter class="content-vertical-center content-horizontal-center"\u003E\n \n\u003C\u002Ffooter\u003E',
@@ -47,7 +47,7 @@ export const facesHousesExperiment = {
n: '',
},
responses: {},
- messageHandlers: {
+ hooks: {
'before:prepare': initPracticeLoopWithStimuli,
},
title: 'Practice loop',
@@ -57,7 +57,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Trial',
content: [
{
@@ -89,7 +89,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Fixation cross',
timeout: '${parameters.iti}',
@@ -99,7 +99,7 @@ export const facesHousesExperiment = {
files: {},
responses: {},
parameters: {},
- messageHandlers: {
+ hooks: {
'before:prepare': initResponseHandlers,
run: triggerEEGCallback,
},
@@ -107,7 +107,7 @@ export const facesHousesExperiment = {
timeout:
"${parameters.selfPaced ? '3600000' : parameters.presentationTime}",
content:
- '\u003Cmain class="content-horizontal-center content-vertical-center"\u003E\n \u003Cdiv\u003E\n \u003Cimg src=${ this.parameters.filepath } height=${ this.parameters.imageHeight } \u002F\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Fmain\u003E\n\n\u003Cfooter class="content-vertical-center content-horizontal-center"\u003E\n \u003Cp\u003E\n ${this.parameters.taskHelp} \n \u003C\u002Fp\u003E\n\u003C\u002Ffooter\u003E',
+ '',
},
{
type: 'lab.canvas.Screen',
@@ -134,7 +134,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {
+ hooks: {
end: resetCorrectResponse,
},
viewport: [800, 600],
@@ -153,7 +153,7 @@ export const facesHousesExperiment = {
responses: {
'keypress(Space)': 'continue',
},
- messageHandlers: {},
+ hooks: {},
title: 'Main task',
content:
'\u003Cheader class="content-vertical-center content-horizontal-center"\u003E\n \u003Ch1\u003EReady for the real data collection?\u003C\u002Fh1\u003E\n\u003C\u002Fheader\u003E\n\u003Cmain\u003E\n\n \u003Cp\u003E\n Press the the space bar to start the main task.\n \u003C\u002Fp\u003E\n\n\u003C\u002Fmain\u003E\n\u003Cfooter class="content-vertical-center content-horizontal-center"\u003E\n \n\u003C\u002Ffooter\u003E',
@@ -168,7 +168,7 @@ export const facesHousesExperiment = {
n: '',
},
responses: {},
- messageHandlers: {
+ hooks: {
'before:prepare': initLoopWithStimuli,
},
title: 'Experiment loop',
@@ -178,7 +178,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Trial',
content: [
{
@@ -210,7 +210,7 @@ export const facesHousesExperiment = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Fixation cross',
timeout: '${parameters.iti}',
@@ -220,7 +220,7 @@ export const facesHousesExperiment = {
files: {},
responses: {},
parameters: {},
- messageHandlers: {
+ hooks: {
'before:prepare': initResponseHandlers,
run: triggerEEGCallback,
},
@@ -229,7 +229,7 @@ export const facesHousesExperiment = {
"${parameters.selfPaced ? '3600000' : parameters.presentationTime}",
content:
- '\u003Cmain class="content-horizontal-center content-vertical-center"\u003E\n \u003Cdiv\u003E\n \u003Cimg src=${ this.parameters.filepath } height=${ this.parameters.imageHeight } \u002F\u003E\n \u003C\u002Fdiv\u003E\n\u003C\u002Fmain\u003E\n\n\u003Cfooter class="content-vertical-center content-horizontal-center"\u003E\n \u003Cp\u003E\n ${this.parameters.taskHelp} \n \u003C\u002Fp\u003E\n\u003C\u002Ffooter\u003E',
+ '',
},
],
},
@@ -241,7 +241,7 @@ export const facesHousesExperiment = {
responses: {
'keypress(Space)': 'end',
},
- messageHandlers: {},
+ hooks: {},
title: 'End',
content:
'\u003Cheader class="content-vertical-center content-horizontal-center"\u003E\n \n\u003C\u002Fheader\u003E\n\n\u003Cmain\u003E\n \u003Ch1\u003E\n Thank you!\n \u003C\u002Fh1\u003E\n \u003Ch1\u003E\n Press the space bar to finish the task.\n \u003C\u002Fh1\u003E\n\u003C\u002Fmain\u003E\n\n',
diff --git a/src/renderer/experiments/multitasking/experiment.ts b/src/renderer/experiments/multitasking/experiment.ts
index 2ae26952..97a075d5 100644
--- a/src/renderer/experiments/multitasking/experiment.ts
+++ b/src/renderer/experiments/multitasking/experiment.ts
@@ -29,7 +29,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Multi-tasking',
content: [
{
@@ -39,7 +39,7 @@ export const multitaskingExperimentObject = {
responses: {
'keypress(Space)': 'continue',
},
- messageHandlers: {},
+ hooks: {},
title: 'Intro',
content:
'\u003Cheader class="content-vertical-center content-horizontal-center"\u003E\n \u003Ch1\u003EThe multi-tasking test\u003C\u002Fh1\u003E\n\u003C\u002Fheader\u003E\n\n\u003Cmain\u003E\n\n \u003Cp\u003E\n ${this.parameters.intro}\n \u003C\u002Fp\u003E\n \n\u003C\u002Fmain\u003E\n\n\u003Cfooter class="content-vertical-center content-horizontal-center"\u003E\n \n\u003C\u002Ffooter\u003E',
@@ -87,7 +87,7 @@ export const multitaskingExperimentObject = {
responses: {
'keypress(Space)': 'continue',
},
- messageHandlers: {
+ hooks: {
'before:prepare': initMultitaskingResponseHandlers,
},
title: 'Instructions',
@@ -102,7 +102,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Frame',
content: {
type: 'lab.flow.Loop',
@@ -151,7 +151,7 @@ export const multitaskingExperimentObject = {
n: '6',
},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Block loop',
tardy: true,
shuffleGroups: [],
@@ -160,7 +160,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Block sequence',
skip: "${this.parameters.task === 'training' && this.state.skipTraining === true}",
content: [
@@ -317,7 +317,7 @@ export const multitaskingExperimentObject = {
responses: {
'keypress(Space)': 'continue',
},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Ready',
},
@@ -813,7 +813,7 @@ export const multitaskingExperimentObject = {
responses: {
'keypress(Space)': 'continue',
},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Block description',
},
@@ -872,7 +872,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Concentrate',
timeout: '1000',
@@ -970,7 +970,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: '3',
timeout: '1000',
@@ -1068,7 +1068,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: '2',
timeout: '1000',
@@ -1166,7 +1166,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: '1',
timeout: '1000',
@@ -1181,7 +1181,7 @@ export const multitaskingExperimentObject = {
n: '',
},
responses: {},
- messageHandlers: {
+ hooks: {
'before:prepare': initTasks,
},
title: 'Trial loop',
@@ -1191,7 +1191,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Trial sequence',
content: [
{
@@ -1564,7 +1564,7 @@ export const multitaskingExperimentObject = {
'keypress(b)': 'b',
'keypress(n)': 'n',
},
- messageHandlers: {
+ hooks: {
run: triggerEEGCallback,
},
viewport: [800, 600],
@@ -1847,7 +1847,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {
+ hooks: {
'before:prepare': initTaskScreen,
},
viewport: [800, 600],
@@ -2490,7 +2490,7 @@ export const multitaskingExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
viewport: [800, 600],
title: 'Pause',
skip: '${this.state.correct === true}',
@@ -2511,7 +2511,7 @@ export const multitaskingExperimentObject = {
responses: {
'keypress(Space)': 'end',
},
- messageHandlers: {},
+ hooks: {},
title: 'End',
content:
'\u003Cheader class="content-vertical-center content-horizontal-center"\u003E\n \n\u003C\u002Fheader\u003E\n\n\u003Cmain\u003E\n \u003Ch1\u003E\n Thank you!\n \u003C\u002Fh1\u003E\n \u003Ch1\u003E\n Press the space bar to finish the task.\n \u003C\u002Fh1\u003E\n\u003C\u002Fmain\u003E\n\n',
diff --git a/src/renderer/experiments/search/experiment.ts b/src/renderer/experiments/search/experiment.ts
index cf2be1f3..6f4830a1 100644
--- a/src/renderer/experiments/search/experiment.ts
+++ b/src/renderer/experiments/search/experiment.ts
@@ -22,7 +22,7 @@ export const searchExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Visual search',
content: [
{
@@ -33,7 +33,7 @@ export const searchExperimentObject = {
'keypress(Space)': 'next',
'keypress(q)': 'skipPractice',
},
- messageHandlers: {},
+ hooks: {},
title: 'Instruction',
content:
'\u003Cstyle\u003E\n .letter{\n font-size: 90px;\n font-weight: bold;\n }\n\u003C\u002Fstyle\u003E\n\n\u003Cheader\u003E\n \u003Ch1\u003EVisual search task\u003C\u002Fh1\u003E\n\u003C\u002Fheader\u003E\n\n\u003Cmain\u003E\n \n \u003Cp\u003E\n ${this.parameters.intro}\n \u003C\u002Fp\u003E\n \n \u003Cp\u003E\n Again, all you need to do is to find an \u003Cb\u003Eorange T\u003C\u002Fb\u003E. If you see the \u003Cb\u003Eorange T\u003C\u002Fb\u003E, press \u003Ckbd\u003Eb\u003C\u002Fkbd\u003E. Ignore the upside-down orange T, as well as blue Ts! IF THERE IS NO ORANGE T, press \u003Ckbd\u003En\u003C\u002Fkbd\u003E.\n It is very important to respond \u003Cb\u003EAS FAST AS YOU CAN\u003C\u002Fb\u003E.\n \u003C\u002Fp\u003E\n\n \u003Cdiv style="display:grid; grid-template-columns:1fr 1fr;"\u003E\n \u003Cdiv\u003E\n \u003Cp\u003E\n Find \n \u003C\u002Fp\u003E\n \u003Cbr\u003E\n \u003Cdiv class="letter" style="color:orange; height: 100px;"\u003E\n T\n \u003C\u002Fdiv\u003E\n \u003C\u002Fdiv\u003E\n \u003Cdiv\u003E\n \u003Cp\u003E\n But do not respond to any of these distractors:\n \u003C\u002Fp\u003E\n \u003Cbr\u003E\n \u003Cdiv style="display:grid; grid-template-columns: 100px 50px; justify-content: center; "\u003E\n \u003Cdiv class="letter" style="color:lightblue;"\u003E\n T\n \u003C\u002Fdiv\u003E\n \u003Cdiv class="letter" style="color:orange; transform: rotate(-180deg);"\u003E\n T\n \u003C\u002Fdiv\u003E\n \u003C\u002Fdiv\u003E\n \u003C\u002Fdiv\u003E\n \u003C\u002Fdiv\u003E\n\n \u003Cp\u003E\n Press the space bar on your keyboard to start doing the practice trials.\n If you want to skip the practice trials and go directly to the task, press the "q" button on your keyboard.\n \u003C\u002Fp\u003E\n\u003C\u002Fmain\u003E',
@@ -47,7 +47,7 @@ export const searchExperimentObject = {
mode: 'draw-shuffle',
},
responses: {},
- messageHandlers: {
+ hooks: {
'before:prepare': initPracticeTrials,
},
title: 'Practice task',
@@ -59,7 +59,7 @@ export const searchExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Trial',
content: [
{
@@ -70,7 +70,7 @@ export const searchExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {},
+ hooks: {},
title: 'Frame',
content: {
type: 'lab.canvas.Screen',
@@ -127,7 +127,7 @@ export const searchExperimentObject = {
files: {},
parameters: {},
responses: {},
- messageHandlers: {
+ hooks: {
run: function anonymous(
this: lab.flow.Loop