Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }