From 4753621f78cec2e350ad114adcef1627539da8fe Mon Sep 17 00:00:00 2001 From: panda Date: Wed, 7 Dec 2022 23:55:52 +0800 Subject: [PATCH] core&ui: user_detail: add attended contest (#468) --- packages/hydrooj/src/handler/user.ts | 6 +++++- packages/ui-default/locales/zh.yaml | 1 + .../partials/user_detail/activity.html | 18 ++++++++++++++++++ .../partials/user_detail/solution.html | 4 ++-- 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 packages/ui-default/templates/partials/user_detail/activity.html diff --git a/packages/hydrooj/src/handler/user.ts b/packages/hydrooj/src/handler/user.ts index b71c2f5c2..9bc09a8dd 100644 --- a/packages/hydrooj/src/handler/user.ts +++ b/packages/hydrooj/src/handler/user.ts @@ -12,6 +12,7 @@ import { sendMail } from '../lib/mail'; import { isEmail, isPassword } from '../lib/validator'; import BlackListModel from '../model/blacklist'; import { PERM, PRIV, STATUS } from '../model/builtin'; +import * as ContestModel from '../model/contest'; import domain from '../model/domain'; import oauth from '../model/oauth'; import * as oplog from '../model/oplog'; @@ -356,9 +357,12 @@ class UserDetailHandler extends Handler { } } const tags = Object.entries(acInfo).sort((a, b) => b[1] - a[1]).slice(0, 20); + const tsdocs = await ContestModel.getMultiStatus(domainId, { uid: this.user._id, attend: { $exists: true } }).sort({ _id: 1 }).toArray(); + const tdocs = await ContestModel.getMulti(domainId, { docId: { $in: tsdocs.map((i) => i.docId) } }) + .project({ docId: 1, title: 1, rule: 1 }).toArray(); this.response.template = 'user_detail.html'; this.response.body = { - isSelfProfile, udoc, sdoc, pdocs, tags, + isSelfProfile, udoc, sdoc, pdocs, tags, tdocs, }; if (this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_SOLUTION)) { const psdocs = await SolutionModel.getByUser(domainId, uid).limit(10).toArray(); diff --git a/packages/ui-default/locales/zh.yaml b/packages/ui-default/locales/zh.yaml index be4555685..f9081d180 100644 --- a/packages/ui-default/locales/zh.yaml +++ b/packages/ui-default/locales/zh.yaml @@ -83,6 +83,7 @@ API: API Argument {0} is invalid.: 非法的参数 {0} 。 Arguments: 参数 Assign: 分配给 +Assignment: 作业 At least 4 characters: 至少 4 个字符 Attend Contest: 参加比赛 Attend contests: 参加比赛 diff --git a/packages/ui-default/templates/partials/user_detail/activity.html b/packages/ui-default/templates/partials/user_detail/activity.html new file mode 100644 index 000000000..c866a9cfd --- /dev/null +++ b/packages/ui-default/templates/partials/user_detail/activity.html @@ -0,0 +1,18 @@ +
  • +

    {{ _('Recent Activities') }}

    +
    + {% if not tdocs.length %} + {{ nothing.render("This person is lazy and didn't join any contest or homework") }} + {% else %} +
    + +
    + {% endif %} +
    +
  • \ No newline at end of file diff --git a/packages/ui-default/templates/partials/user_detail/solution.html b/packages/ui-default/templates/partials/user_detail/solution.html index 327369ef3..c8b755fee 100644 --- a/packages/ui-default/templates/partials/user_detail/solution.html +++ b/packages/ui-default/templates/partials/user_detail/solution.html @@ -1,9 +1,9 @@ {% if psdocs %}
  • -

    {{ _('Recent solutions') }}

    +

    {{ _('Recent Solutions') }}

    {% if not psdocs.length %} - {{ nothing.render("This person is lazy and wrote any solution") }} + {{ nothing.render("This person is lazy and didn't wrote any solution") }} {% else %}