diff --git a/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx b/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx index d9035b83d..5dac9026f 100644 --- a/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx +++ b/packages/ui-default/components/scratchpad/ScratchpadToolbarContainer.jsx @@ -7,7 +7,7 @@ import { connect } from 'react-redux'; import i18n from 'vj/utils/i18n'; import request from 'vj/utils/request'; import Icon from 'vj/components/react/IconComponent'; -import getAvaliableLangs from 'vj/utils/avaliableLangs'; +import getAvailableLangs from 'vj/utils/availableLangs'; import Toolbar, { ToolbarItemComponent as ToolbarItem, ToolbarButtonComponent as ToolbarButton, @@ -67,8 +67,8 @@ const mapDispatchToProps = (dispatch) => ({ }, }); -const avaliableLangs = getAvaliableLangs(UiContext.pdoc.config.langs); -const keys = Object.keys(avaliableLangs); +const availableLangs = getAvailableLangs(UiContext.pdoc.config.langs); +const keys = Object.keys(availableLangs); export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadToolbarContainer extends React.PureComponent { static contextTypes = { @@ -77,9 +77,9 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool constructor(props) { super(props); - if (!avaliableLangs[this.props.editorLang]) { + if (!availableLangs[this.props.editorLang]) { // 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]); } } @@ -91,9 +91,9 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool render() { let canUsePretest = ['default', 'fileio'].includes(UiContext.pdoc.config?.type); 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 ( {canUsePretest && ( @@ -142,7 +142,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(class ScratchpadTool value={this.props.editorLang} onChange={(ev) => this.props.setEditorLanguage(ev.target.value)} > - {_.map(LANGS, (val, key) => ( + {_.map(availableLangs, (val, key) => ( ))} diff --git a/packages/ui-default/pages/home_preference.page.jsx b/packages/ui-default/pages/home_preference.page.jsx index 4fc6a8057..2938f969f 100644 --- a/packages/ui-default/pages/home_preference.page.jsx +++ b/packages/ui-default/pages/home_preference.page.jsx @@ -52,7 +52,7 @@ function initCodeLangHelper() { } const main = {}; 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); const current = $('[name="codeLang"]').val(); diff --git a/packages/ui-default/pages/problem_submit.page.js b/packages/ui-default/pages/problem_submit.page.js index ee170c422..0544ab97e 100644 --- a/packages/ui-default/pages/problem_submit.page.js +++ b/packages/ui-default/pages/problem_submit.page.js @@ -1,5 +1,5 @@ import { NamedPage } from 'vj/misc/Page'; -import getAvaliableLangs from 'vj/utils/avaliableLangs'; +import getAvailableLangs from 'vj/utils/availableLangs'; function setOptions($el, options) { $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 { config } = UiContext.pdoc; - const avaliableLangs = getAvaliableLangs(config.langs); + const availableLangs = getAvailableLangs(config.langs); function onChangeMain(update = true) { const options = {}; - for (const key in avaliableLangs) { - if (key.startsWith(`${this.value}.`) && key !== this.value) options[key] = avaliableLangs[key].display; + for (const key in availableLangs) { + if (key.startsWith(`${this.value}.`) && key !== this.value) options[key] = availableLangs[key].display; } setOptions($('#codelang-sub-select'), options); if (Object.keys(options).length) { @@ -28,7 +28,7 @@ const page = new NamedPage(['problem_submit', 'contest_detail_problem_submit', ' return Object.keys(options)[0]; } 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 (!key.includes('.')) main[key] = window.LANGS[key].display; else { diff --git a/packages/ui-default/pages/record_main.page.ts b/packages/ui-default/pages/record_main.page.ts index f7a61f709..9bf33b323 100644 --- a/packages/ui-default/pages/record_main.page.ts +++ b/packages/ui-default/pages/record_main.page.ts @@ -2,7 +2,7 @@ import { NamedPage } from 'vj/misc/Page'; import UserSelectAutoComplete from 'vj/components/autocomplete/UserSelectAutoComplete'; import ProblemSelectAutoComplete from 'vj/components/autocomplete/ProblemSelectAutoComplete'; 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 [{ default: SockJs }, { DiffDOM }] = await Promise.all([ @@ -38,9 +38,9 @@ const page = new NamedPage('record_main', async () => { ProblemSelectAutoComplete.getOrConstruct($('[name="pid"]'), { clearDefaultValue: false, }); - const avaliableLangs = getAvaliableLangs(UiContext.domain.langs?.split(',')); - Object.keys(avaliableLangs).map( - (i) => ($('select[name="lang"]').append(tpl``))); + const availableLangs = getAvailableLangs(UiContext.domain.langs?.split(',')); + Object.keys(availableLangs).map( + (i) => ($('select[name="lang"]').append(tpl``))); const lang = new URL(window.location.href).searchParams.get('lang'); if (lang) $('select[name="lang"]').val(lang); }); diff --git a/packages/ui-default/utils/avaliableLangs.ts b/packages/ui-default/utils/availableLangs.ts similarity index 85% rename from packages/ui-default/utils/avaliableLangs.ts rename to packages/ui-default/utils/availableLangs.ts index ca916897b..6226b51fb 100644 --- a/packages/ui-default/utils/avaliableLangs.ts +++ b/packages/ui-default/utils/availableLangs.ts @@ -1,6 +1,6 @@ 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 = {}; for (const key in LANGS) { if (prefixes.has(key)) continue;