mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 17:36:08 +08:00
core: small enhancements
This commit is contained in:
1 parent
50b838d21d
commit
d7908aaff6
5 files changed
+24
-8
No files matched your search
@@ -2,7 +2,7 @@
|
||||
import decodeHTML from 'decode-html';
|
||||
import xml2js from 'xml2js';
|
||||
import {
|
||||
_, AdmZip, buildContent, ContentNode, Context, FileTooLargeError, fs,
|
||||
_, AdmZip, BadRequestError, buildContent, ContentNode, Context, FileTooLargeError, fs,
|
||||
Handler, PERM, ProblemConfigFile, ProblemModel, SolutionModel, ValidationError,
|
||||
} from 'hydrooj';
|
||||
|
||||
@@ -12,6 +12,7 @@ class FpsProblemImportHandler extends Handler {
|
||||
}
|
||||
|
||||
async run(domainId: string, result: any) {
|
||||
if (!result?.fps) throw new BadRequestError('Selected file is not a valid FPS problemset.');
|
||||
for (const p of result.fps.item) {
|
||||
const content: ContentNode[] = [];
|
||||
if (p.description?.[0]) {
|
||||
|
||||
@@ -44,7 +44,7 @@ langs:
|
||||
c:
|
||||
compile: /usr/bin/gcc -Wall --std=c99 -o foo foo.c -lm
|
||||
highlight: c
|
||||
monaco: cpp
|
||||
monaco: c
|
||||
display: C
|
||||
cc:
|
||||
compile: /usr/bin/g++ -Wall -std=c++14 -o foo foo.cc -lm
|
||||
|
||||
@@ -648,10 +648,9 @@ export class ProblemEditHandler extends ProblemManageHandler {
|
||||
) {
|
||||
if (newPid !== this.pdoc.pid && await problem.get(domainId, newPid)) throw new BadRequestError('new pid exists');
|
||||
const $update: Partial<ProblemDoc> = {
|
||||
title, content, pid: newPid, hidden, assign, tag: tag ?? [], difficulty,
|
||||
title, content, pid: newPid, hidden, assign, tag: tag ?? [], difficulty, html: false,
|
||||
};
|
||||
let pdoc = await problem.get(domainId, pid);
|
||||
pdoc = await problem.edit(domainId, pdoc.docId, $update);
|
||||
const pdoc = await problem.edit(domainId, this.pdoc.docId, $update);
|
||||
this.response.redirect = this.url('problem_detail', { pid: newPid || pdoc.docId });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,15 +58,21 @@ function load(data: Record<string, Record<string, string>>) {
|
||||
|
||||
export = load;
|
||||
|
||||
function collect(lang: string) {
|
||||
const s = translations[lang];
|
||||
if (!(s instanceof Array)) return {};
|
||||
const result = {};
|
||||
for (let i = s.length - 1; i >= 0; i--) Object.assign(result, s[i]);
|
||||
return result;
|
||||
}
|
||||
|
||||
global.Hydro.locales = new Proxy(translations, {
|
||||
get(self, lang: string) {
|
||||
if (!self[lang]) return {};
|
||||
return new Proxy(self[lang], {
|
||||
get(s, key) {
|
||||
if (typeof key === 'string') return app.i18n.get(key, lang);
|
||||
const result = {};
|
||||
for (let i = s.length - 1; i >= 0; i--) Object.assign(result, s[i]);
|
||||
return result;
|
||||
return Object.assign(collect(lang.split('_')[0]), collect(lang));
|
||||
},
|
||||
has(s, key: string) {
|
||||
return !!s.find((i) => !!i[key]);
|
||||
|
||||
@@ -3,6 +3,14 @@ import {
|
||||
} from 'prom-client';
|
||||
import { Context, db } from 'hydrooj';
|
||||
|
||||
declare module 'hydrooj' {
|
||||
interface Context {
|
||||
metrics: Registry;
|
||||
}
|
||||
}
|
||||
|
||||
Context.service('metrics');
|
||||
|
||||
export function createRegistry(ctx: Context) {
|
||||
const registry = new Registry();
|
||||
|
||||
@@ -61,5 +69,7 @@ export function createRegistry(ctx: Context) {
|
||||
});
|
||||
|
||||
collectDefaultMetrics({ register: registry });
|
||||
|
||||
ctx.metrics = registry;
|
||||
return registry;
|
||||
}
|
||||
Reference in new issue
Block a user