diff --git a/build/prepare.js b/build/prepare.js index 2f579a136..a10578c2e 100644 --- a/build/prepare.js +++ b/build/prepare.js @@ -72,7 +72,7 @@ for (const name of ['plugins', 'modules']) { const modules = [ 'packages/hydrooj', - ...['packages', 'framework', 'modules'].flatMap((i) => fs.readdirSync(path.resolve(process.cwd(), i)).map((j) => `${i}/${j}`)), + ...['packages', 'framework'].flatMap((i) => fs.readdirSync(path.resolve(process.cwd(), i)).map((j) => `${i}/${j}`)), ].filter((i) => !i.includes('/.') && !i.includes('ui-default')).filter((i) => fs.statSync(path.resolve(process.cwd(), i)).isDirectory()); const UIConfig = { @@ -80,22 +80,18 @@ const UIConfig = { 'packages/ui-default/public', '**/node_modules', ], - include: ['ts', 'tsx'] - .flatMap((ext) => ['plugins', 'modules'] + include: ['ts', 'tsx', 'vue'] + .flatMap((ext) => ['plugins'] .flatMap((name) => [`${name}/**/public/**/*.${ext}`, `${name}/**/frontend/**/*.${ext}`]) .concat(`packages/ui-default/**/*.${ext}`)), compilerOptions: { - experimentalDecorators: true, - esModuleInterop: true, - resolveJsonModule: true, - jsx: 'react', + ...compilerOptionsBase, module: 'ESNext', skipLibCheck: true, allowSyntheticDefaultImports: true, - target: 'es2020', baseUrl: '.', outDir: path.join(baseOutDir, 'ui'), - moduleResolution: 'node', + moduleResolution: 'bundler', paths: { 'vj/*': [ './packages/ui-default/*', @@ -120,17 +116,7 @@ const pluginsConfig = { ], exclude, compilerOptions: { - target: 'es2020', - module: 'commonjs', - esModuleInterop: true, - moduleResolution: 'node', - jsx: 'react', - sourceMap: false, - composite: true, - strictBindCallApply: true, - resolveJsonModule: true, - experimentalDecorators: true, - incremental: true, + ...compilerOptionsBase, rootDir: '.', baseUrl: '.', outDir: path.join(baseOutDir, 'plugins'), diff --git a/packages/hydrooj/src/handler/status.ts b/packages/hydrooj/src/handler/status.ts index 2f9fc3816..f19c23a75 100644 --- a/packages/hydrooj/src/handler/status.ts +++ b/packages/hydrooj/src/handler/status.ts @@ -3,6 +3,7 @@ import { PRIV } from '../model/builtin'; import * as DocumentModel from '../model/document'; import DomainModel from '../model/domain'; import RecordModel from '../model/record'; +import * as SettingModel from '../model/setting'; import UserModel from '../model/user'; import db from '../service/db'; import { Handler } from '../service/server'; @@ -59,7 +60,13 @@ class StatusHandler extends Handler { if (t) t.key.push(key); else result.push({ key: [key], message }); } - this.response.body = { stats, compilers: result }; + const LANGS = SettingModel.langs; + const languages = {}; + for (const key in LANGS) { + if (LANGS[key].hidden) continue; + languages[`${LANGS[key].display}(${key})`] = LANGS[key].compile || LANGS[key].execute; + } + this.response.body = { stats, languages, compilers: result }; this.response.template = 'status.html'; } } diff --git a/packages/ui-default/components/tab/Tab.js b/packages/ui-default/components/tab/Tab.js index 64ab314cc..1d10129f9 100644 --- a/packages/ui-default/components/tab/Tab.js +++ b/packages/ui-default/components/tab/Tab.js @@ -144,5 +144,3 @@ export default class Tab extends DOMAttachedObject { return true; } } - -_.assign(Tab, DOMAttachedObject); diff --git a/packages/ui-default/components/tab/tab.page.styl b/packages/ui-default/components/tab/tab.page.styl index 23d4de1ca..906e91e19 100644 --- a/packages/ui-default/components/tab/tab.page.styl +++ b/packages/ui-default/components/tab/tab.page.styl @@ -73,6 +73,26 @@ background: $secondary-color content: '' +.section__tab-container:not(.immersive) + .section__tab-header + padding-top: 0 !important + + .section__tab-header-item + border-top: 3px solid transparent; + transition: border-color 0.2s, background 0.2s, color 0.2s; + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + margin-right: 0 + + &:hover + border-color: #5f9fd6; + background: #f8f8f8; + + &.tab--active + border-color: #ed5f82; + + &.selected + border-color: #ed5f82; + .section__tab-content position: relative diff --git a/packages/ui-default/index.ts b/packages/ui-default/index.ts index ae9d64b57..95ee9733d 100644 --- a/packages/ui-default/index.ts +++ b/packages/ui-default/index.ts @@ -10,13 +10,6 @@ class WikiHelpHandler extends Handler { noCheckPermView = true; async get() { - const LANGS = SettingModel.langs; - const languages = {}; - for (const key in LANGS) { - if (LANGS[key].hidden) continue; - languages[`${LANGS[key].display}(${key})`] = LANGS[key].compile || LANGS[key].execute; - } - this.response.body = { languages }; this.response.template = 'wiki_help.html'; } } diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 568215c5a..e377b8ddb 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@blueprintjs/core": "^5.10.3", - "@cordisjs/core": "^3.16.2", + "@cordisjs/core": "^3.17.3", "@fontsource/dm-mono": "^5.0.20", "@fontsource/fira-code": "^5.0.18", "@fontsource/inconsolata": "^5.0.18", @@ -25,8 +25,8 @@ "@fontsource/source-code-pro": "^5.0.18", "@fontsource/ubuntu-mono": "^5.0.20", "@hydrooj/utils": "workspace:^", - "@sentry/browser": "^8.9.2", - "@sentry/webpack-plugin": "^2.18.0", + "@sentry/browser": "^8.11.0", + "@sentry/webpack-plugin": "^2.20.0", "@simplewebauthn/browser": "7.4.0", "@svgr/webpack": "^8.1.0", "@types/gulp-if": "^0.0.34", @@ -45,7 +45,7 @@ "ajv": "^8.16.0", "allotment": "^1.20.2", "autoprefixer": "^10.4.19", - "browser-update": "^3.3.51", + "browser-update": "^3.3.53", "chalk": "^5.3.0", "classnames": "^2.5.1", "clean-webpack-plugin": "^4.0.0", @@ -57,7 +57,7 @@ "echarts": "^5.5.0", "emojis-keywords": "2.0.0", "emojis-list": "2.1.0", - "esbuild-loader": "^4.1.0", + "esbuild-loader": "^4.2.0", "fancy-log": "^2.0.0", "flatpickr": "^4.6.13", "graphiql": "^2.4.7", @@ -77,7 +77,7 @@ "monaco-editor-nls": "^3.1.0", "monaco-editor-webpack-plugin": "^7.1.0", "monaco-themes": "^0.4.4", - "monaco-yaml": "^5.1.1", + "monaco-yaml": "5.1.1", "nanoid": "^5.0.7", "normalize.css": "^8.0.1", "nprogress": "^0.2.0", @@ -120,7 +120,7 @@ "vditor": "^3.10.4", "vinyl-buffer": "^1.0.1", "web-streams-polyfill": "^4.0.0", - "webpack": "^5.92.0", + "webpack": "^5.92.1", "webpack-bundle-analyzer": "^4.10.2", "webpack-dev-server": "^5.0.4", "webpack-manifest-plugin": "^5.0.0", diff --git a/packages/ui-default/pages/problem_edit.page.styl b/packages/ui-default/pages/problem_edit.page.styl index 083869c79..ba0a7d6ab 100644 --- a/packages/ui-default/pages/problem_edit.page.styl +++ b/packages/ui-default/pages/problem_edit.page.styl @@ -1,17 +1,4 @@ .page--problem_edit,.page--problem_create - .section__tab-header-item - border-top: 3px solid transparent; - transition: border-color 0.2s, background 0.2s, color 0.2s; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - margin-right: 0 - - &:hover - border-color: #5f9fd6; - background: #f8f8f8; - - &.tab--active - border-color: #ed5f82; - .problem-sidebar-additional_file height: 270px overflow-y: auto diff --git a/packages/ui-default/templates/status.html b/packages/ui-default/templates/status.html index bbfa2cad0..df337aadd 100644 --- a/packages/ui-default/templates/status.html +++ b/packages/ui-default/templates/status.html @@ -3,41 +3,71 @@
| {{ _('ID') }} | -{{ _('Current Status') }} | -{{ _('OS Info') }} | -{{ _('CPU Info') }} | -{{ _('Memory Info') }} | -{{ _('Handled requests') }} | -
|---|---|---|---|---|---|
| {{ doc._id.toHexString()|truncate(8,True,'') }} | -{% if doc.isOnline %}{{ doc.status }}{% else %}{{ datetimeSpan(doc.updateAt)|safe }}{% endif %} | -{{ doc.osinfo.distro }} {{ doc.osinfo.release }} {{ doc.osinfo.codename }} {{ doc.osinfo.arch }} | -{{ doc.cpu.manufacturer }} {{ doc.cpu.brand }}@{{ doc.cpu.speed }}GHz | -{{ size(doc.memory.used) }}/{{ size(doc.memory.total) }} | -{{ doc.reqCount }} | -
| {{ _('ID') }} | +{{ _('Current Status') }} | +{{ _('OS Info') }} | +{{ _('CPU Info') }} | +{{ _('Memory Info') }} | +{{ _('Handled requests') }} | +
|---|---|---|---|---|---|
| {{ doc._id.toHexString()|truncate(8,True,'') }} | +{% if doc.isOnline %}{{ doc.status }}{% else %}{{ datetimeSpan(doc.updateAt)|safe }}{% endif %} | +{{ doc.osinfo.distro }} {{ doc.osinfo.release }} {{ doc.osinfo.codename }} {{ doc.osinfo.arch }} | +{{ doc.cpu.manufacturer }} {{ doc.cpu.brand }}@{{ doc.cpu.speed }}GHz | +{{ size(doc.memory.used) }}/{{ size(doc.memory.total) }} | +{{ doc.reqCount }} | +
{{ line.key|join(', ') }}
+{{ line.message }}
+ {% endfor %}
+ {{ v }}{{ name }} 使用 HydroJudge 进行评测,编译参数如下:
- {% if languages %} -- {% endif %} +- {%- for k, v in languages -%} -
- {{ k }}
- {%- endfor -%} -{{ v }}
{{ name }} 使用 HydroJudge 进行评测,编译参数和当前所用编译器版本见状态页。