public async Task CustomFieldDefitions_CreateAuditField() { var client = await GetTestClientAsync(); const string fieldId = "CX.AUDIT364"; await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId); var description = "AUDIT user id field for 364"; var format = LoanFieldFormat.AUDIT; var audit = new FieldAudit("364", AuditData.UserID); var customField = new CustomFieldDefinition(fieldId, description, format) { Audit = audit }; await client.Settings.Loan.CustomFields.CreateCustomFieldAsync(customField); customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId); Assert.AreEqual(fieldId, customField.Id); Assert.AreEqual(description, customField.Description); Assert.AreEqual(format, customField.Format.EnumValue); Assert.AreEqual(audit.FieldId, customField.Audit.FieldId); Assert.AreEqual(audit.Data.EnumValue, customField.Audit.Data.EnumValue); Assert.IsTrue(await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId)); }
public static IDictionary <string, object> GetUnobtrusiveValidationAtributes(this CustomFieldDefinition field) { var result = new Dictionary <string, object>(); foreach (var rule in field.GetClientValidationRules()) { var prefix = "data-val-" + rule.ValidationType; if (result.ContainsKey(prefix)) { continue; } result.Add(prefix, rule.ErrorMessage ?? String.Empty); foreach (var kvp in rule.ValidationParameters) { result.Add(prefix + "-" + kvp.Key, kvp.Value == null ? String.Empty : kvp.Value.ToString()); } } if (result.Count > 0) { result.Add("data-val", "true"); } return(result); }
internal override Grouping GetSubgrouping(object val) { CustomFieldDefinition defn = CustomFieldsManager.GetCustomFieldDefinition(val.ToString()); return(defn == null ? null : new CustomFieldGrouping(defn, null)); }
protected override void BuildControl(System.Web.Mvc.TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext) { builder.AddCssClass("form-list"); var itemsHtml = new StringBuilder(); var i = 0; foreach (var item in field.SelectionItems) { itemsHtml.AppendLine("<li>"); var checkboxId = field.Name + "_" + i; var checkbox = new TagBuilder("input"); checkbox.MergeAttribute("id", checkboxId); checkbox.MergeAttribute("type", "checkbox"); checkbox.MergeAttribute("name", field.Name); checkbox.MergeAttribute("value", item.Value); var label = new TagBuilder("label"); label.InnerHtml = item.Text; label.AddCssClass("inline"); label.MergeAttribute("for", checkboxId); itemsHtml.AppendLine(checkbox.ToString(TagRenderMode.SelfClosing)); itemsHtml.AppendLine(label.ToString()); itemsHtml.AppendLine("</li>"); i++; } builder.InnerHtml = itemsHtml.ToString(); base.BuildControl(builder, field, value, htmlAttributes, viewContext); }
public async Task CustomFieldDefitions_CreateUpdateAndDelete() { var client = await GetTestClientAsync(); const string fieldId = "CX.ABC"; await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId); var description = "A, B, C"; var format = LoanFieldFormat.DATE; var customField = new CustomFieldDefinition(fieldId, description, format); await client.Settings.Loan.CustomFields.CreateCustomFieldAsync(customField); customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId); Assert.AreEqual(fieldId, customField.Id); Assert.AreEqual(description, customField.Description); Assert.AreEqual(format, customField.Format.EnumValue); description += " easy as 1, 2, 3"; customField.Description = description; await client.Settings.Loan.CustomFields.UpdateCustomFieldAsync(customField); customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId); Assert.AreEqual(fieldId, customField.Id); Assert.AreEqual(description, customField.Description); Assert.AreEqual(format, customField.Format.EnumValue); Assert.IsTrue(await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId)); }
private void SetValue(CustomFieldDefinition definition, Control control, Object value) { switch (definition.Type) { case CustomFieldDefinition.Types.Date: { DateTimePicker dateControl = (DateTimePicker)control; DateTimePicker timeControl = (DateTimePicker)dateControl.Tag; if (value != null) { dateControl.Checked = true; dateControl.Value = (DateTime)value; timeControl.Value = (DateTime)value; } else { dateControl.Checked = false; } } break; case CustomFieldDefinition.Types.String: TextBox textBox = control as TextBox; if (textBox == null) { return; } textBox.Text = (String)value; break; } }
protected virtual void BuildControl(TagBuilder builder, CustomFieldDefinition fieldDefinition, string fieldValue, object htmlAttributes, ViewContext viewContext) { if (htmlAttributes != null) { builder.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes), true); } }
private void btnDelete_Click(object sender, EventArgs e) { CustomFieldDefinition customFieldDefinition = lbCustomFields.SelectedItem as CustomFieldDefinition; if (customFieldDefinition == null) { return; } string name = customFieldDefinition.Name.Ellipsise(50); if (!MainWindow.Confirm(connection, Program.MainWindow, Messages.MESSAGEBOX_CONFIRM, Messages.MESSAGEBOX_DELETE_CUSTOM_FIELD, name)) { return; } int selIdx = lbCustomFields.SelectedIndex; lbCustomFields.Items.RemoveAt(selIdx); DelegatedAsyncAction action = new DelegatedAsyncAction(connection, String.Format(Messages.DELETE_CUSTOM_FIELD, name), String.Format(Messages.DELETING_CUSTOM_FIELD, name), String.Format(Messages.DELETED_CUSTOM_FIELD, name), delegate(Session session) { CustomFieldsManager.RemoveCustomField(session, connection, customFieldDefinition); }); action.RunAsync(); }
private Object GetValue(CustomFieldDefinition definition, Control control) { switch (definition.Type) { case CustomFieldDefinition.Types.Date: { DateTimePicker dateControl = (DateTimePicker)control; if (!dateControl.Checked) { return(null); } DateTimePicker timeControl = (DateTimePicker)dateControl.Tag; DateTime date = dateControl.Value; DateTime time = timeControl.Value; return(new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second)); } case CustomFieldDefinition.Types.String: TextBox textBox = control as TextBox; if (textBox == null) { return(null); } string text = textBox.Text; return(text == "" ? null : text); default: throw new InvalidEnumArgumentException(); } }
protected override void BuildControl(TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, ViewContext viewContext) { builder.MergeAttribute("type", Type, true); if (Type == "text") { builder.MergeAttribute("value", value, true); } base.BuildControl(builder, field, value, htmlAttributes, viewContext); }
private void UpdateFieldTranslation(CustomFieldDefinition original, CustomFieldDefinitionModel translated, string prefix, List <PropertyTranslation> translations) { translations.Add(new PropertyTranslation(prefix + "Label", original.Label, translated.Label)); translations.Add(new PropertyTranslation(prefix + "DefaultValue", original.DefaultValue, translated.DefaultValue)); foreach (var item in translated.SelectionItems) { var originalItem = original.SelectionItems.FirstOrDefault(i => i.Value == item.Value); translations.Add(new PropertyTranslation(prefix + "SelectionItems[" + item.Value + "]", originalItem.Text, item.Text)); } }
private CustomFieldModel MapOrDefault <T>(CustomFieldDefinition definition, T field) where T : ICustomField { if (field == null) { return(new CustomFieldModel { FieldName = definition.Name }); } return(Mapper.Map <T, CustomFieldModel>(field)); }
public CustomFieldGrouping(XmlNode node) : base(node) { foreach (XmlNode childNode in node.ChildNodes) { if (childNode.Name == CustomFieldDefinition.TAG_NAME) { definition = new CustomFieldDefinition(childNode); return; } } throw new Exception(string.Format("Custom field declaration with no {0}", CustomFieldDefinition.TAG_NAME)); }
public IHtmlString Render(CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext) { var container = new TagBuilder("div"); container.AddCssClass("custom-file"); container.Attributes.Add("data-toggle", "fileupload"); var textbox = new TagBuilder("input"); textbox.Attributes.Add("type", "text"); textbox.Attributes.Add("name", field.Name); textbox.MergeAttributes(field.GetUnobtrusiveValidationAtributes()); RouteValueDictionary additionHtmlAttributes = null; if (htmlAttributes != null) { additionHtmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); var databind = additionHtmlAttributes["data-bind"]; if (databind != null) { additionHtmlAttributes.Remove("data-bind"); textbox.MergeAttribute("data-bind", databind.ToString()); } container.MergeAttributes(additionHtmlAttributes); } var button = new TagBuilder("a"); button.AddCssClass("button"); var span = new TagBuilder("span"); var fileInput = new TagBuilder("input"); fileInput.Attributes.Add("type", "file"); fileInput.Attributes.Add("id", field.Name); fileInput.Attributes.Add("name", field.Name); span.InnerHtml = fileInput.ToString(TagRenderMode.SelfClosing); button.InnerHtml = "Browse..." + span.ToString(); container.InnerHtml = String.Concat(textbox.ToString(TagRenderMode.SelfClosing), button.ToString()); return(new HtmlString(container.ToString())); }
private ItemMetadataSchema CreateMetadataSchema() { var customFields = new CustomFieldDefinition[2]; customFields[0] = new CustomFieldDefinition(CUSTOM_FIELD_ID, typeof(ulong)); customFields[1] = new CustomFieldDefinition(CUSTOM_FIELD_TIMESTAMP, typeof(ulong)); var identityRule = new IdentityRule[1]; identityRule[0] = new IdentityRule(new uint[] { CUSTOM_FIELD_ID }); var result = new ItemMetadataSchema(customFields, identityRule); return (result); }
protected override void BuildControl(System.Web.Mvc.TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext) { base.BuildControl(builder, field, value, htmlAttributes, viewContext); var html = new StringBuilder(); html.Append("<option value=\"\"></option>"); foreach (var item in field.SelectionItems) { html.AppendFormat("<option value=\"{0}\">{1}</option>", item.Value, item.Text) .AppendLine(); } builder.InnerHtml = html.ToString(); }
private void btnDelete_Click(object sender, EventArgs e) { CustomFieldDefinition customFieldDefinition = lbCustomFields.SelectedItem as CustomFieldDefinition; if (customFieldDefinition == null) { return; } string name = customFieldDefinition.Name.Ellipsise(50); if (!Program.RunInAutomatedTestMode) { using (var dialog = new WarningDialog(string.Format(Messages.MESSAGEBOX_DELETE_CUSTOM_FIELD, name), ThreeButtonDialog.ButtonYes, ThreeButtonDialog.ButtonNo) { WindowTitle = Messages.MESSAGEBOX_CONFIRM }) { if (dialog.ShowDialog(Program.MainWindow) != DialogResult.Yes) { return; } } } if (connection != null && !connection.IsConnected) { MainWindow.ShowDisconnectedMessage(Program.MainWindow); return; } int selIdx = lbCustomFields.SelectedIndex; lbCustomFields.Items.RemoveAt(selIdx); DelegatedAsyncAction action = new DelegatedAsyncAction(connection, String.Format(Messages.DELETE_CUSTOM_FIELD, name), String.Format(Messages.DELETING_CUSTOM_FIELD, name), String.Format(Messages.DELETED_CUSTOM_FIELD, name), delegate(Session session) { CustomFieldsManager.RemoveCustomField(session, connection, customFieldDefinition); }); action.RunAsync(); }
public virtual IHtmlString Render(CustomFieldDefinition fieldDefinition, string fieldValue, object htmlAttributes, ViewContext viewContext) { var builder = new TagBuilder(TagName); builder.MergeAttribute("name", fieldDefinition.Name); var validationAttributes = fieldDefinition.GetUnobtrusiveValidationAtributes(); if (validationAttributes != null && validationAttributes.Count > 0) { builder.MergeAttributes(validationAttributes, true); } BuildControl(builder, fieldDefinition, fieldValue, htmlAttributes, viewContext); return(new HtmlString(builder.ToString(TagRenderMode))); }
public IHtmlString Render(CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext) { var input = new TagBuilder("input"); input.Attributes.Add("type", "hidden"); input.Attributes.Add("name", field.Name); var text = new TagBuilder("span"); text.InnerHtml = field.DefaultValue; var html = new StringBuilder(); html.AppendLine(input.ToString(TagRenderMode.SelfClosing)); html.AppendLine(text.ToString()); return(new HtmlString(html.ToString())); }
private PropertyAccessor CalcProperty() { if (column.StartsWith(CustomFieldsManager.CUSTOM_FIELD)) { string fieldName = column.Substring(CustomFieldsManager.CUSTOM_FIELD.Length); CustomFieldDefinition customFieldDefinition = CustomFieldsManager.GetCustomFieldDefinition(fieldName); if (customFieldDefinition == null) // a custom field that existed at the time the search was created but no longer exists { return(o => null); } if (customFieldDefinition.Type == CustomFieldDefinition.Types.Date) { return(delegate(IXenObject o) { object val = CustomFieldsManager.GetCustomFieldValue(o, customFieldDefinition); return (DateTime?)(val is DateTime ? val : null); }); } else { return(delegate(IXenObject o) { object val = CustomFieldsManager.GetCustomFieldValue(o, customFieldDefinition); return val == null ? null : val.ToString(); }); } } ColumnNames c; try { c = (ColumnNames)Enum.Parse(typeof(ColumnNames), column); } catch (ArgumentException) { return(null); } PropertyNames propertyName = PropertyAccessors.GetSortPropertyName(c); return(PropertyAccessors.Get(propertyName)); }
private void btnAdd_Click(object sender, EventArgs e) { NewCustomFieldDialog dialog = new NewCustomFieldDialog(connection); if (dialog.ShowDialog() != DialogResult.OK) { return; } CustomFieldDefinition definition = dialog.Definition; DelegatedAsyncAction action = new DelegatedAsyncAction(connection, String.Format(Messages.ADD_CUSTOM_FIELD, definition.Name), String.Format(Messages.ADDING_CUSTOM_FIELD, definition.Name), String.Format(Messages.ADDED_CUSTOM_FIELD, definition.Name), delegate(Session session) { CustomFieldsManager.AddCustomField(session, connection, definition); }); action.RunAsync(); }
internal override QueryFilter GetSubquery(object parent, object val) { System.Diagnostics.Trace.Assert(val != null); CustomFieldDefinition defn = CustomFieldsManager.GetCustomFieldDefinition(definition.Name); System.Diagnostics.Trace.Assert(defn != null); if (defn.Type == CustomFieldDefinition.Types.String) { return(new CustomFieldQuery(defn, (string)val, StringPropertyQuery.PropertyQueryType.exactmatch)); } else if (defn.Type == CustomFieldDefinition.Types.Date) { return(new CustomFieldDateQuery(defn, (DateTime)val, DatePropertyQuery.PropertyQueryType.exact)); } else { return(base.GetSubquery(parent, val)); } }
internal override QueryFilter GetSubquery(object parent, object val) { System.Diagnostics.Trace.Assert(val != null); // Clicked on a key in the tree (which is now in val). if (parent == null) { CustomFieldDefinition defn = CustomFieldsManager.GetCustomFieldDefinition(val.ToString()); System.Diagnostics.Trace.Assert(defn != null); if (defn.Type == CustomFieldDefinition.Types.String) { return(new CustomFieldQuery(defn, String.Empty, StringPropertyQuery.PropertyQueryType.exactmatch)); } else { return(new CustomFieldDateQuery(defn, DateTime.Now, DatePropertyQuery.PropertyQueryType.exact)); } } // Clicked on a value in the tree (key is in parent, value is in val). else { CustomFieldDefinition defn = CustomFieldsManager.GetCustomFieldDefinition(parent.ToString()); System.Diagnostics.Trace.Assert(defn != null); if (defn.Type == CustomFieldDefinition.Types.String) { return(new CustomFieldQuery(defn, val.ToString(), StringPropertyQuery.PropertyQueryType.exactmatch)); } else { return(new CustomFieldDateQuery(defn, (DateTime)val, DatePropertyQuery.PropertyQueryType.exact)); } } }
public async Task CustomFieldDefitions_CreateDropdownField() { var client = await GetTestClientAsync(); const string fieldId = "CX.PETS"; await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId); var description = "Borrower's own pets"; var format = LoanFieldFormat.DROPDOWNLIST; var options = new[] { "Dog", "Cat", "Other", "Multiple" }; var customField = new CustomFieldDefinition(fieldId, description, format) { Options = options }; await client.Settings.Loan.CustomFields.CreateCustomFieldAsync(customField); customField = await client.Settings.Loan.CustomFields.GetCustomFieldAsync(fieldId); Assert.AreEqual(fieldId, customField.Id); Assert.AreEqual(description, customField.Description); Assert.AreEqual(format, customField.Format.EnumValue); CollectionAssert.AreEqual(options, customField.Options.ToList()); Assert.IsTrue(await client.Settings.Loan.CustomFields.DeleteCustomFieldAsync(fieldId)); }
public CustomFieldDateQuery(CustomFieldDefinition definition, DateTime query, DatePropertyQuery.PropertyQueryType type) : base(definition) { this.query = query; this.type = type; }
public CustomFieldQuery(CustomFieldDefinition definition, String query, StringPropertyQuery.PropertyQueryType type) : base(definition) { this.query = query; this.type = type; }
public CustomFieldQueryBase(CustomFieldDefinition definition) { this.definition = definition; }
public CustomFieldDefinition[] getCustomFieldDefinitions() { string[] result = buffer.customFields.Split(new [] { '\r', '\n' }); List<string> list = new List<string>(); for (int i = 0;i < result.Length;i++) { if (!result[i].Equals("")) { list.Add(result[i]); } } CustomFieldDefinition[] definitions = new CustomFieldDefinition[list.Count]; for (int i = 0;i < list.Count; i++) { definitions[i] = new CustomFieldDefinition(list[i]); } return definitions; }
protected override void BuildControl(System.Web.Mvc.TagBuilder builder, CustomFieldDefinition field, string value, object htmlAttributes, System.Web.Mvc.ViewContext viewContext) { base.BuildControl(builder, field, value, htmlAttributes, viewContext); builder.InnerHtml = value; }
private void Rebuild(bool revertValues) { CustomFieldDefinition[] customFieldDefinitions = CustomFieldsManager.GetCustomFields(xenObject.Connection).ToArray(); tableLayoutPanel.SuspendLayout(); // Add new custom fields foreach (CustomFieldDefinition customFieldDefinition in customFieldDefinitions) { Object value = CustomFieldsManager.GetCustomFieldValue(xenObject, customFieldDefinition); if (!controls.ContainsKey(customFieldDefinition)) { // Create the display label Label lblKey = new Label(); lblKey.Text = customFieldDefinition.Name.EscapeAmpersands(); lblKey.Margin = new Padding(3, 7, 3, 3); lblKey.Font = Program.DefaultFont; lblKey.Width = (int)tableLayoutPanel.ColumnStyles[0].Width; lblKey.AutoEllipsis = true; lblKey.AutoSize = false; tableLayoutPanel.Controls.Add(lblKey); // Create value field Control control; switch (customFieldDefinition.Type) { case CustomFieldDefinition.Types.String: TextBox textBox = new TextBox(); textBox.Text = (String)value; tableLayoutPanel.Controls.Add(textBox); tableLayoutPanel.SetColumnSpan(textBox, 2); textBox.Dock = DockStyle.Fill; control = textBox; break; case CustomFieldDefinition.Types.Date: DateTimePicker date = new DateTimePicker(); date.MinDate = DateTime.MinValue; date.MaxDate = DateTime.MaxValue; date.Dock = DockStyle.Fill; date.MinimumSize = new Size(0, 24); date.ShowCheckBox = true; date.Format = DateTimePickerFormat.Long; if (value != null) { date.Value = (DateTime)value; date.Checked = true; } else { date.Checked = false; } tableLayoutPanel.Controls.Add(date); DateTimePicker time = new DateTimePicker(); time.MinDate = DateTime.MinValue; time.MaxDate = DateTime.MaxValue; time.Dock = DockStyle.Fill; time.MinimumSize = new Size(0, 24); time.Format = DateTimePickerFormat.Time; time.ShowUpDown = true; if (value != null) { time.Value = (DateTime)value; time.Enabled = true; } else { time.Enabled = false; } tableLayoutPanel.Controls.Add(time); // Tag so we can remove this control later date.Tag = time; date.ValueChanged += delegate(Object sender, EventArgs e) { time.Enabled = date.Checked; }; control = date; break; default: throw new InvalidEnumArgumentException(); } controls[customFieldDefinition] = new KeyValuePair <Label, Control>(lblKey, control); } else if (revertValues) { KeyValuePair <Label, Control> kvp = controls[customFieldDefinition]; SetValue(customFieldDefinition, kvp.Value, value); } } // Remove old ones CustomFieldDefinition[] definitions = new CustomFieldDefinition[controls.Keys.Count]; controls.Keys.CopyTo(definitions, 0); foreach (CustomFieldDefinition definition in definitions) { if (Array.IndexOf <CustomFieldDefinition>(customFieldDefinitions, definition) > -1) { continue; } KeyValuePair <Label, Control> kvp = controls[definition]; tableLayoutPanel.Controls.Remove(kvp.Value); tableLayoutPanel.Controls.Remove(kvp.Key); DateTimePicker timeControl = kvp.Value.Tag as DateTimePicker; if (timeControl != null) { tableLayoutPanel.Controls.Remove(timeControl); } controls.Remove(definition); kvp.Key.Dispose(); kvp.Value.Dispose(); } tableLayoutPanel.ResumeLayout(); }
public CustomFieldGrouping(CustomFieldDefinition definition, Grouping subgrouping) : base(subgrouping) { this.definition = definition; }