jspsych 6.2.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/README.md +43 -29
  2. package/css/jspsych.css +39 -39
  3. package/dist/JsPsych.d.ts +112 -0
  4. package/dist/TimelineNode.d.ts +34 -0
  5. package/dist/index.browser.js +3164 -0
  6. package/dist/index.browser.js.map +1 -0
  7. package/dist/index.browser.min.js +2 -0
  8. package/dist/index.browser.min.js.map +1 -0
  9. package/dist/index.cjs +3158 -0
  10. package/dist/index.cjs.map +1 -0
  11. package/dist/index.d.ts +11 -0
  12. package/dist/index.js +3152 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/migration.d.ts +3 -0
  15. package/dist/modules/data/DataCollection.d.ts +45 -0
  16. package/dist/modules/data/DataColumn.d.ts +15 -0
  17. package/dist/modules/data/index.d.ts +25 -0
  18. package/dist/modules/data/utils.d.ts +3 -0
  19. package/dist/modules/extensions.d.ts +22 -0
  20. package/dist/modules/plugin-api/HardwareAPI.d.ts +15 -0
  21. package/dist/modules/plugin-api/KeyboardListenerAPI.d.ts +34 -0
  22. package/dist/modules/plugin-api/MediaAPI.d.ts +27 -0
  23. package/dist/modules/plugin-api/SimulationAPI.d.ts +41 -0
  24. package/dist/modules/plugin-api/TimeoutAPI.d.ts +5 -0
  25. package/dist/modules/plugin-api/index.d.ts +8 -0
  26. package/dist/modules/plugins.d.ts +129 -0
  27. package/dist/modules/randomization.d.ts +35 -0
  28. package/dist/modules/turk.d.ts +40 -0
  29. package/dist/modules/utils.d.ts +7 -0
  30. package/package.json +32 -15
  31. package/src/JsPsych.ts +884 -0
  32. package/src/TimelineNode.ts +536 -0
  33. package/src/index.ts +71 -0
  34. package/src/migration.ts +37 -0
  35. package/src/modules/data/DataCollection.ts +198 -0
  36. package/src/modules/data/DataColumn.ts +86 -0
  37. package/src/modules/data/index.ts +174 -0
  38. package/src/modules/data/utils.ts +75 -0
  39. package/src/modules/extensions.ts +23 -0
  40. package/src/modules/plugin-api/HardwareAPI.ts +32 -0
  41. package/src/modules/plugin-api/KeyboardListenerAPI.ts +165 -0
  42. package/src/modules/plugin-api/MediaAPI.ts +337 -0
  43. package/src/modules/plugin-api/SimulationAPI.ts +181 -0
  44. package/src/modules/plugin-api/TimeoutAPI.ts +16 -0
  45. package/src/modules/plugin-api/index.ts +28 -0
  46. package/src/modules/plugins.ts +158 -0
  47. package/src/modules/randomization.ts +327 -0
  48. package/src/modules/turk.ts +99 -0
  49. package/src/modules/utils.ts +30 -0
  50. package/.github/workflows/jest.yml +0 -20
  51. package/code-of-conduct.md +0 -56
  52. package/contributors.md +0 -61
  53. package/docs/CNAME +0 -1
  54. package/docs/about/about.md +0 -18
  55. package/docs/about/contributing.md +0 -43
  56. package/docs/about/license.md +0 -25
  57. package/docs/about/support.md +0 -7
  58. package/docs/core_library/jspsych-core.md +0 -661
  59. package/docs/core_library/jspsych-data.md +0 -589
  60. package/docs/core_library/jspsych-pluginAPI.md +0 -510
  61. package/docs/core_library/jspsych-randomization.md +0 -397
  62. package/docs/core_library/jspsych-turk.md +0 -102
  63. package/docs/img/blue.png +0 -0
  64. package/docs/img/folder-setup.png +0 -0
  65. package/docs/img/folder-with-html.png +0 -0
  66. package/docs/img/githubreleases.jpg +0 -0
  67. package/docs/img/jspsych-favicon.png +0 -0
  68. package/docs/img/jspsych-logo-no-text-mono.svg +0 -493
  69. package/docs/img/jspsych-logo.jpg +0 -0
  70. package/docs/img/orange.png +0 -0
  71. package/docs/img/palmer_stim.png +0 -0
  72. package/docs/img/progress_bar.png +0 -0
  73. package/docs/img/visual_search_example.jpg +0 -0
  74. package/docs/index.md +0 -9
  75. package/docs/overview/browser-device-support.md +0 -35
  76. package/docs/overview/callbacks.md +0 -140
  77. package/docs/overview/data.md +0 -281
  78. package/docs/overview/exclude-browser.md +0 -32
  79. package/docs/overview/experiment-options.md +0 -121
  80. package/docs/overview/fullscreen.md +0 -36
  81. package/docs/overview/media-preloading.md +0 -91
  82. package/docs/overview/mturk.md +0 -77
  83. package/docs/overview/progress-bar.md +0 -110
  84. package/docs/overview/record-browser-interactions.md +0 -23
  85. package/docs/overview/running-experiments.md +0 -95
  86. package/docs/overview/timeline.md +0 -387
  87. package/docs/overview/trial.md +0 -142
  88. package/docs/plugins/creating-a-plugin.md +0 -79
  89. package/docs/plugins/jspsych-animation.md +0 -40
  90. package/docs/plugins/jspsych-audio-button-response.md +0 -60
  91. package/docs/plugins/jspsych-audio-keyboard-response.md +0 -58
  92. package/docs/plugins/jspsych-audio-slider-response.md +0 -53
  93. package/docs/plugins/jspsych-call-function.md +0 -81
  94. package/docs/plugins/jspsych-canvas-button-response.md +0 -66
  95. package/docs/plugins/jspsych-canvas-keyboard-response.md +0 -68
  96. package/docs/plugins/jspsych-canvas-slider-response.md +0 -89
  97. package/docs/plugins/jspsych-categorize-animation.md +0 -60
  98. package/docs/plugins/jspsych-categorize-html.md +0 -52
  99. package/docs/plugins/jspsych-categorize-image.md +0 -53
  100. package/docs/plugins/jspsych-cloze.md +0 -45
  101. package/docs/plugins/jspsych-external-html.md +0 -70
  102. package/docs/plugins/jspsych-free-sort.md +0 -55
  103. package/docs/plugins/jspsych-fullscreen.md +0 -57
  104. package/docs/plugins/jspsych-html-button-response.md +0 -42
  105. package/docs/plugins/jspsych-html-keyboard-response.md +0 -51
  106. package/docs/plugins/jspsych-html-slider-response.md +0 -45
  107. package/docs/plugins/jspsych-iat-html.md +0 -64
  108. package/docs/plugins/jspsych-iat-image.md +0 -64
  109. package/docs/plugins/jspsych-image-button-response.md +0 -46
  110. package/docs/plugins/jspsych-image-keyboard-response.md +0 -57
  111. package/docs/plugins/jspsych-image-slider-response.md +0 -52
  112. package/docs/plugins/jspsych-instructions.md +0 -58
  113. package/docs/plugins/jspsych-maxdiff.md +0 -42
  114. package/docs/plugins/jspsych-rdk.md +0 -119
  115. package/docs/plugins/jspsych-reconstruction.md +0 -48
  116. package/docs/plugins/jspsych-resize.md +0 -39
  117. package/docs/plugins/jspsych-same-different-html.md +0 -53
  118. package/docs/plugins/jspsych-same-different-image.md +0 -66
  119. package/docs/plugins/jspsych-serial-reaction-time-mouse.md +0 -50
  120. package/docs/plugins/jspsych-serial-reaction-time.md +0 -57
  121. package/docs/plugins/jspsych-survey-html-form.md +0 -50
  122. package/docs/plugins/jspsych-survey-likert.md +0 -70
  123. package/docs/plugins/jspsych-survey-multi-choice.md +0 -48
  124. package/docs/plugins/jspsych-survey-multi-select.md +0 -53
  125. package/docs/plugins/jspsych-survey-text.md +0 -63
  126. package/docs/plugins/jspsych-video-button-response.md +0 -52
  127. package/docs/plugins/jspsych-video-keyboard-response.md +0 -48
  128. package/docs/plugins/jspsych-video-slider-response.md +0 -58
  129. package/docs/plugins/jspsych-visual-search-circle.md +0 -52
  130. package/docs/plugins/jspsych-vsl-animate-occlusion.md +0 -55
  131. package/docs/plugins/jspsych-vsl-grid-scene.md +0 -62
  132. package/docs/plugins/overview.md +0 -111
  133. package/docs/tutorials/hello-world.md +0 -144
  134. package/docs/tutorials/rt-task.md +0 -1107
  135. package/examples/add-to-end-of-timeline.html +0 -32
  136. package/examples/conditional-and-loop-functions.html +0 -63
  137. package/examples/css/jquery-ui.css +0 -1225
  138. package/examples/data-add-properties.html +0 -40
  139. package/examples/data-as-function.html +0 -36
  140. package/examples/data-from-timeline.html +0 -45
  141. package/examples/data-from-url.html +0 -21
  142. package/examples/demo-flanker.html +0 -108
  143. package/examples/demo-simple-rt-task.html +0 -104
  144. package/examples/demos/demo_1.html +0 -29
  145. package/examples/demos/demo_2.html +0 -43
  146. package/examples/demos/demo_3.html +0 -58
  147. package/examples/display-element-to-embed-experiment.html +0 -73
  148. package/examples/end-active-node.html +0 -52
  149. package/examples/end-experiment.html +0 -43
  150. package/examples/exclusions.html +0 -32
  151. package/examples/external_html/simple_consent.html +0 -4
  152. package/examples/img/1.gif +0 -0
  153. package/examples/img/10.gif +0 -0
  154. package/examples/img/11.gif +0 -0
  155. package/examples/img/12.gif +0 -0
  156. package/examples/img/2.gif +0 -0
  157. package/examples/img/3.gif +0 -0
  158. package/examples/img/4.gif +0 -0
  159. package/examples/img/5.gif +0 -0
  160. package/examples/img/6.gif +0 -0
  161. package/examples/img/7.gif +0 -0
  162. package/examples/img/8.gif +0 -0
  163. package/examples/img/9.gif +0 -0
  164. package/examples/img/age/of1.jpg +0 -0
  165. package/examples/img/age/of2.jpg +0 -0
  166. package/examples/img/age/of3.jpg +0 -0
  167. package/examples/img/age/om1.jpg +0 -0
  168. package/examples/img/age/om2.jpg +0 -0
  169. package/examples/img/age/om3.jpg +0 -0
  170. package/examples/img/age/yf1.jpg +0 -0
  171. package/examples/img/age/yf4.jpg +0 -0
  172. package/examples/img/age/yf5.jpg +0 -0
  173. package/examples/img/age/ym2.jpg +0 -0
  174. package/examples/img/age/ym3.jpg +0 -0
  175. package/examples/img/age/ym5.jpg +0 -0
  176. package/examples/img/backwardN.gif +0 -0
  177. package/examples/img/blue.png +0 -0
  178. package/examples/img/con1.png +0 -0
  179. package/examples/img/con2.png +0 -0
  180. package/examples/img/fixation.gif +0 -0
  181. package/examples/img/happy_face_1.jpg +0 -0
  182. package/examples/img/happy_face_2.jpg +0 -0
  183. package/examples/img/happy_face_3.jpg +0 -0
  184. package/examples/img/happy_face_4.jpg +0 -0
  185. package/examples/img/inc1.png +0 -0
  186. package/examples/img/inc2.png +0 -0
  187. package/examples/img/normalN.gif +0 -0
  188. package/examples/img/orange.png +0 -0
  189. package/examples/img/redX.png +0 -0
  190. package/examples/img/ribbon.jpg +0 -0
  191. package/examples/img/sad_face_1.jpg +0 -0
  192. package/examples/img/sad_face_2.jpg +0 -0
  193. package/examples/img/sad_face_3.jpg +0 -0
  194. package/examples/img/sad_face_4.jpg +0 -0
  195. package/examples/js/snap.svg-min.js +0 -21
  196. package/examples/jspsych-RDK.html +0 -58
  197. package/examples/jspsych-animation.html +0 -33
  198. package/examples/jspsych-audio-button-response.html +0 -52
  199. package/examples/jspsych-audio-keyboard-response.html +0 -62
  200. package/examples/jspsych-audio-slider-response.html +0 -55
  201. package/examples/jspsych-call-function.html +0 -32
  202. package/examples/jspsych-canvas-button-response.html +0 -95
  203. package/examples/jspsych-canvas-keyboard-response.html +0 -78
  204. package/examples/jspsych-canvas-slider-response.html +0 -67
  205. package/examples/jspsych-categorize-animation.html +0 -46
  206. package/examples/jspsych-categorize-html.html +0 -38
  207. package/examples/jspsych-categorize-image.html +0 -38
  208. package/examples/jspsych-cloze.html +0 -42
  209. package/examples/jspsych-free-sort.html +0 -97
  210. package/examples/jspsych-fullscreen.html +0 -44
  211. package/examples/jspsych-html-button-response.html +0 -46
  212. package/examples/jspsych-html-keyboard-response.html +0 -42
  213. package/examples/jspsych-html-slider-response.html +0 -53
  214. package/examples/jspsych-iat.html +0 -510
  215. package/examples/jspsych-image-button-response.html +0 -84
  216. package/examples/jspsych-image-keyboard-response.html +0 -78
  217. package/examples/jspsych-image-slider-response.html +0 -76
  218. package/examples/jspsych-instructions.html +0 -37
  219. package/examples/jspsych-maxdiff.html +0 -33
  220. package/examples/jspsych-reconstruction.html +0 -43
  221. package/examples/jspsych-resize.html +0 -34
  222. package/examples/jspsych-same-different-html.html +0 -28
  223. package/examples/jspsych-same-different-image.html +0 -33
  224. package/examples/jspsych-serial-reaction-time-mouse.html +0 -98
  225. package/examples/jspsych-serial-reaction-time.html +0 -54
  226. package/examples/jspsych-survey-html-form.html +0 -33
  227. package/examples/jspsych-survey-likert.html +0 -42
  228. package/examples/jspsych-survey-multi-choice.html +0 -40
  229. package/examples/jspsych-survey-multi-select.html +0 -42
  230. package/examples/jspsych-survey-text.html +0 -34
  231. package/examples/jspsych-video-button-response.html +0 -57
  232. package/examples/jspsych-video-keyboard-response.html +0 -53
  233. package/examples/jspsych-video-slider-response.html +0 -55
  234. package/examples/jspsych-visual-search-circle.html +0 -58
  235. package/examples/jspsych-vsl-animate-occlusion.html +0 -29
  236. package/examples/jspsych-vsl-grid-scene.html +0 -41
  237. package/examples/lexical-decision.html +0 -132
  238. package/examples/manual-preloading.html +0 -53
  239. package/examples/pause-unpause.html +0 -33
  240. package/examples/progress-bar.html +0 -62
  241. package/examples/sound/hammer.mp3 +0 -0
  242. package/examples/sound/sound.mp3 +0 -0
  243. package/examples/sound/speech_blue.mp3 +0 -0
  244. package/examples/sound/speech_green.mp3 +0 -0
  245. package/examples/sound/speech_joke.mp3 +0 -0
  246. package/examples/sound/speech_red.mp3 +0 -0
  247. package/examples/sound/tone.mp3 +0 -0
  248. package/examples/timeline-variables-sampling.html +0 -50
  249. package/examples/timeline-variables.html +0 -55
  250. package/examples/video/sample_video.mp4 +0 -0
  251. package/jspsych.js +0 -2796
  252. package/license.txt +0 -21
  253. package/mkdocs.yml +0 -104
  254. package/plugins/jspsych-animation.js +0 -189
  255. package/plugins/jspsych-audio-button-response.js +0 -247
  256. package/plugins/jspsych-audio-keyboard-response.js +0 -204
  257. package/plugins/jspsych-audio-slider-response.js +0 -262
  258. package/plugins/jspsych-call-function.js +0 -58
  259. package/plugins/jspsych-canvas-button-response.js +0 -199
  260. package/plugins/jspsych-canvas-keyboard-response.js +0 -155
  261. package/plugins/jspsych-canvas-slider-response.js +0 -207
  262. package/plugins/jspsych-categorize-animation.js +0 -266
  263. package/plugins/jspsych-categorize-html.js +0 -220
  264. package/plugins/jspsych-categorize-image.js +0 -222
  265. package/plugins/jspsych-cloze.js +0 -112
  266. package/plugins/jspsych-external-html.js +0 -112
  267. package/plugins/jspsych-free-sort.js +0 -444
  268. package/plugins/jspsych-fullscreen.js +0 -104
  269. package/plugins/jspsych-html-button-response.js +0 -188
  270. package/plugins/jspsych-html-keyboard-response.js +0 -149
  271. package/plugins/jspsych-html-slider-response.js +0 -202
  272. package/plugins/jspsych-iat-html.js +0 -284
  273. package/plugins/jspsych-iat-image.js +0 -286
  274. package/plugins/jspsych-image-button-response.js +0 -311
  275. package/plugins/jspsych-image-keyboard-response.js +0 -247
  276. package/plugins/jspsych-image-slider-response.js +0 -353
  277. package/plugins/jspsych-instructions.js +0 -237
  278. package/plugins/jspsych-maxdiff.js +0 -174
  279. package/plugins/jspsych-rdk.js +0 -1373
  280. package/plugins/jspsych-reconstruction.js +0 -134
  281. package/plugins/jspsych-resize.js +0 -166
  282. package/plugins/jspsych-same-different-html.js +0 -168
  283. package/plugins/jspsych-same-different-image.js +0 -169
  284. package/plugins/jspsych-serial-reaction-time-mouse.js +0 -213
  285. package/plugins/jspsych-serial-reaction-time.js +0 -247
  286. package/plugins/jspsych-survey-html-form.js +0 -171
  287. package/plugins/jspsych-survey-likert.js +0 -195
  288. package/plugins/jspsych-survey-multi-choice.js +0 -208
  289. package/plugins/jspsych-survey-multi-select.js +0 -232
  290. package/plugins/jspsych-survey-text.js +0 -185
  291. package/plugins/jspsych-video-button-response.js +0 -320
  292. package/plugins/jspsych-video-keyboard-response.js +0 -279
  293. package/plugins/jspsych-video-slider-response.js +0 -351
  294. package/plugins/jspsych-visual-search-circle.js +0 -259
  295. package/plugins/jspsych-vsl-animate-occlusion.js +0 -196
  296. package/plugins/jspsych-vsl-grid-scene.js +0 -103
  297. package/plugins/template/jspsych-plugin-template.js +0 -35
  298. package/tests/README.md +0 -7
  299. package/tests/jsPsych/default-iti.test.js +0 -51
  300. package/tests/jsPsych/default-parameters.test.js +0 -58
  301. package/tests/jsPsych/endexperiment.test.js +0 -49
  302. package/tests/jsPsych/events.test.js +0 -369
  303. package/tests/jsPsych/init.test.js +0 -48
  304. package/tests/jsPsych/loads.test.js +0 -7
  305. package/tests/jsPsych/min-rt.test.js +0 -58
  306. package/tests/jsPsych/progressbar.test.js +0 -202
  307. package/tests/jsPsych/timeline-variables.test.js +0 -254
  308. package/tests/jsPsych/timelines.test.js +0 -498
  309. package/tests/jsPsych.data/datacollection.test.js +0 -116
  310. package/tests/jsPsych.data/datacolumn.test.js +0 -50
  311. package/tests/jsPsych.data/datamodule.test.js +0 -152
  312. package/tests/jsPsych.data/dataparameter.test.js +0 -251
  313. package/tests/jsPsych.data/interactions.test.js +0 -109
  314. package/tests/jsPsych.pluginAPI/pluginapi.test.js +0 -144
  315. package/tests/jsPsych.randomization/randomziation.test.js +0 -27
  316. package/tests/jsPsych.utils/utils.test.js +0 -58
  317. package/tests/media/blue.png +0 -0
  318. package/tests/media/orange.png +0 -0
  319. package/tests/media/sample_video.mp4 +0 -0
  320. package/tests/media/sound.mp3 +0 -0
  321. package/tests/plugins/plugin-animation.test.js +0 -35
  322. package/tests/plugins/plugin-audio-button-response.test.js +0 -15
  323. package/tests/plugins/plugin-audio-keyboard-response.test.js +0 -15
  324. package/tests/plugins/plugin-audio-slider-response.test.js +0 -15
  325. package/tests/plugins/plugin-call-function.test.js +0 -49
  326. package/tests/plugins/plugin-categorize-animation.test.js +0 -274
  327. package/tests/plugins/plugin-categorize-html.test.js +0 -17
  328. package/tests/plugins/plugin-categorize-image.test.js +0 -17
  329. package/tests/plugins/plugin-cloze.test.js +0 -140
  330. package/tests/plugins/plugin-free-sort.test.js +0 -112
  331. package/tests/plugins/plugin-fullscreen.test.js +0 -41
  332. package/tests/plugins/plugin-html-button-response.test.js +0 -161
  333. package/tests/plugins/plugin-html-keyboard-response.test.js +0 -139
  334. package/tests/plugins/plugin-html-slider-response.test.js +0 -155
  335. package/tests/plugins/plugin-iat-html.test.js +0 -328
  336. package/tests/plugins/plugin-iat-image.test.js +0 -308
  337. package/tests/plugins/plugin-image-button-response.test.js +0 -183
  338. package/tests/plugins/plugin-image-keyboard-response.test.js +0 -154
  339. package/tests/plugins/plugin-image-slider-response.test.js +0 -183
  340. package/tests/plugins/plugin-instructions.test.js +0 -66
  341. package/tests/plugins/plugin-maxdiff.test.js +0 -39
  342. package/tests/plugins/plugin-rdk.test.js +0 -17
  343. package/tests/plugins/plugin-reconstruction.test.js +0 -16
  344. package/tests/plugins/plugin-resize.test.js +0 -16
  345. package/tests/plugins/plugin-same-different-html.test.js +0 -17
  346. package/tests/plugins/plugin-same-different-image.test.js +0 -17
  347. package/tests/plugins/plugin-serial-reaction-time-mouse.test.js +0 -42
  348. package/tests/plugins/plugin-serial-reaction-time.test.js +0 -69
  349. package/tests/plugins/plugin-survey-html-form.test.js +0 -44
  350. package/tests/plugins/plugin-survey-likert.test.js +0 -48
  351. package/tests/plugins/plugin-survey-multi-choice.test.js +0 -48
  352. package/tests/plugins/plugin-survey-multi-select.test.js +0 -72
  353. package/tests/plugins/plugin-survey-text.test.js +0 -115
  354. package/tests/plugins/plugin-video-button-response.test.js +0 -35
  355. package/tests/plugins/plugin-video-keyboard-response.test.js +0 -35
  356. package/tests/plugins/plugin-video-slider-response.test.js +0 -34
  357. package/tests/plugins/plugin-visual-search-circle.test.js +0 -16
  358. package/tests/plugins/plugin-vsl-animate-occlusion.test.js +0 -16
  359. package/tests/plugins/plugin-vsl-grid-scene.test.js +0 -16
  360. package/tests/testing-utils.js +0 -13
