An easy-to-use platform for EEG experimentation in the classroom
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

cleanup

+36 -41
+1 -1
app/components/CollectComponent/HelpSidebar.js
··· 163 163 <Segment basic className={styles.closeButton}> 164 164 <Button 165 165 circular 166 - size="big" 166 + size="large" 167 167 icon="x" 168 168 onClick={this.props.handleClose} 169 169 />
+1 -3
app/components/DesignComponent/StimuliRow.js
··· 61 61 <Segment basic className={styles.trialsTrialTypeSegment}> 62 62 <div 63 63 className={styles.trialsTrialTypeRowSelector} 64 - style={{ 65 - backgroundColor: this.props.phase === 'main' ? '#1AC4EF' : '#EB1B66', 66 - }} 64 + style={{ backgroundColor: this.props.phase === 'main' ? '#1AC4EF' : '#EB1B66' }} 67 65 > 68 66 {this.props.phase === 'main' ? 'Experimental' : 'Practice'} 69 67 </div>
+17 -5
app/components/DesignComponent/index.js
··· 45 45 PREVIEW: 'PREVIEW', 46 46 }; 47 47 48 - // TODO: Add all the labjs props (e.g. protocol_title) to this interface 49 48 interface Props { 50 49 history: Object; 51 50 type: EXPERIMENTS; ··· 148 147 this.props.experimentActions.saveWorkspace(); 149 148 } 150 149 151 - renderConditionIcon = (type) => { 150 + renderConditionIcon(type) { 152 151 switch (type) { 153 152 case 'conditionCongruent': 154 153 return conditionCongruent; 154 + break; 155 155 case 'conditionIncongruent': 156 156 return conditionIncongruent; 157 + break; 157 158 case 'conditionOrangeT': 158 159 return conditionOrangeT; 160 + break; 159 161 case 'conditionNoOrangeT': 160 162 return conditionNoOrangeT; 163 + break; 161 164 case 'conditionFace': 162 165 return conditionFace; 166 + break; 163 167 case 'conditionHouse': 164 168 return conditionHouse; 169 + break; 165 170 case 'multiConditionShape': 166 171 return multiConditionShape; 172 + break; 167 173 case 'multiConditionDots': 168 174 default: 169 175 return multiConditionDots; 176 + break; 170 177 } 171 - }; 178 + } 172 179 173 - renderOverviewIcon = (type) => { 180 + renderOverviewIcon(type) { 174 181 switch (type) { 175 182 case EXPERIMENTS.N170: 176 183 return facesHousesOverview; 184 + break; 177 185 178 186 case EXPERIMENTS.STROOP: 179 187 return stroopOverview; 188 + break; 180 189 181 190 case EXPERIMENTS.MULTI: 182 191 return multitaskingOverview; 192 + break; 183 193 184 194 case EXPERIMENTS.SEARCH: 185 195 return searchOverview; 196 + break; 186 197 187 198 case EXPERIMENTS.CUSTOM: 188 199 default: 189 200 return customOverview; 201 + break; 190 202 } 191 - }; 203 + } 192 204 193 205 renderSectionContent() { 194 206 switch (this.state.activeStep) {
-5
app/components/styles/collect.css
··· 23 23 left: -40px; 24 24 } 25 25 26 - .closeButton { 27 - display: grid; 28 - justify-content: end; 29 - } 30 - 31 26 .searchingText { 32 27 text-align: center !important; 33 28 }
+11 -17
app/components/styles/common.css
··· 75 75 .closeButton { 76 76 border: none !important; 77 77 box-shadow: none !important; 78 + display: grid; 79 + justify-content: end; 78 80 } 79 81 80 82 .previewWindow { ··· 106 108 height: 100%; 107 109 } 108 110 109 - .helpSidebar { 110 - height: inherit; 111 + .helpButton { 112 + height: 44px !important; 113 + width: 44px !important; 114 + color: #fff !important; 115 + background-color: #007c70 !important; 116 + border-radius: 22px !important; 111 117 } 112 118 113 - .helpSidebar i { 114 - color: #64c9e2; 119 + .helpSidebar { 120 + height: inherit; 115 121 } 116 122 117 123 .helpHeader { ··· 126 132 .helpContent { 127 133 font-size: 18px !important; 128 134 height: 80%; 129 - } 130 - 131 - .helpButton { 132 - height: 44px !important; 133 - width: 44px !important; 134 - color: #fff !important; 135 - background-color: #007c70 !important; 136 - border-radius: 22px !important; 137 - border: 2px solid #007c70 !important; 138 - display: flex; 139 - justify-content: flex-end; 140 - font-size: initial !important; 141 135 } 142 136 143 137 .externalLinks { ··· 368 362 display: grid; 369 363 grid-template-columns: auto auto 1fr; 370 364 grid-column-gap: 10px; 371 - border: 2px solid #CCCCCC; 365 + border: 2px solid #cccccc; 372 366 padding: inherit; 373 367 border-radius: 4px; 374 368 width: fit-content;
-1
app/epics/jupyterEpics.js
··· 230 230 awaitOkMessage(action$), 231 231 execute(filterIIR(1, 30), state$), 232 232 awaitOkMessage(action$), 233 - tap(() => console.log('state', state$.value.experiment.params)), 234 233 map(() => 235 234 epochEvents( 236 235 {
+6 -4
app/utils/labjs/index.js
··· 45 45 default: 46 46 custom.parameters = props.settings.params; 47 47 custom.parameters.title = props.settings.title; 48 - custom.files = props.settings.params.stimuli.map(image => ( 49 - { [`${image.dir}/${image.filename}`] : `${image.dir}/${image.filename}`} 50 - )).reduce((obj, item) => { 51 - obj[Object.keys(item)[0]] = Object.values(item)[0] 48 + custom.files = props.settings.params.stimuli 49 + .map((image) => ({ 50 + [`${image.dir}/${image.filename}`]: `${image.dir}/${image.filename}`, 51 + })) 52 + .reduce((obj, item) => { 53 + obj[Object.keys(item)[0]] = Object.values(item)[0]; 52 54 return obj; 53 55 }, {}); 54 56 this.study = lab.util.fromObject(clonedeep(custom), lab);
-5
app/utils/labjs/scripts/faceshouses.js
··· 231 231 }, 232 232 }, 233 233 viewport: [800, 600], 234 - files: {}, 235 - parameters: {}, 236 - responses: {}, 237 - messageHandlers: {}, 238 - viewport: [800, 600], 239 234 title: 'Feedback', 240 235 tardy: true, 241 236 timeout: '1000',