core&ui: fix sidebar (#513)

Co-authored-by: panda <panda_dtdyy@outlook.com>
pull/515/head
undefined 2 years ago committed by GitHub
parent 254f659f0a
commit c347d36e99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,6 +1,6 @@
{
"name": "hydrooj",
"version": "4.7.4",
"version": "4.7.5",
"bin": "bin/hydrooj.js",
"main": "src/plugin-api",
"module": "src/plugin-api",

@ -666,22 +666,22 @@ export class ProblemConfigHandler extends ProblemManageHandler {
export class ProblemFilesHandler extends ProblemDetailHandler {
notUsage = true;
@param('d', Types.CommaSeperatedArray, true)
@param('pjax', Types.Boolean)
@param('sidebar', Types.Boolean)
async get(domainId: string, pjax = false, sidebar = false) {
this.response.body.testdata = sortFiles(this.pdoc.data || []);
async get(domainId: string, d = ['testdata', 'additional_file'], pjax = false, sidebar = false) {
this.response.body.testdata = d.includes('testdata') ? sortFiles(this.pdoc.data || []) : [];
this.response.body.reference = this.pdoc.reference;
this.response.body.additional_file = sortFiles(this.pdoc.additional_file || []);
this.response.body.additional_file = d.includes('additional_file') ? sortFiles(this.pdoc.additional_file || []) : [];
if (pjax) {
const { testdata, additional_file } = this.response.body;
const owner = await user.getById(domainId, this.pdoc.owner);
const args = {
testdata, additional_file, pdoc: this.pdoc, owner_udoc: owner, sidebar,
};
const tasks = [
this.renderHTML('partials/problem_files.html', { ...args, filetype: 'testdata' }),
this.renderHTML('partials/problem_files.html', { ...args, filetype: 'additional_file' }),
];
const tasks = [];
if (d.includes('testdata')) tasks.push(this.renderHTML('partials/problem_files.html', { ...args, filetype: 'testdata' }));
if (d.includes('additional_file')) tasks.push(this.renderHTML('partials/problem_files.html', { ...args, filetype: 'additional_file' }));
if (!sidebar) tasks.push(this.renderHTML('partials/problem-sidebar-information.html', args));
this.response.body = {
fragments: (await Promise.all(tasks)).map((i) => ({ html: i })),

@ -6,6 +6,7 @@ export * from './components/dialog';
export * as bus from './bus';
export { default as AnsiUp } from 'ansi_up';
export { default as loadMonaco } from './components/monaco/loader';
export { default as uploadFiles } from './components/upload';
export * as redux from 'react-redux';
export * from './components/zipDownloader';
export { default as $ } from 'jquery';

@ -68,7 +68,7 @@ export default async function uploadFiles(endpoint = '', files: File[] | FileLis
Notification.success(i18n('File uploaded successfully.'));
if (options.pjax) {
let params = '';
if (options.type) params += `?testdata=${options.type === 'testdata'}&additional_file=${options.type === 'additional_file'}`;
if (options.type) params += `?d=${options.type}`;
if (options.sidebar) params += `${params ? '&' : '?'}sidebar=true`;
await pjax.request({ push: false, url: `${endpoint}${params || ''}` });
}

@ -1,6 +1,6 @@
{
"name": "@hydrooj/ui-default",
"version": "4.47.3",
"version": "4.47.4",
"author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0",
"main": "index.ts",

@ -57,7 +57,7 @@ const page = new NamedPage('problem_config', () => {
type: 'CONFIG_DELETE_TESTDATA',
value: file,
});
await pjax.request({ url: './files?testdata=false&sidebar=true', push: false });
await pjax.request({ url: './files?d=testdata&sidebar=true', push: false });
} catch (error) {
Notification.error(error.message);
}

@ -214,7 +214,7 @@ export default new NamedPage(['problem_create', 'problem_edit'], (pagename) => {
type: 'additional_file',
});
Notification.success(i18n('File have been deleted.'));
await pjax.request({ url: './files?testdata=false&sidebar=true', push: false });
await pjax.request({ url: './files?d=additional_file&sidebar=true', push: false });
} catch (error) {
Notification.error(error.message);
}

Loading…
Cancel
Save