private void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { RequirementsProcessor rp = new RequirementsProcessor(GetType()); rp.ProcessRequirements(); //Page.Response.AddHeader("Refresh","300"); if (rp.ContestIDDefined) { selcon.ContestID = rp.ContestID; Contest con = Contest.GetContest(rp.ContestID); if (con.Time == ContestTime.Forthcoming) { throw new NeJudgeException("Нельзя просмотреть монитор будущего соревнования"); } DateTime cur_time = TimeUtils.ZeroDateTime(DateTime.Now); DateTime t_begin = TimeUtils.ZeroDateTime(con.Beginning); DateTime t_end = TimeUtils.ZeroDateTime(con.Ending); // Последнее обновление TimeSpan dur = TimeUtils.ZeroTimeSpan(t_end - t_begin); TimeSpan elapsed = TimeUtils.ZeroTimeSpan((cur_time - t_begin < dur) ? cur_time - t_begin : dur); TimeSpan estimated = TimeUtils.ZeroTimeSpan(dur - elapsed); if (elapsed >= dur) { st_label.InnerHtml += "<span style='color:red;font-size:small;display:block;'>(Соревнование окончено)</span>"; } refresh.Text = TimeUtils.BeautifyTimeSpan(elapsed, false); // Продолжительность соревнования period.Text = TimeUtils.BeautifyTimeSpan(dur, false); left.Text = TimeUtils.BeautifyTimeSpan(estimated, false); ContestTypeHandler h = Factory.GetHandlerInstance(con.Type); DataTable[] dts = h.MonitorManager.Build(con.ID); for (int i = 0; i < dts.Length; i++) { DataTable dt = dts[i]; monitorPH.Controls.Add(new LiteralControl(dt.TableName)); DataGrid gv = new DataGrid(); gv.Width = new Unit(100.0, UnitType.Percentage); gv.CellPadding = 5; gv.HeaderStyle.CssClass = "gridHeader"; gv.DataSource = dt; gv.DataBind(); h.MonitorManager.PaintDataGrid(gv, i, dt.Columns.Count - 3); monitorPH.Controls.Add(gv); if (i != dts.Length - 1) { monitorPH.Controls.Add(new LiteralControl("<br />")); } } } else { info.Visible = false; } } }
public void RaiseCallbackEvent(string eventArgument) { result = ""; try { string[] tmp = eventArgument.Split(':'); if (tmp.Length == 2) { int contestID; if (int.TryParse(tmp[0], out contestID)) { result += "--Ћюбой--^ALL|"; ContestTypeHandler h = Factory.GetHandlerInstance(Contest.GetContest(contestID).Type); foreach (string outcome in h.OutcomeManager.GetOutcomes()) { result += string.Format("{0}^{1}|", h.OutcomeManager.GetPrintableValue(outcome), outcome); } } else { result = "ќшибка в обработке Callback^1"; } } } catch { result = "ќшибка в обработке Callback^1"; } }
public static DataTable GetRows(int maximumRows, int startRowIndex, object filter) { SubmissionsFilter filt = (SubmissionsFilter)filter; int cid = filt.ContestID; filt.From = startRowIndex + 1; //( page - 1 ) * statusGrid.PageSize + 1; filt.To = startRowIndex + maximumRows; //page * statusGrid.PageSize; DataTable dt = new DataTable(); dt.Columns.Add("ID"); dt.Columns.Add("Время"); dt.Columns.Add("Команда"); dt.Columns.Add("Задача"); dt.Columns.Add("Язык"); dt.Columns.Add("Статус"); Contest con = Contest.GetContest(cid); ContestTypeHandler h = Factory.GetHandlerInstance(con.Type); string[] headers = h.StatusManager.GetHeaders(); foreach (string s in headers) { dt.Columns.Add(s); } foreach (Submission s in Submission.GetSubmissions(filt)) { DataRow dr = dt.NewRow(); dr["ID"] = s.ID; dr["Время"] = TimeUtils.BeautifyTimeSpan(s.Time - con.Beginning, true); dr["Команда"] = User.GetUser(s.UserID).Name; dr["Задача"] = String.Format("<a href='{0}'>{1}</a>", UrlRenderer.RenderProblemUrl(s.ProblemID), Problem.GetProblem(s.ProblemID).ShortName); dr["Язык"] = Language.GetLanguage(s.LanguageID).Name; dr["Статус"] = h.OutcomeManager.GetPrintableValue(s.Outcome); string[] ins = h.StatusManager.GetInfo(s); for (int i = 0; i < headers.Length; i++) { dr[i + 6] = ins[i]; } dt.Rows.Add(dr); } return(dt); }