Пример #1
0
        /// <summary>
        /// 生成逻辑
        /// </summary>
        /// <param name="body">屏幕定义对象</param>
        public override string Build(object body)
        {
            try
            {
                var screenDefinition = body as ScreenDefinition;
                if (screenDefinition == null)
                {
                    return(string.Empty);
                }

                ControlHost controlHost = screenDefinition.Root;
                using (var writer = new StringWriter())
                {
                    //根据屏幕生成HTML
                    var xmlWriter = new HtmlTextWriter(writer);
                    xmlWriter.AddAttribute("dojoType", "dojox/mvc/Group");
                    xmlWriter.AddAttribute("style", "width:100%;height:100%;");
                    xmlWriter.AddAttribute("class", "groupDiv");
                    xmlWriter.RenderBeginTag("div");

                    var builder = controlHost.GetBuilder(true, screenDefinition, null, null, null, xmlWriter);
                    builder.Build();

                    xmlWriter.RenderEndTag();

                    return(writer.ToString().Replace(System.Environment.NewLine, ""));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #2
0
        /// <summary>
        /// 生成逻辑
        /// </summary>
        /// <param name="body">屏幕定义对象</param>
        public override string Build(object body)
        {
            try
            {
                var screenDefinition = body as ScreenDefinition;
                if (screenDefinition == null)
                {
                    return(string.Empty);
                }

                ControlHost controlHost = screenDefinition.Root;
                using (var writer = new StringWriter())
                {
                    //根据屏幕生成HTML
                    var xmlWriter = new HtmlTextWriter(writer);

                    var builder = controlHost.GetBuilder(true, screenDefinition, null, null, null, xmlWriter);
                    builder.Build();

                    return(writer.ToString().Replace(System.Environment.NewLine, ""));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #3
0
        /// <summary>
        /// 生成HTML
        /// </summary>
        /// <param name="name">屏幕名称</param>
        /// <param name="controlHost">控件基类</param>
        /// <param name="compile">编译基类</param>
        /// <param name="screenDef">屏幕定义</param>
        /// <param name="doc">项目文档</param>
        private void BuildHtml(ControlHost controlHost, CompileBase compile, ScreenDefinition screenDef, ProjectDocument doc)
        {
            using (var writer = new StringWriter())
            {
                var ionicCompile = compile as IonicCompile;
                Dictionary <int, Tuple <int, string> > itemPermissionData = new Dictionary <int, Tuple <int, string> >();

                var xmlWriter = new HtmlTextWriter(writer);
                var builder   = controlHost.GetBuilder(false, screenDef, compile, doc, itemPermissionData, xmlWriter);
                builder.Build();

                //生成文件全路径
                string fileName   = doc.Name;
                string outputPath = ionicCompile.OutputPath + "\\" + fileName;
                if (!Directory.Exists(outputPath))
                {
                    Directory.CreateDirectory(outputPath);
                }
                var file = Path.Combine(outputPath, fileName + ".html");
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
                //创建HTML文件
                File.WriteAllText(file, writer.ToString(), System.Text.UTF8Encoding.UTF8);

                //启动屏幕名字暂时固定
                //projets/pages中启动屏幕不生成TS文件,TS文件在外部生成
                if (fileName.ToLower() != "startuppage")
                {
                    //生成JS
                    this.BuildJs(compile, screenDef, doc);
                    //生成CSS
                    this.BuildCss(compile, screenDef, doc);
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 生成HTML
        /// </summary>
        /// <param name="name">屏幕名称</param>
        /// <param name="controlHost">控件基类</param>
        /// <param name="compile">编译基类</param>
        /// <param name="screenDef">屏幕定义</param>
        /// <param name="doc">项目文档</param>
        private void BuildHtml(string name, ControlHost controlHost, CompileBase compile, ScreenDefinition screenDef, ProjectDocument doc)
        {
            using (var writer = new StringWriter())
            {
                var dojoCompile = compile as DojoCompile;

                #region 写入权限操作
                //序号,权限ID,权限作用
                Dictionary <int, Tuple <int, string> > itemPermissionData = new Dictionary <int, Tuple <int, string> >();
                var permissionConfigure = screenDef.PermissionConfigure;
                if (permissionConfigure != null && permissionConfigure.EnableAuth)
                {
                    int    permissionItemId = 1;
                    string identity         = dojoCompile.Project.Identity;
                    var    permissionItems  = screenDef.PermissionConfigure.PermissionItems;
                    foreach (var item in permissionItems)
                    {
                        short purpose = DojoCompile.PermissionScreen;
                        switch (item.Purpose)
                        {
                        case EPermissionPurpose.Operate:
                            purpose = DojoCompile.PermissionOperate;
                            break;

                        case EPermissionPurpose.Visible:
                            purpose = DojoCompile.PermissionVisible;
                            break;

                        case EPermissionPurpose.Custom:
                            purpose = DojoCompile.PermissionCustom;
                            break;
                        }
                        permissionItemId = int.Parse(item.Id);
                        string title        = item.Title;
                        string desc         = doc.Title + " " + item.Description;
                        int    permissionId = dojoCompile.Permission.Write(doc.Id, purpose, item.Id, title, desc);
                        itemPermissionData.Add(permissionItemId, new Tuple <int, string>(permissionId, item.Purpose.ToString().ToLower()));
                    }
                }
                #endregion

                //根据屏幕生成HTML
                var xmlWriter = new HtmlTextWriter(writer);
                xmlWriter.AddAttribute("dojoType", "dojox/mvc/Group");
                xmlWriter.AddAttribute("style", "width:100%;height:100%;position:relative;");
                xmlWriter.AddAttribute("class", "groupDiv");
                xmlWriter.RenderBeginTag("div");

                var builder = controlHost.GetBuilder(false, screenDef, compile, doc, itemPermissionData, xmlWriter);
                builder.Build();

                xmlWriter.RenderEndTag();

                //生成屏幕JS
                BuildScreenJs.BuildJs(controlHost, compile, screenDef, xmlWriter, doc);
                //生成文件全路径
                var file = Path.Combine(((DojoCompile)compile).OutputPath, name + ".html");
                if (File.Exists(file))
                {
                    File.Delete(file);
                }
                //创建HTML文件
                File.WriteAllText(file, writer.ToString(), System.Text.UTF8Encoding.UTF8);

                ControlExtend.ctlNumber = 1;
            }
        }