/// <summary> /// Initializes a new instance of the <see cref="AutoCompleteColumnDefinition"/> class. /// </summary> /// <param name="header">The column header text.</param> /// <param name="idProperty">The integer property bound to the selected item.</param> /// <param name="stringProperty">The string property bound to the displayed text.</param> /// <param name="metadata">Information about the data for the column.</param> /// <param name="searchFunction">Function to call to provide suggestions for current text.</param> /// <param name="lookupLabelFunction">Function to call to get text for the selected item.</param> public AutoCompleteColumnDefinition(string header, ModelProperty idProperty, ModelProperty stringProperty, StringFieldMetadata metadata, Func <string, IEnumerable <LookupItem> > searchFunction, Func <int, string> lookupLabelFunction) : base(header, idProperty) { _metadata = metadata; _stringProperty = stringProperty; _searchFunction = searchFunction; _lookupLabelFunction = lookupLabelFunction; }
/// <summary> /// Initializes a new instance of the <see cref="AutoCompleteFieldViewModel"/> class. /// </summary> /// <param name="label">The field label.</param> /// <param name="metadata">Information about the field.</param> /// <param name="searchFunction">Function to call to provide suggestions for current text.</param> /// <param name="lookupLabelFunction">Function to call to get text for <see cref="SelectedId"/>.</param> public AutoCompleteFieldViewModel(string label, StringFieldMetadata metadata, Func <string, IEnumerable <LookupItem> > searchFunction, Func <int, string> lookupLabelFunction) : base(label, metadata.MaxLength) { IsTextBindingDelayed = true; _searchFunction = searchFunction; _lookupLabelFunction = lookupLabelFunction; // subscribe to our own PropertyChanged so we can benefit from the IsTextBindingDelayed AddPropertyChangedHandler(TextProperty, OnTextChanged); }
/// <summary> /// Initializes a new instance of the <see cref="SecretTextFieldViewModel"/> class. /// </summary> /// <param name="label">The field label.</param> /// <param name="metadata">Information about the field.</param> public SecretTextFieldViewModel(string label, StringFieldMetadata metadata) : this(label, metadata.MaxLength) { }
/// <summary> /// Initializes a new instance of the <see cref="TextFieldViewModel"/> class. /// </summary> /// <param name="label">The field label.</param> /// <param name="metadata">Information about the field.</param> public TextFieldViewModel(string label, StringFieldMetadata metadata) : base(label, metadata.MaxLength) { IsMultiline = metadata.IsMultiline; }
public static IDictionary <int, FieldMetadata> ExtractFieldMetadataFromExcel(string excelFile, LogController controller, IEnumerable <PicklistOptionSet> picklistOptionSets, CustomisationImportResponse response) { var rows = ExcelUtility.SelectPropertyBagsFromExcelTab(excelFile, FieldsTabName); var fields = new Dictionary <int, FieldMetadata>(); foreach (var row in rows) { if (row.GetColumnNames().Contains(Headings.Fields.Ignore) && row.GetFieldAsBoolean(Headings.Fields.Ignore)) { continue; } var fieldSchemaName = row.GetFieldAsString(Headings.Fields.SchemaName); FieldMetadata fieldMetadata = null; try { var type = row.GetFieldAsEnum <RecordFieldType>(Headings.Fields.FieldType); if (!String.IsNullOrWhiteSpace(fieldSchemaName)) { var recordTypeSchemaName = row.GetFieldAsString(Headings.Fields.RecordTypeSchemaName); var displayName = row.GetFieldAsString(Headings.Fields.DisplayName); if (string.IsNullOrWhiteSpace(displayName)) { throw new NullReferenceException(string.Format("{0} Is Required", Headings.Fields.DisplayName)); } switch (type) { case (RecordFieldType.Boolean): { fieldMetadata = new BooleanFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); break; } case (RecordFieldType.Date): { fieldMetadata = new DateFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); fieldMetadata.IncludeTime = row.GetFieldAsBoolean(Headings.Fields.IncludeTime); var dateBehaviour = !row.GetColumnNames().Contains(Headings.Fields.DateBehaviour) || string.IsNullOrWhiteSpace(row.GetFieldAsString(Headings.Fields.DateBehaviour)) ? "UserLocal" : row.GetFieldAsString(Headings.Fields.DateBehaviour); fieldMetadata.DateBehaviour = dateBehaviour; break; } case (RecordFieldType.Decimal): { fieldMetadata = new DecimalFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); fieldMetadata.MinValue = row.GetFieldAsDecimal(Headings.Fields.Minimum); fieldMetadata.MaxValue = row.GetFieldAsDecimal(Headings.Fields.Maximum); fieldMetadata.DecimalPrecision = row.GetFieldAsInteger(Headings.Fields.DecimalPrecision); break; } case (RecordFieldType.Integer): { fieldMetadata = new IntegerFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); fieldMetadata.MinValue = row.GetFieldAsInteger(Headings.Fields.Minimum); fieldMetadata.MaxValue = row.GetFieldAsInteger(Headings.Fields.Maximum); fieldMetadata.IntegerFormat = !row.GetColumnNames().Contains(Headings.Fields.IntegerFormat) || string.IsNullOrWhiteSpace(row.GetFieldAsString(Headings.Fields.IntegerFormat)) ? IntegerType.None : row.GetFieldAsEnum <IntegerType>(Headings.Fields.IntegerFormat); break; } case (RecordFieldType.Lookup): { fieldMetadata = new LookupFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName, row.GetFieldAsString(Headings.Fields.ReferencedRecordType)) { DisplayInRelated = row.GetFieldAsBoolean(Headings.Fields.DisplayInRelated) }; break; } case (RecordFieldType.Money): { fieldMetadata = new MoneyFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); fieldMetadata.MinValue = row.GetFieldAsDecimal(Headings.Fields.Minimum); fieldMetadata.MaxValue = row.GetFieldAsDecimal(Headings.Fields.Maximum); break; } case (RecordFieldType.Picklist): { fieldMetadata = new PicklistFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); var pFieldMetadata = (PicklistFieldMetadata)fieldMetadata; var optionSetName = row.GetFieldAsString(Headings.Fields.PicklistOptions); var optionSet = new PicklistOptionSet(); if (!string.IsNullOrWhiteSpace(optionSetName)) { if (picklistOptionSets.Any(p => p.DisplayName == optionSetName)) { optionSet = picklistOptionSets.First(p => p.DisplayName == optionSetName); } } pFieldMetadata.PicklistOptionSet = optionSet; pFieldMetadata.IsMultiSelect = row.GetColumnNames().Contains(Headings.Fields.IsMultiSelect) && row.GetFieldAsBoolean(Headings.Fields.IsMultiSelect); break; } case (RecordFieldType.String): { fieldMetadata = new StringFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName) { IsPrimaryField = row.GetFieldAsBoolean(Headings.Fields.IsPrimaryField) }; fieldMetadata.MaxLength = row.GetFieldAsInteger(Headings.Fields.MaxLength); fieldMetadata.TextFormat = string.IsNullOrWhiteSpace(row.GetFieldAsString(Headings.Fields.TextFormat)) ? TextFormat.Text : row.GetFieldAsEnum <TextFormat>(Headings.Fields.TextFormat); break; } case RecordFieldType.Memo: { fieldMetadata = new MemoFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); fieldMetadata.MaxLength = row.GetFieldAsInteger(Headings.Fields.MaxLength); break; } case RecordFieldType.Status: { fieldMetadata = new StatusFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName, null); break; } case (RecordFieldType.Double): { fieldMetadata = new DoubleFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); fieldMetadata.MinValue = row.GetFieldAsDecimal(Headings.Fields.Minimum); fieldMetadata.MaxValue = row.GetFieldAsDecimal(Headings.Fields.Maximum); fieldMetadata.DecimalPrecision = row.GetFieldAsInteger(Headings.Fields.DecimalPrecision); break; } case (RecordFieldType.Uniqueidentifier): { fieldMetadata = new UniqueidentifierFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); break; } case (RecordFieldType.State): { fieldMetadata = new StateFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); break; } case (RecordFieldType.BigInt): { fieldMetadata = new BigIntFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName); break; } case (RecordFieldType.Customer): { fieldMetadata = new CustomerFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName) { DisplayInRelated = row.GetFieldAsBoolean(Headings.Fields.DisplayInRelated) }; break; } case (RecordFieldType.Owner): { fieldMetadata = new OwnerFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName) { DisplayInRelated = row.GetFieldAsBoolean(Headings.Fields.DisplayInRelated) }; break; } default: { fieldMetadata = new AnyFieldMetadata(recordTypeSchemaName, fieldSchemaName, displayName, type); break; } } fieldMetadata.Description = row.GetFieldAsString(Headings.Fields.Description); fieldMetadata.IsMandatory = row.GetFieldAsBoolean(Headings.Fields.IsMandatory); fieldMetadata.Audit = row.GetFieldAsBoolean(Headings.Fields.Audit); fieldMetadata.Searchable = row.GetFieldAsBoolean(Headings.Fields.Searchable); fields.Add(row.Index + 1, fieldMetadata); } } catch (Exception ex) { response.AddResponseItem(row.Index + 1, fieldMetadata, ex); } } return(fields); }
/// <summary> /// Initializes a new instance of the <see cref="TextColumnDefinition"/> class. /// </summary> /// <param name="header">The column header text.</param> /// <param name="sourceProperty">The property bound to the column.</param> /// <param name="metadata">Information about the data for the column.</param> public TextColumnDefinition(string header, ModelProperty sourceProperty, StringFieldMetadata metadata) : base(header, sourceProperty) { _metadata = metadata; }
/// <summary> /// Initializes a new instance of the <see cref="TextColumnDefinition"/> class. /// </summary> /// <param name="header">The column header text.</param> /// <param name="sourceProperty">The property bound to the column.</param> /// <param name="metadata">Information about the data for the column.</param> /// <param name="converter">Converter to format text.</param> public TextColumnDefinition(string header, ModelProperty sourceProperty, StringFieldMetadata metadata, IConverter converter) : this(header, sourceProperty, metadata) { _converter = converter; }