From 06f9ca7194e9f1811df94aa29bdbac758bc6c717 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 23 Dec 2024 20:26:46 +0800 Subject: [PATCH] add problem author --- package-lock.json | 130 ++++++++++++++++++++-------------------- package.json | 10 ++-- src/auto-imports.d.ts | 2 + src/oj/api.ts | 1 + src/oj/problem/list.vue | 8 +++ src/utils/types.ts | 1 + 6 files changed, 82 insertions(+), 70 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8079f50..6dec175 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@codemirror/lang-cpp": "^6.0.2", "@codemirror/lang-python": "^6.1.6", - "@vueuse/core": "^12.0.0", + "@vueuse/core": "^12.2.0", "@wangeditor-next/editor": "^5.6.19", "@wangeditor-next/editor-for-vue": "^5.1.14", "axios": "^1.7.9", @@ -20,7 +20,7 @@ "copy-text-to-clipboard": "^3.2.0", "date-fns": "^4.1.0", "highlight.js": "^11.11.0", - "naive-ui": "^2.40.3", + "naive-ui": "^2.40.4", "normalize.css": "^8.0.1", "pinia": "^2.3.0", "vue": "^3.5.13", @@ -30,17 +30,17 @@ }, "devDependencies": { "@iconify/vue": "^4.2.0", - "@shikijs/markdown-it": "^1.24.2", + "@shikijs/markdown-it": "^1.24.4", "@types/canvas-confetti": "^1.9.0", "@types/node": "^22.10.2", "@vitejs/plugin-vue": "^5.2.1", "prettier": "^3.4.2", "prettier-plugin-organize-imports": "^4.1.0", - "typescript": "5.6.3", + "typescript": "~5.6.3", "unplugin-auto-import": "^0.19.0", "unplugin-vue-components": "^0.28.0", "unplugin-vue-markdown": "^0.28.0", - "vite": "^6.0.3", + "vite": "^6.0.5", "vue-tsc": "^2.1.10" } }, @@ -1530,62 +1530,62 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.24.2", - "resolved": "https://registry.npmmirror.com/@shikijs/core/-/core-1.24.2.tgz", - "integrity": "sha512-BpbNUSKIwbKrRRA+BQj0BEWSw+8kOPKDJevWeSE/xIqGX7K0xrCZQ9kK0nnEQyrzsUoka1l81ZtJ2mGaCA32HQ==", + "version": "1.24.4", + "resolved": "https://registry.npmmirror.com/@shikijs/core/-/core-1.24.4.tgz", + "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.24.2", - "@shikijs/engine-oniguruma": "1.24.2", - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.3" + "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.24.2", - "resolved": "https://registry.npmmirror.com/@shikijs/engine-javascript/-/engine-javascript-1.24.2.tgz", - "integrity": "sha512-EqsmYBJdLEwEiO4H+oExz34a5GhhnVp+jH9Q/XjPjmBPc6TE/x4/gD0X3i0EbkKKNqXYHHJTJUpOLRQNkEzS9Q==", + "version": "1.24.4", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz", + "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0", - "oniguruma-to-es": "0.7.0" + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", + "oniguruma-to-es": "0.8.1" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.24.2", - "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.2.tgz", - "integrity": "sha512-ZN6k//aDNWRJs1uKB12pturKHh7GejKugowOFGAuG7TxDRLod1Bd5JhpOikOiFqPmKjKEPtEA6mRCf7q3ulDyQ==", + "version": "1.24.4", + "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz", + "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0" + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1" } }, "node_modules/@shikijs/markdown-it": { - "version": "1.24.2", - "resolved": "https://registry.npmmirror.com/@shikijs/markdown-it/-/markdown-it-1.24.2.tgz", - "integrity": "sha512-vLFRZYudSkrWWrtfBBZy7hM5mZjpC54zdxSNDn25nV6uVSilySmbdt70LyfiuTOtrKQ3p7fjuxojxqM/n6qVCg==", + "version": "1.24.4", + "resolved": "https://registry.npmmirror.com/@shikijs/markdown-it/-/markdown-it-1.24.4.tgz", + "integrity": "sha512-zSY4o6N6QudVd4SMw1G0fFe9l2ujOKhzR8vGPHUZTVGKhOTdSdp0JM0Zr8Vt3mSdgUxQC3dkdUOZQcSMwdG0Og==", "dev": true, "license": "MIT", "dependencies": { "markdown-it": "^14.1.0", - "shiki": "1.24.2" + "shiki": "1.24.4" } }, "node_modules/@shikijs/types": { - "version": "1.24.2", - "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-1.24.2.tgz", - "integrity": "sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==", + "version": "1.24.4", + "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-1.24.4.tgz", + "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4" } }, @@ -1975,14 +1975,14 @@ "license": "MIT" }, "node_modules/@vueuse/core": { - "version": "12.0.0", - "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.0.0.tgz", - "integrity": "sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==", + "version": "12.2.0", + "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.2.0.tgz", + "integrity": "sha512-jksyNu+5EGwggNkRWd6xX+8qBkYbmrwdFQMgCABsz+wq8bKF6w3soPFLB8vocFp3wFIzn0OYkSPM9JP+AFKwsg==", "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "12.0.0", - "@vueuse/shared": "12.0.0", + "@vueuse/metadata": "12.2.0", + "@vueuse/shared": "12.2.0", "vue": "^3.5.13" }, "funding": { @@ -1990,18 +1990,18 @@ } }, "node_modules/@vueuse/metadata": { - "version": "12.0.0", - "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.0.0.tgz", - "integrity": "sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==", + "version": "12.2.0", + "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.2.0.tgz", + "integrity": "sha512-x6zynZtTh1l52m0y8d/EgzpshnMjg8cNZ2KWoncJ62Z5qPSGoc4FUunmMVrrRM/I/5542rTEY89CGftngZvrkQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/shared": { - "version": "12.0.0", - "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.0.0.tgz", - "integrity": "sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==", + "version": "12.2.0", + "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.2.0.tgz", + "integrity": "sha512-SRr4AZwv/giS+EmyA1ZIzn3/iALjjnWAGaBNmoDTMEob9JwQaevAocuaMDnPAvU7Z35Y5g3CFRusCWgp1gVJ3Q==", "license": "MIT", "dependencies": { "vue": "^3.5.13" @@ -4008,9 +4008,9 @@ "license": "MIT" }, "node_modules/naive-ui": { - "version": "2.40.3", - "resolved": "https://registry.npmmirror.com/naive-ui/-/naive-ui-2.40.3.tgz", - "integrity": "sha512-TpgYfOg0SNlG4HHhTdFnFcPc1trZiX3r10Pn6biyEgRoi6ZC5qbsY8xgKsqQuG4nWj2PHLT8pPVEkt2pKOlxag==", + "version": "2.40.4", + "resolved": "https://registry.npmmirror.com/naive-ui/-/naive-ui-2.40.4.tgz", + "integrity": "sha512-SDFbW9/VEZix/gmzj54jH6c0YDBVM6o0mG1520RAWKtPSqVrAp5r8qLi8dYvvDmcs/qoRbzM3QGuA4GxQJ/iEg==", "license": "MIT", "dependencies": { "@css-render/plugin-bem": "^0.15.14", @@ -4184,15 +4184,15 @@ } }, "node_modules/oniguruma-to-es": { - "version": "0.7.0", - "resolved": "https://registry.npmmirror.com/oniguruma-to-es/-/oniguruma-to-es-0.7.0.tgz", - "integrity": "sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==", + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz", + "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==", "dev": true, "license": "MIT", "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.0.2", - "regex-recursion": "^4.3.0" + "regex-recursion": "^5.0.0" } }, "node_modules/path-browserify": { @@ -4468,9 +4468,9 @@ } }, "node_modules/regex-recursion": { - "version": "4.3.0", - "resolved": "https://registry.npmmirror.com/regex-recursion/-/regex-recursion-4.3.0.tgz", - "integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==", + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/regex-recursion/-/regex-recursion-5.0.0.tgz", + "integrity": "sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==", "dev": true, "license": "MIT", "dependencies": { @@ -4615,17 +4615,17 @@ } }, "node_modules/shiki": { - "version": "1.24.2", - "resolved": "https://registry.npmmirror.com/shiki/-/shiki-1.24.2.tgz", - "integrity": "sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==", + "version": "1.24.4", + "resolved": "https://registry.npmmirror.com/shiki/-/shiki-1.24.4.tgz", + "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "1.24.2", - "@shikijs/engine-javascript": "1.24.2", - "@shikijs/engine-oniguruma": "1.24.2", - "@shikijs/types": "1.24.2", - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/core": "1.24.4", + "@shikijs/engine-javascript": "1.24.4", + "@shikijs/engine-oniguruma": "1.24.4", + "@shikijs/types": "1.24.4", + "@shikijs/vscode-textmate": "^9.3.1", "@types/hast": "^3.0.4" } }, @@ -5371,13 +5371,13 @@ } }, "node_modules/vite": { - "version": "6.0.3", - "resolved": "https://registry.npmmirror.com/vite/-/vite-6.0.3.tgz", - "integrity": "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==", + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.0.5.tgz", + "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.24.0", + "esbuild": "0.24.0", "postcss": "^8.4.49", "rollup": "^4.23.0" }, diff --git a/package.json b/package.json index ed3c25b..4c28aae 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "dependencies": { "@codemirror/lang-cpp": "^6.0.2", "@codemirror/lang-python": "^6.1.6", - "@vueuse/core": "^12.0.0", + "@vueuse/core": "^12.2.0", "@wangeditor-next/editor": "^5.6.19", "@wangeditor-next/editor-for-vue": "^5.1.14", "axios": "^1.7.9", @@ -21,7 +21,7 @@ "copy-text-to-clipboard": "^3.2.0", "date-fns": "^4.1.0", "highlight.js": "^11.11.0", - "naive-ui": "^2.40.3", + "naive-ui": "^2.40.4", "normalize.css": "^8.0.1", "pinia": "^2.3.0", "vue": "^3.5.13", @@ -31,17 +31,17 @@ }, "devDependencies": { "@iconify/vue": "^4.2.0", - "@shikijs/markdown-it": "^1.24.2", + "@shikijs/markdown-it": "^1.24.4", "@types/canvas-confetti": "^1.9.0", "@types/node": "^22.10.2", "@vitejs/plugin-vue": "^5.2.1", "prettier": "^3.4.2", "prettier-plugin-organize-imports": "^4.1.0", - "typescript": "5.6.3", + "typescript": "~5.6.3", "unplugin-auto-import": "^0.19.0", "unplugin-vue-components": "^0.28.0", "unplugin-vue-markdown": "^0.28.0", - "vite": "^6.0.3", + "vite": "^6.0.5", "vue-tsc": "^2.1.10" } } diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts index 239fa31..43194c2 100644 --- a/src/auto-imports.d.ts +++ b/src/auto-imports.d.ts @@ -233,12 +233,14 @@ declare global { const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] + const usePreferredReducedTransparency: typeof import('@vueuse/core')['usePreferredReducedTransparency'] const usePrevious: typeof import('@vueuse/core')['usePrevious'] const useRafFn: typeof import('@vueuse/core')['useRafFn'] const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] const useRoute: typeof import('vue-router')['useRoute'] const useRouter: typeof import('vue-router')['useRouter'] + const useSSRWidth: typeof import('@vueuse/core')['useSSRWidth'] const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation'] const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea'] const useScriptTag: typeof import('@vueuse/core')['useScriptTag'] diff --git a/src/oj/api.ts b/src/oj/api.ts index 7966ac5..825fc18 100644 --- a/src/oj/api.ts +++ b/src/oj/api.ts @@ -18,6 +18,7 @@ function filterResult(result: Problem) { submission: result.submission_number, rate: getACRate(result.accepted_number, result.submission_number), status: "", + author: result.created_by.username, } if (result.my_status === null || result.my_status === undefined) { newResult.status = "not_test" diff --git a/src/oj/problem/list.vue b/src/oj/problem/list.vue index e7091a9..8bacf4b 100644 --- a/src/oj/problem/list.vue +++ b/src/oj/problem/list.vue @@ -181,6 +181,14 @@ const baseColumns: DataTableColumn[] = [ render: (row) => h(NSpace, () => row.tags.map((t) => h(NTag, { key: t }, () => t))), }, + { + title: renderTableTitle( + "出题者", + "streamline-emojis:smiling-face-with-sunglasses", + ), + key: "author", + width: 130, + }, { title: renderTableTitle("提交数", "streamline-emojis:clinking-beer-mugs"), key: "submission", diff --git a/src/utils/types.ts b/src/utils/types.ts index 18dace6..9db07d3 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -159,6 +159,7 @@ export interface ProblemFiltered { submission: number rate: string status: "not_test" | "passed" | "failed" + author: string } export interface AdminProblemFiltered {