An easy-to-use platform for EEG experimentation in the classroom
1import { createAction } from '@reduxjs/toolkit';
2import { ActionType } from 'typesafe-actions';
3import { EXPERIMENTS } from '../constants/constants';
4import {
5 ExperimentObject,
6 ExperimentParameters,
7 WorkSpaceInfo,
8} from '../constants/interfaces';
9import { ExperimentStateType } from '../reducers/experimentReducer';
10
11// -------------------------------------------------------------------------
12// Actions
13
14export const ExperimentActions = {
15 Start: createAction('START'),
16 Pause: createAction('PAUSE'),
17 Stop: createAction<{ data: string }, 'STOP'>('STOP'),
18 SetType: createAction<EXPERIMENTS, 'SET_TYPE'>('SET_TYPE'),
19 SetExperimentObject: createAction<ExperimentObject, 'SET_EXPERIMENT_OBJECT'>(
20 'SET_EXPERIMENT_OBJECT'
21 ),
22 SetSubject: createAction<string, 'SET_SUBJECT'>('SET_SUBJECT'),
23 SetGroup: createAction<string, 'SET_GROUP'>('SET_GROUP'),
24 SetSession: createAction<number, 'SET_SESSION'>('SET_SESSION'),
25 SetParams: createAction<ExperimentParameters, 'SET_PARAMS'>('SET_PARAMS'),
26 SetDateModified: createAction<number, 'SET_DATE_MODIFIED'>(
27 'SET_DATE_MODIFIED'
28 ),
29 CreateNewWorkspace: createAction<WorkSpaceInfo, 'CREATE_NEW_WORKSPACE'>(
30 'CREATE_NEW_WORKSPACE'
31 ),
32 SetIsRunning: createAction<boolean, 'SET_IS_RUNNING'>('SET_IS_RUNNING'),
33 ExperimentCleanup: createAction('EXPERIMENT_CLEANUP'),
34 SetTitle: createAction<string, 'SET_TITLE'>('SET_TITLE'),
35 SaveWorkspace: createAction('SAVE_WORKSPACE'),
36 SetState: createAction<ExperimentStateType, 'SET_EXPERIMENT_STATE'>(
37 'SET_EXPERIMENT_STATE'
38 ),
39 SetEEGEnabled: createAction<boolean, 'SET_EEG_ENABLED'>('SET_EEG_ENABLED'),
40 UpdateSession: createAction('UPDATE_SESSION'),
41} as const;
42
43export type ExperimentActionType = ActionType<
44 (typeof ExperimentActions)[keyof typeof ExperimentActions]
45>;