/// <summary> /// 生成方法 /// </summary> public static Dictionary <string, MetaDataMethod> RegisterMethods(IonicCompile ionicCompile, ScreenDefinition screenDef, ProjectDocument doc) { Dictionary <string, MetaDataMethod> MethodData = new Dictionary <string, MetaDataMethod>(); var items = screenDef.Children.Where(a => a.MemberType == EMemberType.Method).ToList(); foreach (var item in items) { MetaDataMethod methodMember = GetMethodContent(item); MethodData.Add(item.Name, methodMember); } return(MethodData); }
/// <summary> /// 事件生成 /// </summary> /// <param name="ionicCompile"></param> /// <param name="screenDef"></param> /// <param name="doc"></param> /// <returns></returns> public static Dictionary <string, MetaDataMethod> RegisterEvents(IonicCompile ionicCompile, ScreenDefinition screenDef, ProjectDocument doc) { Dictionary <string, MetaDataMethod> EventData = new Dictionary <string, MetaDataMethod>(); var items = screenDef.Children.Where(a => a.MemberType == EMemberType.Events).ToList(); foreach (var item in items) { foreach (var child in item.Children) { MetaDataMethod eventMember = GetEventContent(child); if (eventMember != null) { EventData.Add(child.Name, eventMember); } } } return(EventData); }
private static MetaDataMethod GetMethodContent(MemberBase mb) { var item = mb as Method; string parms = string.Empty, parmsBind = string.Empty; #region StringBuilder methodArg = new StringBuilder(); StringBuilder methodArgBind = new StringBuilder(); StringBuilder argBind = new StringBuilder(); foreach (var child in item.Children) { var para = child as Parameter; //var DataType = BuildCommonMethod.GetTypeNameByIon(para.DataType.Value); var DataType = "any"; if (child.MemberType == EMemberType.Parameter) { methodArg.Append(para.Name + ":" + DataType + ","); string bindProp = para.Path == null ? "" : para.Path.Replace("CurrentItem", "SelectedItem"); argBind.Append("{ name:\"" + para.Name + "\"," + "bindProperty:\"" + bindProp + "\" },"); } } if (!string.IsNullOrEmpty(argBind.ToString())) { methodArgBind.Append(argBind.ToString().Substring(0, argBind.ToString().Length - 1)); parmsBind = methodArgBind.ToString(); } if (!string.IsNullOrEmpty(methodArg.ToString())) { parms = methodArg.ToString().Substring(0, methodArg.Length - 1); } #endregion var MethodMember = new MetaDataMethod { Name = item.Name, Title = item.Title, Body = item.Body == null ? "" : item.Body, Params = parms, ParamsBind = parmsBind }; return(MethodMember); }
private static MetaDataDataSet BuildMetaDataDataSet(string entityName, MemberBase memberBase) { string optionStr = string.Empty, dataSetType = string.Empty; StringBuilder options = new StringBuilder(); dynamic dats = memberBase as DataSet; if (memberBase.MemberType == EMemberType.DataSet) { dats = memberBase as DataSet; if (dats.EntityId > 0) { if (dats.IsCollection) { dataSetType = "RemoteDataSet"; } else { dataSetType = "RemoteDataObject"; } } else { if (dats.IsCollection) { dataSetType = "LocalDataSet"; } else { dataSetType = "LocalDataObject"; } } options.AppendLine("refreshOnLoaded:true,"); } else { dats = memberBase as Objects; if (dats.EntityId > 0) { if (dats.IsCollection) { dataSetType = "RemoteDataSet"; } else { dataSetType = "RemoteDataObject"; } } else { if (dats.IsCollection) { dataSetType = "LocalDataSet"; } else { dataSetType = "LocalDataObject"; } } } #region 过滤条件 string filters = GetFilterContent(dats); if (!string.IsNullOrEmpty(filters)) { options.AppendLine($"where:{filters},"); } #endregion #region 数据集中的属性,方法,事件,选中项中的数据成员/方法/展开成员 StringBuilder expand = new StringBuilder(); List <MetaDataProperty> listProperty = new List <MetaDataProperty>(); List <MetaDataMethod> listMethod = new List <MetaDataMethod>(); List <MetaDataMethod> listEvent = new List <MetaDataMethod>(); List <MetaDataProperty> listSelectedItemMember = new List <MetaDataProperty>(); List <MetaDataMethod> listSelectedItemMethod = new List <MetaDataMethod>(); foreach (var child in dats.Children) { if (child.MemberType == EMemberType.Property) { MetaDataProperty propertyMember = GetPropertyContent(child); listProperty.Add(propertyMember); } else if (child.MemberType == EMemberType.Method) { MetaDataMethod methodMember = GetMethodContent(child); listMethod.Add(methodMember); } else if (child.MemberType == EMemberType.Events) { foreach (var evt in child.Children) { MetaDataMethod eventMember = GetEventContent(evt); if (eventMember != null) { listEvent.Add(eventMember); } } } else if (child.MemberType == EMemberType.SelectedItem) { foreach (var item in child.Children) { if (item.MemberType == EMemberType.DataMember) { MetaDataProperty propertyMember = GetDataMemberContent(item); listSelectedItemMember.Add(propertyMember); } else if (item.MemberType == EMemberType.Method) { MetaDataMethod methodMember = GetMethodContent(item); listSelectedItemMethod.Add(methodMember); } else if (item.MemberType == EMemberType.NavigateMember) { GetExpandContent(item, expand, ""); } } } else if (child.MemberType == EMemberType.QueryParameters) { StringBuilder queryParas = new StringBuilder(); string parasStr = GetParameterContent(child); if (!string.IsNullOrEmpty(parasStr)) { parasStr = parasStr.Substring(0, parasStr.Length - 3); } queryParas.AppendLine("parameters:{"); queryParas.AppendLine(parasStr); queryParas.AppendLine("},"); options.Append(queryParas); } } if (!string.IsNullOrEmpty(expand.ToString())) { string expandStr = expand.ToString().Substring(0, expand.ToString().Length - 1); options.AppendLine($"orderBy:[{expandStr.ToString()}],"); } #endregion #region 排序 StringBuilder orderByStr = new StringBuilder(); foreach (var sort in dats.Sorts) { string sortStr = string.Format("{0} {1}", sort.Name, sort.Direction == 0 ? "asc" : "desc"); if (orderByStr.ToString().Length == 0) { orderByStr.Append("\"" + sortStr + "\""); } else { orderByStr.Append(",\"" + sortStr + "\""); } } if (!string.IsNullOrEmpty(orderByStr.ToString())) { options.AppendLine($"expand:[{orderByStr.ToString()}],"); } #endregion if (!string.IsNullOrEmpty(options.ToString())) { optionStr = options.ToString().Substring(0, options.ToString().Length - 3); } var DataSetMember = new MetaDataDataSet { Type = dataSetType, Name = dats.Name, Title = dats.Title, EntityName = entityName, Options = optionStr, DataPropertys = listProperty, DataMethods = listMethod, DataEvents = listEvent, SelectedItemMembers = listSelectedItemMember, SelectedItemMethods = listSelectedItemMethod }; return(DataSetMember); }
private static MetaDataMethod GetEventContent(MemberBase mb) { var item = mb as Event; #region string methodName = item.Name; if (item.Name.ToLower() == "loading") { methodName = "viewWillEnter"; } else if (item.Name.ToLower() == "loaded") { methodName = "viewDidLoad"; } else if (item.Name.ToLower() == "closeing") { methodName = "viewWillLeave"; } else if (item.Name.ToLower() == "closed") { methodName = "viewDidLeave"; } else if (item.Name.ToLower() == "saveing") { methodName = "onSaving"; } else if (item.Name.ToLower() == "saved") { methodName = "onSaved"; } else if (item.Name.ToLower() == "datachange") { methodName = "onDataChanged"; } else if (item.Name.ToLower() == "loading") { methodName = "onDataLoading"; } else if (item.Name.ToLower() == "loaded") { methodName = "onDataLoaded"; } string body = item.Body == null ? "" : item.Body; if (!string.IsNullOrEmpty(body)) { StringBuilder methodBody = new StringBuilder(); methodBody.AppendLine("super." + methodName + "();"); methodBody.AppendLine(body); var EventMember = new MetaDataMethod { Name = methodName, Title = item.Title, Body = methodBody.ToString(), Params = "", ParamsBind = "" }; return(EventMember); } #endregion return(null); }