@@ -1,661 +0,0 @@
1
- # The jsPsych core library
2
-
3
- ---
4
- ## jsPsych.addNodeToEndOfTimeline
5
- ```
6
- jsPsych.addNodeToEndOfTimeline(node_parameters, callback)
7
- ```
8
-
9
- ### Parameters
10
-
11
- Parameter | Type | Description
12
- --------- | ---- | -----------
13
- node_parameters | object | An object defining a timeline. It must have, at a minimum, a `timeline` parameter with a valid timeline array as the value for that parameter.
14
- callback | function | An optional callback function. If adding the node to the timeline requires any preloading of media assets, this callback will be triggered after preloading is compelte.
15
-
16
- ### Return value
17
-
18
- None.
19
-
20
- ### Description
21
-
22
- Adds the timeline to the end of the experiment.
23
-
24
- ### Examples
25
-
26
- #### Without callback
27
-
28
- ```javascript
29
- var trial = {
30
- type: 'html-keyboard-response',
31
- stimulus: 'This is a new trial.'
32
- }
33
-
34
- var new_timeline = {
35
- timeline: [trial]
36
- }
37
-
38
- jsPsych.addNodeToEndOfTimeline(new_timeline)
39
- ```
40
-
41
- ### With callback
42
-
43
- ```javascript
44
- var first = {
45
- type: 'html-keyboard-response',
46
- stimulus: 'first trial; new trial added when on_finish is called',
47
- on_finish: function(){
48
- jsPsych.pauseExperiment();
49
- jsPsych.addNodeToEndOfTimeline({
50
- timeline: [{
51
- type: 'image-keyboard-response',
52
- stimulus: 'img/happy_face_4.jpg'
53
- }]
54
- }, jsPsych.resumeExperiment)
55
- }
56
- }
57
- ```
58
-
59
- ---
60
- ## jsPsych.currentTimelineNodeID
61
-
62
- ```
63
- jsPsych.currentTimelineNodeID()
64
- ```
65
-
66
- ### Parameters
67
-
68
- None.
69
-
70
- ### Return value
71
-
72
- Returns the ID of the TimelineNode that is currently active.
73
-
74
- ### Description
75
-
76
- Gets the ID of the active TimelineNode. The ID is a string that follows a specific format:
77
-
78
- * `"0.0"` is the ID of the first top-level TimelineNode
79
- * `"1.0"` is the ID of the second top-level TimelineNode
80
- * `"2.0"` is the ID of the third top-level TimelineNode, and so on...
81
-
82
- If a TimelineNode iterates multiple times (using the loop function, for example), then the iterations are indicated in the second number:
83
-
84
- * `"0.0"` is the ID of the first top-level TimelineNode during the first iteration
85
- * `"0.1"` is the ID of the first top-level TimelineNode during the second iteration
86
- * `"0.2"` is the ID of the first top-level TimelineNode during the third iteration, and so on...
87
-
88
- If TimelineNodes are nested in other TimelineNodes, then the hierarchical structure is shown with `"."`:
89
-
90
- * `"0.0-1.0"` is the ID of the second TimelineNode on the timeline of the first top-level TimelineNode.
91
- * `"0.0-2.0"` is the ID of the third TimelineNode on the timeline of the first top-level TimelineNode, and so on...
92
-
93
- The rules about iterations apply throughout the hierarchical ID:
94
-
95
- * `"0.2-1.3"` is the ID of the second TimelineNode, executing for the fourth time, on the timeline of the first top-level TimelineNode, executing for the third time.
96
-
97
-
98
- ### Example
99
-
100
- ```javascript
101
- var id = jsPsych.currentTimelineNodeID();
102
-
103
- console.log('The current TimelineNode ID is '+id);
104
- ```
105
-
106
- ---
107
- ## jsPsych.currentTrial
108
-
109
- ```
110
- jsPsych.currentTrial()
111
- ```
112
-
113
- ### Parameters
114
-
115
- None.
116
-
117
- ### Return value
118
-
119
- Returns the object describing the current trial. The object will contain all of the parameters associated with the current trial.
120
-
121
- ### Description
122
-
123
- Get a description of the current trial
124
-
125
- ### Example
126
-
127
- ```javascript
128
-
129
- var trial = jsPsych.currentTrial();
130
-
131
- console.log('The current trial is using the '+trial.type+' plugin');
132
- ```
133
- ---
134
- ## jsPsych.endCurrentTimeline
135
-
136
- ```
137
- jsPsych.endCurrentTimeline
138
- ```
139
-
140
- ### Parameters
141
-
142
- None.
143
-
144
- ### Return value
145
-
146
- None.
147
-
148
- ### Description
149
-
150
- Ends the current timeline. If timelines are nested, then only the timeline that contains the current trial is ended.
151
-
152
- ### Example
153
-
154
- #### Loop indefinitely until a particular key is pressed
155
-
156
- ```javascript
157
-
158
- var images = [
159
- "img/1.gif", "img/2.gif", "img/3.gif", "img/4.gif",
160
- "img/5.gif", "img/6.gif", "img/7.gif", "img/8.gif",
161
- "img/9.gif", "img/10.gif"
162
- ];
163
-
164
- var trials = [];
165
- for (var i = 0; i < images.length; i++) {
166
- trials.push({
167
- stimulus: images[i]
168
- });
169
- }
170
-
171
- var block = {
172
- type: 'image-keyboard-response',
173
- choices: [89, 78], // Y or N
174
- prompt: '<p>Press Y to Continue. Press N to end this node of the experiment.</p>',
175
- on_finish: function(data) {
176
- if (data.key_press == 78) {
177
- jsPsych.endCurrentTimeline();
178
- }
179
- },
180
- timeline: trials
181
- }
182
-
183
- var after_block = {
184
- type: 'html-keyboard-response',
185
- stimulus: '<p>The next node</p>',
186
- is_html: true
187
- }
188
-
189
- jsPsych.init({
190
- timeline: [block, after_block],
191
- on_finish: function() {
192
- jsPsych.data.displayData();
193
- }
194
- });
195
-
196
- ```
197
-
198
- ---
199
- ## jsPsych.endExperiment
200
-
201
- ```
202
- jsPsych.endExperiment(end_message)
203
- ```
204
-
205
- ### Parameters
206
-
207
- Parameter | Type | Description
208
- --------- | ---- | -----------
209
- end_message | string | A message to display on the screen after the experiment is over.
210
-
211
- ### Return value
212
-
213
- None.
214
-
215
- ### Description
216
-
217
- Ends the experiment, skipping all remaining trials.
218
-
219
- ### Example
220
-
221
- #### End the experiment if a particular response is given
222
-
223
- ```javascript
224
- var trial = {
225
- type: 'image-keyboard-response',
226
- stimulus: 'image1.jpg',
227
- choices: [89,78], // Y or N
228
- prompt: '<p>Press Y to Continue. Press N to end the experiment</p>',
229
- on_finish: function(data){
230
- if(data.key_press == 78){
231
- jsPsych.endExperiment('The experiment was ended by pressing N.');
232
- }
233
- }
234
- }
235
- ```
236
-
237
- ---
238
- ## jsPsych.finishTrial
239
-
240
- ```
241
- jsPsych.finishTrial(data)
242
- ```
243
-
244
- ### Parameters
245
-
246
- Parameter | Type | Description
247
- ----------|------|------------
248
- data | object | The data to store for the trial.
249
-
250
-
251
- ### Return value
252
-
253
- Returns nothing.
254
-
255
- ### Description
256
-
257
- This method tells jsPsych that the current trial is over. It is used in all of the plugins to end the current trial. When the trial ends a few things happen:
258
-
259
- * The data is stored using `jsPsych.data.write()`
260
- * The on_finish callback function is executed for the trial
261
- * The on_trial_finish callback function is executed
262
- * The progress bar is updated if it is being displayed
263
- * The experiment ends if the trial is the last one (and the on_finish callback function is executed).
264
- * The next trial, if one exists, is started.
265
-
266
- ### Example
267
-
268
- ```javascript
269
-
270
- // this code would be in a plugin
271
- jsPsych.finishTrial({correct_response: true});
272
-
273
- ```
274
- ---
275
- ## jsPsych.getDisplayElement
276
-
277
- ```
278
- jsPsych.getDisplayElement()
279
- ```
280
-
281
- ### Parameters
282
-
283
- None.
284
-
285
- ### Return value
286
-
287
- Returns the HTML DOM element used for displaying the experiment.
288
-
289
- ### Description
290
-
291
- Get the DOM element that displays the experiment.
292
-
293
- ### Example
294
-
295
- ```javascript
296
- var el = jsPsych.getDisplayElement();
297
-
298
- // hide the jsPsych display
299
- el.style.visibility = 'hidden';
300
- ```
301
-
302
- ---
303
- ## jsPsych.getProgressBarCompleted
304
-
305
- ```
306
- jsPsych.getProgressBarCompleted()
307
- ```
308
-
309
- ### Parameters
310
-
311
- None.
312
-
313
- ### Return value
314
-
315
- Returns a value between 0 and 1 representing how full the progress bar currently is.
316
-
317
- ### Description
318
-
319
- Used to get the current value of the progress bar. Works for automated and manual control.
320
-
321
- ### Example
322
-
323
- ```javascript
324
- var progress_bar_amount = jsPsych.getProgressBarCompleted();
325
- ```
326
-
327
- ---
328
- ## jsPsych.init
329
-
330
- ```
331
- jsPsych.init(settings)
332
- ```
333
-
334
- ### Parameters
335
-
336
- Parameter | Type | Description
337
- ----------|------|------------
338
- settings | object | The settings object for initializing jsPsych. See table below.
339
-
340
- The settings object can contain several parameters. The only *required* parameter is `timeline`.
341
-
342
- Parameter | Type | Description
343
- --------- | ---- | -----------
344
- timeline | array | An array containing the objects that describe the experiment timeline. See [Creating an Experiment: The Timeline](../overview/timeline.md).
345
- display_element | string | The ID of an HTML element to display the experiment in. If left blank, jsPsych will use the `<body>` element to display content. All keyboard event listeners are bound to this element. In order for a keyboard event to be detected, this element must have focus (be the last thing that the subject clicked on).
346
- on_finish | function | Function to execute when the experiment ends.
347
- on_trial_start | function | Function to execute when a new trial begins.
348
- on_trial_finish | function | Function to execute when a trial ends.
349
- on_data_update | function | Function to execute every time data is stored using the `jsPsych.data.write` method. All plugins use this method to save data (via a call to `jsPsych.finishTrial`, so this function runs every time a plugin stores new data.
350
- on_interaction_data_update | function | Function to execute every time a new interaction event occurs. Interaction events include clicking on a different window (blur), returning to the experiment window (focus), entering full screen mode (fullscreenenter), and exiting full screen mode (fullscreenexit).
351
- on_close | function | Function to execute when the user leaves the page. Can be used, for example, to save data before the page is closed.
352
- exclusions | object | Specifies restrictions on the browser the subject can use to complete the experiment. See list of options below.
353
- show_progress_bar | boolean | If true, then [a progress bar](../overview/progress-bar.md) is shown at the top of the page.
354
- message_progress_bar | string | Message to display next to the progress bar. The default is 'Completion Progress'.
355
- auto_update_progress_bar | boolean | If true, then the progress bar at the top of the page will automatically update as every top-level timeline or trial is completed.
356
- show_preload_progress_bar | boolean | If true, then a progress bar is displayed while media files are automatically preloaded.
357
- preload_audio | array | An array of audio files to preload before starting the experiment.
358
- preload_images | array | An array of image files to preload before starting the experiment.
359
- preload_video | array | An array of video files to preload before starting the experiment.
360
- max_load_time | numeric | The maximum number of milliseconds to wait for content to preload. If the wait time is exceeded an error message is displayed and the experiment stops. The default value is 60 seconds.
361
- max_preload_attempts | numeric | The maximum number of attempts to preload each file in case of an error. The default value is 10. There is a small delay of 200ms between each attempt.
362
- use_webaudio | boolean | If false, then jsPsych will not attempt to use the WebAudio API for audio playback. Instead, HTML5 Audio objects will be used. The WebAudio API offers more precise control over the timing of audio events, and should be used when possible. The default value is true.
363
- default_iti | numeric | The default inter-trial interval in ms. The default value if none is specified is 0ms.
364
- experiment_width | numeric | The desired width of the jsPsych container in pixels. If left undefined, the width will be 100% of the display element. Usually this is the `<body>` element, and the width will be 100% of the screen size.
365
- minimum_valid_rt | numeric | The minimum valid response time for key presses during the experiment. Any key press response time that is less than this value will be treated as invalid and ignored. Note that this parameter only applies to _keyboard responses_, and not to other response types such as buttons and sliders. The default value is 0.
366
- override_safe_mode | boolean | Running a jsPsych experiment directly in a web browser (e.g., by double clicking on a local HTML file) will load the page using the `file://` protocol. Some features of jsPsych don't work with this protocol. By default, when jsPsych detects that it's running on a page loaded via the `file://` protocol, it runs in _safe mode_, which automatically disables features that don't work in this context. Specifically, the use of Web Audio is disabled (audio will be played using HTML5 audio instead, even if `use_webaudio` is `true`) and video preloading is disabled (both automatic preloading and manual preloading via `preload_video`). The `override_safe_mode` parameter defaults to `false`, but you can set it to `true` to force these features to operate under the `file://` protocol. In order for this to work, you will need to disable web security (CORS) features in your browser - this is safe to do if you know what you are doing. Note that this parameter has no effect when you are running the experiment on a web server, because the page will be loaded via the `http://` or `https://` protocol.
367
-
368
- Possible values for the exclusions parameter above.
369
-
370
- Parameter | Type | Description
371
- --------- | ---- | -----------
372
- min_width | numeric | The minimum width of the browser window. If the width is below this value, a message will be displayed to the subject asking them to maximize their browser window. The experiment will sit on this page until the browser window is large enough.
373
- min_height | numeric | Same as above, but with height.
374
- audio | boolean | Set to true to require support for the WebAudio API (used by plugins that play audio files).
375
-
376
- ### Return value
377
-
378
- Returns nothing.
379
-
380
- ### Description
381
-
382
- This method configures and starts the experiment.
383
-
384
- ### Example
385
-
386
- See any of the plugin examples in the [examples folder](https://github.com/jodeleeuw/jsPsych/tree/master/examples) in the GitHub repository.
387
-
388
- ---
389
- ## jsPsych.initSettings
390
-
391
- ```
392
- jsPsych.initSettings()
393
- ```
394
-
395
- ### Parameters
396
-
397
- None
398
-
399
- ### Return value
400
-
401
- Returns the settings object used to initialize the experiment.
402
-
403
- ### Description
404
-
405
- Gets the object containing the settings for the current experiment.
406
-
407
- ### Example
408
-
409
- ```javascript
410
- var settings = jsPsych.initSettings();
411
-
412
- // check the experiment structure
413
- console.log(JSON.stringify(settings.timeline));
414
- ```
415
-
416
- ---
417
- ## jsPsych.pauseExperiment
418
- ```
419
- jsPsych.pauseExperiment()
420
- ```
421
-
422
- ### Parameters
423
-
424
- None.
425
-
426
- ### Return value
427
-
428
- None.
429
-
430
- ### Description
431
-
432
- Pauses the experiment. The experiment will finish the current trial, but will not execute any additional trials until `jsPsych.resumeExperiment()` is called.
433
-
434
- ### Example
435
-
436
- ```javascript
437
- var trial = {
438
- type: 'html-keyboard-response',
439
- stimulus: 'Press p to take a 30 second break. Otherwise, press c to continue immediately.',
440
- choices: ['p','c'],
441
- on_finish: function(data){
442
- if(data.key_press == 80) { // 80 = p
443
- jsPsych.pauseExperiment();
444
- setTimeout(jsPsych.resumeExperiment, 30000);
445
- }
446
- }
447
- }
448
- ```
449
-
450
- ---
451
- ## jsPsych.progress
452
-
453
- ```
454
- jsPsych.progress()
455
- ```
456
-
457
- ### Parameters
458
-
459
- None.
460
-
461
- ### Return value
462
-
463
- Returns an object with the following properties:
464
-
465
- Property | Type | Description
466
- ----------|------|------------
467
- total_trials | numeric | Indicates the number of trials in the experiment. Note that this does not count possible loops or skipped trials due to conditional statements.
468
- current_trial_global | numeric | Returns the trial index of the current trial in a global scope. Every trial will increase this count by 1.
469
- percent_complete | numeric | Estimates the percent of the experiment that is complete. Works as expected for experiments without conditional or looping timelines. For complex timelines, the percent is an approximation.
470
-
471
-
472
- ### Description
473
-
474
- This method returns information about the length of the experiment and the subject's current location in the experiment timeline.
475
-
476
- ### Example
477
-
478
- ```javascript
479
-
480
- var progress = jsPsych.progress();
481
-
482
- alert('You have completed approximately '+progress.percent_complete+'% of the experiment');
483
-
484
- ```
485
- ---
486
- ## jsPsych.resumeExperiment
487
- ```
488
- jsPsych.resumeExperiment()
489
- ```
490
-
491
- ### Parameters
492
-
493
- None.
494
-
495
- ### Return value
496
-
497
- None.
498
-
499
- ### Description
500
-
501
- Resumes the experiment after a call to `jsPsych.pauseExperiment()`. If the post trial delay (`post_trial_gap`) has not yet been reached, then the experiment will not continue until the delay is finished. For example, if `post_trial_gap` was 10,000ms and `jsPsych.resumeExperiment()` was called 6,000ms after the previous trial finished, then the experiment would not continue for another 4,000ms.
502
-
503
- ### Example
504
-
505
- ```javascript
506
- var trial = {
507
- type: 'html-keyboard-response',
508
- stimulus: 'Press p to take a 30 second break. Otherwise, press c to continue immediately.',
509
- choices: ['p','c'],
510
- on_finish: function(data){
511
- if(data.key_press == 80) { // 80 = p
512
- jsPsych.pauseExperiment();
513
- setTimeout(jsPsych.resumeExperiment, 30000);
514
- }
515
- }
516
- }
517
- ```
518
-
519
- ---
520
- ## jsPsych.setProgressBar
521
-
522
- ```
523
- jsPsych.setProgressBar(value)
524
- ```
525
-
526
- ### Parameters
527
-
528
- Parameter | Type | Description
529
- ----------|------|------------
530
- value | numeric | Proprotion (between 0 and 1) to fill the progress bar.
531
-
532
-
533
- ### Return value
534
-
535
- None.
536
-
537
- ### Description
538
-
539
- Set the progress bar to a custom amount. Proportion must be between 0 and 1. Values larger than 1 are treated as 1.
540
-
541
- ### Example
542
-
543
- ```javascript
544
- jsPsych.setProgressBar(0.85);
545
- ```
546
-
547
- ---
548
- ## jsPsych.startTime
549
-
550
- ```
551
- jsPsych.startTime()
552
- ```
553
-
554
- ### Parameters
555
-
556
- None.
557
-
558
- ### Return value
559
-
560
- Returns a `Date` object indicating when the experiment began.
561
-
562
- ### Description
563
-
564
- Get the time that the experiment began.
565
-
566
- ### Example
567
-
568
- ```javascript
569
- var start_time = jsPsych.startTime();
570
- ```
571
-
572
- ---
573
- ## jsPsych.timelineVariable
574
-
575
- ```
576
- jsPsych.timelineVariable(variable, call_immediate)
577
- ```
578
-
579
- ### Parameters
580
-
581
- Parameter | Type | Description
582
- ----------|------|------------
583
- variable | string | Name of the timeline variable
584
- call_immediate | bool | Typically this parameter is `false`, or simply ommitted. When `false`, the return value is a function that returns the timeline variable. This makes `jsPsych.timelineVariable` suitable for dynamic parameters by default. If `true` the function returns the value of the timeline variable immediately.
585
-
586
- ### Return value
587
-
588
- Depends on the value of `call_immediate` parameter. See description above.
589
-
590
- ### Description
591
-
592
- [Timeline variables](/overview/timeline/#timeline-variables) are a powerful technique for generating experiments with repetitive procedures but different parameter values. This function fetches the current value of a particular timeline variable. It must be used in conjunction with a timeline that has timeline variables. See the [timeline variable section](/overview/timeline/#timeline-variables) for details.
593
-
594
- ### Examples
595
-
596
- #### Standard use as a parameter for a trial
597
- ```javascript
598
- var trial = {
599
- type: 'image-keyboard-response',
600
- stimulus: jsPsych.timelineVariable('image')
601
- }
602
-
603
- var procedure = {
604
- timeline: [trial],
605
- timeline_variables: [
606
- {image: 'face1.png'},
607
- {image: 'face2.png'},
608
- {image: 'face3.png'},
609
- {image: 'face4.png'}
610
- ]
611
- }
612
- ```
613
-
614
- #### Invoking immediately in a function
615
- ```javascript
616
- var trial = {
617
- type: 'html-keyboard-response',
618
- stimulus: function(){
619
- return "<img style='width:100px; height:100px;' src='"+jsPsych.timelineVariable('image', true)+"'></img>";
620
- }
621
- }
622
-
623
- var procedure = {
624
- timeline: [trial],
625
- timeline_variables: [
626
- {image: 'face1.png'},
627
- {image: 'face2.png'},
628
- {image: 'face3.png'},
629
- {image: 'face4.png'}
630
- ]
631
- }
632
- ```
633
-
634
-
635
- ---
636
- ## jsPsych.totalTime
637
-
638
- ```
639
- jsPsych.totalTime()
640
- ```
641
-
642
- ### Parameters
643
-
644
- None.
645
-
646
- ### Return value
647
-
648
- Returns a numeric value indicating the number of milliseconds since `jsPsych.init` was called.
649
-
650
- ### Description
651
-
652
- Gets the total time the subject has been in the experiment.
653
-
654
- ### Example
655
-
656
- ```javascript
657
-
658
- var time = jsPsych.totalTime();
659
- console.log(time);
660
-
661
- ```