From 91d85c69a0a3dd24f663b0b29824da75843c5a22 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 21 May 2021 13:03:30 +0800 Subject: [PATCH] ui: hook events on document --- packages/ui-default/misc/typography.styl | 2 +- packages/ui-default/package.json | 2 +- .../ui-default/pages/problem_files.page.js | 38 +++++++++---------- .../ui-default/pages/problem_main.page.js | 4 +- 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/packages/ui-default/misc/typography.styl b/packages/ui-default/misc/typography.styl index 4f5b25e35..a133ab015 100644 --- a/packages/ui-default/misc/typography.styl +++ b/packages/ui-default/misc/typography.styl @@ -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 diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 7618e5ae7..745528c5f 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.8.34", + "version": "4.8.35", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/ui-default/pages/problem_files.page.js b/packages/ui-default/pages/problem_files.page.js index 6a8deae67..c38e90794 100644 --- a/packages/ui-default/pages/problem_files.page.js +++ b/packages/ui-default/pages/problem_files.page.js @@ -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} 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; diff --git a/packages/ui-default/pages/problem_main.page.js b/packages/ui-default/pages/problem_main.page.js index e402e9a36..fcb6a7304 100644 --- a/packages/ui-default/pages/problem_main.page.js +++ b/packages/ui-default/pages/problem_main.page.js @@ -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', () => {