示例#1
0
 public PageMainTemplate(IonicCompile ionicCompile, ScreenDefinition screenDef, ProjectDocument doc)
 {
     this.Compile   = ionicCompile;
     this.ScreenDef = screenDef;
     this.Documnet  = doc;
     Initial();
 }
示例#2
0
 public ModelTemplate(IonicCompile ionicCompile, ProjectDocument doc, EntityDefinition def)
 {
     this.Compile   = ionicCompile;
     this.Documnet  = doc;
     this.EntityDef = def;
     InitialMembers();
 }
示例#3
0
        public override void Build(CompileBase compile, ProjectDocument doc)
        {
            IonicCompile ionicCompile = compile as IonicCompile;

            BuildProjectConfig(ionicCompile);
            BuildPlatformConfig(ionicCompile);
            BuildEntityDefinition(ionicCompile);
        }
示例#4
0
        /// <summary>
        /// 生成项目配置文件
        /// </summary>
        /// <param name="ionicCompile"></param>
        private void BuildProjectConfig(IonicCompile ionicCompile)
        {
            StringBuilder sb = new StringBuilder();

            using (StringWriter sw = new StringWriter(sb))
            {
                JsonWriter jsonWriter = new JsonTextWriter(sw);
                jsonWriter.Formatting = Formatting.Indented;

                var frontConfig = ionicCompile.Project.Configures.OfType <FrontEndConfigure>().FirstOrDefault();
                //创建配置对象
                jsonWriter.WriteStartObject();
                #region
                jsonWriter.WritePropertyName("projectid");
                jsonWriter.WriteValue(ionicCompile.ProjectId);
                jsonWriter.WritePropertyName("name");
                jsonWriter.WriteValue(ionicCompile.Project.Identity);
                jsonWriter.WritePropertyName("title");
                jsonWriter.WriteValue(ionicCompile.Project.Root.Title);
                jsonWriter.WritePropertyName("desc");
                jsonWriter.WriteValue(ionicCompile.Project.Description);
                jsonWriter.WritePropertyName("api_endpoint");
                jsonWriter.WriteValue(frontConfig.ServerUrl + "odata" + "/" + ionicCompile.Project.Identity);
                #endregion
                jsonWriter.WriteEndObject();

                //获取JSON串
                string output = sw.ToString();
                jsonWriter.Close();
                sw.Close();

                var    targetDirectory = new System.IO.FileInfo(new Uri(this.GetType().Assembly.CodeBase).AbsolutePath).Directory.FullName;
                string outputPath      = Path.Combine(targetDirectory.Replace("\\Wilmar.Service\\bin\\Extension", ""), @"Wilmar.Mobile\src\config", ionicCompile.Project.Identity);
                outputPath = HttpUtility.UrlDecode(outputPath);
                if (!Directory.Exists(outputPath))
                {
                    Directory.CreateDirectory(outputPath);
                }

                var file = Path.Combine(outputPath, ionicCompile.Project.Identity + ".config.ts");
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
                string content = string.Format("export const {0}_CONFIG=", ionicCompile.Project.Identity.ToUpper()) + output;
                File.WriteAllText(file, content, System.Text.UTF8Encoding.UTF8);

                var devFile = Path.Combine(outputPath, ionicCompile.Project.Identity + ".config.dev.ts");
                if (File.Exists(devFile))
                {
                    File.Delete(devFile);
                }
                string devContent = string.Format("export const {0}_CONFIG=", ionicCompile.Project.Identity.ToUpper()) + output;
                File.WriteAllText(devFile, devContent, System.Text.UTF8Encoding.UTF8);
            }
        }
