# 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` 来每分钟请求一次并且使公众的页面访问到静态的内容。
