mirror of
https://github.com/PhaseII-eAmusement-Network/PhaseWeb3-Vue.git
synced 2026-09-14 12:15:16 -05:00
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
VITE_APP_VERSION="3.0.14"
|
||||
VITE_APP_VERSION="3.0.15"
|
||||
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.14"
|
||||
VITE_APP_VERSION="3.0.15"
|
||||
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"
|
||||
|
||||
@@ -9,9 +9,10 @@
|
||||
"3.0.8": ["- (Minor) Added game event options for Classic IIDX versions"],
|
||||
"3.0.8-shrimplinks": ["- (Bugfix) Fix broken session."],
|
||||
"3.0.9": ["- (Minor) Add additional data to the dashboard, including today stats and score stats. Add score stats to chart."],
|
||||
"3.0.10": ["- (Major) Add experimental records pages, work on score processing.", "- (Bugfix) Clean up new dashboard data"],
|
||||
"3.0.10": ["- (Major) Add experimental records pages, work on score processing.", "- (Bugfix) Clean up new dashboard data."],
|
||||
"3.0.11": ["- (Bugfix) Fix broken chart sorting for certain games.", "- (Bugfix) Add spacing on mobile for personal records user buttons."],
|
||||
"3.0.12": ["- (Feature) Add new game event settings to SILENT SCOPE: BONE EATER and beatmaniaIIDX EPOLIS."],
|
||||
"3.0.13": ["- (Feature) Add new game event settings to beatmaniaIIDX EPOLIS."],
|
||||
"3.0.14": ["- (Minor) Fix footer buttons on tables, add generic export table button for every table."]
|
||||
"3.0.14": ["- (Minor) Fix footer buttons on tables, add generic export table button for every table."],
|
||||
"3.0.15": ["- (Minor) Add beta support for Pinky Crush, clean up gameDB a little.", "- (Optimization) Convert dashboard to a more modular backend.", "- (Bugfix) Fix warnings on auth pages."]
|
||||
}
|
||||
@@ -409,4 +409,48 @@ export const IIDXOptions = {
|
||||
type: "String",
|
||||
},
|
||||
],
|
||||
32: [
|
||||
{
|
||||
id: "global_shop_ranking",
|
||||
name: "Global Shop Ranking",
|
||||
help: "Return network-wide ranking instead of shop ranking on results screen.",
|
||||
type: "Boolean",
|
||||
},
|
||||
{
|
||||
id: "event_phase",
|
||||
name: "Game Event Phase",
|
||||
help: "Enable different boss events",
|
||||
type: "Array",
|
||||
options: [
|
||||
{ id: 0, label: "No Event" },
|
||||
{ id: 1, label: "MY POLIS DESIGNER (MAP 1)" },
|
||||
{ id: 2, label: "MY POLIS DESIGNER (MAP 2)" },
|
||||
{ id: 3, label: "MY POLIS DESIGNER (MAP 3)" },
|
||||
{ id: 4, label: "MY POLIS DESIGNER (MAP FINAL)" },
|
||||
{ id: 5, label: "EPOLIS RESTORATION (SYSTEM A)" },
|
||||
{ id: 6, label: "EPOLIS RESTORATION (SYSTEM B)" },
|
||||
{ id: 7, label: "EPOLIS RESTORATION (SYSTEM C)" },
|
||||
{ id: 8, label: "EPOLIS RESTORATION (SYSTEM D + X)" },
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "system_season_voice",
|
||||
name: "System Season Voice",
|
||||
help: "Enable different season voice in Game",
|
||||
type: "Array",
|
||||
options: [
|
||||
{ id: 0, label: "Random" },
|
||||
{ id: 1, label: "Winter" },
|
||||
{ id: 2, label: "Spring" },
|
||||
{ id: 3, label: "Summer" },
|
||||
{ id: 4, label: "Autumn" },
|
||||
],
|
||||
},
|
||||
{
|
||||
id: "license",
|
||||
name: "License Message",
|
||||
help: "A server sent license.",
|
||||
type: "String",
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
@@ -171,6 +171,7 @@ export class VersionConstants {
|
||||
static IIDX_CASTHOUR = 29;
|
||||
static IIDX_RESIDENT = 30;
|
||||
static IIDX_EPOLIS = 31;
|
||||
static IIDX_PINKY_CRUSH = 32;
|
||||
|
||||
static JUBEAT = 1;
|
||||
static JUBEAT_RIPPLES = 2;
|
||||
@@ -1213,6 +1214,7 @@ export const gameData = [
|
||||
VersionConstants.IIDX_CASTHOUR,
|
||||
VersionConstants.IIDX_RESIDENT,
|
||||
VersionConstants.IIDX_EPOLIS,
|
||||
VersionConstants.IIDX_PINKY_CRUSH,
|
||||
],
|
||||
scoreHeaders: [
|
||||
{ text: "Misses", value: "data.misses", width: 100 },
|
||||
@@ -1403,6 +1405,11 @@ export const gameData = [
|
||||
label: "EPOLIS",
|
||||
maxRivals: 5,
|
||||
},
|
||||
{
|
||||
id: VersionConstants.IIDX_PINKY_CRUSH,
|
||||
label: "PINKY CRUSH",
|
||||
maxRivals: 5,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -2020,7 +2027,7 @@ export const gameData = [
|
||||
{
|
||||
id: GameConstants.SILENT_SCOPE,
|
||||
name: "SILENT SCOPE: BONE EATER",
|
||||
skip: false,
|
||||
skip: true,
|
||||
noRivals: true,
|
||||
noScores: false,
|
||||
noRecords: true,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -99,7 +99,7 @@ export const useMainStore = defineStore("main", {
|
||||
const apiServer = import.meta.env.VITE_API_URL;
|
||||
const apiKey = import.meta.env.VITE_API_KEY;
|
||||
let loadingTimeout;
|
||||
this.errorCode = ""; // We want to reset the network error.
|
||||
this.errorCode = "";
|
||||
|
||||
const startLoading = () => {
|
||||
loadingTimeout = setTimeout(() => {
|
||||
@@ -243,7 +243,7 @@ export const useMainStore = defineStore("main", {
|
||||
saveUserAuthKey(data.sessionId, remember ? 30 : 1);
|
||||
return true;
|
||||
} else {
|
||||
alert(this.errorCode);
|
||||
alert("Incorrect username or password!");
|
||||
return false;
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
@@ -63,8 +63,8 @@ async function saveSettings() {
|
||||
@submit.prevent="submitPCBID()"
|
||||
>
|
||||
<h2 class="text-xl mb-6 lg:w-1/2">
|
||||
Claim an arcade using a PCBID. If the account already has an owner,
|
||||
you may not claim the arcade.
|
||||
Claim an arcade using a PCBID.<br />
|
||||
You cannot claim the arcade if it has an owner.
|
||||
</h2>
|
||||
|
||||
<FormField
|
||||
|
||||
@@ -51,6 +51,10 @@ const cumulativePlays = computed(() => {
|
||||
);
|
||||
});
|
||||
|
||||
const uniqueProfiles = computed(() => {
|
||||
return userProfiles.value.length;
|
||||
});
|
||||
|
||||
const longestStreak = computed(() => {
|
||||
const groupByDay = (timestamps) => {
|
||||
const dayMap = {};
|
||||
@@ -153,6 +157,65 @@ const todayPlays = computed(() => {
|
||||
|
||||
return total;
|
||||
});
|
||||
|
||||
const cardBoxes = ref([
|
||||
{
|
||||
label: "Cumulative Plays",
|
||||
icon: mdiCounter,
|
||||
iconColor: "text-emerald-600",
|
||||
suffix: "play",
|
||||
number: cumulativePlays,
|
||||
},
|
||||
{
|
||||
label: "Games Played",
|
||||
icon: mdiGamepadOutline,
|
||||
iconColor: "text-sky-300",
|
||||
suffix: "game",
|
||||
number: uniqueProfiles,
|
||||
},
|
||||
{
|
||||
label: "Plays Today",
|
||||
icon: mdiCounter,
|
||||
iconColor: "text-sky-300",
|
||||
suffix: "play",
|
||||
number: todayPlays,
|
||||
},
|
||||
{
|
||||
label: "Longest Play Streak",
|
||||
icon: mdiFire,
|
||||
iconColor: "text-red-500",
|
||||
suffix: "play",
|
||||
number: longestStreak,
|
||||
},
|
||||
{
|
||||
label: "Total Records",
|
||||
icon: mdiGamepadOutline,
|
||||
iconColor: "text-sky-300",
|
||||
suffix: "record",
|
||||
number: totalRecords,
|
||||
},
|
||||
{
|
||||
label: "Total Attempts",
|
||||
icon: mdiGamepadOutline,
|
||||
iconColor: "text-sky-300",
|
||||
suffix: "attempt",
|
||||
number: totalAttempts,
|
||||
},
|
||||
{
|
||||
label: "Records Today",
|
||||
icon: mdiGamepadOutline,
|
||||
iconColor: "text-sky-300",
|
||||
suffix: "record",
|
||||
number: todayRecords,
|
||||
},
|
||||
{
|
||||
label: "Attempts Today",
|
||||
icon: mdiGamepadOutline,
|
||||
iconColor: "text-sky-300",
|
||||
suffix: "attempt",
|
||||
number: todayAttempts,
|
||||
},
|
||||
]);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -187,65 +250,16 @@ const todayPlays = computed(() => {
|
||||
<div
|
||||
class="grid grid-cols-2 sm:grid-cols-3 gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 3xl:grid-cols-5 mb-6"
|
||||
>
|
||||
<CardBoxWidget
|
||||
:icon="mdiCounter"
|
||||
:number="cumulativePlays"
|
||||
label="Cumulative Plays"
|
||||
suffix="plays"
|
||||
icon-color="text-emerald-600"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
:icon="mdiGamepadOutline"
|
||||
:number="userProfiles.length"
|
||||
label="Games Played"
|
||||
suffix="games"
|
||||
icon-color="text-sky-300"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="todayPlays"
|
||||
:icon="mdiGamepadOutline"
|
||||
:number="todayPlays"
|
||||
label="Plays Today"
|
||||
suffix="plays"
|
||||
icon-color="text-sky-300"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
:icon="mdiFire"
|
||||
:number="longestStreak"
|
||||
label="Longest Play Streak"
|
||||
suffix="plays"
|
||||
icon-color="text-red-600"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
:icon="mdiGamepadOutline"
|
||||
:number="totalRecords"
|
||||
label="Total Records"
|
||||
suffix="records"
|
||||
icon-color="text-sky-300"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
:icon="mdiGamepadOutline"
|
||||
:number="totalAttempts"
|
||||
label="Total Attempts"
|
||||
suffix="attempts"
|
||||
icon-color="text-sky-300"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="todayRecords"
|
||||
:icon="mdiGamepadOutline"
|
||||
:number="todayRecords"
|
||||
label="Records Today"
|
||||
suffix="records"
|
||||
icon-color="text-sky-300"
|
||||
/>
|
||||
<CardBoxWidget
|
||||
v-if="todayAttempts"
|
||||
:icon="mdiGamepadOutline"
|
||||
:number="todayAttempts"
|
||||
label="Attempts Today"
|
||||
suffix="attempts"
|
||||
icon-color="text-sky-300"
|
||||
/>
|
||||
<template v-for="box of cardBoxes" :key="box.label">
|
||||
<CardBoxWidget
|
||||
v-if="box.number"
|
||||
:icon="box.icon"
|
||||
:number="box.number"
|
||||
:label="box.label"
|
||||
:suffix="`${box.suffix}${box.number == 1 ? '' : 's'}`"
|
||||
:icon-color="box.iconColor"
|
||||
/>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<SectionTitleLine :icon="mdiGamepad" title="Showcase" main />
|
||||
|
||||
Reference in New Issue
Block a user