示例#5
0
        /// <summary>
        /// 生成平台配置文件
        /// </summary>
        /// <param name="ionicCompile"></param>
        private void BuildPlatformConfig(IonicCompile ionicCompile)
        {
            StringBuilder sb = new StringBuilder();

            using (StringWriter sw = new StringWriter(sb))
            {
                JsonWriter jsonWriter = new JsonTextWriter(sw);
                jsonWriter.Formatting = Formatting.Indented;

                var frontConfig = ionicCompile.Project.Configures.OfType <FrontEndConfigure>().FirstOrDefault();
                //创建配置对象
                jsonWriter.WriteStartObject();
                #region
                jsonWriter.WritePropertyName("name");
                jsonWriter.WriteValue("kds3.0 Mobile");
                jsonWriter.WritePropertyName("title");
                jsonWriter.WriteValue("kds3.0 移动端");
                jsonWriter.WritePropertyName("version");
                jsonWriter.WriteValue("1.0.0");
                jsonWriter.WritePropertyName("desc");
                jsonWriter.WriteValue("kds3.0 移动端平台系统");
                jsonWriter.WritePropertyName("logo");
                jsonWriter.WriteValue("kds3.0 logo");

                jsonWriter.WritePropertyName("startup_page");
                jsonWriter.WriteValue(ionicCompile.Project.Identity);
                jsonWriter.WritePropertyName("login_page");
                jsonWriter.WriteValue("Login");

                jsonWriter.WritePropertyName("auth_endpoint");
                jsonWriter.WriteValue(frontConfig.ServerUrl);
                #endregion
                jsonWriter.WriteEndObject();

                //获取JSON串
                string output = sw.ToString();
                jsonWriter.Close();
                sw.Close();

                var    targetDirectory = new System.IO.FileInfo(new Uri(this.GetType().Assembly.CodeBase).AbsolutePath).Directory.FullName;
                string outputPath      = Path.Combine(targetDirectory.Replace("\\Wilmar.Service\\bin\\Extension", ""), @"Wilmar.Mobile\src\config", "platform");
                outputPath = HttpUtility.UrlDecode(outputPath);
                var file = Path.Combine(outputPath, "platform.config.ts");
                if (!Directory.Exists(outputPath))
                {
                    Directory.CreateDirectory(outputPath);
                }
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
                string content = string.Format("export const PLATFORM_CONFIG=") + output;
                File.WriteAllText(file, content, System.Text.UTF8Encoding.UTF8);
            }
        }
示例#6
0
文件: BuildComm.cs 项目: gyb333/KDS3
        /// <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);
        }
示例#7
0
文件: BuildComm.cs 项目: gyb333/KDS3
        /// <summary>
        /// 生成属性
        /// </summary>
        public static Dictionary <string, MetaDataProperty> RegisterPropertys(IonicCompile ionicCompile, ScreenDefinition screenDef, ProjectDocument doc)
        {
            Dictionary <string, MetaDataProperty> PropertyData = new Dictionary <string, MetaDataProperty>();
            var items = screenDef.Children.Where(a => a.MemberType == EMemberType.Property).ToList();

            foreach (var item in items)
            {
                MetaDataProperty propertyMember = GetPropertyContent(item);
                PropertyData.Add(item.Name, propertyMember);
            }
            return(PropertyData);
        }
示例#8
0
文件: BuildComm.cs 项目: gyb333/KDS3
        /// <summary>
        /// 生成数据集
        /// </summary>
        /// <param name="ionicCompile"></param>
        /// <param name="screenDef"></param>
        /// <param name="doc"></param>
        /// <returns></returns>
        public static Dictionary <string, MetaDataDataSet> RegisterDataSets(IonicCompile ionicCompile, ScreenDefinition screenDef, ProjectDocument doc)
        {
            Dictionary <string, MetaDataDataSet> DataSetData = new Dictionary <string, MetaDataDataSet>();
            var items = screenDef.Children.Where(a => a.MemberType == EMemberType.DataSet || a.MemberType == EMemberType.Objects).ToList();

            foreach (var item in items)
            {
                if (item.MemberType == EMemberType.DataSet)
                {
                    #region 远程数据集(有实体)
                    DataSet dats       = item as DataSet;
                    var     entityItem = ionicCompile.ProjectItems.Where(a => a.Value.DocumentType == GlobalIds.DocumentType.Entity && a.Key == dats.EntityId).FirstOrDefault();
                    if (entityItem.Value != null)
                    {
                        MetaDataDataSet metaDataSet = BuildMetaDataDataSet(entityItem.Value.Name, item);
                        if (metaDataSet != null)
                        {
                            DataSetData.Add(item.Name, metaDataSet);
                        }
                    }
                    #endregion
                }
                else
                {
                    Objects objs       = item as Objects;
                    var     entityItem = ionicCompile.ProjectItems.Where(a => a.Value.DocumentType == GlobalIds.DocumentType.Entity && a.Key == objs.EntityId).FirstOrDefault();
                    if (entityItem.Value != null)
                    {
                        #region 本地对象(有实体)
                        MetaDataDataSet metaDataSet = BuildMetaDataDataSet(entityItem.Value.Name, item);
                        if (metaDataSet != null)
                        {
                            DataSetData.Add(item.Name, metaDataSet);
                        }
                        #endregion
                    }
                    else
                    {
                        #region 本地对象(无实体)
                        MetaDataDataSet metaDataSet = BuildMetaDataDataSet("", item);
                        if (metaDataSet != null)
                        {
                            DataSetData.Add(item.Name, metaDataSet);
                        }
                        #endregion
                    }
                }
            }
            return(DataSetData);
        }
