custom javascript elements

Is there any plan to support custom javascript elements like mechanical turk? We have a complex hierarchy of labels we want to use that requires a 2-step labelling procedure. We have done this using conditional js forms on mturk but are looking for something we can deploy internally like prodigy.

Prodigy does support Javascript, although it’s possible it’ll be more limited than you need.

Here’s an example I hacked up for my own purposes: https://gist.github.com/honnibal/5c54ad3ddbb0504c0b25319b53d4c681 . I wanted to use Prodigy as a spaced repetition system to help me learn German. This recipe uses Javascript to show the correct answer after I make my guess.

To add to Matt’s comment – in your case, your html_template and javascript could look something like this:

<select class="dropdown">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
</select>
<!-- other stuff here, e.g. the content, another dropdown etc. -->
<!-- properties in your task dict are available as Mustache variables -->
{{text}}
document.addEventListener('prodigymount', event => {
    const dropdown = document.querySelector('.dropdown')
    dropdown.addEventListener('change', event => {
        // Update the current task with a value, or modify some other elements etc.
        window.prodigy.update({ selectedOption: event.target.value })
    })
})

This is just a simple example – but you could, for instance, change the options that are displayed based on the user’s selection from the first dropdown. And once the final label is selected, call prodigy.update to update the current task object with the data however you need it.