From fab689ffdfe7e0e50a4be487bc663cf1f85116bd Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Sun, 4 Jan 2026 09:19:40 +0800 Subject: [PATCH] add raw data for radar --- package-lock.json | 188 ++++++++++---------- package.json | 4 +- src/index.css | 2 +- src/oj/api.ts | 12 +- src/oj/class/my-rank.vue | 241 +++++++++++++------------- src/oj/class/pk.vue | 209 ++++++++++++++++++---- src/oj/class/rank.vue | 288 +++++++++++++++---------------- src/shared/components/Header.vue | 6 +- 8 files changed, 551 insertions(+), 399 deletions(-) diff --git a/package-lock.json b/package-lock.json index e38e7c1..5bebb88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,11 +40,11 @@ "vue-router": "^4.6.4", "y-codemirror.next": "^0.3.5", "y-webrtc": "^10.3.0", - "yjs": "^13.6.28" + "yjs": "^13.6.29" }, "devDependencies": { "@iconify/vue": "^5.0.0", - "@rsbuild/core": "^1.6.15", + "@rsbuild/core": "^1.7.1", "@rsbuild/plugin-vue": "^1.2.2", "@types/canvas-confetti": "^1.9.0", "@types/node": "^25.0.3", @@ -581,9 +581,9 @@ } }, "node_modules/@emnapi/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", - "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.0.tgz", + "integrity": "sha512-ryJnSmj4UhrGLZZPJ6PKVb4wNPAIkW6iyLy+0TRwazd3L1u0wzMe8RfqevAh2HbcSkoeLiSYnOVDOys4JSGYyg==", "dev": true, "license": "MIT", "optional": true, @@ -593,9 +593,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.0.tgz", + "integrity": "sha512-Z82FDl1ByxqPEPrAYYeTQVlx2FSHPe1qwX465c+96IRS3fTdSYRoJcRxg3g2fEG5I69z1dSEWQlNRRr0/677mg==", "dev": true, "license": "MIT", "optional": true, @@ -923,62 +923,62 @@ } }, "node_modules/@module-federation/error-codes": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.21.6.tgz", - "integrity": "sha512-MLJUCQ05KnoVl8xd6xs9a5g2/8U+eWmVxg7xiBMeR0+7OjdWUbHwcwgVFatRIwSZvFgKHfWEiI7wsU1q1XbTRQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", + "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/runtime": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.21.6.tgz", - "integrity": "sha512-+caXwaQqwTNh+CQqyb4mZmXq7iEemRDrTZQGD+zyeH454JAYnJ3s/3oDFizdH6245pk+NiqDyOOkHzzFQorKhQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", + "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.21.6", - "@module-federation/runtime-core": "0.21.6", - "@module-federation/sdk": "0.21.6" + "@module-federation/error-codes": "0.22.0", + "@module-federation/runtime-core": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, "node_modules/@module-federation/runtime-core": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.21.6.tgz", - "integrity": "sha512-5Hd1Y5qp5lU/aTiK66lidMlM/4ji2gr3EXAtJdreJzkY+bKcI5+21GRcliZ4RAkICmvdxQU5PHPL71XmNc7Lsw==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", + "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.21.6", - "@module-federation/sdk": "0.21.6" + "@module-federation/error-codes": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, "node_modules/@module-federation/runtime-tools": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.21.6.tgz", - "integrity": "sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", + "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.21.6", - "@module-federation/webpack-bundler-runtime": "0.21.6" + "@module-federation/runtime": "0.22.0", + "@module-federation/webpack-bundler-runtime": "0.22.0" } }, "node_modules/@module-federation/sdk": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.21.6.tgz", - "integrity": "sha512-x6hARETb8iqHVhEsQBysuWpznNZViUh84qV2yE7AD+g7uIzHKiYdoWqj10posbo5XKf/147qgWDzKZoKoEP2dw==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", + "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.21.6", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.21.6.tgz", - "integrity": "sha512-7zIp3LrcWbhGuFDTUMLJ2FJvcwjlddqhWGxi/MW3ur1a+HaO8v5tF2nl+vElKmbG1DFLU/52l3PElVcWf/YcsQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", + "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.21.6", - "@module-federation/sdk": "0.21.6" + "@module-federation/runtime": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, "node_modules/@napi-rs/wasm-runtime": { @@ -995,16 +995,16 @@ } }, "node_modules/@rsbuild/core": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.6.15.tgz", - "integrity": "sha512-LvoOF53PL6zXgdzEhgnnP51S4FseDFH1bHrobK4EK6zZX/tN8qgf5tdlmN7h4OkMv/Qs1oUfvj0QcLWSstnnvA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.7.1.tgz", + "integrity": "sha512-ULIE/Qh+Ne80Pm/aUPbRHUvwvIzpap07jYNFB47azI8w5Q3sDEC4Gn574jsluT/42iNDsZTFADRBog9FEvtN9Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@rspack/core": "1.6.8", + "@rspack/core": "1.7.0", "@rspack/lite-tapable": "~1.1.0", - "@swc/helpers": "^0.5.17", + "@swc/helpers": "^0.5.18", "core-js": "~3.47.0", "jiti": "^2.6.1" }, @@ -1030,28 +1030,28 @@ } }, "node_modules/@rspack/binding": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.6.8.tgz", - "integrity": "sha512-lUeL4mbwGo+nqRKqFDCm9vH2jv9FNMVt1X8jqayWRcOCPlj/2UVMEFgqjR7Pp2vlvnTKq//31KbDBJmDZq31RQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.0.tgz", + "integrity": "sha512-xO+pZKG2dvU9CuRTTi+DcCc4p+CZhBJlvuYikBja/0a62cTntQV2PWV+/xU1a6Vbo89yNz158LR05nvjtKVwTw==", "dev": true, "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.6.8", - "@rspack/binding-darwin-x64": "1.6.8", - "@rspack/binding-linux-arm64-gnu": "1.6.8", - "@rspack/binding-linux-arm64-musl": "1.6.8", - "@rspack/binding-linux-x64-gnu": "1.6.8", - "@rspack/binding-linux-x64-musl": "1.6.8", - "@rspack/binding-wasm32-wasi": "1.6.8", - "@rspack/binding-win32-arm64-msvc": "1.6.8", - "@rspack/binding-win32-ia32-msvc": "1.6.8", - "@rspack/binding-win32-x64-msvc": "1.6.8" + "@rspack/binding-darwin-arm64": "1.7.0", + "@rspack/binding-darwin-x64": "1.7.0", + "@rspack/binding-linux-arm64-gnu": "1.7.0", + "@rspack/binding-linux-arm64-musl": "1.7.0", + "@rspack/binding-linux-x64-gnu": "1.7.0", + "@rspack/binding-linux-x64-musl": "1.7.0", + "@rspack/binding-wasm32-wasi": "1.7.0", + "@rspack/binding-win32-arm64-msvc": "1.7.0", + "@rspack/binding-win32-ia32-msvc": "1.7.0", + "@rspack/binding-win32-x64-msvc": "1.7.0" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz", - "integrity": "sha512-e8CTQtzaeGnf+BIzR7wRMUwKfIg0jd/sxMRc1Vd0bCMHBhSN9EsGoMuJJaKeRrSmy2nwMCNWHIG+TvT1CEKg+A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.0.tgz", + "integrity": "sha512-HMYrhvVh3sMRBXl6cSI2JqsvlHJKQ42qX+Sw4qbj7LeZBN6Gv4GjfL3cXRLUTdO37FOC0uLEUYgxVXetx/Y4sA==", "cpu": [ "arm64" ], @@ -1063,9 +1063,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.6.8.tgz", - "integrity": "sha512-ku1XpTEPt6Za11zhpFWhfwrTQogcgi9RJrOUVC4FESiPO9aKyd4hJ+JiPgLY0MZOqsptK6vEAgOip+uDVXrCpg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.0.tgz", + "integrity": "sha512-R/SoR04ySmHPqoIBGC+SjP9zRGjL1fS908mdwBvQ1RfFinKu7a/o/5rxH/vxUUsVQrHCyX+o7YXpfWq9xpvyQA==", "cpu": [ "x64" ], @@ -1077,9 +1077,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.6.8.tgz", - "integrity": "sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.0.tgz", + "integrity": "sha512-jDCcso++qshu58+Iuo6oiL0XKuX04lDugL0qwrWHW8SS/EjZ2rc1J3yQx+XDW0PCQsfI2c9ji0IOW56PzW1hXQ==", "cpu": [ "arm64" ], @@ -1091,9 +1091,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.6.8.tgz", - "integrity": "sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.0.tgz", + "integrity": "sha512-0W49s0SQQhr3hZ8Zd7Auyf2pv4OTBr6wQhgWUQ6XeeMEjB16KpAVypSK5Jpn1ON0v9jAPLdod+a255rz8/f3kg==", "cpu": [ "arm64" ], @@ -1105,9 +1105,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.6.8.tgz", - "integrity": "sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.0.tgz", + "integrity": "sha512-oFjzjTD1MmG0ucAaP0Wyg9eobrsnFwZjEHa7LwyzWDRBeC3GWAF9T04Bqd6Ba6DgASGzU0BjEJcUpjvtXxO95Q==", "cpu": [ "x64" ], @@ -1119,9 +1119,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.6.8.tgz", - "integrity": "sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.0.tgz", + "integrity": "sha512-MNGslPLOsurdwOcoo6r0u8mLpw1ADar3hkx67WzwwMqYnem/Ky0aANJC2JvQHPC22mu01gCOukHYyEaUFTxcuw==", "cpu": [ "x64" ], @@ -1133,9 +1133,9 @@ ] }, "node_modules/@rspack/binding-wasm32-wasi": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.6.8.tgz", - "integrity": "sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.0.tgz", + "integrity": "sha512-eaZzkGpxzVESmaX/UALMiQO+eNppe/i1VWQksGRfdoUu0rILqr/YDjsWFTcpbI9Dt3fg2kshHawBHxfwtxHcZQ==", "cpu": [ "wasm32" ], @@ -1147,9 +1147,9 @@ } }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.6.8.tgz", - "integrity": "sha512-23YX7zlOZlub+nPGDBUzktb4D5D6ETUAluKjXEeHIZ9m7fSlEYBnGL66YE+3t1DHXGd0OqsdwlvrNGcyo6EXDQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.0.tgz", + "integrity": "sha512-XFg4l7sOhupnpG0soOfzYLeF2cgpSJMenmjmdzd9y06CotTyVId0hNoS7y+A7hEP8XGf3YPbdiUL5UDp6+DRBA==", "cpu": [ "arm64" ], @@ -1161,9 +1161,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.6.8.tgz", - "integrity": "sha512-cFgRE3APxrY4AEdooVk2LtipwNNT/9mrnjdC5lVbsIsz+SxvGbZR231bxDJEqP15+RJOaD07FO1sIjINFqXMEg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.0.tgz", + "integrity": "sha512-eWt2XV6la/c0IlU/18RlhQsqwHGShSypwA3kt4s/dpfOK0YB1h4f0fYeUZuvj2X0MIoJQGhMofMrgA35/IcAcw==", "cpu": [ "ia32" ], @@ -1175,9 +1175,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.6.8.tgz", - "integrity": "sha512-cIuhVsZYd3o3Neo1JSAhJYw6BDvlxaBoqvgwRkG1rs0ExFmEmgYyG7ip9pFKnKNWph/tmW3rDYypmEfjs1is7g==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.0.tgz", + "integrity": "sha512-LOL5G8rfbAwlmusx+t98r9QzuGRz+L9Bg+8s5s6K/Qe64iemcNIuxGr5QLVq1jLa0SGNTeog4N21pAzlkWh4jw==", "cpu": [ "x64" ], @@ -1189,14 +1189,14 @@ ] }, "node_modules/@rspack/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.6.8.tgz", - "integrity": "sha512-FolcIAH5FW4J2FET+qwjd1kNeFbCkd0VLuIHO0thyolEjaPSxw5qxG67DA7BZGm6PVcoiSgPLks1DL6eZ8c+fA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.0.tgz", + "integrity": "sha512-uDxPQsPh/+2DnOISuKnUiXZ9M0y2G1BOsI0IesxPJGp42ME2QW7axbJfUqD3bwp4bi3RN2zqh56NgxU/XETQvA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime-tools": "0.21.6", - "@rspack/binding": "1.6.8", + "@module-federation/runtime-tools": "0.22.0", + "@rspack/binding": "1.7.0", "@rspack/lite-tapable": "1.1.0" }, "engines": { @@ -1219,9 +1219,9 @@ "license": "MIT" }, "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", + "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -6022,9 +6022,9 @@ } }, "node_modules/yjs": { - "version": "13.6.28", - "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.28.tgz", - "integrity": "sha512-EgnDOXs8+hBVm6mq3/S89Kiwzh5JRbn7w2wXwbrMRyKy/8dOFsLvuIfC+x19ZdtaDc0tA9rQmdZzbqqNHG44wA==", + "version": "13.6.29", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.29.tgz", + "integrity": "sha512-kHqDPdltoXH+X4w1lVmMtddE3Oeqq48nM40FD5ojTd8xYhQpzIDcfE2keMSU5bAgRPJBe225WTUdyUgj1DtbiQ==", "license": "MIT", "peer": true, "dependencies": { diff --git a/package.json b/package.json index 701c0a1..8cb5759 100644 --- a/package.json +++ b/package.json @@ -42,11 +42,11 @@ "vue-router": "^4.6.4", "y-codemirror.next": "^0.3.5", "y-webrtc": "^10.3.0", - "yjs": "^13.6.28" + "yjs": "^13.6.29" }, "devDependencies": { "@iconify/vue": "^5.0.0", - "@rsbuild/core": "^1.6.15", + "@rsbuild/core": "^1.7.1", "@rsbuild/plugin-vue": "^1.2.2", "@types/canvas-confetti": "^1.9.0", "@types/node": "^25.0.3", diff --git a/src/index.css b/src/index.css index 3193060..46472c1 100644 --- a/src/index.css +++ b/src/index.css @@ -8,4 +8,4 @@ body { .md-editor-dark div.vuepress-theme { --md-theme-color: var(--n-text-color) !important; -} \ No newline at end of file +} diff --git a/src/oj/api.ts b/src/oj/api.ts index 282bcb3..d558047 100644 --- a/src/oj/api.ts +++ b/src/oj/api.ts @@ -143,7 +143,11 @@ export function getActivityRank(start: string) { }) } -export function getClassRank(offset: number, limit: number, grade?: number | null) { +export function getClassRank( + offset: number, + limit: number, + grade?: number | null, +) { return http.get("class_rank", { params: { offset, limit, grade }, }) @@ -155,7 +159,11 @@ export function getUserClassRank(offset: number, limit: number) { }) } -export function getClassPK(classNames: string[], startTime?: string, endTime?: string) { +export function getClassPK( + classNames: string[], + startTime?: string, + endTime?: string, +) { const payload: any = { class_name: classNames, } diff --git a/src/oj/class/my-rank.vue b/src/oj/class/my-rank.vue index 2463c5f..2fe7bfb 100644 --- a/src/oj/class/my-rank.vue +++ b/src/oj/class/my-rank.vue @@ -1,121 +1,120 @@ - - - - + + + diff --git a/src/oj/class/pk.vue b/src/oj/class/pk.vue index ed5ea68..c1c8420 100644 --- a/src/oj/class/pk.vue +++ b/src/oj/class/pk.vue @@ -384,6 +384,14 @@ const radarChartData = computed(() => { const datasets = comparisons.value.map((c, index) => { const color = getClassColor(index) + const rawData = [ + c.total_ac, + c.avg_ac, + c.median_ac, + c.excellent_rate, + c.pass_rate, + c.active_rate, + ] return { label: c.class_name, data: [ @@ -394,6 +402,7 @@ const radarChartData = computed(() => { c.pass_rate, c.active_rate, ], + rawData, backgroundColor: color.bg, borderColor: color.border, borderWidth: 2, @@ -466,6 +475,28 @@ const radarChartOptions = { legend: { position: "bottom" as const, }, + tooltip: { + callbacks: { + label: function (context: any) { + const dataset = context.dataset as any + const rawValue = dataset?.rawData?.[context.dataIndex] + const metric = context.label || "" + const isRate = context.dataIndex >= 3 + if (rawValue === undefined || rawValue === null) { + return `${dataset.label || ""}: ${context.parsed.r?.toFixed(2) ?? ""}` + } + const formatted = Number.isFinite(rawValue) + ? isRate + ? rawValue.toFixed(1) + : Number.isInteger(rawValue) + ? rawValue.toString() + : rawValue.toFixed(2) + : String(rawValue) + const suffix = isRate ? "%" : "" + return `${dataset.label || ""} - ${metric}: ${formatted}${suffix}` + }, + }, + }, }, scales: { r: { @@ -485,7 +516,10 @@ const radarChartOptions = { 班级PK - + - + - + 开始PK @@ -516,7 +558,10 @@ const radarChartOptions = { :x-gap="16" :y-gap="16" > - + - + @@ -603,43 +653,71 @@ const radarChartOptions = { - + - {{ classData.q1_ac.toFixed(2) }} + {{ + classData.q1_ac.toFixed(2) + }} - {{ classData.q3_ac.toFixed(2) }} + {{ + classData.q3_ac.toFixed(2) + }} - {{ classData.iqr.toFixed(2) }} + {{ + classData.iqr.toFixed(2) + }} - {{ classData.std_dev.toFixed(2) }} + {{ + classData.std_dev.toFixed(2) + }} - {{ classData.top_10_avg.toFixed(2) }} + {{ + classData.top_10_avg.toFixed(2) + }} - {{ classData.bottom_10_avg.toFixed(2) }} + {{ + classData.bottom_10_avg.toFixed(2) + }} - {{ classData.top_25_avg.toFixed(2) }} + {{ + classData.top_25_avg.toFixed(2) + }} - {{ classData.bottom_25_avg.toFixed(2) }} + {{ + classData.bottom_25_avg.toFixed(2) + }} - {{ classData.user_count }} + {{ + classData.user_count + }} - + - - + - {{ classData.recent_total_ac }} + {{ + classData.recent_total_ac + }} - {{ classData.recent_avg_ac?.toFixed(2) }} + {{ + classData.recent_avg_ac?.toFixed(2) + }} - {{ classData.recent_median_ac?.toFixed(2) }} + {{ + classData.recent_median_ac?.toFixed(2) + }} - {{ classData.recent_top_10_avg?.toFixed(2) }} + {{ + classData.recent_top_10_avg?.toFixed(2) + }} - {{ classData.recent_active_count }} + {{ + classData.recent_active_count + }} @@ -827,7 +920,11 @@ const radarChartOptions = { - + @@ -946,4 +1088,3 @@ const radarChartOptions = { font-weight: 600; } - diff --git a/src/oj/class/rank.vue b/src/oj/class/rank.vue index 858cf0c..77ae6f5 100644 --- a/src/oj/class/rank.vue +++ b/src/oj/class/rank.vue @@ -1,144 +1,144 @@ - - - + + + diff --git a/src/shared/components/Header.vue b/src/shared/components/Header.vue index 4551943..adbd593 100644 --- a/src/shared/components/Header.vue +++ b/src/shared/components/Header.vue @@ -136,7 +136,11 @@ const menus = computed(() => [ }, { label: () => - h(RouterLink, { to: "/class/my-rank" }, { default: () => "我的排名" }), + h( + RouterLink, + { to: "/class/my-rank" }, + { default: () => "我的排名" }, + ), key: "my-rank", show: userStore.isAuthed, },