mirror of
https://github.com/PhaseII-eAmusement-Network/PhaseWeb3-Vue.git
synced 2026-04-25 07:18:31 -05:00
V3.0.2; add new data, fix stat bugs, add customizations
Some checks failed
Build / build (push) Has been cancelled
Some checks failed
Build / build (push) Has been cancelled
This commit is contained in:
parent
c61c729fbd
commit
c18f587829
|
|
@ -1,4 +1,4 @@
|
|||
VITE_APP_VERSION="3.0.1"
|
||||
VITE_APP_VERSION="3.0.2"
|
||||
VITE_API_URL="http://10.5.7.5:8000/"
|
||||
VITE_API_KEY="your_api_key_should_be_here"
|
||||
VITE_ASSET_PATH="/assets"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
VITE_APP_VERSION="3.0.1"
|
||||
VITE_APP_VERSION="3.0.2"
|
||||
VITE_API_URL="https://restfulsleep.phaseii.network"
|
||||
VITE_API_KEY="your_api_key_should_be_here"
|
||||
VITE_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/web-assets"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "phaseweb3",
|
||||
"version": "1.0.0",
|
||||
"version": "3.0.2",
|
||||
"scripts": {
|
||||
"dev": "vite --host",
|
||||
"build": "vite build",
|
||||
|
|
|
|||
BIN
public/assets/card/paint.webp
Normal file
BIN
public/assets/card/paint.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
|
|
@ -1,3 +1,4 @@
|
|||
{
|
||||
"3.0.1": ["- (Feature) Added update popup", "- (Optimization) Disabled ParticlesJS for the time being. This will be returned as an option in the future.", "- (Optimization) Fill in more score table data for GFDM.", "- (soon™️) I've started rival support, but it's not ready just yet. Stay tuned!"]
|
||||
"3.0.1": ["- (Feature) Added update popup", "- (Optimization) Disabled ParticlesJS for the time being. This will be returned as an option in the future.", "- (Optimization) Fill in more score table data for GFDM.", "- (soon™️) I've started rival support, but it's not ready just yet. Stay tuned!"],
|
||||
"3.0.2": ["- (Feature) Added new greetings", "- (Feature) Added new user background", "- (Feature) Added toggle for disabling/enabling this popup", "- (Feature) Added version info to footer", "- (Feature) Fill in more profile data on personal profile view", "- (Fix) DDR stats now work again", "- (Fix) DDR player weight can now be set (kinda)"]
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@ import { containerMaxW } from "@/config.js";
|
|||
import { mdiCash, mdiGithub } from "@mdi/js";
|
||||
import BaseLevel from "@/components/BaseLevel.vue";
|
||||
import BaseButton from "@/components/BaseButton.vue";
|
||||
|
||||
const appVersion = import.meta.env.VITE_APP_VERSION;
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
@ -19,7 +21,10 @@ import BaseButton from "@/components/BaseButton.vue";
|
|||
>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="md:py-2 space-x-2">
|
||||
<div class="flex md:py-2 gap-2">
|
||||
<span class="text-pink-700 bg-slate-900 p-1.5 font-mono rounded-lg">
|
||||
v{{ appVersion }}
|
||||
</span>
|
||||
<BaseButton
|
||||
color="warning"
|
||||
href="https://paypal.me/trmazi"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import OverlayLayer from "@/components/OverlayLayer.vue";
|
|||
import BaseButton from "@/components/BaseButton.vue";
|
||||
import BaseIcon from "@/components/BaseIcon.vue";
|
||||
import { mdiSourceBranchRefresh } from "@mdi/js";
|
||||
import { APIUserAppUpdate } from "@/stores/api/account";
|
||||
import { APIUserAppUpdate, APIUserCustomize } from "@/stores/api/account";
|
||||
|
||||
import { useMainStore } from "@/stores/main.js";
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ function isActive() {
|
|||
}
|
||||
}
|
||||
|
||||
if (mainStore.userData.disableUpdateModal) {
|
||||
if (mainStore.userCustomize.disableUpdatePopup) {
|
||||
activeState.value = false;
|
||||
}
|
||||
|
||||
|
|
@ -50,11 +50,19 @@ async function updateUserData(disable = false) {
|
|||
var data = null;
|
||||
|
||||
try {
|
||||
data = await APIUserAppUpdate(appVersion, disable);
|
||||
data = await APIUserAppUpdate(appVersion, false);
|
||||
} catch (error) {
|
||||
console.error("Failed to update user:", error);
|
||||
}
|
||||
|
||||
if (disable) {
|
||||
try {
|
||||
await APIUserCustomize({ disableUpdatePopup: true });
|
||||
} catch (error) {
|
||||
console.error("Failed to update customize:", error);
|
||||
}
|
||||
}
|
||||
|
||||
if (data?.status === "success") {
|
||||
activeState.value = false;
|
||||
mainStore.userLoaded = false;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ export class ProfileCustomizations {
|
|||
{ id: "pride", label: "Pride Flag" },
|
||||
{ id: "trans", label: "Trans Flag" },
|
||||
{ id: "loveplus", label: "LovePlus" },
|
||||
{ id: "paint", label: "i eat paint" },
|
||||
];
|
||||
|
||||
static get cardList() {
|
||||
|
|
|
|||
|
|
@ -418,5 +418,30 @@
|
|||
"author": "timeripple",
|
||||
"header": "phasing on <username>'s II til they network",
|
||||
"comment": "networking on my phase til i II?"
|
||||
},
|
||||
{
|
||||
"author": "caldenza",
|
||||
"header": "Have you thanked your mechanic today, <username>?",
|
||||
"comment": "you should. or else."
|
||||
},
|
||||
{
|
||||
"author": "caldenza",
|
||||
"header": "You! <username>, Shoot The Core!",
|
||||
"comment": "* Good morning! *"
|
||||
},
|
||||
{
|
||||
"author": "roxandtol",
|
||||
"header": "R U READY 2 GO INSIDA DJ BOX <username>?",
|
||||
"comment": "wait, wrong game..."
|
||||
},
|
||||
{
|
||||
"author": "roxandtol",
|
||||
"header": "Just 1 more play for the MAX- <username>!",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"author": "Ryuto Setsujin",
|
||||
"header": "Up Loving your Plus, <username>?",
|
||||
"comment": ""
|
||||
}
|
||||
]
|
||||
|
|
@ -15,7 +15,7 @@ export const DDROptions = {
|
|||
{
|
||||
id: "weight",
|
||||
name: "Weight (kg)",
|
||||
help: "Set your weight for in-game workout mode",
|
||||
help: "Set your weight for in-game workout mode. Input is kg multiplied by 10. EX: 100lbs -> ~45kg -> 4500. This will be fixed soon™️.",
|
||||
type: "Number",
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ async function updateProfile() {
|
|||
type="number"
|
||||
onkeypress="return event.charCode >= 48 && event.charCode <= 57"
|
||||
min="0"
|
||||
max="999"
|
||||
max="10000"
|
||||
@update:model-value="
|
||||
(value) =>
|
||||
setNestedValue(optionForm, setting.id, Number(value))
|
||||
|
|
|
|||
|
|
@ -250,7 +250,6 @@ function formatProfile(profile) {
|
|||
|
||||
function formatCounts(profile) {
|
||||
const stats = profile.stats?.count;
|
||||
|
||||
return stats
|
||||
? [
|
||||
stats.mfc != null
|
||||
|
|
@ -258,31 +257,46 @@ function formatCounts(profile) {
|
|||
label: "MFCs",
|
||||
value: stats.mfc,
|
||||
}
|
||||
: 0,
|
||||
: {
|
||||
label: "MFCs",
|
||||
value: 0,
|
||||
},
|
||||
stats.pfc != null
|
||||
? {
|
||||
label: "PFCs",
|
||||
value: stats.pfc,
|
||||
}
|
||||
: 0,
|
||||
: {
|
||||
label: "PFCs",
|
||||
value: 0,
|
||||
},
|
||||
stats.fc != null
|
||||
? {
|
||||
label: "GFCs",
|
||||
value: stats.fc,
|
||||
}
|
||||
: 0,
|
||||
: {
|
||||
label: "GFCs",
|
||||
value: 0,
|
||||
},
|
||||
stats.gfc != null
|
||||
? {
|
||||
label: "FCs",
|
||||
value: stats.gfc,
|
||||
}
|
||||
: 0,
|
||||
: {
|
||||
label: "FCs",
|
||||
value: 0,
|
||||
},
|
||||
stats.life4 != null
|
||||
? {
|
||||
label: "Life-4 Clears",
|
||||
value: stats.life4,
|
||||
}
|
||||
: 0,
|
||||
: {
|
||||
label: "Life-4 Clears",
|
||||
value: 0,
|
||||
},
|
||||
]
|
||||
: [];
|
||||
}
|
||||
|
|
@ -425,11 +439,6 @@ async function generateTimeline(myProfile) {
|
|||
:num-color="colorText(stat)"
|
||||
>
|
||||
{{ stat.type == String ? myProfile.stats[stat.key] : null }}
|
||||
<!-- {{
|
||||
stat.type == String && stat.isIIDXDan
|
||||
? getIIDXDan(myProfile[stat.key]).label
|
||||
: None
|
||||
}} -->
|
||||
</CardBoxWidget>
|
||||
</template>
|
||||
<CardBoxWidget
|
||||
|
|
@ -442,47 +451,87 @@ async function generateTimeline(myProfile) {
|
|||
label="Attempts"
|
||||
:number="myProfile.stats?.count?.attempts"
|
||||
/>
|
||||
|
||||
<!-- GFDM -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.skill"
|
||||
label="Skill Points"
|
||||
:number="myProfile.skill / 100"
|
||||
:num-color="getGitadoraColor(myProfile.skill)"
|
||||
/>
|
||||
<CardBoxWidget v-if="myProfile.profile_skill" label="Skill Level">{{
|
||||
myProfile.profile_skill / 100
|
||||
}}</CardBoxWidget>
|
||||
<CardBoxWidget v-if="myProfile.profile_skill" label="Skill Level">
|
||||
{{ myProfile.profile_skill / 100 }}
|
||||
</CardBoxWidget>
|
||||
|
||||
<!-- Jubeat -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.jubility"
|
||||
label="Jubility"
|
||||
:num-color="getJubilityColor(myProfile.jubility)"
|
||||
>{{ myProfile.jubility / 10 }}</CardBoxWidget
|
||||
>
|
||||
{{ myProfile.jubility / 10 }}</CardBoxWidget
|
||||
>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.pick_up_jubility"
|
||||
label="Pick-Up Jubility"
|
||||
:num-color="getJubilityColor(myProfile.pick_up_jubility)"
|
||||
>{{ myProfile.pick_up_jubility / 10 }}</CardBoxWidget
|
||||
>
|
||||
{{ myProfile.pick_up_jubility / 10 }}</CardBoxWidget
|
||||
>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.common_jubility"
|
||||
label="Common Jubility"
|
||||
:num-color="getJubilityColor(myProfile.common_jubility)"
|
||||
>{{ myProfile.common_jubility / 10 }}</CardBoxWidget
|
||||
>
|
||||
{{ myProfile.common_jubility / 10 }}
|
||||
</CardBoxWidget>
|
||||
|
||||
<!-- IIDX -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.deller"
|
||||
label="Deller"
|
||||
:number="myProfile.deller"
|
||||
/>
|
||||
<CardBoxWidget v-if="myProfile.sgrade" label="SP DAN">{{
|
||||
getIIDXDan(myProfile.sgrade).label
|
||||
}}</CardBoxWidget>
|
||||
<CardBoxWidget v-if="myProfile.dgrade" label="DP DAN">{{
|
||||
getIIDXDan(myProfile.dgrade).label
|
||||
}}</CardBoxWidget>
|
||||
<CardBoxWidget v-if="myProfile.sgrade" label="SP DAN">
|
||||
{{ getIIDXDan(myProfile.sgrade).label }}
|
||||
</CardBoxWidget>
|
||||
<CardBoxWidget v-if="myProfile.dgrade" label="DP DAN">
|
||||
{{ getIIDXDan(myProfile.dgrade).label }}
|
||||
</CardBoxWidget>
|
||||
|
||||
<!-- Tsum Tsum -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.total_exp"
|
||||
label="EXP"
|
||||
:number="myProfile.total_exp"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.coin_num"
|
||||
label="Coins"
|
||||
:number="myProfile.coin_num"
|
||||
/>
|
||||
|
||||
<!-- SDVX -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.block"
|
||||
label="Block"
|
||||
:number="myProfile.block"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.packet"
|
||||
label="Packet"
|
||||
:number="myProfile.packet"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<template v-if="myProfile.stats?.count">
|
||||
<template
|
||||
v-if="
|
||||
myProfile.stats?.count ||
|
||||
myProfile.tune_cnt ||
|
||||
myProfile.max_clear_diff ||
|
||||
myProfile.battle_data
|
||||
"
|
||||
>
|
||||
<SectionTitleLine
|
||||
:icon="mdiChartAreasplineVariant"
|
||||
title="Stats"
|
||||
|
|
@ -492,8 +541,138 @@ async function generateTimeline(myProfile) {
|
|||
class="my-6 grid grid-cols-2 md:grid-cols-5 xl:grid-cols-6 gap-6"
|
||||
>
|
||||
<template v-for="stat of formatCounts(myProfile)" :key="stat">
|
||||
<CardBoxWidget v-if="stat" :label="stat.label" :number="stat" />
|
||||
<CardBoxWidget
|
||||
v-if="stat !== undefined"
|
||||
:label="stat.label"
|
||||
:number="stat.value"
|
||||
>
|
||||
{{ stat.value ? null : "0" }}
|
||||
</CardBoxWidget>
|
||||
</template>
|
||||
|
||||
<!-- Jubeat -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.tune_cnt"
|
||||
label="Total Tunes"
|
||||
:number="myProfile.tune_cnt"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.ex_cnt"
|
||||
label="Total EXC"
|
||||
:number="myProfile.ex_cnt"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.fc_cnt"
|
||||
label="Total FC"
|
||||
:number="myProfile.fc_cnt"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.clear_cnt"
|
||||
label="Total Clear"
|
||||
:number="myProfile.clear_cnt"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.saved_cnt"
|
||||
label="Total Saved"
|
||||
:number="myProfile.saved_cnt"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.match_cnt"
|
||||
label="Total Matches"
|
||||
:number="myProfile.match_cnt"
|
||||
/>
|
||||
|
||||
<!-- Gitadora -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.max_clear_diff"
|
||||
label="Max Clear Difficulty"
|
||||
>
|
||||
{{ myProfile.max_clear_diff / 100 }}
|
||||
</CardBoxWidget>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.max_full_diff"
|
||||
label="Max FC Difficulty"
|
||||
>
|
||||
{{ myProfile.max_full_diff / 100 }}
|
||||
</CardBoxWidget>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.max_exce_diff"
|
||||
label="Max EX FC Difficulty"
|
||||
>
|
||||
{{ myProfile.max_exce_diff / 100 }}
|
||||
</CardBoxWidget>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.clear_num"
|
||||
label="Total Clear"
|
||||
:number="myProfile.clear_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.full_num"
|
||||
label="Total FC"
|
||||
:number="myProfile.full_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.exce_num"
|
||||
label="Total EX FC"
|
||||
:number="myProfile.exce_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.e_num"
|
||||
label="Total E"
|
||||
:number="myProfile.e_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.d_num"
|
||||
label="Total D"
|
||||
:number="myProfile.d_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.c_num"
|
||||
label="Total C"
|
||||
:number="myProfile.c_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.b_num"
|
||||
label="Total B"
|
||||
:number="myProfile.b_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.a_num"
|
||||
label="Total A"
|
||||
:number="myProfile.a_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.s_num"
|
||||
label="Total S"
|
||||
:number="myProfile.s_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.ss_num"
|
||||
label="Total SS"
|
||||
:number="myProfile.ss_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.session_cnt"
|
||||
label="Sessions Played"
|
||||
:number="myProfile.session_cnt"
|
||||
/>
|
||||
|
||||
<!-- Tsum Tsum -->
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.battle_data?.win_num"
|
||||
label="Total Wins"
|
||||
:number="myProfile.battle_data?.win_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.battle_data?.lose_num"
|
||||
label="Total Losses"
|
||||
:number="myProfile.battle_data?.lose_num"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="myProfile.battle_data?.draw_num"
|
||||
label="Total Draws"
|
||||
:number="myProfile.battle_data?.draw_num"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -45,8 +45,6 @@ async function updateCustomize() {
|
|||
}
|
||||
|
||||
function userChanged() {
|
||||
console.log(originalData);
|
||||
console.log(userCustomize.value);
|
||||
if (JSON.stringify(originalData) !== JSON.stringify(userCustomize.value)) {
|
||||
return true;
|
||||
} else {
|
||||
|
|
@ -100,6 +98,15 @@ async function revert() {
|
|||
/>
|
||||
</FormField>
|
||||
|
||||
<FormField label="Disable WebUI Update Popup">
|
||||
<FormCheckRadio
|
||||
v-model="userCustomize.disableUpdatePopup"
|
||||
type="switch"
|
||||
:input-value="userCustomize.disableUpdatePopup ?? false"
|
||||
name="disableUpdatePopup"
|
||||
/>
|
||||
</FormField>
|
||||
|
||||
<div class="space-x-2">
|
||||
<BaseButton type="submit" color="success" label="Save" />
|
||||
<BaseButton
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user