[d6876d]: / src / store / slices / experimentsSlice.ts

Download this file

83 lines (77 with data), 2.5 kB

 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { ExperimentConfig, SimulationResult, GeneAssembly } from '../../types';
import { ExperimentResult } from '../../utils/pipelines/experimentPipeline';
interface ExperimentsState {
experiments: ExperimentConfig[];
activeExperiment: ExperimentConfig | null;
simulationResults: SimulationResult[];
experimentResults: ExperimentResult[];
geneAssemblies: GeneAssembly[];
loading: boolean;
error: string | null;
}
const initialState: ExperimentsState = {
experiments: [],
activeExperiment: null,
simulationResults: [],
experimentResults: [],
geneAssemblies: [],
loading: false,
error: null,
};
const experimentsSlice = createSlice({
name: 'experiments',
initialState,
reducers: {
setExperiments(state, action: PayloadAction<ExperimentConfig[]>) {
state.experiments = action.payload;
},
setActiveExperiment(state, action: PayloadAction<ExperimentConfig>) {
state.activeExperiment = action.payload;
},
addExperiment(state, action: PayloadAction<ExperimentConfig>) {
state.experiments.push(action.payload);
},
updateExperiment(state, action: PayloadAction<ExperimentConfig>) {
const index = state.experiments.findIndex(exp => exp.id === action.payload.id);
if (index !== -1) {
state.experiments[index] = action.payload;
}
},
addSimulationResult(state, action: PayloadAction<SimulationResult>) {
state.simulationResults.push(action.payload);
},
addExperimentResult(state, action: PayloadAction<ExperimentResult>) {
state.experimentResults.push(action.payload);
},
setGeneAssemblies(state, action: PayloadAction<GeneAssembly[]>) {
state.geneAssemblies = action.payload;
},
addGeneAssembly(state, action: PayloadAction<GeneAssembly>) {
state.geneAssemblies.push(action.payload);
},
setLoading(state, action: PayloadAction<boolean>) {
state.loading = action.payload;
},
setError(state, action: PayloadAction<string | null>) {
state.error = action.payload;
},
clearError(state) {
state.error = null;
},
},
});
export const {
setExperiments,
setActiveExperiment,
addExperiment,
updateExperiment,
addSimulationResult,
addExperimentResult,
setGeneAssemblies,
addGeneAssembly,
setLoading,
setError,
clearError,
} = experimentsSlice.actions;
export default experimentsSlice.reducer;