diff --git a/fagerstrom_test_survey/config.json b/fagerstrom_test_survey/config.json
new file mode 100644
index 00000000..770870d0
--- /dev/null
+++ b/fagerstrom_test_survey/config.json
@@ -0,0 +1,47 @@
+[
+ {
+ "name": "Fagerstrom Test for Nicotine Dependence (FND)",
+ "template": "jspsych",
+ "run": [
+ "static/js/jspsych/jspsych.js",
+ "static/js/jspsych/plugins/jspsych-call-function.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-text.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-instructions.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-attention-check.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-single-stim.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-categorize.js",
+ "static/js/jspsych/plugins/jspsych-survey-text.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-stop-signal.js",
+ "static/css/jspsych.css",
+ "static/css/default_style.css",
+ "style.css",
+ "experiment.js"
+ ],
+ "exp_id": "fagerstrom_test_survey",
+ "cognitive_atlas_task_id": "",
+ "contributors": [
+ "Jaime Ali Holguin Rios",
+ "Patrick Bissett",
+ "Russell Poldrack"
+ ],
+ "time": 30,
+ "reference": "http://psycnet.apa.org/journals/xlm/37/2/392/",
+ "notes": "Condition refers to whether the trial is practice or high_freq/low_freq (the two test conditions) as well as whether it was a go or SS trial",
+ "publish": "True",
+ "experiment_variables": [
+ {
+ "name": "credit_var",
+ "type": "credit",
+ "datatype": "boolean",
+ "description": "True if avg_rt > 200"
+ }
+ ],
+ "deployment_variables": {
+ "jspsych_init": {
+ "fullscreen": true,
+ "display_element": "getDisplayElement",
+ "on_trial_finish": "addID()"
+ }
+ }
+ }
+]
diff --git a/fagerstrom_test_survey/experiment.js b/fagerstrom_test_survey/experiment.js
new file mode 100644
index 00000000..c8df7a72
--- /dev/null
+++ b/fagerstrom_test_survey/experiment.js
@@ -0,0 +1,405 @@
+/* ************************************ */
+/* Define Helper Functions */
+/* ************************************ */
+
+function getDisplayElement() {
+ $("
").appendTo("body");
+ return $("").appendTo("body");
+}
+
+function addID() {
+ jsPsych.data.addDataToLastTrial({
+ exp_id: "fagerstrom_test_survey",
+ });
+}
+var conditional_length_counter = 0;
+var getQuestions = function () {
+ survey_question = survey_questions.shift();
+ button_info = button_text.shift();
+ fatal_response = fatal_responses.shift();
+ conditional_response = conditional_responses.shift();
+ question_type = question_types.shift();
+ item_name = item_names_dartmouth.shift();
+ conditional_length = conditional_lengths.shift();
+ buttonText = button_info[0];
+ numButtons = button_info[1];
+ buttonBoard2 = createButtonBoard2(numButtons, buttonText);
+
+ //if subject makes fatal or conditional response on previous question, set time == 1.
+ //doing the above skips the upcoming question
+ skip_question = 1;
+ do_not_skip_question = 180000;
+
+ if (sub_made_fatal_response === 0 && sub_made_conditional_response == -1) {
+ whichTime = do_not_skip_question;
+ }
+
+ if (sub_made_fatal_response == 1) {
+ whichTime = skip_question;
+ }
+ if (sub_made_conditional_response == 1) {
+ sub_made_conditional_response = -1;
+ whichTime = do_not_skip_question;
+ } else if (sub_made_conditional_response === 0) {
+ conditional_length_counter += 1;
+ whichTime = skip_question;
+ if (conditional_length_counter == conditional_length_index) {
+ sub_made_conditional_response = -1;
+ conditional_length_counter = 0;
+ }
+ }
+
+ return buttonBoard1 + survey_question + buttonBoard2;
+};
+
+var createButtonBoard2 = function (numButtons, buttonText) {
+ //numButtons and buttonText need to be same length. numButtons is a number, buttonText is an array
+ var buttonBoard2 = "";
+ return buttonBoard2;
+};
+
+var hitKey = function (whichKey) {
+ e = jQuery.Event("keydown");
+ e.which = whichKey; // # Some key code value
+ e.keyCode = whichKey;
+ $(document).trigger(e);
+ e = jQuery.Event("keyup");
+ e.which = whichKey; // # Some key code value
+ e.keyCode = whichKey;
+ $(document).trigger(e);
+};
+
+var pressSubmit = function (current_submit) {
+ buttonPressed = current_submit;
+ buttonPressedText = document.getElementById(current_submit).innerHTML;
+ console.log("buttonPressedText = " + buttonPressedText);
+ keyTracker.push(buttonPressed);
+ if (keyTracker.length === 1) {
+ $("#" + buttonPressed).addClass("selected");
+ } else if (keyTracker.length > 1) {
+ for (var i = 0; i < keyTracker.length; i++) {
+ $("#" + keyTracker[i]).removeClass("selected");
+ }
+ $("#" + buttonPressed).addClass("selected");
+ }
+};
+
+var getTime = function () {
+ return whichTime;
+};
+
+document.addEventListener("keydown", function (e) {
+ var keynum;
+ if (window.event) {
+ keynum = e.keyCode;
+ } else if (e.which) {
+ keynum = e.which;
+ }
+ if (keynum == 13) {
+ if (keyTracker.length === 0 && game_state == "questions") {
+ alert(
+ "Please choose a response. Resume full-screen if you are taken out."
+ );
+ } else if (keyTracker.length > 0 && game_state == "questions") {
+ hitKey(81);
+ }
+ }
+});
+
+var appendData = function () {
+ curr_trial = jsPsych.progress().current_trial_global;
+ trial_id = jsPsych.data.getDataByTrialIndex(curr_trial).trial_id;
+
+ if (
+ fatal_response.indexOf(buttonPressedText) != -1 &&
+ question_type == "Fatal"
+ ) {
+ sub_made_fatal_response = 1;
+ }
+
+ if (
+ conditional_response.indexOf(buttonPressedText) != -1 &&
+ question_type == "Conditional"
+ ) {
+ sub_made_conditional_response = 1;
+ conditional_length_index = conditional_length;
+ } else if (
+ conditional_response.indexOf(buttonPressedText) == -1 &&
+ question_type == "Conditional"
+ ) {
+ sub_made_conditional_response = 0;
+ conditional_length_index = conditional_length;
+ }
+
+ jsPsych.data.addDataToLastTrial({
+ response: buttonPressedText,
+ text: survey_question,
+ options: buttonText,
+ question_id: item_name,
+ });
+
+ keyTracker = [];
+ buttonPressed = "N/A";
+ buttonPressedText = "N/A";
+};
+
+/* ************************************ */
+/* Define Experimental Variables */
+/* ************************************ */
+var preFileType =
+ "
" +
+ '
';
+
+var buttonBoard2 =
+ "
" +
+ "
" +
+ "
" +
+ "";
+
+/* ************************************ */
+/* Set up jsPsych blocks */
+/* ************************************ */
+
+//Set up post task questionnaire
+var post_task_block = {
+ type: "survey-text",
+ data: {
+ exp_id: "fagerstrom_test_survey",
+ trial_id: "post task questions",
+ },
+ questions: [
+ 'Comments:
',
+ ],
+ rows: [15],
+ columns: [60],
+};
+
+var end_block = {
+ type: "poldrack-text",
+ data: {
+ exp_id: "fagerstrom_test_survey",
+ trial_id: "end",
+ },
+ timing_response: 180000,
+ text:
+ "" +
+ '
Thanks for completing this survey!
' +
+ '
Press enter to continue.
' +
+ "
",
+ cont_key: [13],
+ timing_post_trial: 0,
+};
+
+var welcome_block = {
+ type: "poldrack-text",
+ data: {
+ trial_id: "welcome",
+ },
+ timing_response: -1,
+ text:
+ "" +
+ '
Welcome to this survey!
' +
+ '
Press enter to continue.
' +
+ "
",
+ cont_key: [13],
+ timing_post_trial: 0,
+};
+
+var instructions_block = {
+ type: "poldrack-text",
+ data: {
+ trial_id: "instruction",
+ },
+ timing_response: -1,
+ text:
+ "" +
+ '
Please answer the following questions regarding your nicotine use.
' +
+ '
Click on the button that best fits your answer, then press enter to submit your response.
' +
+ '
You will not be able to go back, so please carefully read and understand each question before you move on.
' +
+ '
Each question will disappear after 3 minutes if you do not respond. Please answer each question by the time limit.
' +
+ '
Press enter to begin the survey.
' +
+ "
",
+ cont_key: [13],
+ timing_post_trial: 0,
+};
+
+var update_state_block = {
+ type: "poldrack-text",
+ data: {
+ trial_id: "update_state",
+ },
+ timing_response: 1,
+ text: "",
+ cont_key: [13],
+ timing_post_trial: 0,
+ on_finish: function () {
+ game_state = "questions";
+ },
+};
+
+post_questionnaire_trials = [];
+for (var x = 0; x < survey_questions.length; x++) {
+ var post_exp_block = {
+ type: "poldrack-single-stim",
+ stimulus: getQuestions,
+ is_html: true,
+ choices: [81], //48,49,50,51,52
+ data: {
+ exp_id: "fagerstrom_test_survey",
+ trial_id: "post_questionnaire_block",
+ },
+ timing_post_trial: 0,
+ timing_stim: getTime,
+ timing_response: getTime,
+ response_ends_trial: true,
+ on_finish: appendData,
+ };
+
+ post_questionnaire_trials.push(post_exp_block);
+}
+
+var post_questionnaire_node = {
+ timeline: post_questionnaire_trials,
+ loop_function: function (data) {
+ game_state = "end";
+ },
+};
+
+/* ************************************ */
+/* Set up Experiment */
+/* ************************************ */
+
+var fagerstrom_test_survey_experiment = [];
+
+fagerstrom_test_survey_experiment.push(welcome_block);
+
+fagerstrom_test_survey_experiment.push(instructions_block);
+
+fagerstrom_test_survey_experiment.push(update_state_block);
+
+fagerstrom_test_survey_experiment.push(post_questionnaire_node);
+
+fagerstrom_test_survey_experiment.push(post_task_block);
+
+fagerstrom_test_survey_experiment.push(end_block);
diff --git a/fagerstrom_test_survey/style.css b/fagerstrom_test_survey/style.css
new file mode 100644
index 00000000..a37903d3
--- /dev/null
+++ b/fagerstrom_test_survey/style.css
@@ -0,0 +1,143 @@
+.display_stage {
+ position: fixed;
+ background: gray;
+ left: 5vw;
+ top: 2vh;
+ height: 94vh;
+ width: 90vw;
+ border-radius: 15px;
+ border: 1vh solid #D0D0D0;
+ z-index: 0;
+}
+
+.display_stage > div, .display_stage > p {
+ color: black;
+}
+
+.selected{
+ border:solid 2px green;
+ color: green;
+}
+
+.unselected{
+ border:solid 2px white;
+ color: white;
+}
+
+.unselected:focus{
+ border:solid 2px green;
+ color: green;
+}
+
+.survey_area {
+ width: 75vw;
+ height: 75vh;
+ position:absolute;
+ top:50%;
+ left:50%;
+ margin-right:-50%;
+ transform: translate(-50%,-50%);
+ background-color: none;
+
+}
+
+img.center {
+ height: 500px;
+ width: 500px; /* ie8 */
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ margin: auto;
+ max-height: 65%;
+}
+
+.centerbox {
+ width: 50vw;
+ height: 70vh;
+ position:absolute;
+ top:50%;
+ left:50%;
+ margin-right:-50%;
+ transform: translate(-50%,-50%);
+}
+
+
+.bigbox {
+width:100%;
+margin: auto;
+min-height: 100%;
+position:absolute;
+top:0%;
+left:0%;
+margin-right:0%;
+text-align: center;
+}
+
+
+.buttonbox {
+width: 100%;
+height: 10%;
+position:absolute;
+top:90%;
+left:50%;
+transform: translate(-50%,-50%);
+margin-right:0%;
+text-align: center;
+background-color: none;
+}
+
+.inner {
+display: inline-block;
+padding: 20px;
+padding-top: 0%;
+}
+
+.likert_btn {
+background-color: gray;
+font-size: 26px;
+padding: 20px 35px;
+font-size: 20px;
+border-radius: 15px;
+}
+
+
+
+/* Text based classes */
+/* Used for general instructions */
+.block-text {
+ width:100%;
+ height 100vw;
+ text-align: justify;
+ margin: 0 auto;
+ margin-bottom: 1em;
+ font-size: 22px;
+ line-height: 120%;
+ position: relative;
+ top: 15%;
+
+}
+
+/* As above but centeblack instead of justified. Good for instructions with few lines */
+.center-block-text {
+ width:100%;
+ height 100vw;
+ text-align: center;
+ margin: 0 auto;
+ margin-bottom: 1em;
+ font-size: 26px;
+ line-height: 120%;
+}
+
+/* used for large text shown in the center of the screen, like FB or stimuli */
+.center-text2 {
+ text-align:center;
+ font-size: 26px;
+ position: relative;
+ top: 40%;
+ -ms-transform: translateY(-50%);
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
diff --git a/mcarthur_social_status_survey/config.json b/mcarthur_social_status_survey/config.json
new file mode 100644
index 00000000..fa2ef9d5
--- /dev/null
+++ b/mcarthur_social_status_survey/config.json
@@ -0,0 +1,48 @@
+[
+ {
+ "name": "MacArthur Scale of Subjective Social Status",
+ "template":"jspsych",
+ "run": [
+
+ "static/js/jspsych/jspsych.js",
+ "static/js/jspsych/plugins/jspsych-call-function.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-text.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-instructions.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-attention-check.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-single-stim.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-poldrack-categorize.js",
+ "static/js/jspsych/plugins/jspsych-survey-text.js",
+ "static/js/jspsych/poldrack_plugins/jspsych-stop-signal.js",
+ "static/css/jspsych.css",
+ "static/css/default_style.css",
+ "style.css",
+ "experiment.js"
+
+
+ ],
+ "exp_id": "mcarthur_social_status_survey",
+ "cognitive_atlas_task_id": "",
+ "contributors": [
+ "Patrick Bissett",
+ "Jaime Ali Holguin Rios",
+ "Russell Poldrack"
+ ],
+ "time":30,
+ "reference": "http://psycnet.apa.org/journals/xlm/37/2/392/",
+ "notes": "Condition refers to whether the trial is practice or high_freq/low_freq (the two test conditions) as well as whether it was a go or SS trial",
+ "publish":"True",
+ "experiment_variables": [{
+ "name":"credit_var",
+ "type":"credit",
+ "datatype": "boolean",
+ "description":"True if avg_rt > 200"
+ }],
+ "deployment_variables":{"jspsych_init":
+ {"fullscreen": true,
+ "display_element": "getDisplayElement",
+ "on_trial_finish": "addID()"}
+ }
+
+ }
+]
+
diff --git a/mcarthur_social_status_survey/experiment.js b/mcarthur_social_status_survey/experiment.js
new file mode 100644
index 00000000..21fccfb3
--- /dev/null
+++ b/mcarthur_social_status_survey/experiment.js
@@ -0,0 +1,333 @@
+/* ************************************ */
+/* Define Helper Functions */
+/* ************************************ */
+
+function getDisplayElement() {
+ $("").appendTo("body");
+ return $("").appendTo("body");
+}
+
+function addID() {
+ jsPsych.data.addDataToLastTrial({ exp_id: "mcarthur_social_status_survey" });
+}
+var conditional_length_counter = 0;
+var getQuestions = function () {
+ survey_question = survey_questions.shift();
+ button_info = button_text.shift();
+ fatal_response = fatal_responses.shift();
+ conditional_response = conditional_responses.shift();
+ question_type = question_types.shift();
+ item_name = item_names_dartmouth.shift();
+ conditional_length = conditional_lengths.shift();
+ buttonText = button_info[0];
+ numButtons = button_info[1];
+ buttonBoard2 = createButtonBoard2(numButtons, buttonText);
+
+ //if subject makes fatal or conditional response on previous question, set time == 1.
+ //doing the above skips the upcoming question
+ skip_question = 1;
+ do_not_skip_question = 300000;
+
+ if (sub_made_fatal_response === 0 && sub_made_conditional_response == -1) {
+ whichTime = do_not_skip_question;
+ }
+
+ if (sub_made_fatal_response == 1) {
+ whichTime = skip_question;
+ }
+ if (sub_made_conditional_response == 1) {
+ sub_made_conditional_response = -1;
+ whichTime = do_not_skip_question;
+ } else if (sub_made_conditional_response === 0) {
+ conditional_length_counter += 1;
+ whichTime = skip_question;
+ if (conditional_length_counter == conditional_length_index) {
+ sub_made_conditional_response = -1;
+ conditional_length_counter = 0;
+ }
+ }
+
+ return buttonBoard1 + survey_question + buttonBoard2;
+};
+
+var createButtonBoard2 = function (numButtons, buttonText) {
+ //numButtons and buttonText need to be same length. numButtons is a number, buttonText is an array
+ var buttonBoard2 = "";
+ return buttonBoard2;
+};
+
+var hitKey = function (whichKey) {
+ e = jQuery.Event("keydown");
+ e.which = whichKey; // # Some key code value
+ e.keyCode = whichKey;
+ $(document).trigger(e);
+ e = jQuery.Event("keyup");
+ e.which = whichKey; // # Some key code value
+ e.keyCode = whichKey;
+ $(document).trigger(e);
+};
+
+var pressSubmit = function (current_submit) {
+ buttonPressed = current_submit;
+ buttonPressedText = document.getElementById(current_submit).innerHTML;
+ console.log("buttonPressedText = " + buttonPressedText);
+ keyTracker.push(buttonPressed);
+ if (keyTracker.length === 1) {
+ $("#" + buttonPressed).addClass("selected");
+ } else if (keyTracker.length > 1) {
+ for (var i = 0; i < keyTracker.length; i++) {
+ $("#" + keyTracker[i]).removeClass("selected");
+ }
+ $("#" + buttonPressed).addClass("selected");
+ }
+};
+
+var getTime = function () {
+ return whichTime;
+};
+
+document.addEventListener("keydown", function (e) {
+ var keynum;
+ if (window.event) {
+ keynum = e.keyCode;
+ } else if (e.which) {
+ keynum = e.which;
+ }
+ if (keynum == 13) {
+ if (keyTracker.length === 0 && game_state == "questions") {
+ alert(
+ "Please choose a response. Resume full-screen if you are taken out."
+ );
+ } else if (keyTracker.length > 0 && game_state == "questions") {
+ hitKey(81);
+ }
+ }
+});
+
+var appendData = function () {
+ curr_trial = jsPsych.progress().current_trial_global;
+ trial_id = jsPsych.data.getDataByTrialIndex(curr_trial).trial_id;
+
+ if (
+ fatal_response.indexOf(buttonPressedText) != -1 &&
+ question_type == "Fatal"
+ ) {
+ sub_made_fatal_response = 1;
+ }
+
+ if (
+ conditional_response.indexOf(buttonPressedText) != -1 &&
+ question_type == "Conditional"
+ ) {
+ sub_made_conditional_response = 1;
+ conditional_length_index = conditional_length;
+ } else if (
+ conditional_response.indexOf(buttonPressedText) == -1 &&
+ question_type == "Conditional"
+ ) {
+ sub_made_conditional_response = 0;
+ conditional_length_index = conditional_length;
+ }
+
+ jsPsych.data.addDataToLastTrial({
+ response: buttonPressedText,
+ text: survey_question,
+ options: buttonText,
+ question_id: item_name,
+ });
+
+ keyTracker = [];
+ buttonPressed = "N/A";
+ buttonPressedText = "N/A";
+};
+
+getInstructions = function (index) {
+ return instruction_prompts[index];
+};
+
+/* ************************************ */
+/* Define Experimental Variables */
+/* ************************************ */
+var preFileType =
+ "
At the top of the ladder are the people who are the best off – those who have the most money, the most education, and the most respected jobs. At the bottom are the people who are the worst off – those who have the least money, least education, the least respected jobs, or no job. The higher up you are on this ladder, the closer you are to the people at the very top; the lower you are, the closer you are to the people at the very bottom. Where would you place yourself on this ladder? Please choose the number on the rung where you think you stand at this time in your life relative to other people in the United States." +
+ '',
+ "Think of this ladder as representing where people stand in their communities. People define community in different ways; please define it in whatever way is most meaningful to you. At the top of the ladder are people who have the highest standing in their community. At the bottom are the people who have the lowest standing in their community. Where would you place yourself on this ladder? Please choose the number on the rung where you think you stand at this time in your life relative to other people in your community." +
+ '',
+];
+
+//response options for radio buttons
+//each array contains the button text, as well as length of button array.
+var button_text = [
+ [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10],
+ [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10],
+];
+
+//Conditional questions control the presence of a set of following questions.
+//Fatal questions end the survey, if a sub makes a particular response
+//questions that are 'neither' are not conditional or fatal
+var question_types = [["neither"], ["neither"]];
+
+//If a subject chooses this response, end survey. If not, continue survey
+var fatal_responses = [["none"], ["none"]];
+
+//If a subject chooses this response, show the next question. If not, skip next question
+var conditional_responses = [["neither"], ["neither"]];
+//If sub made a response during a conditional questions that requires skipping the following questions,
+//these are the number of questions to skip. If integer, leave as integer. Otherwise, put 'neither'
+var conditional_lengths = [["neither"], ["neither"]];
+
+//Names of items that be written on data
+var item_names_dartmouth = ["mcarthur_1", "mcarthur_2"];
+
+/* ************************************ */
+/* Set up HTML for Survey */
+/* ************************************ */
+var buttonBoard1 =
+ "" +
+ '
';
+
+var buttonBoard2 =
+ "
" +
+ "
" +
+ "
" +
+ "
";
+
+/* ************************************ */
+/* Set up jsPsych blocks */
+/* ************************************ */
+var end_block = {
+ type: "poldrack-text",
+ data: {
+ exp_id: "alcohol_drugs_survey_network",
+ trial_id: "end",
+ },
+ timing_response: 180000,
+ text:
+ "" +
+ '
Thanks for completing this survey!
' +
+ '
Press enter to continue.
' +
+ "
",
+ cont_key: [13],
+ timing_post_trial: 0,
+};
+
+var welcome_block = {
+ type: "poldrack-text",
+ data: {
+ trial_id: "welcome",
+ },
+ timing_response: -1,
+ text:
+ "" +
+ '
Welcome to this survey!
' +
+ '
Press enter to continue.
' +
+ "
",
+ cont_key: [13],
+ timing_post_trial: 0,
+};
+
+var opening_instructions_block = {
+ type: "poldrack-text",
+ data: {
+ trial_id: "instruction",
+ },
+ timing_response: -1,
+ text:
+ "" +
+ '
Please answer the following questions.
' +
+ '
Click on the button that best fits your answer, then press enter to submit your response.
' +
+ '
You will not be able to go back, so please carefully read and understand each question before you move on.
' +
+ '
Each question will disappear after 5 minutes if you do not respond. Please answer each question by the time limit.
' +
+ '
Press enter to begin the survey.
' +
+ "
",
+ cont_key: [13],
+ timing_post_trial: 0,
+};
+
+var update_state_block = {
+ type: "poldrack-text",
+ data: {
+ trial_id: "update_state",
+ },
+ timing_response: 1,
+ text: "",
+ cont_key: [13],
+ timing_post_trial: 0,
+ on_finish: function () {
+ game_state = "questions";
+ },
+};
+
+post_questionnaire_trials = [];
+for (var x = 0; x < survey_questions.length; x++) {
+ var post_exp_block = {
+ type: "poldrack-single-stim",
+ stimulus: getQuestions,
+ is_html: true,
+ choices: [81], //48,49,50,51,52
+ data: {
+ exp_id: "mcarthur_social_status_survey",
+ trial_id: "post_questionnaire_block",
+ },
+ timing_post_trial: 0,
+ timing_stim: getTime,
+ timing_response: getTime,
+ response_ends_trial: true,
+ on_finish: appendData,
+ };
+
+ post_questionnaire_trials.push(post_exp_block);
+}
+
+var post_questionnaire_node = {
+ timeline: post_questionnaire_trials,
+ loop_function: function (data) {
+ game_state = "end";
+ },
+};
+
+/* ************************************ */
+/* Set up Experiment */
+/* ************************************ */
+
+var mcarthur_social_status_survey_experiment = [];
+
+mcarthur_social_status_survey_experiment.push(welcome_block);
+mcarthur_social_status_survey_experiment.push(opening_instructions_block);
+
+mcarthur_social_status_survey_experiment.push(update_state_block);
+
+mcarthur_social_status_survey_experiment.push(post_questionnaire_node);
+
+mcarthur_social_status_survey_experiment.push(end_block);
diff --git a/mcarthur_social_status_survey/images/ladder.png b/mcarthur_social_status_survey/images/ladder.png
new file mode 100644
index 00000000..830336d9
Binary files /dev/null and b/mcarthur_social_status_survey/images/ladder.png differ
diff --git a/mcarthur_social_status_survey/style.css b/mcarthur_social_status_survey/style.css
new file mode 100644
index 00000000..0614da99
--- /dev/null
+++ b/mcarthur_social_status_survey/style.css
@@ -0,0 +1,156 @@
+.display_stage {
+ position: fixed;
+ background: gray;
+ left: 5vw;
+ top: 2vh;
+ height: 94vh;
+ width: 90vw;
+ border-radius: 15px;
+ border: 1vh solid #D0D0D0;
+ z-index: 0;
+}
+
+.display_stage > div, .display_stage > p {
+ color: black;
+}
+
+.selected{
+ border:solid 2px green;
+ color: green;
+}
+
+.unselected{
+ border:solid 2px white;
+ color: white;
+}
+
+.unselected:focus{
+ border:solid 2px green;
+ color: green;
+}
+
+.survey_area {
+ width: 75vw;
+ height: 75vh;
+ position:absolute;
+ top:50%;
+ left:50%;
+ margin-right:-50%;
+ transform: translate(-50%,-50%);
+ background-color: none;
+
+}
+
+img.center {
+ height: 500px;
+ width: 500px; /* ie8 */
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ margin: auto;
+ max-height: 65%;
+}
+
+.centerbox {
+ width: 50vw;
+ height: 70vh;
+ position:absolute;
+ top:50%;
+ left:50%;
+ margin-right:-50%;
+ transform: translate(-50%,-50%);
+}
+
+
+.bigbox {
+width:100%;
+margin: auto;
+min-height: 100%;
+position:absolute;
+top:0%;
+left:0%;
+margin-right:0%;
+text-align: center;
+}
+
+
+.buttonbox {
+width: 100%;
+height: 10%;
+position:absolute;
+top:90%;
+left:50%;
+transform: translate(-50%,-50%);
+margin-right:0%;
+text-align: center;
+background-color: none;
+}
+
+.inner {
+display: inline-block;
+padding: 20px;
+padding-top: 0%;
+}
+
+.likert_btn {
+background-color: gray;
+font-size: 26px;
+padding: 20px 35px;
+font-size: 20px;
+border-radius: 15px;
+}
+
+
+
+/* Text based classes */
+/* Used for general instructions */
+.block-text {
+ width:100%;
+ height 100vw;
+ text-align: justify;
+ margin: 0 auto;
+ margin-bottom: 1em;
+ font-size: 22px;
+ line-height: 120%;
+ position: relative;
+ top: 15%;
+
+}
+
+/* As above but centeblack instead of justified. Good for instructions with few lines */
+.center-block-text {
+ width:100%;
+ height 100vw;
+ text-align: center;
+ margin: 0 auto;
+ margin-bottom: 1em;
+ font-size: 26px;
+ line-height: 120%;
+}
+
+/* used for large text shown in the center of the screen, like FB or stimuli */
+.center-text2 {
+ text-align:center;
+ font-size: 26px;
+ position: relative;
+ top: 40%;
+ -ms-transform: translateY(-50%);
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+
+.ladder {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 70vh; /* This makes the div take the full viewport height */
+}
+
+.ladder img {
+ max-width: 30%;
+ height: auto;
+ margin-top: -350px; /* Adjust this value as needed */
+}
+