├── .gitignore ├── ui-changes └── src │ └── config.js ├── README.md ├── .pre-commit-config.yaml ├── activities ├── Activity1 │ ├── items │ │ ├── static_item │ │ └── document_upload_item │ └── activity1_schema ├── Activity4 │ ├── items │ │ └── sign_item │ └── Activity4_schema ├── Activity2 │ ├── items │ │ ├── date_item │ │ ├── year_item │ │ ├── time_range_item │ │ ├── country_item │ │ ├── state_item │ │ └── language_item │ └── Activity2_schema ├── Activity3 │ ├── items │ │ ├── text_item │ │ ├── email_item │ │ ├── float_item │ │ ├── multitext_item │ │ ├── textarea_item │ │ ├── integer_item │ │ ├── participant_id_item │ │ └── float_with_units_item │ └── Activity3_schema ├── voiceActivity │ ├── items │ │ ├── audio_passage_record_item │ │ ├── audio_number_record_item │ │ ├── audio_check_item │ │ └── audio_image_record_item │ └── voiceActivity_schema ├── responsesReferenceActivity │ ├── activities │ │ ├── conditionalRefereeActivity_schema │ │ └── conditionalRefererActivity_schema │ └── responsesReferenceActivity_schema └── selectActivity │ ├── items │ ├── radio_item │ ├── radio_item_multiple_choice │ ├── select_item │ ├── slider_item_without_max │ ├── select_item_multiple_choice │ └── slider_item_with_max │ └── selectActivity_schema ├── DemoProtocol ├── README.md ├── DemoProtocol_schema ├── create_your_story.svg ├── mit_voice_pilot_applet_image.svg └── about_the_study.svg └── .github └── workflows └── build_deploy.yml /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea/ 3 | protocols/.DS_Store 4 | -------------------------------------------------------------------------------- /ui-changes/src/config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /* eslint-disable */ 3 | githubSrc: 'https://raw.githubusercontent.com/ReproNim/demo-protocol/main/DemoProtocol/DemoProtocol_schema', 4 | banner: 'This is a demonstration protocol for ReproSchema.', 5 | startButton: 'Join', 6 | assetsPublicPath: '/demo-protocol/', 7 | backendServer: null 8 | }; 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # This repository contains a demonstration protocol for ReproSchema 2 | 3 | An example protocol which serves as default protocol in [reproschema-ui](https://github.com/ReproNim/reproschema-ui). 4 | 5 | You can use this is an example to create your own protocols. This deploys the protocol using GitHub actions and serves 6 | the resulting UI using GitHub pages. 7 | 8 | The images in the README and the consent process are reused from the Sage Bionetworks MPower study. 9 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | # See https://pre-commit.com for more information 2 | # See https://pre-commit.com/hooks.html for more hooks 3 | repos: 4 | - repo: https://github.com/pre-commit/pre-commit-hooks 5 | rev: v2.0.0 6 | hooks: 7 | - id: trailing-whitespace 8 | - id: end-of-file-fixer 9 | - id: check-yaml 10 | - id: check-json 11 | - id: check-added-large-files 12 | - repo: https://github.com/psf/black 13 | rev: 19.3b0 14 | hooks: 15 | - id: black -------------------------------------------------------------------------------- /activities/Activity1/items/static_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "static_item", 5 | "prefLabel": "Static text", 6 | "description": "Display a static text", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": { 10 | "en": "You are starting today's activity" 11 | }, 12 | "ui": { 13 | "inputType": "static", 14 | "readonlyValue": true 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity4/items/sign_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "sign_item", 5 | "prefLabel": "sign item", 6 | "description": "This is a sign item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can sign.", 10 | "ui": { 11 | "inputType": "sign" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity2/items/date_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "date_item", 5 | "prefLabel": "date item", 6 | "description": "This is a date item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input a date.", 10 | "ui": { 11 | "inputType": "date" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:date" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity2/items/year_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "year_item", 5 | "prefLabel": "year item", 6 | "description": "This is a year item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input a year.", 10 | "ui": { 11 | "inputType": "year" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:date" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity3/items/text_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "text_item", 5 | "prefLabel": "text item", 6 | "description": "This is a text item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input some text.", 10 | "ui": { 11 | "inputType": "text" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity3/items/email_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "email_item", 5 | "prefLabel": "email item", 6 | "description": "This is an email item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input an email address.", 10 | "ui": { 11 | "inputType": "email" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity3/items/float_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "float_item", 5 | "prefLabel": "float item", 6 | "description": "This is a float item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input a float like 3.1415926...", 10 | "ui": { 11 | "inputType": "float" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:float" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity2/items/time_range_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "time_range_item", 5 | "prefLabel": "time range item", 6 | "description": "This is a time range item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input a time range.", 10 | "ui": { 11 | "inputType": "timeRange" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:datetime" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity3/items/multitext_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "multitext_item", 5 | "prefLabel": "multitext item", 6 | "description": "This is a multitext item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input several text field.", 10 | "ui": { 11 | "inputType": "multitext" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity3/items/textarea_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "textarea_item", 5 | "prefLabel": "text area item", 6 | "description": "This is a text area item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input large amounts of text.", 10 | "ui": { 11 | "inputType": "textarea" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity3/items/integer_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "integer_item", 5 | "prefLabel": "integer item", 6 | "description": "This is a integer item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input a integer like 3, -4 or 321...", 10 | "ui": { 11 | "inputType": "number" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:integer" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity3/items/participant_id_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "participant_id_item", 5 | "prefLabel": "participant id item", 6 | "description": "This is a participant id item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input the participant id number.", 10 | "ui": { 11 | "inputType": "pid" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity1/items/document_upload_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "document_upload_item", 5 | "prefLabel": "document upload item", 6 | "description": "This is a document upload item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can upload a document.", 10 | "ui": { 11 | "inputType": "documentUpload" 12 | }, 13 | "responseOptions": { 14 | "valueType": "DigitalDocument" 15 | } 16 | } -------------------------------------------------------------------------------- /activities/Activity2/items/country_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "country_item", 5 | "prefLabel": "country item", 6 | "description": "This is a country item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can select a country.", 10 | "ui": { 11 | "inputType": "selectCountry" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string", 15 | "choices": "https://raw.githubusercontent.com/samayo/country-json/master/src/country-by-name.json" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /activities/Activity2/items/state_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "state_item", 5 | "prefLabel": "state item", 6 | "description": "This is a state item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can select a USA state.", 10 | "ui": { 11 | "inputType": "selectState" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string", 15 | "choices": "https://gist.githubusercontent.com/mshafrir/2646763/raw/8b0dbb93521f5d6889502305335104218454c2bf/states_hash.json" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /activities/voiceActivity/items/audio_passage_record_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "audio_passage_record_item", 5 | "prefLabel": "audio passage record item", 6 | "description": "This is a audio passage record item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This will record while the participant reads a passage from a story.", 10 | "ui": { 11 | "inputType": "audioPassageRecord" 12 | }, 13 | "responseOptions": { 14 | "valueType": "schema:AudioObject", 15 | "minValue": 0, 16 | "maxValue": 60000 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /activities/voiceActivity/items/audio_number_record_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "audio_number_record_item", 5 | "prefLabel": "audio numbers record item", 6 | "description": "This is a audio number record item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This will record while the participant as he or she says these numbers out loud.", 10 | "ui": { 11 | "inputType": "audioRecordNumberTask" 12 | }, 13 | "responseOptions": { 14 | "valueType": "schema:AudioObject", 15 | "minValue": 0, 16 | "maxValue": 60000 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /activities/Activity2/items/language_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "language_item", 5 | "prefLabel": "language item", 6 | "description": "This is a language item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can select several language.", 10 | "ui": { 11 | "inputType": "selectLanguage" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:string", 15 | "multipleChoice": true, 16 | "choices": "https://raw.githubusercontent.com/ReproNim/reproschema-library/main/resources/languages.json" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /activities/voiceActivity/items/audio_check_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "audio_check_item", 5 | "prefLabel": "audio check item", 6 | "description": "This is a audio check item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an audio check item. Click on the start button and say something audibly. Click Play button to hear your recording. If you think there is too much background noise, please go somewhere quieter and Redo, else click Continue.", 10 | "ui": { 11 | "inputType": "audioCheck" 12 | }, 13 | "responseOptions": { 14 | "valueType": "schema:AudioObject", 15 | "minValue": 0, 16 | "maxValue": 4000 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /activities/voiceActivity/items/audio_image_record_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "audio_image_record_item", 5 | "prefLabel": "audio image record item", 6 | "description": "This is a audio image record item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "image": "https://picsum.photos/500/400", 10 | "question": "This is an audio image record item where the participant describes verbally an image shown below for a minute", 11 | "ui": { 12 | "inputType": "audioImageRecord" 13 | }, 14 | "responseOptions": { 15 | "valueType": "schema:AudioObject", 16 | "minValue": 0, 17 | "maxValue": 60000, 18 | "multipleChoice": false 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /activities/Activity3/items/float_with_units_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "float_with_units_item", 5 | "prefLabel": "float unit item", 6 | "description": "This is a float item with a unit.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an item where the user can input a float like 3.1415926... and a unit", 10 | "ui": { 11 | "inputType": "float" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:float", 15 | "unitOptions": [ 16 | { 17 | "prefLabel": {"en": "Celsius"}, 18 | "value": "C" 19 | }, 20 | { 21 | "prefLabel": {"en": "Fahrenheit"}, 22 | "value": "F" 23 | } 24 | ] 25 | } 26 | } -------------------------------------------------------------------------------- /activities/responsesReferenceActivity/activities/conditionalRefereeActivity_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "conditionalRefereeActivity_schema", 5 | "prefLabel": "Single Radio Button Activity", 6 | "description": "Contains a single radio button item.", 7 | "preamble": "Respond to this activity so that the conditional referer activity has a non-null value to reference.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | {"isAbout": "../../selectActivity/items/radio_item", 13 | "variableName": "radio_item", 14 | "isVis": true 15 | } 16 | ], 17 | "order": [ 18 | "../../selectActivity/items/radio_item" 19 | ], 20 | "shuffle": false, 21 | "allow": [ 22 | "reproschema:AutoAdvance", 23 | "reproschema:AllowExport" 24 | ] 25 | } 26 | } -------------------------------------------------------------------------------- /activities/Activity4/Activity4_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "Activity4_schema", 5 | "prefLabel": "demo of all input types and widgets", 6 | "description": "dummy activity to show all inputs types and widgets", 7 | "preamble": "This activity will show you all the different input type and widgets currently available.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | 13 | {"isAbout": "items/sign_item", 14 | "variableName": "sign_item", 15 | "isVis": true, 16 | "allow": [ 17 | "reproschema:Skipped" 18 | ] 19 | } 20 | ], 21 | "order": [ 22 | "items/sign_item" 23 | ], 24 | "shuffle": false, 25 | "allow": [ 26 | "reproschema:AutoAdvance", 27 | "reproschema:AllowExport" 28 | ] 29 | } 30 | } -------------------------------------------------------------------------------- /activities/selectActivity/items/radio_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "radio_item", 5 | "prefLabel": "radio item", 6 | "description": "This is a radio item.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an example of a radio item with several possible answers to choose from (only one answer allowed).", 10 | "ui": { 11 | "inputType": "radio" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:integer", 15 | "minValue": 0, 16 | "maxValue": 2, 17 | "multipleChoice": false, 18 | "choices": [ 19 | { 20 | "name": "Response option 1", 21 | "value": 0 22 | }, 23 | { 24 | "name": "Response option 2", 25 | "value": 1 26 | }, 27 | { 28 | "name": "Response option 3", 29 | "value": 2 30 | } 31 | ] 32 | } 33 | } -------------------------------------------------------------------------------- /activities/selectActivity/items/radio_item_multiple_choice: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "radio_item_multiple_choice", 5 | "prefLabel": "radio item with multiple choice", 6 | "description": "This is a radio item with multiple choice.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an example of a radio item with several possible answers to choose from (several answers allowed).", 10 | "ui": { 11 | "inputType": "radio" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:integer", 15 | "minValue": 0, 16 | "maxValue": 2, 17 | "multipleChoice": true, 18 | "choices": [ 19 | { 20 | "name": "Response option 1", 21 | "value": 0 22 | }, 23 | { 24 | "name": "Response option 2", 25 | "value": 1 26 | }, 27 | { 28 | "name": "Response option 3", 29 | "value": 2 30 | } 31 | ] 32 | } 33 | } -------------------------------------------------------------------------------- /activities/Activity1/activity1_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": [ "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | { 4 | "rl": "https://raw.githubusercontent.com/ReproNim/reproschema-library/main/activities/" 5 | } 6 | ], 7 | "@type": "reproschema:Activity", 8 | "@id": "activity1_schema", 9 | "prefLabel": "Screening", 10 | "description": "example of an activity", 11 | "schemaVersion": "1.0.0", 12 | "version": "0.0.1", 13 | "ui": { 14 | "addProperties": [ 15 | {"isAbout": "items/static_item", 16 | "variableName": "static_item", 17 | "isVis": true 18 | }, 19 | {"isAbout": "items/document_upload_item", 20 | "variableName": "document_upload_item", 21 | "isVis": true, 22 | "allow": [ 23 | "reproschema:Skipped" 24 | ] 25 | } 26 | ], 27 | "order": [ 28 | "items/static_item", 29 | "items/document_upload_item" 30 | ], 31 | "shuffle": false, 32 | "allow": [ 33 | "reproschema:AllowExport" 34 | ] 35 | } 36 | } -------------------------------------------------------------------------------- /activities/selectActivity/items/select_item: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "select_item", 5 | "prefLabel": "select item", 6 | "description": "This is a select item that works with a drop down menu.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an example of a select item with several possible answers to choose from a dropdown menu (only one answer allowed).", 10 | "ui": { 11 | "inputType": "select" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:integer", 15 | "minValue": 0, 16 | "maxValue": 2, 17 | "multipleChoice": false, 18 | "choices": [ 19 | { 20 | "name": "Response option 1", 21 | "value": 0 22 | }, 23 | { 24 | "name": "Response option 2", 25 | "value": 1 26 | }, 27 | { 28 | "name": "Response option 3", 29 | "value": 2 30 | }, 31 | { 32 | "name": "Other", 33 | "value": "Other" 34 | } 35 | ] 36 | } 37 | } -------------------------------------------------------------------------------- /activities/selectActivity/items/slider_item_without_max: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "slider_item_without_max", 5 | "prefLabel": "slider item without max", 6 | "description": "This is a slider item without max value.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an example of a slider item without max value.", 10 | "ui": { 11 | "inputType": "slider" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:integer", 15 | "multipleChoice": false, 16 | "choices": [ 17 | { 18 | "name": "Response option 1", 19 | "value": 0 20 | }, 21 | { 22 | "name": "Response option 2", 23 | "value": 1 24 | }, 25 | { 26 | "name": "Response option 3", 27 | "value": 2 28 | }, 29 | { 30 | "name": "Response option 4", 31 | "value": 3 32 | }, 33 | { 34 | "name": "Response option 5", 35 | "value": 4 36 | } 37 | ] 38 | } 39 | } -------------------------------------------------------------------------------- /activities/selectActivity/items/select_item_multiple_choice: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "select_item_multiple_choice", 5 | "prefLabel": "select item multiple choice", 6 | "description": "This is a select item that works with a drop down menu.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an example of a select item with several possible answers to choose from a dropdown menu (several answers allowed).", 10 | "ui": { 11 | "inputType": "select" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:integer", 15 | "minValue": 0, 16 | "maxValue": 2, 17 | "multipleChoice": true, 18 | "choices": [ 19 | { 20 | "name": "Response option 1", 21 | "value": 0 22 | }, 23 | { 24 | "name": "Response option 2", 25 | "value": 1 26 | }, 27 | { 28 | "name": "Response option 3", 29 | "value": 2 30 | }, 31 | { 32 | "name": "Other", 33 | "value": "Other" 34 | } 35 | ] 36 | } 37 | } -------------------------------------------------------------------------------- /activities/selectActivity/items/slider_item_with_max: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Field", 4 | "@id": "slider_item_with_max", 5 | "prefLabel": "slider item with max value", 6 | "description": "This is a slider item with max value.", 7 | "schemaVersion": "1.0.0", 8 | "version": "0.0.1", 9 | "question": "This is an example of a slider item with max value.", 10 | "ui": { 11 | "inputType": "slider" 12 | }, 13 | "responseOptions": { 14 | "valueType": "xsd:integer", 15 | "minValue": 0, 16 | "maxValue": 100, 17 | "multipleChoice": false, 18 | "choices": [ 19 | { 20 | "name": "Response option 1", 21 | "value": 0 22 | }, 23 | { 24 | "name": "Response option 2", 25 | "value": 25 26 | }, 27 | { 28 | "name": "Response option 3", 29 | "value": 50 30 | }, 31 | { 32 | "name": "Response option 4", 33 | "value": 75 34 | }, 35 | { 36 | "name": "Response option 5", 37 | "value": 100 38 | } 39 | ] 40 | } 41 | } -------------------------------------------------------------------------------- /activities/responsesReferenceActivity/responsesReferenceActivity_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "responsesReferenceActivity_schema", 5 | "prefLabel": "Global Responses Reference Activity", 6 | "description": "Demonstrates conditional visibility by referring to the global responses variable that stores all responses.", 7 | "preamble": "Demonstrates conditional visibility by referring to the global responses variable that stores all responses. After answering the first question, the second question will be determined by referring to your first answer in the global responses object.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | {"isAbout": "activities/conditionalRefereeActivity_schema", 13 | "variableName": "referee", 14 | "isVis": true 15 | }, 16 | {"isAbout": "activities/conditionalRefererActivity_schema", 17 | "variableName": "referer", 18 | "isVis": true 19 | } 20 | ], 21 | "order": [ 22 | "activities/conditionalRefereeActivity_schema", 23 | "activities/conditionalRefererActivity_schema" 24 | ], 25 | "shuffle": false, 26 | "allow": [ 27 | "reproschema:AutoAdvance", 28 | "reproschema:AllowExport" 29 | ] 30 | } 31 | } -------------------------------------------------------------------------------- /activities/responsesReferenceActivity/activities/conditionalRefererActivity_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "conditionalRefererActivity_schema", 5 | "prefLabel": "Sibling Reference Activity", 6 | "description": "Demos conditional visibility by referring to the global responses variable that stores all responses.", 7 | "preamble": "If you selected Response option 1 in the first question, you should see an email question. Otherwise, you should see a text entry question. If you see both or neither, something is broken.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | {"isAbout": "../../Activity3/items/email_item", 13 | "variableName": "email_item", 14 | "isVis": "[0].includes(referee.radio_item)", 15 | "allow": [ 16 | "reproschema:Skipped" 17 | ] 18 | }, 19 | {"isAbout": "../../Activity3/items/text_item", 20 | "variableName": "text_item", 21 | "isVis": "[1, 2].includes(referee.radio_item)", 22 | "allow": [ 23 | "reproschema:Skipped" 24 | ] 25 | } 26 | ], 27 | "order": [ 28 | "../../Activity3/items/email_item", 29 | "../../Activity3/items/text_item" 30 | ], 31 | "shuffle": false, 32 | "allow": [ 33 | "reproschema:AutoAdvance", 34 | "reproschema:AllowExport" 35 | ] 36 | } 37 | } -------------------------------------------------------------------------------- /activities/voiceActivity/voiceActivity_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "voiceActivity_schema", 5 | "prefLabel": "demo of all input types and widgets", 6 | "description": "dummy activity to show all inputs types and widgets", 7 | "preamble": "This activity will show you all the different input type and widgets currently available.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | {"isAbout": "items/audio_check_item", 13 | "variableName": "audio_check_item", 14 | "isVis": true, 15 | "allow": [ 16 | "reproschema:Skipped" 17 | ] 18 | }, 19 | {"isAbout": "items/audio_passage_record_item", 20 | "variableName": "audio_passage_record_item", 21 | "isVis": true, 22 | "allow": [ 23 | "reproschema:Skipped" 24 | ] 25 | }, 26 | {"isAbout": "items/audio_image_record_item", 27 | "variableName": "audio_image_record_item", 28 | "isVis": true, 29 | "allow": [ 30 | "reproschema:Skipped" 31 | ] 32 | }, 33 | {"isAbout": "items/audio_number_record_item", 34 | "variableName": "audio_number_record_item", 35 | "isVis": true, 36 | "allow": [ 37 | "reproschema:Skipped" 38 | ] 39 | } 40 | 41 | ], 42 | "order": [ 43 | "items/audio_check_item", 44 | "items/audio_passage_record_item", 45 | "items/audio_image_record_item", 46 | "items/audio_number_record_item" 47 | ], 48 | "shuffle": false, 49 | "allow": [ 50 | "reproschema:AutoAdvance", 51 | "reproschema:AllowExport" 52 | ] 53 | } 54 | } -------------------------------------------------------------------------------- /activities/Activity2/Activity2_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "Activity2_schema", 5 | "prefLabel": "demo of all input types and widgets", 6 | "description": "dummy activity to show all inputs types and widgets", 7 | "preamble": "This activity will show you all the different input type and widgets currently available.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | 13 | {"isAbout": "items/language_item", 14 | "variableName": "language_item", 15 | "isVis": true, 16 | "allow": [ 17 | "reproschema:Skipped" 18 | ] 19 | }, 20 | {"isAbout": "items/date_item", 21 | "variableName": "date_item", 22 | "isVis": true, 23 | "allow": [ 24 | "reproschema:Skipped" 25 | ] 26 | }, 27 | {"isAbout": "items/year_item", 28 | "variableName": "year_item", 29 | "isVis": true, 30 | "allow": [ 31 | "reproschema:Skipped" 32 | ] 33 | }, 34 | {"isAbout": "items/country_item", 35 | "variableName": "country_item", 36 | "isVis": true, 37 | "allow": [ 38 | "reproschema:Skipped" 39 | ] 40 | }, 41 | {"isAbout": "items/state_item", 42 | "variableName": "state_item", 43 | "isVis": true, 44 | "allow": [ 45 | "reproschema:Skipped" 46 | ] 47 | }, 48 | {"isAbout": "items/time_range_item", 49 | "variableName": "time_range_item", 50 | "isVis": true, 51 | "allow": [ 52 | "reproschema:Skipped" 53 | ] 54 | } 55 | ], 56 | "order": [ 57 | "items/country_item", 58 | "items/language_item", 59 | "items/state_item", 60 | "items/year_item", 61 | "items/date_item", 62 | "items/time_range_item" 63 | ], 64 | "shuffle": false, 65 | "allow": [ 66 | "reproschema:AutoAdvance", 67 | "reproschema:AllowExport" 68 | ] 69 | } 70 | } -------------------------------------------------------------------------------- /DemoProtocol/README.md: -------------------------------------------------------------------------------- 1 |
3 |
10 |
11 |
12 |
13 |
14 |
15 |

