From c696f51789e0924e5e15ac00b0993fa1a8e5785a Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 6 Oct 2021 13:36:42 +0800 Subject: [PATCH] ui: add confirm dialog (#226) --- package.json | 8 ++++---- packages/hydrojudge/package.json | 4 ++-- packages/hydrooj/package.json | 8 ++++---- packages/login-with-qq/package.json | 2 +- .../components/discussion/comments.page.js | 5 +---- packages/ui-default/locales/zh.yaml | 1 + packages/ui-default/package.json | 14 +++++++------- packages/ui-default/pages/contest_edit.page.js | 5 +---- packages/ui-default/pages/problem_detail.page.jsx | 12 ++++++++++++ .../templates/partials/problem_sidebar_normal.html | 2 +- packages/ui-default/utils/tpl.js | 8 ++++++++ packages/utils/lib/utils.ts | 2 +- packages/utils/package.json | 2 +- packages/vjudge/package.json | 2 +- packages/vjudge/src/providers/codeforces.ts | 3 +-- 15 files changed, 46 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 3f2d3dfa8..6d1db9a42 100644 --- a/package.json +++ b/package.json @@ -28,10 +28,10 @@ "license": "AGPL-3.0-only", "devDependencies": { "@types/cross-spawn": "^6.0.2", - "@types/node": "^16.9.6", + "@types/node": "^16.10.2", "@types/semver": "^7.3.8", - "@typescript-eslint/eslint-plugin": "^4.31.2", - "@typescript-eslint/parser": "^4.31.2", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", "cac": "^6.7.3", "cross-env": "^7.0.3", "cross-spawn": "^7.0.3", @@ -48,7 +48,7 @@ "nmls": "^3.0.1", "ora": "5.4.1", "semver": "^7.3.5", - "typedoc": "^0.22.4", + "typedoc": "^0.22.5", "typescript": "4.4.2" } } diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index e8c14063f..0b2ddc974 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -16,14 +16,14 @@ "mongodb": "^3.7.1", "p-queue": "^7.1.0", "shell-quote": "^1.7.2", - "ws": "^8.2.2" + "ws": "^8.2.3" }, "preferUnplugged": true, "license": "AGPL-3.0-or-later", "devDependencies": { "@types/fs-extra": "^9.0.13", "@types/js-yaml": "^4.0.3", - "@types/lodash": "^4.14.174", + "@types/lodash": "^4.14.175", "@types/shell-quote": "^1.7.1", "@types/ws": "^7.4.7" }, diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 106137624..0dbc537c4 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -31,11 +31,11 @@ "koa-static-cache": "^5.1.4", "lodash": "^4.17.21", "lru-cache": "^6.0.0", - "mime-types": "^2.1.32", + "mime-types": "^2.1.33", "minio": "7.0.19", "moment-timezone": "^0.5.33", "mongodb": "^3.7.1", - "nanoid": "^3.1.25", + "nanoid": "^3.1.28", "nodemailer": "^6.6.5", "p-queue": "^7.1.0", "reflect-metadata": "^0.1.13", @@ -53,7 +53,7 @@ "@types/koa-compress": "^4.0.3", "@types/koa-router": "^7.4.4", "@types/koa-static-cache": "^5.1.1", - "@types/lodash": "^4.14.174", + "@types/lodash": "^4.14.175", "@types/lru-cache": "^5.1.1", "@types/mime-types": "^2.1.1", "@types/minio": "^7.0.10", @@ -65,7 +65,7 @@ "@types/superagent": "^4.1.13", "formidable": "^1.2.2", "moment": "^2.29.1", - "pm2": "^5.1.1" + "pm2": "^5.1.2" }, "peerDependencies": { "pm2": "*" diff --git a/packages/login-with-qq/package.json b/packages/login-with-qq/package.json index ec047e8cb..99673c814 100644 --- a/packages/login-with-qq/package.json +++ b/packages/login-with-qq/package.json @@ -7,7 +7,7 @@ "license": "AGPL-3.0-or-later", "preferUnplugged": true, "dependencies": { - "ws": "^8.2.2" + "ws": "^8.2.3" }, "devDependencies": { "@types/ws": "^7.4.7" diff --git a/packages/ui-default/components/discussion/comments.page.js b/packages/ui-default/components/discussion/comments.page.js index a896d8772..a43e0da55 100644 --- a/packages/ui-default/components/discussion/comments.page.js +++ b/packages/ui-default/components/discussion/comments.page.js @@ -165,10 +165,7 @@ async function onCommentClickDelete(type, ev) { ? 'Confirm deleting this comment? Its replies will be deleted as well.' : 'Confirm deleting this reply?'; const action = await new ConfirmDialog({ - $body: tpl` -
-

${i18n(message)}

-
`, + $body: tpl.typoMsg(i18n(message)), }).open(); if (action !== 'yes') return; diff --git a/packages/ui-default/locales/zh.yaml b/packages/ui-default/locales/zh.yaml index 3fb008a6c..b34baa31f 100644 --- a/packages/ui-default/locales/zh.yaml +++ b/packages/ui-default/locales/zh.yaml @@ -134,6 +134,7 @@ Completed: 已完成 Confirm deleting the selected roles?: 您确定删除所选角色吗? Confirm deleting this comment? Its replies will be deleted as well.: 确认删除这个评论吗?回复会被同时删除。 Confirm deleting this reply?: 确认删除这个回复吗? +Confirm rejudge this problem?: 确定要重测这道题吗? Confirm removing the selected users?: 您确定将所选用户移除吗? Confirm to delete the selected files?: 确认删除所选文件吗? Confirmation mail has been sent to your new email.: 确认邮件已经发送到您的新电子邮箱。 diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 01d8aad5e..2c768af49 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.22.10", + "version": "4.22.11", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", @@ -11,9 +11,9 @@ }, "devDependencies": { "@blockly/block-extension-tooltip": "^1.0.19", - "@blueprintjs/core": "^3.50.2", - "@blueprintjs/icons": "^3.30.1", - "@blueprintjs/select": "^3.18.4", + "@blueprintjs/core": "^3.50.4", + "@blueprintjs/icons": "^3.30.2", + "@blueprintjs/select": "^3.18.6", "@hydrooj/utils": "workspace:*", "@types/jquery": "^3.5.6", "@types/json-schema": "^7.0.9", @@ -21,7 +21,7 @@ "@types/sockjs-client": "^1.5.1", "@undefined-moe/monaco-yaml": "^2.5.0", "ansi_up": "^5.0.1", - "autoprefixer": "^9.8.6", + "autoprefixer": "^9.8.8", "blockly": "^6.20210701.0", "chalk": "^4.1.2", "classnames": "^2.3.1", @@ -40,7 +40,7 @@ "eslint-import-resolver-webpack": "^0.13.1", "eslint-plugin-import": "^2.24.2", "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.26.0", + "eslint-plugin-react": "^7.26.1", "fancy-log": "^1.3.3", "file-loader": "^6.2.0", "friendly-errors-webpack-plugin": "^1.7.0", @@ -61,7 +61,7 @@ "moment": "^2.29.1", "monaco-editor": "^0.27.0", "monaco-editor-webpack-plugin": "^4.1.2", - "nanoid": "^3.1.25", + "nanoid": "^3.1.28", "normalize.css": "^8.0.1", "nprogress": "^0.2.0", "pickadate": "^3.6.4", diff --git a/packages/ui-default/pages/contest_edit.page.js b/packages/ui-default/pages/contest_edit.page.js index 876a27160..5d4446d3e 100644 --- a/packages/ui-default/pages/contest_edit.page.js +++ b/packages/ui-default/pages/contest_edit.page.js @@ -18,10 +18,7 @@ const page = new NamedPage(['contest_edit', 'contest_create', 'homework_create', } const message = `Confirm deleting this ${pagename.split('_')[0]}? Its status will be deleted as well.`; return new ConfirmDialog({ - $body: tpl` -
-

${i18n(message)}

-
`, + $body: tpl.typoMsg(i18n(message)), }).open().then((action) => { if (action !== 'yes') return; confirmed = true; diff --git a/packages/ui-default/pages/problem_detail.page.jsx b/packages/ui-default/pages/problem_detail.page.jsx index 69d1334a9..2e6758d76 100644 --- a/packages/ui-default/pages/problem_detail.page.jsx +++ b/packages/ui-default/pages/problem_detail.page.jsx @@ -1,6 +1,9 @@ import yaml from 'js-yaml'; import { getScoreColor } from '@hydrooj/utils/lib/status'; import { NamedPage } from 'vj/misc/Page'; +import tpl from 'vj/utils/tpl'; +import i18n from 'vj/utils/i18n'; +import { ConfirmDialog } from 'vj/components/dialog'; import { downloadProblemSet } from 'vj/components/zipDownloader'; import loadReactRedux from 'vj/utils/loadReactRedux'; import delay from 'vj/utils/delay'; @@ -260,6 +263,15 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor leaveScratchpadMode(); ev.preventDefault(); }); + $(document).on('click', '[name="problem-sidebar__rejudge"]', (ev) => { + ev.preventDefault(); + new ConfirmDialog({ + $body: tpl.typoMsg(i18n('Confirm rejudge this problem?')), + }).open().then((action) => { + if (action !== 'yes') return; + $(ev.currentTarget).closest('form').trigger('submit'); + }); + }); $(document).on('click', '[name="show_tags"]', (ev) => { $(ev.currentTarget).hide(); $('span.tags').css('display', 'inline-block'); diff --git a/packages/ui-default/templates/partials/problem_sidebar_normal.html b/packages/ui-default/templates/partials/problem_sidebar_normal.html index 6ac0955a7..2f0791c40 100644 --- a/packages/ui-default/templates/partials/problem_sidebar_normal.html +++ b/packages/ui-default/templates/partials/problem_sidebar_normal.html @@ -56,7 +56,7 @@
-
diff --git a/packages/ui-default/utils/tpl.js b/packages/ui-default/utils/tpl.js index 286dc4449..ac3aad5c6 100644 --- a/packages/ui-default/utils/tpl.js +++ b/packages/ui-default/utils/tpl.js @@ -13,6 +13,14 @@ export default function tpl(pieces, ...substitutions) { return result; } +tpl.typoMsg = function (msg) { + return tpl` +
+

${msg}

+
+ `; +}; + export function rawHtml(html) { return { templateRaw: true, diff --git a/packages/utils/lib/utils.ts b/packages/utils/lib/utils.ts index 315eecfa4..9c23146c9 100644 --- a/packages/utils/lib/utils.ts +++ b/packages/utils/lib/utils.ts @@ -224,7 +224,7 @@ export function bufferToStream(buffer: Buffer): NodeJS.ReadableStream { export function sleep(timeout: number) { return new Promise((resolve) => { - setTimeout(resolve, timeout); + setTimeout(() => resolve(true), timeout); }); } diff --git a/packages/utils/package.json b/packages/utils/package.json index 201de21cd..73d9b534a 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -12,7 +12,7 @@ "js-yaml": "^4.1.0", "moment": "^2.29.1", "mongodb": "^3.7.1", - "systeminformation": "^5.9.3" + "systeminformation": "^5.9.4" }, "devDependencies": { "@types/fs-extra": "^9.0.13", diff --git a/packages/vjudge/package.json b/packages/vjudge/package.json index 5bcf1e05b..9106fecc2 100644 --- a/packages/vjudge/package.json +++ b/packages/vjudge/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/jsdom": "^16.2.13", - "@types/lodash": "^4.14.174", + "@types/lodash": "^4.14.175", "@types/superagent": "^4.1.13", "@types/superagent-proxy": "^2.0.1" } diff --git a/packages/vjudge/src/providers/codeforces.ts b/packages/vjudge/src/providers/codeforces.ts index 51d3f74eb..c1e30d7fd 100644 --- a/packages/vjudge/src/providers/codeforces.ts +++ b/packages/vjudge/src/providers/codeforces.ts @@ -11,7 +11,7 @@ import * as setting from 'hydrooj/src/model/setting'; import { IBasicProvider, RemoteAccount } from '../interface'; proxy(superagent); -const logger = new Logger('codeforces'); +const logger = new Logger('remote/codeforces'); const VERDICT = { RUNTIME_ERROR: STATUS.STATUS_RUNTIME_ERROR, @@ -100,7 +100,6 @@ export default class CodeforcesProvider implements IBasicProvider { password: this.account.password, remember: 'on', }); - console.log(res.header); const cookie = res.header['set-cookie']; if (cookie) { await this.save({ cookie });