From 1811bd38eca8d036b4f26faad59aa9a6bbdc25a3 Mon Sep 17 00:00:00 2001 From: James Liu <17558260+JamesLewisLiu@users.noreply.github.com> Date: Thu, 10 Sep 2026 23:51:25 +0800 Subject: [PATCH] PlayerBoard Customization Improvement --- gitadora@asphyxia/handlers/webui.ts | 2 +- .../models/Responses/playerstickerresponse.ts | 2 +- gitadora@asphyxia/webui/leaderboards.pug | 4 +- .../webui/profile_player_info.pug | 38 ++++++++++++++----- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/gitadora@asphyxia/handlers/webui.ts b/gitadora@asphyxia/handlers/webui.ts index a1e451a..32b59c7 100644 --- a/gitadora@asphyxia/handlers/webui.ts +++ b/gitadora@asphyxia/handlers/webui.ts @@ -60,7 +60,7 @@ function parsePlayerBoard(input: string | PlayerInfo['playerboard']): PlayerInfo }; const stickers = Array.isArray(value.sticker) ? value.sticker : []; - const normalizedStickers = stickers.slice(0, 10).reduce((result: any[], sticker: any) => { + const normalizedStickers = stickers.slice(0, 11).reduce((result: any[], sticker: any) => { if (!sticker || typeof sticker !== 'object') return result; const position = Array.isArray(sticker.position) ? sticker.position : []; const scale = Array.isArray(sticker.scale) ? sticker.scale : []; diff --git a/gitadora@asphyxia/models/Responses/playerstickerresponse.ts b/gitadora@asphyxia/models/Responses/playerstickerresponse.ts index 7e45739..f08ebf2 100644 --- a/gitadora@asphyxia/models/Responses/playerstickerresponse.ts +++ b/gitadora@asphyxia/models/Responses/playerstickerresponse.ts @@ -25,7 +25,7 @@ export function getPlayerStickerResponse(playerCard : any[]) : PlayerStickerResp return stickers } - for (const item of playerCard.slice(0, 10)) { + for (const item of playerCard.slice(0, 11)) { const id = _.get(item, 'id'); // Accept both the historical card shape and the wire-shaped playerboard // shape used by the editor. diff --git a/gitadora@asphyxia/webui/leaderboards.pug b/gitadora@asphyxia/webui/leaderboards.pug index 8d2b6a6..965e54b 100644 --- a/gitadora@asphyxia/webui/leaderboards.pug +++ b/gitadora@asphyxia/webui/leaderboards.pug @@ -21,8 +21,8 @@ return "Tri-Boost Re:EVOLVE" case "matixx": return "Matixx" - case "EXCHAIN": - return "exchain" + case "exchain": + return "EXCHAIN" case "nextage": return "NEX+AGE" case "highvoltage": diff --git a/gitadora@asphyxia/webui/profile_player_info.pug b/gitadora@asphyxia/webui/profile_player_info.pug index 0beaf76..c81d165 100644 --- a/gitadora@asphyxia/webui/profile_player_info.pug +++ b/gitadora@asphyxia/webui/profile_player_info.pug @@ -23,8 +23,8 @@ return "Tri-Boost Re:EVOLVE" case "matixx": return "Matixx" - case "EXCHAIN": - return "exchain" + case "exchain": + return "EXCHAIN" case "nextage": return "NEX+AGE" case "highvoltage": @@ -87,7 +87,7 @@ div span.icon i.mdi.mdi-account-edit | User Detail (#{getFullGameVersion(i.version)}) - a.button.is-link.playerboard-link(href=('/plugin/gitadora@asphyxia/profile?refid=' + refid + '&view=playerboard') style="margin-left:auto") + a.button.is-link.playerboard-link(href=('/plugin/gitadora@asphyxia/profile?refid=' + refid + '&version=' + i.version + '&view=playerboard') style="margin-left:auto") span.icon i.mdi.mdi-view-dashboard span PlayerBoard @@ -110,7 +110,6 @@ div .control input.input(type="text" name="title", value=i.title) - const boardValue = getPlayerboardValue(i) - .field .field.is-hidden(data-playerboard-section)#playerboard label.label Playerboard .box.playerboard-editor(data-playerboard-editor) @@ -352,9 +351,9 @@ script. row.querySelector('[data-sticker-field="pos_x"]').value = fromXPercent(x).toFixed(2); row.querySelector('[data-sticker-field="pos_y"]').value = fromYPercent(y).toFixed(2); sync(editor); - }); button.style.left = `${x}%`; button.style.top = `${y}%`; + }); button.addEventListener('pointerup', event => { if (drag) { try { button.releasePointerCapture(event.pointerId); } catch (_) {} } drag = null; }); button.addEventListener('pointercancel', () => { drag = null; }); preview.appendChild(button); @@ -491,11 +490,15 @@ script. script. (() => { const isBoardView = new URLSearchParams(location.search).get('view') === 'playerboard'; - const toggle = document.querySelector('.playerboard-link'); - if (toggle && isBoardView) { - toggle.textContent = 'Back to Profile'; - toggle.href = location.pathname + '?refid=' + encodeURIComponent(new URLSearchParams(location.search).get('refid') || ''); - } + const selectedVersion = new URLSearchParams(location.search).get('version'); + document.querySelectorAll('.playerboard-link').forEach(toggle => { + const card = toggle.closest('.card'); + const version = card && card.querySelector('input[name="version"]'); + if (isBoardView && (!selectedVersion || !version || version.value === selectedVersion)) { + toggle.textContent = 'Back to Profile'; + toggle.href = location.pathname + '?refid=' + encodeURIComponent(new URLSearchParams(location.search).get('refid') || '') + '&version=' + encodeURIComponent(version ? version.value : ''); + } + }); const editor = document.querySelector('[data-playerboard-editor]'); const preview = document.querySelector('[data-board-preview]'); if (!editor || !preview) return; @@ -531,3 +534,18 @@ script. + + + +script. + (() => { + const params = new URLSearchParams(location.search); + const selectedVersion = params.get('version'); + if (!selectedVersion || params.get('view') !== 'playerboard') return; + document.querySelectorAll('[data-playerboard-editor]').forEach(editor => { + const form = editor.closest('form'); + const version = form && form.querySelector('input[name="version"]'); + if (version && version.value !== selectedVersion) editor.closest('.card').style.display = 'none'; + }); + })(); +