diff --git a/examples/jspsych-canvas-slider-response.html b/examples/jspsych-canvas-slider-response.html deleted file mode 100644 index 836aecb5..00000000 --- a/examples/jspsych-canvas-slider-response.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - My experiment - - - - - - - - - - diff --git a/plugins/jspsych-canvas-slider-response.js b/plugins/jspsych-canvas-slider-response.js deleted file mode 100644 index 439b566e..00000000 --- a/plugins/jspsych-canvas-slider-response.js +++ /dev/null @@ -1,218 +0,0 @@ -/** - * jspsych-canvas-slider-response - * a jspsych plugin for free response to questions presented using canvas - * drawing tools - * - * the drawing is done by a function which is supplied as the stimulus. - * this function is passed the id of the canvas on which it will draw. - * - * the canvas can either be supplied as customised HTML, or a default one - * can be used. If a customised on is supplied, its ID must be specified - * in a separate variable. - * - * Matt Jaquiery - https://github.com/mjaquiery/ - Feb 2018 - * - * documentation: docs.jspsych.org - * - */ - - -jsPsych.plugins['canvas-slider-response'] = (function() { - - var plugin = {}; - - plugin.info = { - name: 'canvas-slider-response', - description: '', - parameters: { - stimulus: { - type: jsPsych.plugins.parameterType.FUNCTION, - pretty_name: 'Stimulus', - default: undefined, - description: 'The function to be called with the canvas ID. '+ - 'This should handle drawing operations.' - }, - canvasHTML: { - type: jsPsych.plugins.parameterType.HTML_STRING, - pretty_name: 'Canvas HTML', - default: null, - description: 'HTML for drawing the canvas. '+ - 'Overrides canvas width and height settings.' - }, - canvasId: { - type: jsPsych.plugins.parameterType.STRING, - pretty_name: 'Canvas ID', - default: false, - description: 'ID for the canvas. Only necessary when '+ - 'supplying canvasHTML. This is required so that the ID '+ - 'can be passed to the stimulus function.' - }, - canvasWidth: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Canvas width', - default: 300, - description: 'Sets the width of the canvas.' - }, - canvasHeight: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Canvas height', - default: 150, - description: 'Sets the height of the canvas.' - }, - min: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Min slider', - default: 0, - description: 'Sets the minimum value of the slider.' - }, - max: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Max slider', - default: 100, - description: 'Sets the maximum value of the slider', - }, - start: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Slider starting value', - default: 50, - description: 'Sets the starting value of the slider', - }, - step: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Step', - default: 1, - description: 'Sets the step of the slider' - }, - labels: { - type: jsPsych.plugins.parameterType.KEYCODE, - pretty_name:'Labels', - default: [], - array: true, - description: 'Labels of the slider.', - }, - button_label: { - type: jsPsych.plugins.parameterType.STRING, - pretty_name: 'Button label', - default: 'Continue', - array: false, - description: 'Label of the button to advance.' - }, - prompt: { - type: jsPsych.plugins.parameterType.STRING, - pretty_name: 'Prompt', - default: null, - description: 'Any content here will be displayed below the slider.' - }, - stimulus_duration: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Stimulus duration', - default: null, - description: 'How long to hide the stimulus.' - }, - trial_duration: { - type: jsPsych.plugins.parameterType.INT, - pretty_name: 'Trial duration', - default: null, - description: 'How long to show the trial.' - }, - response_ends_trial: { - type: jsPsych.plugins.parameterType.BOOL, - pretty_name: 'Response ends trial', - default: true, - description: 'If true, trial will end when user makes a response.' - }, - } - } - - plugin.trial = function(display_element, trial) { - let canvas = ''; - // Use the supplied HTML for constructing the canvas, if supplied - if(trial.canvasId !== false) { - canvas = trial.canvasHTML; - } else { - // Otherwise create a new default canvas - trial.canvasId = '#jspsych-canvas-slider-response-canvas'; - canvas = ''; - } - var html = '
'; - html += '
'+canvas+'
'; - html += '
'; - html += ''; - html += '
' - for(var j=0; j < trial.labels.length; j++){ - var width = 100/(trial.labels.length-1); - var left_offset = (j * (100 /(trial.labels.length - 1))) - (width/2); - html += '
'; - html += ''+trial.labels[j]+''; - html += '
' - } - html += '
'; - html += '
'; - html += '
'; - - if (trial.prompt !== null){ - html += trial.prompt; - } - - // add submit button - html += ''; - - display_element.innerHTML = html; - - // Execute the supplied drawing function - trial.stimulus(trial.canvasId); - - var response = { - rt: null, - response: null - }; - - display_element.querySelector('#jspsych-canvas-slider-response-next').addEventListener('click', function() { - // measure response time - var endTime = (new Date()).getTime(); - response.rt = endTime - startTime; - response.response = display_element.querySelector('#jspsych-canvas-slider-response-response').value; - - if(trial.response_ends_trial){ - end_trial(); - } else { - display_element.querySelector('#jspsych-canvas-slider-response-next').disabled = true; - } - - }); - - function end_trial(){ - - jsPsych.pluginAPI.clearAllTimeouts(); - - // save data - var trialdata = { - "rt": response.rt, - "response": response.response - }; - - display_element.innerHTML = ''; - - // next trial - jsPsych.finishTrial(trialdata); - } - - if (trial.stimulus_duration !== null) { - jsPsych.pluginAPI.setTimeout(function() { - display_element.querySelector('#jspsych-canvas-slider-response-stimulus').style.visibility = 'hidden'; - }, trial.stimulus_duration); - } - - // end trial if trial_duration is set - if (trial.trial_duration !== null) { - jsPsych.pluginAPI.setTimeout(function() { - end_trial(); - }, trial.trial_duration); - } - - var startTime = (new Date()).getTime(); - }; - - return plugin; -})();