diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json
index 5737ad92b..067686a17 100644
--- a/packages/hydrooj/package.json
+++ b/packages/hydrooj/package.json
@@ -1,6 +1,6 @@
{
"name": "hydrooj",
- "version": "2.26.7",
+ "version": "2.26.8",
"bin": "bin/hydrooj.js",
"main": "dist/loader.js",
"typings": "dist/loader.d.ts",
diff --git a/packages/hydrooj/src/model/contest.ts b/packages/hydrooj/src/model/contest.ts
index 994fbffeb..a004f887d 100644
--- a/packages/hydrooj/src/model/contest.ts
+++ b/packages/hydrooj/src/model/contest.ts
@@ -116,14 +116,14 @@ const acm: ContestRule = {
let colTimeStr;
if (doc.accept) {
rid = doc.rid;
- colAccepted = _('Accepted');
+ colAccepted = `${_('Accepted')} ${doc.naccept ? ` (-${doc.naccept})` : ''}`;
colTime = doc.time;
- colTimeStr = misc.formatSeconds(colTime) + (doc.naccept ? ` (-${doc.naccept})` : '');
+ colTimeStr = misc.formatSeconds(colTime);
} else {
rid = null;
- colAccepted = '-';
+ colAccepted = doc.naccept ? `(-${doc.naccept})` : '-';
colTime = '-';
- colTimeStr = doc.naccept ? `(-${doc.naccept})` : '-';
+ colTimeStr = '';
}
if (isExport) {
row.push({ type: 'string', value: colAccepted });
@@ -132,7 +132,7 @@ const acm: ContestRule = {
} else {
row.push({
type: 'record',
- value: '{0}\n{1}'.format(colAccepted, colTimeStr),
+ value: '{0}
{1}'.format(colAccepted, colTimeStr),
raw: rid,
});
}
diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json
index c4208a5e8..a2af14586 100644
--- a/packages/ui-default/package.json
+++ b/packages/ui-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@hydrooj/ui-default",
- "version": "4.8.22",
+ "version": "4.8.23",
"author": "undefined ",
"license": "AGPL-3.0",
"main": "hydro.js",
diff --git a/packages/ui-default/pages/user_detail.page.js b/packages/ui-default/pages/user_detail.page.js
index d14e0752f..801f6398b 100644
--- a/packages/ui-default/pages/user_detail.page.js
+++ b/packages/ui-default/pages/user_detail.page.js
@@ -6,7 +6,6 @@ import substitute from 'vj/utils/substitute';
import Notification from 'vj/components/notification';
import i18n from 'vj/utils/i18n';
import base64 from 'vj/utils/base64';
-import request from 'vj/utils/request';
const page = new NamedPage('user_detail', async () => {
$('[name="profile_contact_copy"]').get().forEach((el) => {
@@ -20,8 +19,7 @@ const page = new NamedPage('user_detail', async () => {
Notification.error(substitute(i18n('Copy "{data}" failed :('), { data: decoded }));
});
});
- const data = await request.get('');
- const history = data.udoc?.ratingHistory || [];
+ const history = UiContext.udoc?.ratingHistory || [];
while (history.length > 30) history.shift();
while (history.length < 30) history.unshift(1500);
const $dom = document.getElementById('rating-placeholder');
diff --git a/packages/ui-default/templates/contest_scoreboard.html b/packages/ui-default/templates/contest_scoreboard.html
index 7333771d5..354f31dae 100644
--- a/packages/ui-default/templates/contest_scoreboard.html
+++ b/packages/ui-default/templates/contest_scoreboard.html
@@ -41,7 +41,7 @@
{{ user.render_inline(udict[column.raw], badge=false) }}
{% elif column.type == 'record' and column.raw %}
- {{ column.value }}
+ {{ column.value|safe }}
{% else %}
{{ column.value }}
diff --git a/packages/ui-default/templates/partials/footer.html b/packages/ui-default/templates/partials/footer.html
index 35a7885f2..c2165a5a7 100644
--- a/packages/ui-default/templates/partials/footer.html
+++ b/packages/ui-default/templates/partials/footer.html
@@ -74,6 +74,11 @@
{%- endfor -%}
+ {% if model.system.get('server.pro') %}
+
+ {% else %}
+
+ {% endif %}
diff --git a/packages/ui-default/templates/user_detail.html b/packages/ui-default/templates/user_detail.html
index c56169e32..25aff36bf 100644
--- a/packages/ui-default/templates/user_detail.html
+++ b/packages/ui-default/templates/user_detail.html
@@ -1,6 +1,7 @@
{% import "components/home.html" as home with context %}
{% extends "layout/basic.html" %}
{% block content %}
+{{ set(UiContext, 'udoc', udoc) }}