From efd64ac3440b381161b1e6588517fd30b8f2e1d7 Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Tue, 8 Mar 2022 00:22:27 +0000 Subject: [PATCH] Improve tierlist view a bit and support SDVX Tierlist Rendering --- client/package.json | 2 +- client/pnpm-lock.yaml | 157 ++---------------- .../_playtype/folders/SpecificFolderPage.tsx | 12 +- client/src/util/misc.ts | 12 ++ client/src/util/tierlist.ts | 6 +- 5 files changed, 40 insertions(+), 149 deletions(-) diff --git a/client/package.json b/client/package.json index da357315c..35f3625d1 100644 --- a/client/package.json +++ b/client/package.json @@ -86,7 +86,7 @@ "rg-stats": "^0.2.0", "socicon": "3.0.5", "sync-fetch": "^0.3.1", - "tachi-common": "0.5.15" + "tachi-common": "0.6.7" }, "devDependencies": { "@types/humanize-duration": "3.25.1", diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index 2eb9f788a..8d17d6a2d 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -88,7 +88,7 @@ specifiers: socicon: 3.0.5 style-loader: 1.0.0 sync-fetch: ^0.3.1 - tachi-common: 0.5.15 + tachi-common: 0.6.7 terser-webpack-plugin: 1.4.1 ts-pnp: 1.1.4 typescript: 4.3.5 @@ -164,7 +164,7 @@ dependencies: rg-stats: 0.2.0 socicon: 3.0.5 sync-fetch: 0.3.1 - tachi-common: 0.5.15 + tachi-common: 0.6.7 devDependencies: '@types/humanize-duration': 3.25.1 @@ -3050,8 +3050,8 @@ packages: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} dev: false - /@types/mongodb/3.6.20: - resolution: {integrity: sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==} + /@types/mongodb/3.6.18: + resolution: {integrity: sha512-JSVFt9p0rTfZ4EgzXmVHUB3ue00xe3CRbQho8nXfImzEDDM4O7I3po1bwbWl/EIbLENxUreZxqLOc8lvcnLVPA==} dependencies: '@types/bson': 4.2.0 '@types/node': 16.0.0 @@ -3953,13 +3953,6 @@ packages: dev: true optional: true - /bl/2.2.1: - resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==} - dependencies: - readable-stream: 2.3.7 - safe-buffer: 5.2.1 - dev: false - /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true @@ -4143,11 +4136,6 @@ packages: node-releases: 1.1.75 dev: true - /bson/1.1.6: - resolution: {integrity: sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==} - engines: {node: '>=0.6.19'} - dev: false - /bson/4.5.1: resolution: {integrity: sha512-XqFP74pbTVLyLy5KFxVfTUyRrC1mgOlmu/iXHfXqfCKT59jyP9lwbotGfbN59cHBRbJSamZNkrSopjv+N0SqAA==} engines: {node: '>=6.9.0'} @@ -4738,6 +4726,7 @@ packages: /core-util-is/1.0.2: resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} + dev: true /cosmiconfig/5.2.1: resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} @@ -5277,11 +5266,6 @@ packages: resolution: {integrity: sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==} dev: false - /denque/1.5.1: - resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==} - engines: {node: '>=0.10'} - dev: false - /depd/1.1.2: resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} engines: {node: '>= 0.6'} @@ -7370,6 +7354,7 @@ packages: /isarray/1.0.0: resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + dev: true /isexe/2.0.0: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} @@ -7929,11 +7914,6 @@ packages: readable-stream: 2.3.7 dev: true - /memory-pager/1.5.0: - resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - dev: false - optional: true - /merge-deep/3.0.3: resolution: {integrity: sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==} engines: {node: '>=0.10.0'} @@ -8298,86 +8278,6 @@ packages: dependencies: minimist: 1.2.5 - /mongodb/3.7.0: - resolution: {integrity: sha512-JOAYjT9WYeRFkIP6XtDidAr3qvpfLRJhT2iokRWWH0tgqCQr9kmSfOJBZ3Ry0E5A3EqKxVPVhN3MV8Gn03o7pA==} - engines: {node: '>=4'} - peerDependencies: - aws4: '*' - bson-ext: '*' - kerberos: '*' - mongodb-client-encryption: '*' - mongodb-extjson: '*' - snappy: '*' - peerDependenciesMeta: - aws4: - optional: true - bson-ext: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - mongodb-extjson: - optional: true - snappy: - optional: true - dependencies: - bl: 2.2.1 - bson: 1.1.6 - denque: 1.5.1 - optional-require: 1.1.7 - safe-buffer: 5.2.1 - optionalDependencies: - saslprep: 1.0.3 - dev: false - - /monk-middleware-cast-ids/0.2.1: - resolution: {integrity: sha1-QMQOWmyzPM7cKJIglDJ17ohhxSk=} - dev: false - - /monk-middleware-fields/0.2.0: - resolution: {integrity: sha1-/2N6819ZSIecyyvhWpE2CRG+psE=} - dev: false - - /monk-middleware-handle-callback/0.2.2: - resolution: {integrity: sha512-5hBynb7asZ2uw9XVze7C3XH0zXT51yFDvYydk/5HnWWzh2NLglDSiKDcX0yLKPHzFgiq+5Z4Laq5fFVnFsmm8w==} - dev: false - - /monk-middleware-options/0.2.1: - resolution: {integrity: sha1-WNrhxRjUZjbr3/UG+t/Hc7tEKIY=} - dev: false - - /monk-middleware-query/0.2.0: - resolution: {integrity: sha1-qSbGd9SlYgxiFRsKVtDAwVFnWHQ=} - dev: false - - /monk-middleware-wait-for-connection/0.2.0: - resolution: {integrity: sha1-MSlY0w5Yi1fQl1TdfJe0hDMWg1o=} - dev: false - - /monk/7.3.4: - resolution: {integrity: sha512-PkPNiElwroVyKQj01usyziOvwiKYBUVSq7YU1FB4KFr0J3v0GeXW0TebYsLR4u33WB8JGqPiAcuzDspfdujqQg==} - dependencies: - '@types/mongodb': 3.6.20 - debug: 4.3.2 - mongodb: 3.7.0 - monk-middleware-cast-ids: 0.2.1 - monk-middleware-fields: 0.2.0 - monk-middleware-handle-callback: 0.2.2 - monk-middleware-options: 0.2.1 - monk-middleware-query: 0.2.0 - monk-middleware-wait-for-connection: 0.2.0 - object-assign: 4.1.1 - transitivePeerDependencies: - - aws4 - - bson-ext - - kerberos - - mongodb-client-encryption - - mongodb-extjson - - snappy - - supports-color - dev: false - /move-concurrently/1.0.1: resolution: {integrity: sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=} dependencies: @@ -8756,13 +8656,6 @@ packages: webpack: 4.41.0 dev: false - /optional-require/1.1.7: - resolution: {integrity: sha512-cIeRZocXsZnZYn+SevbtSqNlLbeoS4mLzuNn4fvXRMDRNhTGg0sxuKXl0FnZCtnew85LorNxIbZp5OeliILhMw==} - engines: {node: '>=4'} - dependencies: - require-at: 1.0.6 - dev: false - /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -9760,6 +9653,7 @@ packages: /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true /process/0.11.10: resolution: {integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI=} @@ -10264,6 +10158,7 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: true /readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} @@ -10435,11 +10330,6 @@ packages: engines: {node: '>=0.10'} dev: true - /require-at/1.0.6: - resolution: {integrity: sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==} - engines: {node: '>=4'} - dev: false - /require-directory/2.1.1: resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} @@ -10629,6 +10519,7 @@ packages: /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex/1.1.0: resolution: {integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4=} @@ -10639,14 +10530,6 @@ packages: /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /saslprep/1.0.3: - resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==} - engines: {node: '>=6'} - dependencies: - sparse-bitfield: 3.0.3 - dev: false - optional: true - /sass-loader/7.2.0_webpack@4.41.0: resolution: {integrity: sha512-h8yUWaWtsbuIiOCgR9fd9c2lRXZ2uG+h8Dzg/AGNj+Hg/3TO8+BBAW9mEP+mh8ei+qBKqSJ0F1FLlYjNBc61OA==} engines: {node: '>= 6.9.0'} @@ -11023,13 +10906,6 @@ packages: resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} dev: false - /sparse-bitfield/3.0.3: - resolution: {integrity: sha1-/0rm5oZWBWuks+eSqzM004JzyhE=} - dependencies: - memory-pager: 1.5.0 - dev: false - optional: true - /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: @@ -11198,6 +11074,7 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 + dev: true /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -11424,18 +11301,10 @@ packages: strip-ansi: 6.0.0 dev: true - /tachi-common/0.5.15: - resolution: {integrity: sha512-7pBspD/7TduoJu1OdguRRxg5LyWwodhbZi5NU4y6aviJmHRetTwWXksCi4QBc72NbKlwqGwnbGrxdKFKdKQNhQ==} + /tachi-common/0.6.7: + resolution: {integrity: sha512-fdparD1htWITEz+dtEqlcdtHFoo9AZWRDX3iL052ePRGPRu0jRX5bO+V1A4cbYThMcBDefCAh3o0tBIbExyUiw==} dependencies: - monk: 7.3.4 - transitivePeerDependencies: - - aws4 - - bson-ext - - kerberos - - mongodb-client-encryption - - mongodb-extjson - - snappy - - supports-color + '@types/mongodb': 3.6.18 dev: false /tapable/1.1.3: diff --git a/client/src/app/pages/dashboard/users/games/_game/_playtype/folders/SpecificFolderPage.tsx b/client/src/app/pages/dashboard/users/games/_game/_playtype/folders/SpecificFolderPage.tsx index b46c363a6..b5e4548b6 100644 --- a/client/src/app/pages/dashboard/users/games/_game/_playtype/folders/SpecificFolderPage.tsx +++ b/client/src/app/pages/dashboard/users/games/_game/_playtype/folders/SpecificFolderPage.tsx @@ -32,7 +32,7 @@ import { FolderDataset } from "types/tables"; import { Playtype } from "types/tachi"; import { ONE_DAY } from "util/constants/time"; import { CreateChartIDMap, CreateChartLink, CreateSongMap } from "util/data"; -import { NO_OP } from "util/misc"; +import { DistinctArr, NO_OP } from "util/misc"; import { NumericSOV, StrSOV } from "util/sorts"; import { GetScaleAchievedFn } from "util/tierlist"; import { FormatDate, FormatTime } from "util/time"; @@ -504,7 +504,15 @@ function TierlistInfoLadder({ .map(bucket => ( - {bucket[0].data!.value} ({bucket[0].data!.text}) + {bucket[0].data!.value} ( + {DistinctArr( + bucket.map(e => + gptConfig.tierlists.length === 1 + ? e.data.text + : `${e.key}: ${e.data.text}` + ) + ).join(", ")} + ) {bucket.map((tierlistInfo, i) => ( diff --git a/client/src/util/misc.ts b/client/src/util/misc.ts index d83ca3234..6020d4461 100644 --- a/client/src/util/misc.ts +++ b/client/src/util/misc.ts @@ -278,3 +278,15 @@ export function ConditionalLeadingSpace(maybeStr: string | null) { return ` ${maybeStr}`; } + +export function DistinctArr(arr: T[]): T[] { + return [...new Set(arr)]; +} + +export function TruncateString(string: string, len = 30) { + if (string.length < len) { + return string; + } + + return `${string.slice(len - 3)}...`; +} diff --git a/client/src/util/tierlist.ts b/client/src/util/tierlist.ts index dc0580de4..2dad2cd0b 100644 --- a/client/src/util/tierlist.ts +++ b/client/src/util/tierlist.ts @@ -1,4 +1,4 @@ -import { Game, GPTTierlists, IDStrings, IIDX_LAMPS, ScoreDocument } from "tachi-common"; +import { Game, GPTTierlists, IDStrings, IIDX_LAMPS, ScoreDocument, SDVX_LAMPS } from "tachi-common"; import { Playtype } from "types/tachi"; type ScaleAchievedFns = { @@ -39,7 +39,9 @@ const ScaleNameAchievedFns: ScaleAchievedFns = { "museca:Single": { "tachi-score": null, }, - "sdvx:Single": {}, + "sdvx:Single": { + clear: k => k.scoreData.lampIndex >= SDVX_LAMPS.CLEAR, + }, "usc:Controller": {}, "usc:Keyboard": {}, "wacca:Single": {},