Welcome to the Demonstration Protocol

16 |

This is a Demonstration Protocol.

17 |

In this protocol, we will demonstrate the different features of ReproSchema. 18 | This includes both voice collection instruments alongside more standardized 19 | questionnaires. 20 |

21 |
22 |
23 | 24 |
25 |
26 |
27 | about 28 |
29 |
30 |

Additional Information about the protocol

31 |

By editing the README.md file you can control different segments of this 32 | front page, including sectioning and adding images. 33 |

34 |
35 |
36 |
37 | 38 |
39 |
40 |
41 | tell-story 42 |
43 |
44 |

More information

45 |

And more information. It is completely up to you how many sections you 46 | want to add and what information you want to provide to your participants. 47 |

48 |
49 |
50 |
51 | 52 |
53 |
54 |
55 | create-story 56 |
57 |
58 |

Details about this protocol

59 |

60 | To go through the protocol hit the Join button. It will take you through a 61 | consent process and then make sure you have understood the consent. Once you 62 | are deemed eligible the rest of the questionnaires will appear. 63 |

64 |
65 |
66 |
67 | -------------------------------------------------------------------------------- /activities/selectActivity/selectActivity_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "selectActivity_schema", 5 | "prefLabel": "demo of all input types and widgets", 6 | "description": "dummy activity to show all inputs types and widgets", 7 | "preamble": "This activity will show you all the different input type and widgets currently available.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | {"isAbout": "items/radio_item", 13 | "variableName": "radio_item", 14 | "isVis": true, 15 | "allow": [ 16 | "reproschema:Skipped" 17 | ] 18 | }, 19 | {"isAbout": "items/radio_item_multiple_choice", 20 | "variableName": "radio_item_multiple_choice", 21 | "isVis": true, 22 | "allow": [ 23 | "reproschema:Skipped" 24 | ] 25 | }, 26 | {"isAbout": "items/select_item", 27 | "variableName": "select_item", 28 | "isVis": true, 29 | "allow": [ 30 | "reproschema:Skipped" 31 | ] 32 | }, 33 | {"isAbout": "items/select_item_multiple_choice", 34 | "variableName": "select_item_multiple_choice", 35 | "isVis": true, 36 | "allow": [ 37 | "reproschema:Skipped" 38 | ] 39 | }, 40 | {"isAbout": "items/slider_item_with_max", 41 | "variableName": "slider_item_with_max", 42 | "isVis": true, 43 | "allow": [ 44 | "reproschema:Skipped" 45 | ] 46 | }, 47 | {"isAbout": "items/slider_item_without_max", 48 | "variableName": "slider_item_without_max", 49 | "isVis": true, 50 | "allow": [ 51 | "reproschema:Skipped" 52 | ] 53 | } 54 | ], 55 | "order": [ 56 | "items/radio_item", 57 | "items/radio_item_multiple_choice", 58 | "items/select_item", 59 | "items/select_item_multiple_choice", 60 | "items/slider_item_with_max", 61 | "items/slider_item_without_max" 62 | ], 63 | "shuffle": false, 64 | "allow": [ 65 | "reproschema:AutoAdvance", 66 | "reproschema:AllowExport" 67 | ] 68 | } 69 | } -------------------------------------------------------------------------------- /DemoProtocol/DemoProtocol_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Protocol", 4 | "@id": "DemoProtocol_schema", 5 | "prefLabel": { 6 | "en": "Protocol1", 7 | "es": "Protocol1_es" 8 | }, 9 | "description": "example Protocol", 10 | "schemaVersion": "1.0.0", 11 | "version": "0.0.1", 12 | "landingPage": [{ 13 | "@id": "README.md", 14 | "inLanguage": "en" 15 | } 16 | ], 17 | "messages": [ 18 | { 19 | "message": "Test message: Triggered when item1 value is greater than 0", 20 | "jsExpression": "item1 > 0" 21 | } 22 | ], 23 | "ui": { 24 | "addProperties": [ 25 | {"isAbout": "../activities/Activity1/activity1_schema", 26 | "variableName": "activity1_schema", 27 | "prefLabel": {"en": "Upload Documents"} 28 | }, 29 | {"isAbout": "../activities/Activity2/Activity2_schema", 30 | "variableName": "Activity2_schema", 31 | "prefLabel": {"en": "Select Dropdown"} 32 | }, 33 | {"isAbout": "../activities/Activity3/Activity3_schema", 34 | "variableName": "Activity3_schema", 35 | "prefLabel": {"en": "Enter Input"} 36 | }, 37 | {"isAbout": "../activities/Activity4/Activity4_schema", 38 | "variableName": "Activity4_schema", 39 | "prefLabel": {"en": "Sign Consent"} 40 | }, 41 | {"isAbout": "../activities/selectActivity/selectActivity_schema", 42 | "variableName": "selectActivity_schema", 43 | "prefLabel": {"en": "Select Response"} 44 | }, 45 | {"isAbout": "../activities/voiceActivity/voiceActivity_schema", 46 | "variableName": "voiceActivity_schema", 47 | "prefLabel": {"en": "Voice Activity" } 48 | }, 49 | {"isAbout": "../activities/responsesReferenceActivity/responsesReferenceActivity_schema", 50 | "variableName": "responsesReferenceActivity_schema", 51 | "prefLabel": {"en": "Global Responses Reference Activity" } 52 | } 53 | ], 54 | "order": [ 55 | "../activities/Activity1/activity1_schema", 56 | "../activities/Activity2/Activity2_schema", 57 | "../activities/Activity3/Activity3_schema", 58 | "../activities/selectActivity/selectActivity_schema", 59 | "../activities/voiceActivity/voiceActivity_schema", 60 | "../activities/Activity4/Activity4_schema", 61 | "../activities/responsesReferenceActivity/responsesReferenceActivity_schema" 62 | ], 63 | "shuffle": false, 64 | "allow": [ 65 | "reproschema:AutoAdvance", 66 | "reproschema:AllowExport" 67 | ] 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /.github/workflows/build_deploy.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the master branch 7 | on: 8 | push: 9 | branches: [ main ] 10 | pull_request: 11 | branches: [ main ] 12 | workflow_dispatch: 13 | 14 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 15 | jobs: 16 | # This workflow contains a single job called "build" 17 | build: 18 | name: Build UI 19 | # The type of runner that the job will run on 20 | runs-on: ubuntu-latest 21 | 22 | # Steps represent a sequence of tasks that will be executed as part of the job 23 | steps: 24 | 25 | - name: Setup Node 26 | uses: actions/setup-node@v4 27 | with: 28 | node-version: '21.x' 29 | # Install jq if it's not already available 30 | - name: Install jq 31 | run: sudo apt-get install jq 32 | 33 | # Fetch the latest commit hash 34 | - name: Get latest commit hash from reproschema-ui 35 | run: | 36 | LATEST_HASH=$(curl -s https://api.github.com/repos/ReproNim/reproschema-ui/commits/main | jq -r '.sha') 37 | echo "CHECKSUM=${LATEST_HASH}" >> "$GITHUB_ENV" 38 | 39 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 40 | - uses: actions/checkout@v4 41 | 42 | # Runs a set of commands using the runners shell 43 | - name: Check for syntax errors 44 | run: | 45 | npm install -g jsonlint 46 | grep -r "@context" activities | cut -d: -f1 | xargs -I fname jsonlint -q fname 47 | grep -r "@context" DemoProtocol | cut -d: -f1 | xargs -I fname jsonlint -q fname 48 | 49 | # Validate the protocol 50 | - name: Set up Python 3.11 51 | uses: actions/setup-python@v5 52 | with: 53 | python-version: "3.11" 54 | - name: Install dependencies 55 | run: | 56 | python -m pip install --upgrade pip setuptools 57 | pip install reproschema requests_cache pre-commit 58 | - name: Validate with reproschema 59 | run: | 60 | reproschema -l DEBUG validate activities 61 | reproschema -l DEBUG validate DemoProtocol/DemoProtocol_schema 62 | 63 | # Runs a set of commands using the runners shell 64 | - name: Run a multi-line script 65 | run: | 66 | curl -O -sSL https://github.com/ReproNim/reproschema-ui/archive/${CHECKSUM}.zip 67 | unzip ${CHECKSUM}.zip 68 | mv reproschema* ui 69 | cd ui 70 | cp -r ../ui-changes/. . 71 | npm install 72 | npm run build 73 | touch dist/.nojekyll 74 | 75 | - name: Deploy 🚀 76 | uses: JamesIves/github-pages-deploy-action@v4 77 | if: github.ref == 'refs/heads/main' 78 | with: 79 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} 80 | BRANCH: gh-pages # The branch the action should deploy to. 81 | FOLDER: ui/dist # The folder the action should deploy. 82 | -------------------------------------------------------------------------------- /activities/Activity3/Activity3_schema: -------------------------------------------------------------------------------- 1 | { 2 | "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0/contexts/reproschema", 3 | "@type": "reproschema:Activity", 4 | "@id": "Activity3_schema", 5 | "prefLabel": "demo of all input types and widgets", 6 | "description": "dummy activity to show all inputs types and widgets", 7 | "preamble": "This activity will show you all the different input type and widgets currently available.", 8 | "schemaVersion": "1.0.0", 9 | "version": "0.0.1", 10 | "ui": { 11 | "addProperties": [ 12 | {"isAbout": "items/integer_item", 13 | "variableName": "integer_item", 14 | "isVis": true, 15 | "allow": [ 16 | "reproschema:Skipped" 17 | ] 18 | }, 19 | {"isAbout": "items/email_item", 20 | "variableName": "email_item", 21 | "isVis": true, 22 | "allow": [ 23 | "reproschema:Skipped" 24 | ] 25 | }, 26 | {"isAbout": "items/text_item", 27 | "variableName": "text_item", 28 | "isVis": true, 29 | "allow": [ 30 | "reproschema:Skipped" 31 | ] 32 | }, 33 | {"isAbout": "items/textarea_item", 34 | "variableName": "textarea_item", 35 | "isVis": true, 36 | "allow": [ 37 | "reproschema:Skipped" 38 | ] 39 | }, 40 | {"isAbout": "items/participant_id_item", 41 | "variableName": "participant_id_item", 42 | "isVis": true, 43 | "allow": [ 44 | "reproschema:Skipped" 45 | ] 46 | }, 47 | {"isAbout": "items/multitext_item", 48 | "variableName": "multitext_item", 49 | "isVis": true, 50 | "allow": [ 51 | "reproschema:Skipped" 52 | ] 53 | }, 54 | {"isAbout": "items/float_item", 55 | "variableName": "float_item", 56 | "isVis": true, 57 | "allow": [ 58 | "reproschema:Skipped" 59 | ] 60 | }, 61 | {"isAbout": "items/float_with_units_item", 62 | "variableName": "float_unit_item", 63 | "isVis": true, 64 | "allow": [ 65 | "reproschema:Skipped" 66 | ] 67 | } 68 | ], 69 | "order": [ 70 | "items/float_with_units_item", 71 | "items/integer_item", 72 | "items/float_item", 73 | "items/text_item", 74 | "items/textarea_item", 75 | "items/multitext_item", 76 | "items/participant_id_item", 77 | "items/email_item" 78 | ], 79 | "shuffle": false, 80 | "allow": [ 81 | "reproschema:AutoAdvance", 82 | "reproschema:AllowExport" 83 | ] 84 | } 85 | } -------------------------------------------------------------------------------- /DemoProtocol/create_your_story.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /DemoProtocol/mit_voice_pilot_applet_image.svg: -------------------------------------------------------------------------------- 1 | speech to text 2 | -------------------------------------------------------------------------------- /DemoProtocol/about_the_study.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | --------------------------------------------------------------------------------