mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
ui: fix availableLangs
This commit is contained in:
1 parent
2a66302c9e
commit
0c277f2224
5 files changed
+19
-19
No files matched your search
@@ -7,7 +7,7 @@ import { connect } from 'react-redux';
|
|||||||
import i18n from 'vj/utils/i18n';
|
import i18n from 'vj/utils/i18n';
|
||||||
import request from 'vj/utils/request';
|
import request from 'vj/utils/request';
|
||||||
import Icon from 'vj/components/react/IconComponent';
|
import Icon from 'vj/components/react/IconComponent';
|
||||||
import getAvaliableLangs from 'vj/utils/avaliableLangs';
|
import getAvailableLangs from 'vj/utils/availableLangs';
|
||||||
import Toolbar, {
|
import Toolbar, {
|
||||||
ToolbarItemComponent as ToolbarItem,
|
ToolbarItemComponent as ToolbarItem,
|
||||||
ToolbarButtonComponent as ToolbarButton,
|
ToolbarButtonComponent as ToolbarButton,
|
||||||
@@ -67,8 +67,8 @@ const mapDispatchToProps = (dispatch) => ({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const avaliableLangs = getAvaliableLangs(UiContext.pdoc.config.langs);
|
const availableLangs = getAvailableLangs(UiContext.pdoc.config.langs);
|
||||||
const keys = Object.keys(avaliableLangs);
|
const keys = Object.keys(availableLangs);
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadToolbarContainer extends React.PureComponent {
|
export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadToolbarContainer extends React.PureComponent {
|
||||||
static contextTypes = {
|
static contextTypes = {
|
||||||
@@ -77,9 +77,9 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool
|
|||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
if (!avaliableLangs[this.props.editorLang]) {
|
if (!availableLangs[this.props.editorLang]) {
|
||||||
// preference not allowed
|
// preference not allowed
|
||||||
const key = keys.find((i) => avaliableLangs[i].pretest === this.props.editorLang);
|
const key = keys.find((i) => availableLangs[i].pretest === this.props.editorLang);
|
||||||
this.props.setEditorLanguage(key || keys[0]);
|
this.props.setEditorLanguage(key || keys[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -91,9 +91,9 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool
|
|||||||
render() {
|
render() {
|
||||||
let canUsePretest = ['default', 'fileio'].includes(UiContext.pdoc.config?.type);
|
let canUsePretest = ['default', 'fileio'].includes(UiContext.pdoc.config?.type);
|
||||||
if (UiContext.pdoc.config?.type === 'remote_judge') {
|
if (UiContext.pdoc.config?.type === 'remote_judge') {
|
||||||
if (avaliableLangs[this.props.editorLang].pretest) canUsePretest = true;
|
if (availableLangs[this.props.editorLang].pretest) canUsePretest = true;
|
||||||
}
|
}
|
||||||
if (avaliableLangs[this.props.editorLang].pretest === false) canUsePretest = false;
|
if (availableLangs[this.props.editorLang].pretest === false) canUsePretest = false;
|
||||||
return (
|
return (
|
||||||
<Toolbar>
|
<Toolbar>
|
||||||
{canUsePretest && (
|
{canUsePretest && (
|
||||||
@@ -142,7 +142,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool
|
|||||||
value={this.props.editorLang}
|
value={this.props.editorLang}
|
||||||
onChange={(ev) => this.props.setEditorLanguage(ev.target.value)}
|
onChange={(ev) => this.props.setEditorLanguage(ev.target.value)}
|
||||||
>
|
>
|
||||||
{_.map(LANGS, (val, key) => (
|
{_.map(availableLangs, (val, key) => (
|
||||||
<option value={key} key={key}>{val.display}</option>
|
<option value={key} key={key}>{val.display}</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ function initCodeLangHelper() {
|
|||||||
}
|
}
|
||||||
const main = {};
|
const main = {};
|
||||||
for (const key in window.LANGS) {
|
for (const key in window.LANGS) {
|
||||||
if (!key.includes('.')) main[key] = window.LANGS[key].display;
|
if (!key.includes('.') && !window.LANGS[key].hidden) main[key] = window.LANGS[key].display;
|
||||||
}
|
}
|
||||||
setOptions($('#codelang-main-select'), main);
|
setOptions($('#codelang-main-select'), main);
|
||||||
const current = $('[name="codeLang"]').val();
|
const current = $('[name="codeLang"]').val();
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { NamedPage } from 'vj/misc/Page';
|
import { NamedPage } from 'vj/misc/Page';
|
||||||
import getAvaliableLangs from 'vj/utils/avaliableLangs';
|
import getAvailableLangs from 'vj/utils/availableLangs';
|
||||||
|
|
||||||
function setOptions($el, options) {
|
function setOptions($el, options) {
|
||||||
$el.empty();
|
$el.empty();
|
||||||
@@ -10,12 +10,12 @@ function setOptions($el, options) {
|
|||||||
|
|
||||||
const page = new NamedPage(['problem_submit', 'contest_detail_problem_submit', 'homework_detail_problem_submit'], async () => {
|
const page = new NamedPage(['problem_submit', 'contest_detail_problem_submit', 'homework_detail_problem_submit'], async () => {
|
||||||
const { config } = UiContext.pdoc;
|
const { config } = UiContext.pdoc;
|
||||||
const avaliableLangs = getAvaliableLangs(config.langs);
|
const availableLangs = getAvailableLangs(config.langs);
|
||||||
|
|
||||||
function onChangeMain(update = true) {
|
function onChangeMain(update = true) {
|
||||||
const options = {};
|
const options = {};
|
||||||
for (const key in avaliableLangs) {
|
for (const key in availableLangs) {
|
||||||
if (key.startsWith(`${this.value}.`) && key !== this.value) options[key] = avaliableLangs[key].display;
|
if (key.startsWith(`${this.value}.`) && key !== this.value) options[key] = availableLangs[key].display;
|
||||||
}
|
}
|
||||||
setOptions($('#codelang-sub-select'), options);
|
setOptions($('#codelang-sub-select'), options);
|
||||||
if (Object.keys(options).length) {
|
if (Object.keys(options).length) {
|
||||||
@@ -28,7 +28,7 @@ const page = new NamedPage(['problem_submit', 'contest_detail_problem_submit', '
|
|||||||
return Object.keys(options)[0];
|
return Object.keys(options)[0];
|
||||||
}
|
}
|
||||||
const main = {};
|
const main = {};
|
||||||
for (const key in avaliableLangs) {
|
for (const key in availableLangs) {
|
||||||
if (config.langs && !config.langs.filter((i) => i === key || i.startsWith(`${key}.`)).length) continue;
|
if (config.langs && !config.langs.filter((i) => i === key || i.startsWith(`${key}.`)).length) continue;
|
||||||
if (!key.includes('.')) main[key] = window.LANGS[key].display;
|
if (!key.includes('.')) main[key] = window.LANGS[key].display;
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { NamedPage } from 'vj/misc/Page';
|
|||||||
import UserSelectAutoComplete from 'vj/components/autocomplete/UserSelectAutoComplete';
|
import UserSelectAutoComplete from 'vj/components/autocomplete/UserSelectAutoComplete';
|
||||||
import ProblemSelectAutoComplete from 'vj/components/autocomplete/ProblemSelectAutoComplete';
|
import ProblemSelectAutoComplete from 'vj/components/autocomplete/ProblemSelectAutoComplete';
|
||||||
import tpl from 'vj/utils/tpl';
|
import tpl from 'vj/utils/tpl';
|
||||||
import getAvaliableLangs from 'vj/utils/avaliableLangs';
|
import getAvailableLangs from 'vj/utils/availableLangs';
|
||||||
|
|
||||||
const page = new NamedPage('record_main', async () => {
|
const page = new NamedPage('record_main', async () => {
|
||||||
const [{ default: SockJs }, { DiffDOM }] = await Promise.all([
|
const [{ default: SockJs }, { DiffDOM }] = await Promise.all([
|
||||||
@@ -38,9 +38,9 @@ const page = new NamedPage('record_main', async () => {
|
|||||||
ProblemSelectAutoComplete.getOrConstruct($('[name="pid"]'), {
|
ProblemSelectAutoComplete.getOrConstruct($('[name="pid"]'), {
|
||||||
clearDefaultValue: false,
|
clearDefaultValue: false,
|
||||||
});
|
});
|
||||||
const avaliableLangs = getAvaliableLangs(UiContext.domain.langs?.split(','));
|
const availableLangs = getAvailableLangs(UiContext.domain.langs?.split(','));
|
||||||
Object.keys(avaliableLangs).map(
|
Object.keys(availableLangs).map(
|
||||||
(i) => ($('select[name="lang"]').append(tpl`<option value="${i}" key="${i}">${avaliableLangs[i].display}</option>`)));
|
(i) => ($('select[name="lang"]').append(tpl`<option value="${i}" key="${i}">${availableLangs[i].display}</option>`)));
|
||||||
const lang = new URL(window.location.href).searchParams.get('lang');
|
const lang = new URL(window.location.href).searchParams.get('lang');
|
||||||
if (lang) $('select[name="lang"]').val(lang);
|
if (lang) $('select[name="lang"]').val(lang);
|
||||||
});
|
});
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
const prefixes = new Set(Object.keys(LANGS).filter((i) => i.includes('.')).map((i) => i.split('.')[0]));
|
const prefixes = new Set(Object.keys(LANGS).filter((i) => i.includes('.')).map((i) => i.split('.')[0]));
|
||||||
|
|
||||||
export default function getAvaliableLangs(langsList?: string[]) {
|
export default function getAvailableLangs(langsList?: string[]) {
|
||||||
const Langs = {};
|
const Langs = {};
|
||||||
for (const key in LANGS) {
|
for (const key in LANGS) {
|
||||||
if (prefixes.has(key)) continue;
|
if (prefixes.has(key)) continue;
|
||||||
Reference in new issue
Block a user