/// <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; } }
/// <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; } }
/// <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); } } }
/// <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; } }