/// <summary> /// Populates the <see cref="MappingRows"/> /// </summary> /// <param name="datatypeDefinitions"></param> private void PopulateRows(IEnumerable <DatatypeDefinition> datatypeDefinitions) { foreach (var datatypeDefinition in datatypeDefinitions) { var row = new DatatypeDefinitionMappingRowViewModel(datatypeDefinition, this.ParameterTypes); this.MappingRows.Add(row); } }
/// <summary> /// Sets the Mapped Thing on enum values of the provided row /// </summary> /// <param name="dataTypeDefinitionMap"></param> /// <param name="row"></param> private void PopulateEnumRow(DatatypeDefinitionMap dataTypeDefinitionMap, DatatypeDefinitionMappingRowViewModel row) { foreach (var enumRow in row.EnumValue) { if (dataTypeDefinitionMap.EnumValueMap.TryGetValue(enumRow.Identifiable, out var enumValueDef)) { enumRow.MappedThing = enumRow.PossibleThings.Single(x => x.Iid == enumValueDef.Iid); } } }
/// <summary> /// Initializes a new instance of the <see cref="ParameterTypeMappingDialogViewModel"/> class. /// </summary> public ParameterTypeMappingDialogViewModel(string lang, IEnumerable <DatatypeDefinition> datatypeDefinitions, IDictionary <DatatypeDefinition, DatatypeDefinitionMap> map, Iteration iteration, ISession session, IThingDialogNavigationService thingDialogNavigationService) : base(iteration, session, thingDialogNavigationService, lang) { this.NextCommand = ReactiveCommand.Create(); this.NextCommand.Subscribe(_ => this.ExecuteNextCommand()); this.CreateParameterTypeCommands = new ReactiveList <ContextMenuItemViewModel>(); this.ParameterTypes = new ReactiveList <ParameterType>(); this.PopulateParameterTypes(); this.PopulateCreateParameterTypeCommands(); this.PopulateCreateMeasurementScaleCommands(); this.WhenAnyValue(x => x.SelectedRow).Subscribe(_ => this.PopulateCreateParameterTypeCommands()); this.MappingRows = new ReactiveList <DatatypeDefinitionMappingRowViewModel>(); foreach (var datatypeDefinition in datatypeDefinitions) { var row = new DatatypeDefinitionMappingRowViewModel(datatypeDefinition, this.ParameterTypes); this.MappingRows.Add(row); } // set current parameter type mapping if any if (map != null) { foreach (var pair in map) { var row = this.MappingRows.Single(x => x.Identifiable == pair.Key); row.MappedThing = pair.Value.ParameterType; // set current enumvalue mapping if (!(row.Identifiable is DatatypeDefinitionEnumeration)) { continue; } foreach (var enumRow in row.EnumValue) { EnumerationValueDefinition enumValueDef; if (pair.Value.EnumValueMap.TryGetValue(enumRow.Identifiable, out enumValueDef)) { enumRow.MappedThing = enumRow.PossibleThings.Single(x => x.Iid == enumValueDef.Iid); } } } } }
/// <summary> /// Initializes a new instance of the <see cref="EnumValueMappingRowViewModel"/> class /// </summary> /// <param name="enumValue">The <see cref="EnumValue"/> to map</param> /// <param name="parentRow">The parent <see cref="DatatypeDefinitionMappingRowViewModel"/> row </param> public EnumValueMappingRowViewModel(EnumValue enumValue, DatatypeDefinitionMappingRowViewModel parentRow) : base(enumValue) { this.parentRow = parentRow; this.PossibleThings = new ReactiveList <EnumerationValueDefinition>(); this.WhenAnyValue(x => x.MappedThing).Subscribe(_ => this.parentRow.UpdateMappingStatus()); }