What started with the implementation of a responsive design for alfred ended with an overhaul of the framework. The basic contents:
New responsive design, including full rewrite of element.py with some new elements
Easily customizable via CSS (for whole experiments) and page attributes (for individual pages)
Consistent CSS targets for all elements for fine-tuned individual styling
Removed the "Element" suffix from element names for shorter, less redundant class names
New object-oriented syntax for experiment creation based on class decorators
The former Experiment class becomes ExperimentSession
A new Experiment class is filled in the script.py
Pages, Sections, and InputElements are all now uniquely identified by their 'name' attribute
Lots of new convenience methods and attributes in the ExperimentSessionclass
The Experiment class, Sections, Pages, Elements, and sone utility functions are all directly exposed in __init__.py now, leading to a cleaner API (only one import alfred3 as al statement needed)
Refactoring of the movement system, including
orderly saving of all data regarding participant's movements through an experiment
full rewrite of section.py with enhanced control over particpant movements
Re-organization of root section, leading to removal of page_controller.py
re-implementation of jumping between pages within an experiment
Possibility to define custom movement patterns for individual pages via hooks
Refactoring of alfred's data handling, including
turning the previously nested structure of the .json data files into a flat structure
saving movement history and codebook alongside experiment data in a single .json file per experiment
automatic export of experiment data, movement history, and codebook to .csv at the end of each local experiment session
What started with the implementation of a responsive design for alfred ended with an overhaul of the framework. The basic contents:
Experiment
class is filled in the script.pyExperimentSession
class__init__.py
now, leading to a cleaner API (only oneimport alfred3 as al
statement needed)page_controller.py