[O] Sort recent by date, display level

pull/11/head
Azalea 2024-02-16 01:04:29 -05:00
parent b925c2ef20
commit 6d4a38404c
5 changed files with 128 additions and 105 deletions

View File

@ -49,6 +49,7 @@ export interface MaimaiUserPlaylog {
id: number; id: number;
musicId: number; musicId: number;
level: number; level: number;
userPlayDate: string;
trackNo: number; trackNo: number;
vsRank: number; vsRank: number;
achievement: number; achievement: number;

View File

@ -10,7 +10,7 @@
Promise.all([ Promise.all([
getMaimai("GetUserRatingApi", {userId}), getMaimai("GetUserRatingApi", {userId}),
getMaimaiAllMusic().then(it => it.json()) getMaimaiAllMusic()
]).then(([rating, music]) => { ]).then(([rating, music]) => {
data = rating data = rating
musicInfo = music musicInfo = music
@ -37,7 +37,8 @@
music.note = music.notes[x.level] music.note = music.notes[x.level]
const mult = getMult(x.achievement) const mult = getMult(x.achievement)
return {...x, return {
...x,
music: music, music: music,
calc: (mult[1] as number) * music.note.lv, calc: (mult[1] as number) * music.note.lv,
rank: mult[2] rank: mult[2]
@ -69,7 +70,9 @@
<div class="rating-cards"> <div class="rating-cards">
{#each section.data as rating} {#each section.data as rating}
<div class="level-{rating.level}"> <div class="level-{rating.level}">
<img class="cover" src={`${data_host}/maimai/assetbundle/jacket_s/00${rating.musicId.toString().padStart(6, '0').substring(2)}.png`} alt=""> <img class="cover"
src={`${data_host}/maimai/assetbundle/jacket_s/00${rating.musicId.toString().padStart(6, '0').substring(2)}.png`}
alt="">
<div class="detail"> <div class="detail">
<span class="name">{rating.music.name}</span> <span class="name">{rating.music.name}</span>
@ -79,7 +82,9 @@
</span> </span>
<span>{rating.calc.toFixed(1)}</span> <span>{rating.calc.toFixed(1)}</span>
</div> </div>
<img class="ver" src={`${data_host}/maimai/sprites/tab/title/UI_CMN_TabTitle_MaimaiTitle_Ver${rating.music.ver.toString().substring(0, 3)}.png`} alt=""> <img class="ver"
src={`${data_host}/maimai/sprites/tab/title/UI_CMN_TabTitle_MaimaiTitle_Ver${rating.music.ver.toString().substring(0, 3)}.png`}
alt="">
<div class="lv">{rating.music.note.lv}</div> <div class="lv">{rating.music.note.lv}</div>
</div> </div>
{/each} {/each}
@ -112,13 +117,7 @@
position: relative position: relative
// Difficulty border // Difficulty border
border: 5px solid var(--lv-color, #60aaff) border: 5px solid var(--lv-color)
&.level-1
--lv-color: #aaff60
&.level-2
--lv-color: #f25353
&.level-3
--lv-color: #e881ff
img img
object-fit: cover object-fit: cover
@ -164,6 +163,7 @@
.rating .rating
display: flex display: flex
img img
height: 1.5em height: 1.5em

View File

@ -34,6 +34,9 @@
console.log(trend) console.log(trend)
console.log(music) console.log(music)
// Sort recent by date
user.recent.sort((a, b) => b.userPlayDate < a.userPlayDate ? -1 : 1)
d = {user, trend, recent: user.recent.map(it => {return {...music[it.musicId], ...it}})} d = {user, trend, recent: user.recent.map(it => {return {...music[it.musicId], ...it}})}
localStorage.setItem("tmp-user-details", JSON.stringify(d)) localStorage.setItem("tmp-user-details", JSON.stringify(d))
renderCal(calElement, trend.map(it => {return {date: it.date, value: it.plays}})) renderCal(calElement, trend.map(it => {return {date: it.date, value: it.plays}}))
@ -161,8 +164,11 @@
<div class={clazz({alt: i % 2 === 0})}> <div class={clazz({alt: i % 2 === 0})}>
<img src={`${data_host}/maimai/assetbundle/jacket_s/00${r.musicId.toString().padStart(6, '0').substring(2)}.png`} alt=""> <img src={`${data_host}/maimai/assetbundle/jacket_s/00${r.musicId.toString().padStart(6, '0').substring(2)}.png`} alt="">
<div class="info"> <div class="info">
<span class="name">{r.name}</span>
<div> <div>
<span class="name">{r.name}</span>
</div>
<div>
<span class={`lv level-${r.level}`}>{r.notes[r.level].lv}</span>
<span class={"rank-" + ("" + getMult(r.achievement)[2])[0]}> <span class={"rank-" + ("" + getMult(r.achievement)[2])[0]}>
<span class="rank-text">{("" + getMult(r.achievement)[2]).replace("p", "+")}</span> <span class="rank-text">{("" + getMult(r.achievement)[2]).replace("p", "+")}</span>
<span class="rank-num">{(r.achievement / 10000).toFixed(2)}%</span> <span class="rank-num">{(r.achievement / 10000).toFixed(2)}%</span>
@ -351,7 +357,7 @@ $gap: 20px
flex-direction: column flex-direction: column
gap: 0 gap: 0
span .rank-text
text-align: left text-align: left
.rank-S .rank-S
@ -366,6 +372,13 @@ $gap: 20px
.rank-B .rank-B
color: #6ba6ff color: #6ba6ff
.lv
background: var(--lv-color)
padding: 0 6px
border-radius: 10px
opacity: 0.8
margin-right: 10px
span span
display: inline-block display: inline-block
text-align: right text-align: right

View File

@ -7,3 +7,12 @@ $c-bg: #242424
$nav-height: 4rem $nav-height: 4rem
$w-mobile: 560px $w-mobile: 560px
$w-max: 900px $w-max: 900px
.level-0
--lv-color: #6ED43E
.level-1
--lv-color: #F7B807
.level-2
--lv-color: #FF828D
.level-3
--lv-color: #A051DC