From cabd3b44f97b4439f152a53188e4a85d0580b798 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 13 Aug 2021 17:09:10 +0800 Subject: [PATCH] ui: step=any --- packages/hydrojudge/package.json | 2 +- packages/hydrojudge/setting.yaml | 2 +- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/import.ts | 29 +++++++++++----- packages/hydrooj/src/interface.ts | 34 ++++++++++--------- packages/hydrooj/src/model/setting.ts | 2 +- packages/hydrooj/src/model/task.ts | 2 +- packages/ui-default/package.json | 2 +- .../ui-default/templates/components/form.html | 3 +- .../templates/partials/setting.html | 2 +- 10 files changed, 47 insertions(+), 33 deletions(-) diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index e65f319e1..347ae1255 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -1,7 +1,7 @@ { "name": "@hydrooj/hydrojudge", "bin": "bin/hydrojudge.js", - "version": "2.10.6", + "version": "2.10.7", "main": "package.json", "author": "undefined ", "repository": "https://github.com/hydro-dev/Hydro.git", diff --git a/packages/hydrojudge/setting.yaml b/packages/hydrojudge/setting.yaml index 1eeb2ab7f..450410b7b 100644 --- a/packages/hydrojudge/setting.yaml +++ b/packages/hydrojudge/setting.yaml @@ -48,7 +48,7 @@ parallelism: desc: Runner parallelism default: 2 rate: - type: number + type: float name: rate desc: (?) default: 1 diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 039bf37e3..c4403fd10 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.32.17", + "version": "2.32.18", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/import.ts b/packages/hydrooj/src/handler/import.ts index 813f92102..a8ac4e881 100644 --- a/packages/hydrooj/src/handler/import.ts +++ b/packages/hydrooj/src/handler/import.ts @@ -177,14 +177,6 @@ class ProblemImportSYZOJHandler extends Handler { text: p.limit_and_hint, }); } - if (p.have_additional_file) { - content.push({ - type: 'Text', - subType: 'markdown', - sectionTitle: this.translate('Additional File'), - text: `${url}download/additional_file`, - }); - } const c = buildContent(content, 'markdown'); const docId = await problem.add( domainId, target, p.title, c, this.user._id, p.tags || [], hidden, @@ -215,6 +207,25 @@ class ProblemImportSYZOJHandler extends Handler { } finally { fs.unlinkSync(file); } + if (p.have_additional_file) { + const r1 = download(`${url}download/additional_file`); + const file1 = path.resolve(os.tmpdir(), 'hydro', `import_${domainId}_${docId}_a.zip`); + const w1 = fs.createWriteStream(file1); + try { + await new Promise((resolve, reject) => { + w1.on('finish', resolve); + w1.on('error', reject); + r1.pipe(w1); + }); + const zip = new AdmZip(file1); + const entries = zip.getEntries(); + for (const entry of entries) { + await problem.addAdditionalFile(domainId, docId, entry.entryName.replace('/', '_'), entry.getData()); + } + } finally { + fs.unlinkSync(file1); + } + } return docId; } @@ -296,7 +307,7 @@ class ProblemImportSYZOJHandler extends Handler { let version = 2; if (!prefix.endsWith('/')) prefix += '/'; if (prefix.endsWith('/p/')) version = 3; - else if (!prefix.endsWith('/problem/')) prefix += 'problem/'; + else prefix = `${prefix.split('/problem/')[0]}/problem/`; const base = `${prefix}${start}/`; assert(base.match(RE_SYZOJ), new ValidationError('prefix')); const [, protocol, host] = RE_SYZOJ.exec(base); diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 6264f89fd..494f844f2 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -488,7 +488,7 @@ export interface JudgeResultBody { export interface Task { _id: ObjectID, type: string, - executeAfter?: Date, + executeAfter: Date, priority: number, [key: string]: any } @@ -624,24 +624,26 @@ export interface UI { UserDropdown: typeof import('./lib/ui').UserDropdown, } +export interface HydroGlobal { + version: Record, + model: Model, + handler: Record, + script: Record, + service: Service, + lib: Lib, + stat: any, + ui: UI, + error: typeof import('./error'), + Logger: typeof import('./logger').Logger, + logger: typeof import('./logger').logger, + locales: Record>, + isFirstWorker: boolean, +} + declare global { namespace NodeJS { interface Global { - Hydro: { - version: Record, - model: Model, - handler: Dict, - script: Dict