/// <summary> /// 获取表单引用的视图 /// </summary> /// <param name="systemForm"></param> /// <returns></returns> public static List <Guid> GetQueryViewIds(this Domain.SystemForm systemForm) { var form = new FormDescriptor().DeserializeFromJson(systemForm.FormConfig); List <Guid> result = new List <Guid>(); if (form.Panels.NotEmpty()) { //tabs foreach (var tab in form.Panels) { foreach (var sec in tab.Sections) { foreach (var row in sec.Rows) { foreach (var cell in row.Cells) { if (cell.Control.ControlType == FormControlType.SubGrid) { result.Add(new Guid((cell.Control.Parameters as SubGridParameters).ViewId)); } } } } } } return(result); }
public void Initialize(object instance, FormDescriptor form) { foreach (var field in FieldProvider.GetAllFor(form.Id)) { if (field.IsSortable) { PropertySetter.SetProperty(form.Type, instance, field.Id, Activator.CreateInstance(typeof(List <>).MakeGenericType(field.Type))); continue; } var nestedForm = FormProvider.Get(field.Type); if (nestedForm == null) { continue; } var value = Activator.CreateInstance(field.Type); Initialize(value, nestedForm); PropertySetter.SetProperty(form.Type, instance, field.Id, value); } }
public void Deserializes() { var form = new FormDescriptor("lorem", typeof(FormA)); var formProvider = Mock.Of <IFormProvider>(); Mock.Get(formProvider).Setup(p => p.GetAll()).Returns(new List <FormDescriptor> { form }); Mock.Get(formProvider).Setup(p => p.Get("lorem")).Returns(form); var sut = new PolymorphicFormConverter(Mock.Of <ILogger <PolymorphicFormConverter> >(), formProvider); var result = JsonConvert.DeserializeObject <ContentTypeA>("{ form: { formId: 'lorem', value: { property: 'ipsum' } } }", sut); Assert.IsType <FormA>(result.Form); Assert.Equal("ipsum", ((FormA)result.Form).Property); }
public void Serializes() { var form = new FormDescriptor("lorem", typeof(FormA)); var formProvider = Mock.Of <IFormProvider>(); Mock.Get(formProvider).Setup(p => p.GetAll()).Returns(new List <FormDescriptor> { form }); Mock.Get(formProvider).Setup(p => p.Get("lorem")).Returns(form); Mock.Get(formProvider).Setup(p => p.Get(typeof(FormA))).Returns(form); var sut = new PolymorphicFormConverter(Mock.Of <ILogger <PolymorphicFormConverter> >(), formProvider); var result = JsonConvert.SerializeObject(new ContentTypeA { Form = new FormA { Property = "ipsum" } }, sut); Assert.Equal("{\"Form\":{\"FormId\":\"lorem\",\"Value\":{\"Property\":\"ipsum\"}}}", result); }
public void FindsForms() { var contentTypeProvider = Mock.Of <IContentTypeProvider>(); Mock.Get(contentTypeProvider).Setup(p => p.GetAll()).Returns(new List <ContentTypeDescriptor> { }); var formA = new FormDescriptor("lorem", typeof(FormA)); var formB = new FormDescriptor("ipsum", typeof(FormB)); var formProvider = Mock.Of <IFormProvider>(); Mock.Get(formProvider).Setup(p => p.GetAll()).Returns(new List <FormDescriptor> { formA, formB }); var result = new PolymorphicFormFinder(contentTypeProvider, formProvider).FindFor(typeof(FormInterface)); Assert.Equal(new List <string> { "lorem" }, result); }
public static Task <IHtmlContent> FormTwoColumnsAsync <TModel>(this IHtmlHelper <TModel> helper, FormDescriptor descriptor) { var dictionary = new ViewDataDictionary(helper.ViewData) { new KeyValuePair <string, object>(FormDescriptor.DescriptorName, descriptor) }; return(helper.PartialAsync("_FormTwoColumns", helper.ViewData.Model, dictionary)); }
public void DeleteOriginalLabels(Domain.SystemForm original) { var oldForm = new FormDescriptor().DeserializeFromJson(original.FormConfig); List <Guid> objectIds = new List <Guid>(); if (oldForm.Header != null && oldForm.Header.Rows.NotEmpty()) { //header foreach (var row in oldForm.Header.Rows) { foreach (var cell in row.Cells) { if (!cell.Id.Equals(Guid.Empty) && cell.Label.IsNotEmpty()) { objectIds.Add(cell.Id); } } } } if (oldForm.NavGroups.NotEmpty()) { //navs foreach (var navg in oldForm.NavGroups) { if (!navg.Id.Equals(Guid.Empty) && navg.Label.IsNotEmpty()) { objectIds.Add(navg.Id); } foreach (var item in navg.NavItems) { if (!item.Id.Equals(Guid.Empty) && item.Label.IsNotEmpty()) { objectIds.Add(item.Id); } } } } if (oldForm.Panels.NotEmpty()) { //tabs foreach (var tab in oldForm.Panels) { if (!tab.Id.Equals(Guid.Empty) && tab.Label.IsNotEmpty()) { objectIds.Add(tab.Id); } foreach (var sec in tab.Sections) { if (!sec.Id.Equals(Guid.Empty) && sec.Label.IsNotEmpty()) { objectIds.Add(sec.Id); } foreach (var row in sec.Rows) { foreach (var cell in row.Cells) { if (!cell.Id.Equals(Guid.Empty) && cell.Label.IsNotEmpty()) { objectIds.Add(cell.Id); } } } } } } if (oldForm.Footer != null && oldForm.Footer.Rows.NotEmpty()) { //footer foreach (var row in oldForm.Footer.Rows) { foreach (var cell in row.Cells) { if (!cell.Id.Equals(Guid.Empty) && cell.Label.IsNotEmpty()) { objectIds.Add(cell.Id); } } } } if (objectIds.NotEmpty()) { _localizedLabelService.DeleteById(objectIds.ToArray()); } }
/// <summary> /// 生成默认表单 /// </summary> /// <param name="entity"></param> /// <returns></returns> public (Domain.SystemForm DefaultForm, List <Dependency.Domain.Dependency> Dependents) Get(Schema.Domain.Entity entity) { Domain.SystemForm form = new Domain.SystemForm { CanBeDeleted = false, CreatedBy = entity.CreatedBy, CreatedOn = DateTime.Now, Description = _loc["form_default"], EntityId = entity.EntityId, FormType = (int)FormType.Main, Name = entity.LocalizedName, StateCode = RecordState.Enabled, SystemFormId = Guid.NewGuid(), IsDefault = true }; var nameAttribute = _defaultAttributeProvider.GetSysAttributes(entity).Find(x => x.Name.IsCaseInsensitiveEqual("name")); FormDescriptor formObj = new FormDescriptor(); formObj.Name = entity.LocalizedName; formObj.IsShowNav = false; formObj.Panels = new List <PanelDescriptor> { new PanelDescriptor() { Name = _loc["form_information"] , Label = _loc["form_information"] , IsExpanded = true , IsShowLabel = true , IsVisible = true , Sections = new List <SectionDescriptor>() { new SectionDescriptor() { IsShowLabel = false , IsVisible = true , Label = _loc["form_information"] , Columns = 2 , Rows = new List <RowDescriptor>() { new RowDescriptor() { IsVisible = true , Cells = new List <CellDescriptor>() { new CellDescriptor() { IsShowLabel = true, IsVisible = true, Label = nameAttribute.LocalizedName, Control = new ControlDescriptor() { EntityName = entity.Name, Name = "name", ControlType = FormControlType.Standard } } , new CellDescriptor() { Control = new ControlDescriptor() { ControlType = FormControlType.None } } } } } } } } }; form.FormConfig = formObj.SerializeToJson(false); var dp = new Dependency.Domain.Dependency(); //dp.DependentComponentType = DependencyComponentTypes.Get(FormDefaults.ModuleName); dp.DependentObjectId = form.SystemFormId; //dp.RequiredComponentType = DependencyComponentTypes.Get(AttributeDefaults.ModuleName); dp.RequiredObjectId = nameAttribute.AttributeId; var dependents = new List <Dependency.Domain.Dependency>() { dp }; return(form, dependents); }