Exemplo n.º 1
0
        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);
        }
        public DataTable[] Build(int contestID)
        {
            contest = Contest.GetContest(contestID);
            data    = new Dictionary <string, UserData>();
            SubmissionsFilter f = new SubmissionsFilter(contestID);

            foreach (Submission s in Submission.GetSubmissions(f))
            {
                if (Problem.GetProblem(s.ProblemID).ContestID == contestID)
                {
                    ProcessSubmission(s);
                }
            }
            DataTable[] dts = new DataTable[] { FormatMonitor(contest), FormatStatistics(contest) };
            dts[0].TableName = "Монитор";
            dts[1].TableName = "Статистика";
            return(dts);
        }