Skip to content

Commit

Permalink
do not include graph config id when serialise
Browse files Browse the repository at this point in the history
  • Loading branch information
EmmaLRussell committed Jul 8, 2024
1 parent 018a165 commit a770eaf
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 6 deletions.
29 changes: 25 additions & 4 deletions app/static/src/app/serialise.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,13 @@ import {
SerialisedRunResult,
SerialisedSensitivityResult,
SerialisedModelFitState,
SerialisedMultiSensitivityState
SerialisedMultiSensitivityState,
SerialisedGraphsState
} from "./types/serialisationTypes";
import { GraphsState } from "./store/graphs/state";
import { GraphConfig, GraphsState } from "./store/graphs/state";
import { Dict } from "./types/utilTypes";
import { MultiSensitivityState } from "./store/multiSensitivity/state";
import { newUid } from "./utils";

function serialiseCode(code: CodeState): CodeState {
return {
Expand Down Expand Up @@ -140,8 +142,26 @@ function serialiseModelFit(modelFit: ModelFitState): SerialisedModelFitState {
};
}

export const serialiseGraphs = (state: GraphsState): GraphsState => {
return { ...state };
// Do not include graph config uids in serialised as we don't want them to contribute to duplicate checks
export const serialiseGraphs = (state: GraphsState): SerialisedGraphsState => {
return {
...state,
config: state.config.map((c: GraphConfig) => ({
selectedVariables: c.selectedVariables,
unselectedVariables: c.unselectedVariables
}))
};
};

export const deserialiseGraphs = (serialised: SerialisedGraphsState): GraphsState => {
return {
...serialised,
config: serialised.config.map((s) => ({
id: newUid(),
selectedVariables: s.selectedVariables,
unselectedVariables: s.unselectedVariables
}))
};
};

export const serialiseState = (state: AppState): string => {
Expand All @@ -168,6 +188,7 @@ export const deserialiseState = (targetState: AppState, serialised: SerialisedAp
Object.assign(targetState, {
...targetState,
...serialised,
graphs: deserialiseGraphs(serialised.graphs),
persisted: true
});

Expand Down
9 changes: 7 additions & 2 deletions app/static/src/app/types/serialisationTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { VisualisationTab } from "../store/appState/state";
import { CodeState } from "../store/code/state";
import { FitDataState } from "../store/fitData/state";
import { Palette } from "../palette";
import { GraphsState } from "../store/graphs/state";
import { GraphSettings } from "../store/graphs/state";
import { Dict } from "./utilTypes";

export interface SerialisedRunResult {
Expand Down Expand Up @@ -73,14 +73,19 @@ export interface SerialisedModelFitState {
error: null | WodinError;
}

export interface SerialisedGraphsState {
config: { selectedVariables: string[]; unselectedVariables: string[] }[];
settings: GraphSettings; // TODO: this will be replaced by per-graph settings in mrc-5442
}

export interface SerialisedAppState {
openVisualisationTab: VisualisationTab;
code: CodeState;
model: SerialisedModelState;
run: SerialisedRunState;
sensitivity: SerialisedSensitivityState;
multiSensitivity: SerialisedMultiSensitivityState;
graphs: GraphsState;
graphs: SerialisedGraphsState;
fitData?: FitDataState;
modelFit?: SerialisedModelFitState;
}
1 change: 1 addition & 0 deletions app/static/tests/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ export const mockGraphsState = (state: Partial<GraphsState> = {}): GraphsState =
return {
config: [
{
id: "123",
selectedVariables: [],
unselectedVariables: []
}
Expand Down

0 comments on commit a770eaf

Please sign in to comment.