ui: hook events on document

This commit is contained in:
undefined committed 2021-05-21 13:03:30 +08:00
1 parent 2b9c71c009
commit 91d85c69a0
4 files changed
+22 -24

No files matched your search

+1 -1
View File
@@ -251,7 +251,7 @@ small, figcaption
.typo a, .typo .link, .typo-a
&, &:visited, &:active, &:hover
:not(.user-profile-name)
&:not(.user-profile-name)
color: $primary-color
.typo p, .typo dl, .typo form, .typo hr, .typo table
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@hydrooj/ui-default",
"version": "4.8.34",
"version": "4.8.35",
"author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0",
"main": "hydro.js",
+18 -20
View File
@@ -225,11 +225,9 @@ const page = new NamedPage('problem_files', () => {
const language = {
yaml: 'yaml',
yml: 'yaml',
txt: 'plain',
in: 'plain',
out: 'plain',
ans: 'plain',
}[filename.split('.').pop()];
cc: 'cpp',
json: 'json',
}[filename.split('.').pop()] || 'plain';
const editor = new Editor($('[name="fileContent"]'), {
value,
autoResize: false,
@@ -248,6 +246,7 @@ const page = new NamedPage('problem_files', () => {
* @param {JQuery.ClickEvent<HTMLElement, undefined, HTMLElement, HTMLElement>} ev
*/
async function handleEdit(type, ev) {
if (ev?.metaKey || ev?.ctrlKey || ev?.shiftKey) return;
if (ev) ev.preventDefault();
const filename = ev
? ev.currentTarget.closest('[data-filename]').getAttribute('data-filename')
@@ -266,7 +265,6 @@ const page = new NamedPage('problem_files', () => {
content = await request.get(res.url, undefined, { dataType: 'text' });
} else Notification.info(i18n('Loading editor...'));
const val = await startEdit(filename, content);
console.log(val);
if (typeof val !== 'string') return;
Notification.info(i18n('Saving file...'));
const data = new FormData();
@@ -280,21 +278,21 @@ const page = new NamedPage('problem_files', () => {
}
if ($('[name="upload_testdata"]').length) {
$('.problem-files-testdata .col--name').on('click', (ev) => handleEdit('testdata', ev));
$('.problem-files-additional_file .col--name').on('click', (ev) => handleEdit('additional_file', ev));
$('[name="upload_testdata"]').on('click', () => handleClickUpload('testdata'));
$('[name="upload_file"]').on('click', () => handleClickUpload('additional_file'));
$('[name="create_testdata"]').on('click', () => handleEdit('testdata'));
$('[name="create_file"]').on('click', () => handleEdit('additional_file'));
$('[name="remove_selected_testdata"]').on('click', () => handleClickRemoveSelected('testdata'));
$('[name="remove_selected_file"]').on('click', () => handleClickRemoveSelected('additional_file'));
$(document).on('click', '.problem-files-testdata .col--name', (ev) => handleEdit('testdata', ev));
$(document).on('click', '.problem-files-additional_file .col--name', (ev) => handleEdit('additional_file', ev));
$(document).on('click', '[name="upload_testdata"]', () => handleClickUpload('testdata'));
$(document).on('click', '[name="upload_file"]', () => handleClickUpload('additional_file'));
$(document).on('click', '[name="create_testdata"]', () => handleEdit('testdata'));
$(document).on('click', '[name="create_file"]', () => handleEdit('additional_file'));
$(document).on('click', '[name="remove_selected_testdata"]', () => handleClickRemoveSelected('testdata'));
$(document).on('click', '[name="remove_selected_file"]', () => handleClickRemoveSelected('additional_file'));
}
$('.problem-files-testdata').on('dragover', (ev) => handleDragOver('testdata', ev));
$('.problem-files-additional_file').on('dragover', (ev) => handleDragOver('additional_file', ev));
$('.problem-files-testdata').on('drop', (ev) => handleDrop('testdata', ev));
$('.problem-files-additional_file').on('drop', (ev) => handleDrop('additional_file', ev));
$('[name="download_selected_testdata"]').on('click', () => handleClickDownloadSelected('testdata'));
$('[name="download_selected_file"]').on('click', () => handleClickDownloadSelected('additional_file'));
$(document).on('dragover', '.problem-files-testdata', (ev) => handleDragOver('testdata', ev));
$(document).on('dragover', '.problem-files-additional_file', (ev) => handleDragOver('additional_file', ev));
$(document).on('drop', '.problem-files-testdata', (ev) => handleDrop('testdata', ev));
$(document).on('drop', '.problem-files-additional_file', (ev) => handleDrop('additional_file', ev));
$(document).on('click', '[name="download_selected_testdata"]', () => handleClickDownloadSelected('testdata'));
$(document).on('click', '[name="download_selected_file"]', () => handleClickDownloadSelected('additional_file'));
});
export default page;
@@ -170,7 +170,7 @@ function parseCategorySelection() {
function ensureAndGetSelectedPids() {
const pids = _.map(
$(`tbody [data-checkbox-group="problem"]:checked`),
$('tbody [data-checkbox-group="problem"]:checked'),
(ch) => $(ch).closest('tr').attr('data-pid'),
);
if (pids.length === 0) {
@@ -204,7 +204,7 @@ async function handleOperation(operation) {
const page = new NamedPage(['problem_main', 'problem_category'], () => {
const doc = document.documentElement;
doc.className = doc.className + ' display-mode';
doc.className += ' display-mode';
buildCategoryFilter();
parseCategorySelection();
$('[name="leave-edit-mode"]').on('click', () => {