ui: enhance language selection

This commit is contained in:
undefined committed 2021-05-07 22:22:24 +08:00
1 parent 377ef55d49
commit 80ac44d98e
17 files changed
+201 -70

No files matched your search

+1
View File
@@ -115,6 +115,7 @@ export async function setting(pending: string[], fail: string[], modelSetting: t
),
);
}
logger.info('Config load: %s', i);
} catch (e) {
logger.error('Config Load Fail: %s', i);
logger.error(e);
+3 -3
View File
@@ -1,11 +1,11 @@
import { ObjectID } from 'mongodb';
import { parseLang } from '@hydrooj/utils/lib/lang';
import { JudgeResultBody, Rdoc, TestCase } from '../interface';
import { sleep } from '../utils';
import { Logger } from '../logger';
import difficultyAlgorithm from '../lib/difficulty';
import record from '../model/record';
import problem from '../model/problem';
import * as setting from '../model/setting';
import * as builtin from '../model/builtin';
import * as contest from '../model/contest';
import domain from '../model/domain';
@@ -127,14 +127,14 @@ class JudgeConnectionHandler extends ConnectionHandler {
const xff = system.get('server.xff');
this.ip = xff ? this.request.headers[xff] || this.request.ip : this.request.ip;
logger.info('Judge daemon connected from ', this.ip);
this.send({ language: system.lang });
this.send({ language: setting.langs });
this.sendLanguageConfig = this.sendLanguageConfig.bind(this);
bus.on('system/setting', this.sendLanguageConfig);
this.newTask();
}
async sendLanguageConfig() {
this.send({ language: system.lang });
this.send({ language: setting.langs });
}
async newTask() {
+16 -11
View File
@@ -111,14 +111,6 @@ const LangSettingNode = {
range: {},
};
bus.on('system/setting', (args) => {
if (!args['hydrooj.lang']) return;
const lang = parseLang(args['hydrooj.lang']);
const range = {};
for (const key in lang) range[key] = lang[key].display;
LangSettingNode.range = range;
});
PreferenceSetting(
Setting('setting_display', 'viewLang', null, langRange, 'UI Language'),
Setting('setting_display', 'timeZone', 'Asia/Shanghai', timezones, 'Timezone'),
@@ -207,6 +199,9 @@ SystemSetting(
Setting('setting_storage', 'installid', String.random(64), 'text', 'installid', 'Installation ID', FLAG_HIDDEN | FLAG_DISABLED),
);
// eslint-disable-next-line import/no-mutable-exports
export let langs = {};
bus.once('app/started', async () => {
logger.debug('Ensuring settings');
const system = global.Hydro.model.system;
@@ -219,13 +214,22 @@ bus.once('app/started', async () => {
}
}
try {
SETTINGS_BY_KEY['codeLang'].range = yaml.load(system.get('lang.texts')) as any;
langs = parseLang(system.get('hydrooj.langs'));
global.Hydro.model.setting.langs = langs;
const range = {};
for (const key in langs) range[key] = langs[key].display;
LangSettingNode.range = range;
} catch (e) { /* Ignore */ }
});
bus.on('system/setting', (args) => {
if (!args.lang?.texts) return;
SETTINGS_BY_KEY['codeLang'].range = yaml.load(args.lang.texts) as any;
if (args.hydrooj?.langs) {
langs = parseLang(args.hydrooj.langs);
global.Hydro.model.setting.langs = langs;
const range = {};
for (const key in langs) range[key] = langs[key].display;
LangSettingNode.range = range;
}
});
global.Hydro.model.setting = {
@@ -248,4 +252,5 @@ global.Hydro.model.setting = {
DOMAIN_SETTINGS_BY_KEY,
DOMAIN_USER_SETTINGS,
DOMAIN_USER_SETTINGS_BY_KEY,
langs,
};
-6
View File
@@ -71,13 +71,8 @@ export async function runConfig() {
await bus.emit('database/config');
}
// eslint-disable-next-line import/no-mutable-exports
export let lang = {};
bus.on('system/setting', (args) => {
for (const key in args) set(key, args[key], false);
if (!args['hydrooj.lang']) return;
lang = parseLang(args['hydrooj.lang']);
});
global.Hydro.model.system = {
@@ -86,5 +81,4 @@ global.Hydro.model.system = {
getMany,
inc,
set,
lang,
};