Skip to content

标记系统

什么是 Marker

Marker(标记) 用于标注和视觉区分特定用户群体。常见用途:

  • 标记女队(Girls Team)
  • 标记独立奖牌计算分组的参赛者
  • 标记特殊来源或地域的参赛者

定义 Marker

在顶层 markers 数组中定义可用的标记:

json
{
  "markers": [
    {
      "id": "girls-team",
      "label": "Girls Team",
      "style": "pink"
    },
    {
      "id": "provincial",
      "label": "Provincial Team",
      "style": "blue"
    }
  ]
}

每个 Marker 包含:

字段说明必填
id唯一标识符
label显示标签
style视觉样式

样式预设

style 可以使用预设颜色名称:

"red", "orange", "yellow", "green", "blue", "purple", "pink"

也可以使用自定义样式对象:

json
{
  "id": "special",
  "label": "Special",
  "style": {
    "backgroundColor": "#4CAF50"
  }
}

国际化标签

label 支持国际化:

json
{
  "id": "special",
  "label": {
    "fallback": "Special",
    "en": "Special",
    "zh-CN": "特别组"
  },
  "style": "green"
}

关联 User 与 Marker

在 User 对象的 markers 数组中引用 marker ID,来为用户添加标记:

json
{
  "user": {
    "id": "team-gamma",
    "name": "Team Gamma",
    "markers": ["girls-team"]
  }
}

一个用户可以有多个标记:

json
{
  "markers": ["girls-team", "special"]
}

引用完整性

user.markers 数组中的每个 ID 必须对应到顶层 Ranklist.markers 中定义的 id

配合 Series 实现分组排名

Marker 的一个强大用法是配合 Series 的 filter 实现分组独立排名,常见于如「邀请赛排名」「省赛排名」等同一个比赛内展示多个排名列的场景。

例如,为省内队伍设置独立排名:

json
{
  "markers": [
    { "id": "provincial", "label": "省内队伍", "style": "blue" }
  ],
  "series": [
    {
      "title": "Main Rank",
      "segments": [
        { "title": "Gold", "style": "gold" },
        { "title": "Silver", "style": "silver" },
        { "title": "Bronze", "style": "bronze" }
      ],
      "rule": {
        "preset": "ICPC",
        "options": { "ratio": { "value": [0.1, 0.2, 0.3] } }
      }
    },
    {
      "title": "Provincial Rank",
      "segments": [
        { "title": "Gold", "style": "gold" },
        { "title": "Silver", "style": "silver" },
        { "title": "Bronze", "style": "bronze" }
      ],
      "rule": {
        "preset": "ICPC",
        "options": {
          "count": { "value": [15, 30, 45] },
          "filter": { "byMarker": "provincial" }
        }
      }
    }
  ]
}

榜单会同时展示总排名和省内队伍独立排名。

完整字段定义请参阅 Marker 规范