public void SettingValueProperty_ShouldSet_NumberOfRowProperty() { var list = new List<int> {1, 2, 3}; var vm = new FieldViewModelBase<string> {Value = list}; Assert.AreEqual(vm.NumberOfRow, 3); }
public void PropertiesTest() { var vm = new FieldViewModelBase<string>(); Assert.IsNull(vm.NumberOfRow, null); TestsHelper.TestPublicPropertiesGetSet(vm, x => vm.VisibilityRules); }
private void AddChangedField(FieldViewModelBase fieldViewModel) { if (fieldViewModel.IsRecordServiceField) { if (!ChangedPersistentFields.Contains(fieldViewModel.FieldName)) { ChangedPersistentFields.Add(fieldViewModel.FieldName); } } }
internal GridRowViewModel(ModelBase model, IEnumerable <GridColumnDefinition> columns, ModelBindingMode bindingMode) { Model = model; int count = 0; foreach (var column in columns) { SetBinding(column.SourceProperty, new ModelBinding(model, column.SourceProperty, bindingMode)); count++; } Cells = new FieldViewModelBase[count]; }
public void AddField(FieldViewModelBase gridField) { _gridFields.Add(gridField); }
public FieldViewModelBase CreateFieldViewModel(string recordType, IRecordService recordService, RecordEntryViewModelBase recordForm, IApplicationController applicationController, RecordFieldType?explicitFieldType = null, string explicitLookupTargetType = null, IEnumerable <PicklistOption> explicitPicklistOptions = null) { var field = FieldName; recordType = AltRecordType ?? recordType; try { RecordFieldType?fieldType = explicitFieldType; string label; var thisFieldEditable = true; //this not quite right haven't needed to change yet though var isNonPersistent = this is NonPersistentFormField; var isRecordServiceField = !isNonPersistent; if (isNonPersistent) { if (!explicitFieldType.HasValue) { fieldType = ((NonPersistentFormField)this).RecordFieldType; } label = ((NonPersistentFormField)this).Label; thisFieldEditable = false; } else { if (!explicitFieldType.HasValue) { fieldType = recordService.GetFieldType(field, recordType); } label = recordService.GetFieldLabel(field, recordType); thisFieldEditable = string.IsNullOrWhiteSpace(recordForm.GetRecord().Id) ? recordService.GetFieldMetadata(field, recordType).Createable : recordService.GetFieldMetadata(field, recordType).Writeable; } FieldViewModelBase fieldVm = null; switch (fieldType) { case RecordFieldType.Boolean: case RecordFieldType.ManagedProperty: { var picklist = explicitPicklistOptions ?? recordService.GetPicklistKeyValues(field, recordType); fieldVm = new BooleanFieldViewModel(field, label, recordForm, picklist) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.Integer: { var picklist = explicitPicklistOptions ?? recordService.GetPicklistKeyValues(field, recordType); fieldVm = new IntegerFieldViewModel(field, label, recordForm, picklist) { IsRecordServiceField = isRecordServiceField }; if (this is PersistentFormField && !explicitFieldType.HasValue) { ((IntegerFieldViewModel)fieldVm).MinValue = Convert.ToInt32(recordService.GetFieldMetadata(field, recordType).MinValue); ((IntegerFieldViewModel)fieldVm).MaxValue = Convert.ToInt32(recordService.GetFieldMetadata(field, recordType).MaxValue); fieldVm.IsNotNullable = recordService.GetFieldMetadata(field, recordType).IsNonNullable; } break; } case RecordFieldType.Memo: case RecordFieldType.String: { fieldVm = new StringFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField, IsMultiline = recordService.GetFieldMetadata(field, recordType).IsMultiline(), DoNotLimitDisplayHeight = DoNotLimitDisplayHeight }; if (!explicitFieldType.HasValue) { ((StringFieldViewModel)fieldVm).MaxLength = recordService.GetMaxLength(field, recordType); } break; } case RecordFieldType.Picklist: case RecordFieldType.Status: case RecordFieldType.State: { var fieldMetadata = recordService.GetFieldMetadata(field, recordType); if (fieldMetadata.IsMultiSelect) { fieldVm = new PicklistMultiSelectFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; ((PicklistMultiSelectFieldViewModel)fieldVm).SetItemsSource(recordService.GetPicklistKeyValues(field, recordType)); } else { fieldVm = new PicklistFieldViewModel(field, label, recordForm) { ItemsSource = explicitPicklistOptions ?? recordService.GetPicklistKeyValues(field, recordType), IsRecordServiceField = isRecordServiceField }; } break; } case RecordFieldType.Date: { fieldVm = new DateFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.Lookup: case RecordFieldType.Customer: case RecordFieldType.Owner: { //the check for null here was when loading a lookup grid the rows in the lookup do not require a form var targetType = explicitLookupTargetType; if (targetType == null) { targetType = recordForm.FormService == null ? null : recordForm.FormService.GetLookupTargetType(field, recordType, recordForm); } var usePicklist = recordForm.FormService == null ? false : recordForm.FormService.UsePicklist(field, recordType); thisFieldEditable = thisFieldEditable && recordForm.FormService != null && recordForm.FormService.AllowLookupFunctions; fieldVm = new LookupFieldViewModel(field, label, recordForm, targetType, usePicklist, thisFieldEditable) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.Password: { fieldVm = new PasswordFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.Folder: { fieldVm = new FolderFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.StringEnumerable: { fieldVm = new StringEnumerableFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.RecordType: { fieldVm = new RecordTypeFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; try { ((RecordTypeFieldViewModel)fieldVm).ItemsSource = explicitPicklistOptions != null ? explicitPicklistOptions.Select(p => new RecordType(p.Key, p.Value)).Where(rt => !string.IsNullOrWhiteSpace(rt.Value)).OrderBy(rt => rt.Value).ToArray() : recordService.GetPicklistKeyValues(field, recordType, recordForm.ParentFormReference, recordForm.GetRecord()) .Select(p => new RecordType(p.Key, p.Value)) .OrderBy(rt => rt.Value) .ToArray(); } catch (Exception ex) { fieldVm.AddError($"Error Loading Picklist Options\n\n{ex.DisplayString()}"); } break; } case RecordFieldType.RecordField: { //okay need to use recordForm.ParentReference for grid rows //to get the correct lookup service property var dependantValue = recordForm.FormService.GetDependantValue(field, recordType, recordForm); var fieldMetadata = recordService.GetFieldMetadata(field, recordType); var itemsSource = recordService.GetPicklistKeyValues(field, recordType, recordForm.ParentFormReference == null ? dependantValue : dependantValue + ":" + recordForm.ParentFormReference, recordForm.GetRecord()) .Select(r => new RecordField(r.Key, r.Value)) .ToArray(); if (fieldMetadata.IsMultiSelect) { fieldVm = new RecordFieldMultiSelectFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; ((RecordFieldMultiSelectFieldViewModel)fieldVm).SetItemsSource(itemsSource); } else { fieldVm = new RecordFieldFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField, ItemsSource = itemsSource }; } break; } case RecordFieldType.Enumerable: { //need grid fields //need linked record type fieldVm = new EnumerableFieldViewModel(field, label, recordForm, OtherType) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.Object: { //var usePicklist = recordForm.FormService == null // ? false // : recordForm.FormService.UsePicklist(field, recordType); fieldVm = new ObjectFieldViewModel(field, label, recordForm, true); break; } case RecordFieldType.FileRef: { var mask = recordForm.FormService == null ? null : recordForm.FormService.GetDependantValue(field, recordType, recordForm); fieldVm = new FileRefFieldViewModel(field, label, recordForm, mask); break; } case RecordFieldType.BigInt: { fieldVm = new BigIntFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; if (this is PersistentFormField && !explicitFieldType.HasValue) { ((BigIntFieldViewModel)fieldVm).MinValue = Convert.ToInt64(recordService.GetFieldMetadata(field, recordType).MinValue); ((BigIntFieldViewModel)fieldVm).MaxValue = Convert.ToInt64(recordService.GetFieldMetadata(field, recordType).MaxValue); fieldVm.IsNotNullable = recordService.GetFieldMetadata(field, recordType).IsNonNullable; } break; } case RecordFieldType.Decimal: { fieldVm = new DecimalFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; if (this is PersistentFormField && !explicitFieldType.HasValue) { ((DecimalFieldViewModel)fieldVm).MinValue = recordService.GetFieldMetadata(field, recordType).MinValue; ((DecimalFieldViewModel)fieldVm).MaxValue = recordService.GetFieldMetadata(field, recordType).MaxValue; fieldVm.IsNotNullable = recordService.GetFieldMetadata(field, recordType).IsNonNullable; } break; } case RecordFieldType.Double: { fieldVm = new DoubleFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; if (this is PersistentFormField && !explicitFieldType.HasValue) { ((DoubleFieldViewModel)fieldVm).MinValue = Convert.ToDouble(recordService.GetFieldMetadata(field, recordType).MinValue); ((DoubleFieldViewModel)fieldVm).MaxValue = Convert.ToDouble(recordService.GetFieldMetadata(field, recordType).MaxValue); fieldVm.IsNotNullable = recordService.GetFieldMetadata(field, recordType).IsNonNullable; } break; } case RecordFieldType.Money: { fieldVm = new MoneyFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; if (this is PersistentFormField && !explicitFieldType.HasValue) { ((MoneyFieldViewModel)fieldVm).MinValue = recordService.GetFieldMetadata(field, recordType).MinValue; ((MoneyFieldViewModel)fieldVm).MaxValue = recordService.GetFieldMetadata(field, recordType).MaxValue; fieldVm.IsNotNullable = recordService.GetFieldMetadata(field, recordType).IsNonNullable; } break; } case RecordFieldType.Url: { fieldVm = new UrlFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.ActivityParty: { fieldVm = new ActivityPartyFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; break; } case RecordFieldType.Uniqueidentifier: { fieldVm = new UniqueIdentifierFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; break; } } if (fieldVm == null) { fieldVm = new UnmatchedFieldViewModel(field, label, recordForm) { IsRecordServiceField = isRecordServiceField }; } fieldVm.IsEditable = thisFieldEditable; fieldVm.DisplayLabel = DisplayLabel; fieldVm.AltRecordType = AltRecordType; fieldVm.AliasedFieldName = AliasedFieldName; if (!explicitFieldType.HasValue) { var metadata = recordService.GetFieldMetadata(field, recordType); fieldVm.Description = metadata.Description; } return(fieldVm); } catch (Exception ex) { throw new Exception(String.Format("Error creating view model for field {0} in type {1}: {2}", field, recordType, ex.Message), ex); } }
public virtual void LoadPropertyChangedEvent(FieldViewModelBase fieldViewModelBase) { }
private static void PopulateViewModel(FieldViewModelBase field) { if (field.IsEditable) { if (field is StringFieldViewModel) { field.ValueObject = TestConstants.TestingString; } else if (field is BooleanFieldViewModel) { field.ValueObject = true; } else if (field is IntegerFieldViewModel) { field.ValueObject = 1; } else if (field is FolderFieldViewModel) { field.ValueObject = new Folder(TestConstants.TestFolder); } else if (field is PicklistFieldViewModel) { var typed = (PicklistFieldViewModel)field; if (!typed.ItemsSource.Any()) { throw new NullReferenceException(string.Format("No Items In {0} To Populate The Value", typeof(PicklistFieldViewModel).Name)); } field.ValueObject = typed.ItemsSource.First(); } else if (field is RecordTypeFieldViewModel) { var typed = (RecordTypeFieldViewModel)field; if (!typed.ItemsSource.Any()) { throw new NullReferenceException(string.Format("No Items In {0} To Populate The Value", typeof(RecordTypeFieldViewModel).Name)); } if (typed.ItemsSource.Any(it => it.Key == "contact")) { field.ValueObject = typed.ItemsSource.First(it => it.Key == "contact"); } else { field.ValueObject = typed.ItemsSource.First(); } } else if (field is RecordFieldFieldViewModel) { var typed = (RecordFieldFieldViewModel)field; if (!typed.ItemsSource.Any()) { throw new NullReferenceException(string.Format("No Items In {0} To Populate The Value", typeof(RecordFieldFieldViewModel).Name)); } field.ValueObject = typed.ItemsSource.First(); } else if (field is LookupFieldViewModel) { var typed = (LookupFieldViewModel)field; typed.EnteredText = TestConstants.TestingString; typed.Search(); if (!typed.LookupGridViewModel.DynamicGridViewModel.GridRecords.Any()) { throw new NullReferenceException( string.Format("No Items In {0} To Populate The {1} Value For Search String {2}", typeof(LookupGridViewModel).Name, typeof(LookupFieldViewModel).Name, TestConstants.TestingString)); } typed.OnRecordSelected(typed.LookupGridViewModel.DynamicGridViewModel.GridRecords.First().Record); } else if (field is EnumerableFieldViewModel) { var gridSection = (EnumerableFieldViewModel)field; gridSection.AddRow(); var rowViewModel = gridSection.DynamicGridViewModel.GridRecords.First(); foreach (var gridField in rowViewModel.FieldViewModels) { PopulateViewModel(gridField); } } else { throw new NotImplementedException( string.Format("No Logic Implemented To AutoPopulate The Form For Type {0}", field.GetType().Name)); } } }