1
0
mirror of https://github.com/psychopy/psychojs.git synced 2025-05-12 16:48:10 +00:00

visual/Form: add Form.Type.SLIDER support

This commit is contained in:
Sotiri Bakagiannis 2021-06-11 20:38:37 +01:00
parent 2776ad417f
commit 19c062c77c

View File

@ -346,7 +346,7 @@ export class Form extends util.mix(VisualStim).with(ColorMixin)
const responseStim = this._visual.responseStims[i];
if (responseStim)
{
if (item.type === Form.Types.CHOICE || item.type === Form.Types.RATING)
if (item.type === Form.Types.CHOICE || item.type === Form.Types.RATING || item.type === Form.Types.SLIDER)
{
item.response = responseStim.getRating();
item.rt = responseStim.getRT();
@ -560,7 +560,7 @@ export class Form extends util.mix(VisualStim).with(ColorMixin)
delete item.questionWidth;
// for items of type 'rating, the ticks are in 'options' instead of in 'ticks':
if (item.type === 'rating')
if (item.type === 'rating' || item.type === 'slider')
{
item.ticks = item.options;
item.options = undefined;
@ -632,7 +632,7 @@ export class Form extends util.mix(VisualStim).with(ColorMixin)
}
// turn the ticks and tickLabels into arrays, where applicable:
else if (item.type === Form.Types.RATING)
else if (item.type === Form.Types.RATING || item.type === Form.Types.SLIDER)
{
item.ticks = item.ticks.split(',').map( (_,t) => parseInt(t) );
item.tickLabels = (item.tickLabels.length > 0) ? item.tickLabels.split(',') : [];
@ -835,7 +835,7 @@ export class Form extends util.mix(VisualStim).with(ColorMixin)
const responseWidth = rowWidth * item.responseWidth;
// CHOICE and RATING
if (item.type === Form.Types.CHOICE || item.type === Form.Types.RATING)
if (item.type === Form.Types.CHOICE || item.type === Form.Types.RATING || item.type === Form.Types.SLIDER)
{
let sliderSize;
if (item.layout === Form.Layout.HORIZONTAL)
@ -851,13 +851,20 @@ export class Form extends util.mix(VisualStim).with(ColorMixin)
flip = true;
}
let style, labels, ticks;
let style, labels, ticks, granularity;
if (item.type === Form.Types.CHOICE)
{
style = [Slider.Style.RATING, Slider.Style.RADIO];
labels = item.options;
ticks = []; // categorical
}
else if (item.type === Form.Types.SLIDER)
{
style = [Slider.Style.SLIDER];
labels = item.tickLabels;
ticks = item.ticks;
granularity = 0;
}
else
{
style = [Slider.Style.RATING];