protected void Page_Load(object sender, EventArgs e) { try { GetViewLaneDataResponse response; response = Master.WebService.GetViewLaneData2(Master.WebServiceLogin, Utils.TryParseInt32(Request ["lane_id"]), Request ["lane"], Utils.TryParseInt32(Request ["host_id"]), Request ["host"], Utils.TryParseInt32(Request ["revision_id"]), Request ["revision"], false); DBHost host = response.Host; DBLane lane = response.Lane; DBRevision revision = response.Revision; if (lane == null || host == null || revision == null) { Response.Redirect("index.aspx", false); return; } header.InnerHtml = ViewLane.GenerateHeader(response, lane, host, revision, "Html report for"); htmlreport.Attributes ["src"] = Request.Url.ToString().Replace("Embedded", ""); htmlreport.Attributes ["onload"] = "javascript: resizeToFillIFrame (document.getElementById ('" + htmlreport.ClientID + "'));"; ClientScript.RegisterStartupScript(GetType(), "resizeIFrame", "<script type='text/javascript'>resizeToFillIFrame (document.getElementById ('" + htmlreport.ClientID + "'));</script>"); } catch (Exception ex) { Response.Write(ex.ToString().Replace("\n", "<br/>")); } }
public string GenerateLaneTable(GetViewTableDataResponse response, DBLane lane, DBHost host, bool horizontal, int page, int limit) { StringBuilder matrix = new StringBuilder(); StringBuilder tooltip = new StringBuilder(); bool new_revision = true; int revision_id = 0; List <DBRevisionWorkView> views = response.RevisionWorkViews; List <List <TableNode> > table = new List <List <TableNode> > (); List <TableNode> row = new List <TableNode> (); List <TableNode> header = new List <TableNode> (); for (int i = 0; i < views.Count; i++) { while (header.Count <= views [i].sequence) { header.Add(null); } if (header [views [i].sequence] != null) { continue; } var node = new TableNode(string.Format("<a href='ViewWorkTable.aspx?lane_id={0}&host_id={1}&command_id={2}'>{3}</a>", lane.id, host.id, views [i].command_id, views [i].command)); node.command_id = views [i].command_id; header [views [i].sequence] = node; } header.RemoveAll(delegate(TableNode match) { return(match == null); }); header.Insert(0, new TableNode("Revision", true)); header.Insert(1, new TableNode("Diff", true)); header.Insert(2, new TableNode("Author", true)); //if (Authentication.IsInRole (response, MonkeyWrench.DataClasses.Logic.Roles.Administrator)) { // header.Insert (3, new TableNode ("Select", true)); //} header.Add(new TableNode("Host", true)); header.Add(new TableNode("Duration", true)); table.Add(header); bool failed = false; double duration = 0; for (int i = 0; i < views.Count; i++) { DBRevisionWorkView view = views [i]; DBState revisionwork_state = (DBState)view.revisionwork_state; DBState state = (DBState)view.state; new_revision = revision_id != view.revision_id; revision_id = view.revision_id; if (new_revision) { if (i > 0) { table.Add(row); row [row.Count - 1] = new TableNode(TimeSpan.FromSeconds(duration).ToString(), row [0].@class); } string revision = view.revision; long dummy; if (revision.Length > 16 && !long.TryParse(revision, out dummy)) { revision = revision.Substring(0, 8); } string clazz = revisionwork_state.ToString().ToLower(); clazz = clazz + " " + DarkenColor(clazz, table.Count); row = new List <TableNode> (); tooltip.Length = 0; tooltip.AppendFormat("Author: {0}.", view.author); if (view.starttime.Date.Year > 2000) { tooltip.AppendFormat(" Build start date: {0}.", view.starttime.ToUniversalTime().ToString("yyyy/MM/dd HH:mm:ss UTC")); } row.Add(new TableNode(string.Format("<a href='ViewLane.aspx?lane_id={0}&host_id={1}&revision_id={2}' title='{4}'>{3}</a>", lane.id, host.id, view.revision_id, revision, tooltip.ToString()), clazz)); row.Add(new TableNode(string.Format(ViewLane.CalculateDiffLink(lane.repository, view.revision)))); row.Add(new TableNode(view.author)); //if (Authentication.IsInRole (response, MonkeyWrench.DataClasses.Logic.Roles.Administrator)) // row.Add (new TableNode (string.Format ("<input type=checkbox id='id_revision_chk_{1}' name='revision_id_{0}' />", view.revision_id, i))); while (row.Count < header.Count - 2) { row.Add(new TableNode("-")); } row.Add(new TableNode(view.workhost ?? "")); row.Add(new TableNode("")); failed = false; duration = 0; } if (view.endtime > view.starttime) { duration += (view.endtime - view.starttime).TotalSeconds; } if (state == DBState.Failed && !view.nonfatal) { failed = true; } else if (revisionwork_state == DBState.Failed) { failed = true; } // result string result; bool completed = true; switch (state) { case DBState.NotDone: completed = false; result = failed ? "skipped" : "queued"; break; case DBState.Executing: completed = false; result = "running"; break; case DBState.Failed: result = view.nonfatal ? "issues" : "failure"; break; case DBState.Success: result = "success"; break; case DBState.Aborted: result = "aborted"; break; case DBState.Timeout: result = "timeout"; break; case DBState.Paused: completed = false; result = "paused"; break; case DBState.Ignore: completed = false; result = "ignore"; break; default: completed = true; result = "unknown"; break; } for (int j = 2; j < header.Count; j++) { if (header [j].command_id == view.command_id) { if (completed) { row [j] = new TableNode(string.Format("<a href='{0}'>{1}</a>", Utilities.CreateWebServiceDownloadUrl(Request, view.id, view.command + ".log", true), result)); } else { row [j] = new TableNode(result); } row [j].@class = result + " " + DarkenColor(result, table.Count); break; } } } table.Add(row); row [row.Count - 1] = new TableNode(TimeSpan.FromSeconds(duration).ToString(), row [0].@class); matrix.AppendLine("<table class='buildstatus'>"); if (horizontal) { for (int i = 0; i < header.Count; i++) { matrix.Append("<tr>"); for (int j = 0; j < table.Count; j++) { TableNode node = table [j] [i]; string td = node.is_header ? "th" : "td"; matrix.Append('<'); matrix.Append(td); if (node.@class != null) { matrix.Append(" class='"); matrix.Append(node.@class); matrix.Append("'"); } /* * if (node.style != null) { * matrix.Append (" style='"); * matrix.Append (node.style); * matrix.Append ("'"); * }*/ matrix.Append(">"); matrix.Append(node.text); matrix.Append("</"); matrix.Append(td); matrix.Append(">"); } matrix.AppendLine("</tr>"); } } else { for (int i = 0; i < table.Count; i++) { matrix.Append("<tr>"); for (int j = 0; j < row.Count; j++) { TableNode node = table [i] [j]; string td = node.is_header ? "th" : "td"; matrix.Append('<'); matrix.Append(td); if (node.@class != null) { matrix.Append(" class='"); matrix.Append(node.@class); matrix.Append("'"); } /* * if (node.style != null) { * matrix.Append (" style='"); * matrix.Append (node.style); * matrix.Append ("'"); * }*/ matrix.Append(">"); matrix.Append(node.text); matrix.Append("</"); matrix.Append(td); matrix.Append(">"); } matrix.AppendLine("</tr>"); } } matrix.AppendLine("</table>"); return(matrix.ToString()); }