示例#9
0
文件: BuildComm.cs 项目: gyb333/KDS3
        /// <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);
        }
示例#10
0
文件: BuildComm.cs 项目: gyb333/KDS3
        /// <summary>
        /// 生成屏幕参数
        /// </summary>
        /// <param name="ionicCompile"></param>
        /// <param name="screenDef"></param>
        /// <param name="doc"></param>
        /// <returns></returns>
        public static Dictionary <string, MetaDataScreenParam> RegisterScreenParams(IonicCompile ionicCompile, ScreenDefinition screenDef, ProjectDocument doc)
        {
            Dictionary <string, MetaDataScreenParam> ScreenParamData = new Dictionary <string, MetaDataScreenParam>();
            var           items        = screenDef.Children.Where(a => a.MemberType == EMemberType.ScreenParameters).ToList();
            StringBuilder screenParams = new StringBuilder();

            foreach (var item in items)
            {
                string parasStr = GetParameterContent(item);
                if (!string.IsNullOrEmpty(parasStr))
                {
                    parasStr = parasStr.Substring(0, parasStr.Length - 3);
                }
                screenParams.Append(parasStr);
            }
            var ScreenParamMember = new MetaDataScreenParam
            {
                Content = screenParams.ToString()
            };

            ScreenParamData.Add(doc.Name, ScreenParamMember);
            return(ScreenParamData);
        }
示例#11
0
        /// <summary>
        /// 生成实体对应模型
        /// </summary>
        /// <param name="ionicCompile"></param>
        private void BuildEntityDefinition(IonicCompile ionicCompile)
        {
            var    targetDirectory = new System.IO.FileInfo(new Uri(this.GetType().Assembly.CodeBase).AbsolutePath).Directory.FullName;
            string outputPath      = Path.Combine(targetDirectory.Replace("\\Wilmar.Service\\bin\\Extension", ""), @"Wilmar.Mobile\src\projects", ionicCompile.Project.Identity, "models");

            outputPath = HttpUtility.UrlDecode(outputPath);
            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }
            //生成实体文件
            var entityItems = ionicCompile.ProjectItems.Where(a => a.Value.DocumentType == GlobalIds.DocumentType.Entity).ToList();

            foreach (var entityItem in entityItems)
            {
                ProjectDocument doc  = entityItem.Value as ProjectDocument;
                var             def  = ionicCompile.GetDocumentBody(entityItem.Value) as EntityDefinition;
                var             file = Path.Combine(outputPath, doc.Name + ".ts");
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
                string content = new ModelTemplate(ionicCompile, doc, def).TransformText();
                File.WriteAllText(file, content, System.Text.UTF8Encoding.UTF8);
            }
            //生成Container文件
            var ContainerFile = Path.Combine(outputPath, ionicCompile.Project.Identity + ".container.ts");

            if (File.Exists(ContainerFile))
            {
                File.Delete(ContainerFile);
            }
            string Container = new PageContainerTemplate(ionicCompile).TransformText();

            File.WriteAllText(ContainerFile, Container, System.Text.UTF8Encoding.UTF8);
        }
示例#12
0
 public PageContainerTemplate(IonicCompile ionicCompile)
 {
     this.Compile = ionicCompile;
     Initial();
 }
示例#13
0
 public ModuleTemplate(IonicCompile ionicCompile, ProjectDocument doc)
 {
     this.Compile  = ionicCompile;
     this.Documnet = doc;
     Initial();
 }