PennController 1.9 is now available!
Newly created experiments on the PCIbex Farm come with it, and you can sync your existing projects with the master branch of https://github.com/PennController/Sync to update your version of PennController.
Major changes from 1.8:
- Most elements are now displayed as flex rather than (inline-)block by default
- The commands .left, .center and .right no longer align the text itself, but the whole element instead
- The Canvas command color now changes the background color of the Canvas element
- The fullscreen command no longer makes Safari crash
- The command audio.stop now releases the command audio.wait
- The commands InitiateRecorder and UploadRecordings are now usable inside trials, just like SendResults
- The EyeTracker element has been reworked and should now work out of the box, no longer requiring to upload PennElement_eyetracker.js to your projects
- The Selector element now reports the order of its element in the “Comments” column of its lines in the results file (useful after a call to shuffle)
- The command print now accepts an element as its single argument and will append to it the current element
- There is now a self keyword that can be used inside callback and test commands
- The Timer element has now been enriched with the commands pause, resume and set
- Added a new standard command .scaling that will zoom in/out an element to have it fit the argument(s), which can be: a ratio (with 1 for 100%), a unit dimension (eg. “10vw”) or the page/screen (pass "page")
- The Scale element can now present checkbox options thanks to the new command .checkbox (use as radio)
- The MouseTracker element can now detect clicks: pass "click" as the first argument of callback to run commands on clicks, and pass "click" to log to report clicks (with the cursor coordinates) in the results file
- Added the MouseTracker test command over which succeeds when the mouse is over the element passed as an argument
- Added the EyeTracker test command score which succeeds when the tracker was calibrated with a score at least as high as the one passed as an argument (you can also pass a function that takes the score as its argument)
- It is now possible to send your results in multiple steps during your experiment (just use SendResults multiple times): your results file will treat each request as if it were coming from a new participant, but it will only contain results for the trials that were not saved so far