6.2 得分榜

得分榜是为任何对比赛感兴趣的人(可能是裁判,队伍或公众)准备的界面。它值得用单独一节介绍。

6.2.1 颜色和排序

每道题目都可以关联一个单独的颜色,比如这道题目的气球的颜色。如果你在 problem 表中的 color 栏中填写了的话,DOMjudge 可以在得分榜上显示这种颜色。注意要将其设置为可用的 CSS 颜色值(比如 :green#ff0000,但是直接填写颜色的名字会更好)。

通过设置 team_category 表,可以将队伍分入不同的类别中,这是得分榜排序的第一依据。如果你想先对普通队伍进行排列,并将观众队伍和商业队伍排在其后,那么你可以将普通类定义为 0 ,将别的队伍定义为 1。如果想要完全将一个类别(除裁判外)从得分榜中移除,那么类别可见标志应设置为 0

6.2.2 开始和结束

一场比赛可以被设置为在其激活时间点就对公众可见,但是仅当比赛开始时得分榜才会对公众公布,这样比赛的题目或数据就不会在比赛开始前泄露。

当比赛结束,得分将被展示到比赛的注销(deactive)时间。

6.2.3 封榜和解封

DOMjudge 可以在某些时间点冻结公众和队伍的得分榜。这意味着得分数据将不会再更新并将保持封榜时的状态。这通常用来把比赛最后的一段时间变得有趣。封榜时间可以通过比赛表中的 freezetime 设置。

封榜依照提交的时间确定是否更新评测状态,因此如果某些答案是在封榜之前提交的但是在封榜之后评测完成的,那么榜单仍会更新这些提交的评测信息。在封榜时的 rejudge 仍会导致得分榜更新。

如果你没有设置封榜时间,那么这个选项不会做任何事。如果设置了,那么在时间到后公众和队伍的得分榜将不会再更新。但是裁判可以查看实时的榜单。

当比赛结束后,得分榜不会立即解封,从而保持神秘感直到某个时刻(比如说比赛典礼)。你可以在适当时机在队伍和公众的得分榜上公布比赛成绩。你可以通过预先设定 unfreezetime 或者在裁判界面中的比赛菜单中按下 ”unfreeze now“ 来完成。

6.2.4 可以点吗?

在裁判界面中,几乎每个单元(cell)都可以点击,并且会给出与之有关的详细信息。当然这在公众和队伍界面上是不行的,不过在公众和队伍界面中队伍名单元链接到有着队伍更多信息(可以包含队伍的照片)的页面,同时问题的标题单元(如果允许的话)链接到题目的文本。

6.2.5 缓存

得分榜不是在每个页面上重新计算的,而是被缓存在数据库中。他应该可以被多个客户端重复加载。在特殊情况下(应该永远都不会出现,比如说有个 bug),缓存可能会出错。在裁判和管理员界面中有一个重新计算一份新的得分榜的的选项。但是你要确保只有在真正需要的时候才动用这个选项,因为这会给数据库带来极大的负担。

6.2.6 导出到外部网站

在许多情况下你可能想要创建一份单独的可以从因特网访问的榜单。为此,可以通过 url 参数 ?static=1 来访问公共界面。这产生了带有刷新元标签(meta-tag)的榜单,并且会移除登陆功能和队伍信息界面。这可以通过 curl 来每分钟请求一次并且使公众的页面访问到静态的内容。