private ModuleState(_ModuleStateDTO dto, Simulation simulation) { TraceDataPlotStates = dto.TraceDataPlotStates.IsNullOrEmpty() ? DefaultTraceDataPlotStates : dto.TraceDataPlotStates.Select(ToState).ToArr(); var parameterEditStates = dto.ParameterEditStates.IsNullOrEmpty() ? default : dto.ParameterEditStates.ToArr(); parameterEditStates = simulation.SimConfig.SimInput.SimParameters.Map(p => { var maybeExistingState = parameterEditStates.Find(pes => pes.Name == p.Name); return(maybeExistingState.Match( es => es, () => new ParameterEditState(p.Name, p.Scalar))); }); ParameterEditStates = parameterEditStates; TraceState = dto.TraceState ?? new TraceState(); _autoApplyParameterSharedState = dto.AutoApplyParameterSharedState; _autoShareParameterSharedState = dto.AutoShareParameterSharedState; _autoApplyElementSharedState = dto.AutoApplyElementSharedState; _autoShareElementSharedState = dto.AutoShareElementSharedState; _autoApplyObservationsSharedState = dto.AutoApplyObservationsSharedState; _autoShareObservationsSharedState = dto.AutoShareObservationsSharedState; }
public static void Save(ModuleState instance, Simulation simulation) { var dto = new _ModuleStateDTO { TraceDataPlotStates = instance.TraceDataPlotStates .Map(tdps => new _TraceDataPlotStateDTO { IsVisible = tdps.IsVisible, DepVarConfigState = new _DepVarConfigStateDTO { SelectedElementName = tdps.DepVarConfigState.SelectedElementName, MRUElementNames = tdps.DepVarConfigState.MRUElementNames.ToArray(), SelectedInsetElementName = tdps.DepVarConfigState.SelectedInsetElementName, SupplementaryElementNames = tdps.DepVarConfigState.SupplementaryElementNames.ToArray(), InactiveSupplementaryElementNames = tdps.DepVarConfigState.InactiveSupplementaryElementNames .ToDictionary(kvp => kvp.Key, kvp => kvp.Value.ToArray()), ObservationsReferences = tdps.DepVarConfigState.ObservationsReferences.ToArray(), IsScaleLogarithmic = tdps.DepVarConfigState.IsScaleLogarithmic }, ViewHeight = tdps.ViewHeight, IsSeriesTypeLine = tdps.IsSeriesTypeLine, IsAxesOriginLockedToZeroZero = tdps.IsAxesOriginLockedToZeroZero, XMinimum = tdps.XMinimum, XMaximum = tdps.XMaximum, YMinimum = tdps.YMinimum, YMaximum = tdps.YMaximum }) .ToArray(), ParameterEditStates = instance.ParameterEditStates.ToArray(), TraceState = instance.TraceState, AutoApplyParameterSharedState = instance.AutoApplyParameterSharedState, AutoShareParameterSharedState = instance.AutoShareParameterSharedState, AutoApplyElementSharedState = instance.AutoApplyElementSharedState, AutoShareElementSharedState = instance.AutoShareElementSharedState, AutoApplyObservationsSharedState = instance.AutoApplyObservationsSharedState, AutoShareObservationsSharedState = instance.AutoShareObservationsSharedState }; simulation.SavePrivateData( dto, nameof(Plot), nameof(ViewModel), nameof(ModuleState) ); }