Merge pull request #1 from PhaseII-eAmusement-Network/minified

Move minified branch into maser
This commit is contained in:
Trenton Zimmer 2024-07-01 15:11:40 -04:00 committed by GitHub
commit 4e9a64da98
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
145 changed files with 3187 additions and 1646 deletions

2
.env.development Normal file
View File

@ -0,0 +1,2 @@
VITE_API_URL="http://10.5.7.231:8000/"
VITE_API_KEY="your_api_key_should_be_here"

2
.env.production Normal file
View File

@ -0,0 +1,2 @@
VITE_API_URL="https://restfulsleep.phaseii.network"
VITE_API_KEY="your_api_key_should_be_here"

View File

@ -7,6 +7,40 @@
<link rel="icon" href="/favicon.png">
<title>PhaseWeb 3</title>
<style>
body {
background-color: #ffffff;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #1f2937;
}
}
</style>
<script>
var pattern = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'];
var current = 0;
var keyHandler = function (event) {
if (pattern.indexOf(event.key) < 0 || event.key !== pattern[current]) {
current = 0;
return;
}
current++;
if (pattern.length === current) {
current = 0;
document.getElementById('audio').play();
window.alert('+30 lives.');
}
};
document.addEventListener('keydown', keyHandler, false);
</script>
</head>
<body class="scroll-smooth">
<noscript>
@ -15,41 +49,6 @@
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
<!-- built files will be auto injected -->
<audio id="audio" src="/assets/sounds/konami.mp3" class="hidden" />
<audio id="audio" src="/assets/sounds/konami.mp3" class="hidden">
</body>
<style>
body {
background-color: #ffffff;
}
@media (prefers-color-scheme: dark) {
body {
background-color: #1f2937;
}
}
</style>
<script>
var pattern = ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'];
var current = 0;
var keyHandler = function (event) {
if (pattern.indexOf(event.key) < 0 || event.key !== pattern[current]) {
current = 0;
return;
}
current++;
if (pattern.length === current) {
current = 0;
document.getElementById('audio').play();
window.alert('+30 lives.');
}
};
document.addEventListener('keydown', keyHandler, false);
</script>
</html>

97
package-lock.json generated
View File

@ -12,11 +12,15 @@
"@rushstack/eslint-patch": "^1.1.4",
"axios": "^0.27.0",
"chart.js": "^3.6.0",
"crypto-js": "^4.2.0",
"dotenv": "^16.4.5",
"js-cookie": "^3.0.5",
"numeral": "^2.0.6",
"particles.js": "^2.0.0",
"pinia": "^2.0.13",
"vue": "^3.0.0",
"vue-router": "^4.0.0"
"vue-router": "^4.0.0",
"vue3-easy-data-table": "^1.5.47"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.1.4",
@ -654,9 +658,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001554",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz",
"integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==",
"version": "1.0.30001628",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001628.tgz",
"integrity": "sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==",
"dev": true,
"funding": [
{
@ -791,6 +795,11 @@
"node": ">= 8"
}
},
"node_modules/crypto-js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
},
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@ -863,6 +872,17 @@
"node": ">=6.0.0"
}
},
"node_modules/dotenv": {
"version": "16.4.5",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/electron-to-chromium": {
"version": "1.4.567",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz",
@ -1568,9 +1588,9 @@
"dev": true
},
"node_modules/follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"funding": [
{
"type": "individual",
@ -1840,6 +1860,14 @@
"jiti": "bin/jiti.js"
}
},
"node_modules/js-cookie": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
"integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
"engines": {
"node": ">=14"
}
},
"node_modules/js-sdsl": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
@ -2926,9 +2954,9 @@
"dev": true
},
"node_modules/vite": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
"integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
"version": "3.2.10",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.10.tgz",
"integrity": "sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==",
"dev": true,
"dependencies": {
"esbuild": "^0.15.9",
@ -3024,6 +3052,14 @@
"vue": "^3.2.0"
}
},
"node_modules/vue3-easy-data-table": {
"version": "1.5.47",
"resolved": "https://registry.npmjs.org/vue3-easy-data-table/-/vue3-easy-data-table-1.5.47.tgz",
"integrity": "sha512-q0bZBlWIwQ3FIhB+F98ylFPfBJWiS3Xv7QqBe3xS5MbRNZP96RFjaQn7C0Pi0J/aaucNW8gFWxPyh9NESS1ehw==",
"dependencies": {
"vue": "^3.2.45"
}
},
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@ -3542,9 +3578,9 @@
"dev": true
},
"caniuse-lite": {
"version": "1.0.30001554",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz",
"integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==",
"version": "1.0.30001628",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001628.tgz",
"integrity": "sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==",
"dev": true
},
"chalk": {
@ -3635,6 +3671,11 @@
"which": "^2.0.1"
}
},
"crypto-js": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
},
"cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@ -3687,6 +3728,11 @@
"esutils": "^2.0.2"
}
},
"dotenv": {
"version": "16.4.5",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg=="
},
"electron-to-chromium": {
"version": "1.4.567",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz",
@ -4118,9 +4164,9 @@
"dev": true
},
"follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
"version": "1.15.6",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
},
"form-data": {
"version": "4.0.0",
@ -4305,6 +4351,11 @@
"integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==",
"dev": true
},
"js-cookie": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
"integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw=="
},
"js-sdsl": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
@ -5016,9 +5067,9 @@
"dev": true
},
"vite": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
"integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
"version": "3.2.10",
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.10.tgz",
"integrity": "sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==",
"dev": true,
"requires": {
"esbuild": "^0.15.9",
@ -5063,6 +5114,14 @@
"@vue/devtools-api": "^6.4.5"
}
},
"vue3-easy-data-table": {
"version": "1.5.47",
"resolved": "https://registry.npmjs.org/vue3-easy-data-table/-/vue3-easy-data-table-1.5.47.tgz",
"integrity": "sha512-q0bZBlWIwQ3FIhB+F98ylFPfBJWiS3Xv7QqBe3xS5MbRNZP96RFjaQn7C0Pi0J/aaucNW8gFWxPyh9NESS1ehw==",
"requires": {
"vue": "^3.2.45"
}
},
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",

View File

@ -12,11 +12,15 @@
"@rushstack/eslint-patch": "^1.1.4",
"axios": "^0.27.0",
"chart.js": "^3.6.0",
"crypto-js": "^4.2.0",
"dotenv": "^16.4.5",
"js-cookie": "^3.0.5",
"numeral": "^2.0.6",
"particles.js": "^2.0.0",
"pinia": "^2.0.13",
"vue": "^3.0.0",
"vue-router": "^4.0.0"
"vue-router": "^4.0.0",
"vue3-easy-data-table": "^1.5.47"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.1.4",

BIN
public/assets/card/bst.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

BIN
public/assets/card/nost.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

BIN
public/assets/card/time.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

BIN
public/assets/card/tsum.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 732 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 669 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

View File

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

BIN
public/assets/icon/bst.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

BIN
public/assets/icon/nost.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

BIN
public/assets/icon/tsum.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"data":[{"amount":375.53,"account":"45721474","name":"Home Loan Account","date":"3 days ago","type":"deposit","business":"Turcotte"},{"amount":470.26,"account":"94486537","name":"Savings Account","date":"3 days ago","type":"payment","business":"Murazik - Graham"},{"amount":971.34,"account":"63189893","name":"Checking Account","date":"5 days ago","type":"invoice","business":"Fahey - Keebler"},{"amount":374.63,"account":"74828780","name":"Auto Loan Account","date":"7 days ago","type":"withdrawal","business":"Collier - Hintz"}]}

View File

@ -5,3 +5,48 @@ import { RouterView } from "vue-router";
<template>
<RouterView :key="$route.fullPath" />
</template>
<style>
.customize-table {
--easy-table-border: 1px solid #1f2937;
--easy-table-row-border: 1px solid #445269;
--easy-table-header-font-size: 15px;
--easy-table-header-height: 50px;
--easy-table-header-font-color: #c1cad4;
--easy-table-header-background-color: #0f172a;
--easy-table-header-item-padding: 10px 15px;
--easy-table-body-even-row-font-color: #fff;
--easy-table-body-even-row-background-color: #475569;
--easy-table-body-row-font-color: #c0c7d2;
--easy-table-body-row-background-color: #334155;
--easy-table-body-row-height: 50px;
--easy-table-body-row-font-size: 15px;
--easy-table-body-row-hover-font-color: #c0c7d2;
--easy-table-body-row-hover-background-color: #475569;
--easy-table-body-item-padding: 10px 15px;
--easy-table-footer-background-color: #0f172a;
--easy-table-footer-font-color: #c0c7d2;
--easy-table-footer-click-button-color: #c0c7d2;
--easy-table-footer-font-size: 14px;
--easy-table-footer-padding: 0px 10px;
--easy-table-footer-height: 50px;
--easy-table-rows-per-page-selector-width: 70px;
--easy-table-rows-per-page-selector-option-padding: 10px;
--easy-table-rows-per-page-selector-z-index: 1;
--easy-table-scrollbar-track-color: #2d3a4f;
--easy-table-scrollbar-color: #2d3a4f;
--easy-table-scrollbar-thumb-color: #4c5d7a;
--easy-table-scrollbar-corner-color: #2d3a4f;
--easy-table-loading-mask-background-color: #2d3a4f;
}
</style>

View File

@ -48,7 +48,7 @@ export const getButtonColor = (
success: "ring-emerald-300 dark:ring-emerald-700",
danger: "ring-red-300 dark:ring-red-700",
warning: "ring-yellow-300 dark:ring-yellow-700",
info: "ring-blue-300 dark:ring-blue-700",
info: "ring-blue-300 dark:ring-blue-800",
},
active: {
white: "bg-gray-100",
@ -65,10 +65,10 @@ export const getButtonColor = (
whiteDark: "bg-white text-black dark:bg-slate-900 dark:text-white",
lightDark: "bg-gray-100 text-black dark:bg-slate-800 dark:text-white",
contrast: "bg-gray-800 text-white dark:bg-white dark:text-black",
success: "bg-emerald-600 dark:bg-emerald-500 text-white",
danger: "bg-red-600 dark:bg-red-500 text-white",
warning: "bg-yellow-600 dark:bg-yellow-500 text-white",
info: "bg-blue-600 dark:bg-blue-500 text-white",
success: "bg-emerald-600 dark:bg-emerald-700 text-white",
danger: "bg-red-600 dark:bg-red-800 text-white",
warning: "bg-yellow-600 dark:bg-yellow-700 text-white",
info: "bg-blue-600 dark:bg-blue-900 text-white",
},
bgHover: {
white: "hover:bg-gray-100",

View File

@ -1,87 +1,130 @@
<script setup>
import { mdiTestTube, mdiStoreOutline, mdiHomeOutline } from "@mdi/js";
import { getArea } from "@/constants/area";
import {
mdiTestTube,
mdiHomeOutline,
mdiNewspaperVariantMultiple,
mdiGamepad,
mdiCashRegister,
mdiHome,
} from "@mdi/js";
import { ref } from "vue";
// import { getArea } from "@/constants/area";
import BaseLevel from "@/components/BaseLevel.vue";
import CardBox from "@/components/CardBox.vue";
import BaseButton from "@/components/BaseButton.vue";
import PillTag from "@/components/PillTag.vue";
const props = defineProps({
useSmall: {
type: Boolean,
required: false,
default: true,
default: false,
},
arcadeData: {
arcade: {
type: Object,
required: true,
},
});
function getCardStyle(game) {
if (game !== null) {
var arcadeData = ref(props.arcade.data);
function getCardStyle(path) {
if (path !== null) {
return `
background-image: url('${game}');
background-image: url('${path}');
background-size: cover;
background-repeat: no-repeat;
`;
}
}
const areaData = getArea(props.arcadeData.area);
// const areaData = getArea(props.arcadeData.area);
</script>
<template>
<CardBox :style="getCardStyle(arcadeData.image)">
<div
:style="getCardStyle('/assets/card/carpet.png')"
class="rounded-2xl mb-6 w-full"
>
<BaseLevel
type="justify-center"
class="bg-white dark:bg-slate-900/90 rounded-2xl p-3"
class="bg-white dark:bg-slate-900/90 rounded-2xl p-6 w-full"
>
<div class="space-y-3 text-center">
<h1 class="text-2xl lg:text-3xl font-bold">{{ arcadeData.name }}</h1>
<div class="space-y-3 text-center w-full">
<h1 class="text-2xl lg:text-3xl font-bold">{{ arcade.name }}</h1>
<div class="flex gap-2 justify-center items-center">
<h2 class="text-2xl md:text-3xl font-bold lg:hidden">
<!-- <h2 class="text-2xl md:text-3xl font-bold lg:hidden">
{{ areaData.flag }}
</h2>
</h2> -->
<h2 class="text-xl md:text-2xl font-bold">
{{ areaData.name }}
{{ arcade.description }}
</h2>
</div>
<hr class="border-t border-1 w-full" />
<p class="text-lg">
Managed by
<span
v-for="(user, index) in arcadeData.admins"
:key="index"
class="font-bold"
>
<span v-if="index === 0">{{ user }}</span>
<span v-else-if="index >= arcadeData.admins.length - 1"
>, <span class="font-normal">and</span> {{ user }}.</span
>
<span v-else>, {{ user }}</span>
</span>
</p>
<div class="flex flex-wrap gap-4 place-content-center">
<PillTag
v-if="arcadeData.beta"
v-if="arcadeData.is_beta"
label="Beta Enabled"
color="warning"
:icon="mdiTestTube"
/>
<PillTag
v-if="arcadeData.public"
label="Public Arcade"
color="success"
:icon="mdiStoreOutline"
/>
<PillTag
v-if="!arcadeData.public"
label="Private Arcade"
<PillTag label="Private Arcade" color="info" :icon="mdiHomeOutline" />
</div>
<hr class="border-t border-1 w-full" />
<p v-if="arcade.owners && arcade.owners.length" class="text-lg">
Managed by
<span
v-for="(owner, index) in arcade.owners"
:key="owner.username"
class="font-bold"
>
<template v-if="arcade.owners.length === 2 && index === 0">{{
owner.username
}}</template>
<template v-else-if="arcade.owners.length === 2 && index === 1">
<span class="font-normal"> and</span>
{{ owner.username }}.</template
>
<template v-else-if="index === 0">{{ owner.username }}</template>
<template v-else-if="index === arcade.owners.length - 1"
>, <span class="font-normal"> and</span>
{{ owner.username }}.</template
>
<template v-else>, {{ owner.username }}</template>
</span>
</p>
<div
v-if="!useSmall"
class="md:w-full grid grid-cols-1 md:grid-cols-3 gap-3"
>
<BaseButton
:href="`/#/arcade/${arcade.id}/events`"
:icon="mdiNewspaperVariantMultiple"
color="info"
:icon="mdiHomeOutline"
label="Event Settings"
/>
<BaseButton
:href="`/#/arcade/${arcade.id}/machines`"
:icon="mdiGamepad"
color="info"
label="Machine List"
/>
<BaseButton
:href="`/#/arcade/${arcade.id}/paseli`"
:icon="mdiCashRegister"
color="info"
label="PASELI"
/>
</div>
<div v-if="useSmall" class="w-full flex justify-center">
<BaseButton
:href="`/#/arcade/${arcade.id}`"
:icon="mdiHome"
color="info"
label="Arcade Home"
class="w-full md:w-[150px]"
/>
</div>
</div>
</BaseLevel>
</CardBox>
</div>
</template>

View File

@ -47,7 +47,7 @@ const props = defineProps({
},
outline: {
type: Boolean,
default: true,
default: false,
},
active: Boolean,
disabled: Boolean,

View File

@ -49,7 +49,6 @@ function openNewsView() {
<div
class="outline outline-green-900/50 hover:scale-[1.01] hover:shadow-xl hover:outline hover:outline-blue-500/50 hover:bg-slate-500 hover:dark:bg-slate-950/90 bg-white dark:bg-slate-900/90 rounded-xl p-4 h-full w-full transition-all duration-10"
>
<p class="text-sm font-bold">Unread</p>
<p class="text-sm">{{ props.date }}</p>
<hr class="pb-1" />
<h2 class="text-xl pb-2">{{ props.title }}</h2>

View File

@ -0,0 +1,132 @@
<script setup>
import axios from "axios";
import { watch, ref, reactive } from "vue";
import BaseButton from "@/components/BaseButton.vue";
import CardBox from "@/components/CardBox.vue";
import FormField from "@/components/FormField.vue";
import FormControl from "@/components/FormControl.vue";
import UserEmblem from "@/components/UserEmblem.vue";
import PillTag from "@/components/PillTag.vue";
const props = defineProps({
profile: {
type: Object,
default: null,
},
version: {
type: Number,
default: 14,
},
});
const userProfile = ref(props.profile);
const version = ref(props.version);
const emblemKey = ref(0);
const newEmblem = reactive(formatEmblem(userProfile.value?.last?.emblem));
const emblemSettings = ref([]);
watch(
() => props.version,
() => {
userProfile.value = props.profile;
version.value = props.version;
loadEmblemSettings();
newEmblem.value = formatEmblem(userProfile.value.last?.emblem);
}
);
watch(
newEmblem,
() => {
emblemKey.value++;
},
{ deep: true }
);
loadEmblemSettings();
function loadEmblemSettings() {
axios
.get(
`https://web3.phaseii.network/gameassets/emblems/${version.value}.json`
)
.then((r) => {
if (r.data) {
emblemSettings.value = r.data;
}
})
.catch((error) => {
console.log(error.message);
});
}
function formatEmblem(emblem) {
if (emblem) {
return {
background: emblem[0],
main: emblem[1],
ornament: emblem[2],
effect: emblem[3],
speech_bubble: emblem[4],
};
} else {
return {
background: 0,
main: 0,
ornament: 0,
effect: 0,
speech_bubble: 0,
};
}
}
function encodeEmblem(emblem) {
if (emblem) {
return [
emblem.background,
emblem.main,
emblem.ornament,
emblem.effect,
emblem.speech_bubble,
];
} else {
return [0, 0, 0, 0, 0];
}
}
</script>
<template>
<CardBox class="mt-6">
<PillTag color="info" label="Emblem" class="mb-2" />
<div class="grid md:grid-cols-2 space-y-6 align-center">
<div>
<FormField
v-for="option of emblemSettings"
:key="option.id"
:label="option.name"
:help="option.help"
>
<FormControl
v-model="newEmblem[option.id]"
:options="option.options"
/>
</FormField>
</div>
<div class="place-self-center">
<UserEmblem
:key="emblemKey"
:version="version"
:profile="{ last: { emblem: encodeEmblem(newEmblem) } }"
:size="300"
/>
</div>
</div>
<template #footer>
<div class="space-x-2">
<BaseButton type="submit" color="success" label="Save" />
<BaseButton type="submit" color="danger" label="Revert" />
</div>
</template>
</CardBox>
</template>

View File

@ -8,6 +8,8 @@ import {
import { dashCode } from "@/constants/userData";
import { getGameInfo } from "@/constants";
import BaseButton from "@/components/BaseButton.vue";
import UserEmblem from "@/components/UserEmblem.vue";
import UserQpro from "@/components/UserQpro.vue";
import { getGitadoraColor, getJubilityColor } from "@/constants/skillColor.js";
const props = defineProps({
@ -15,6 +17,10 @@ const props = defineProps({
type: String,
default: null,
},
version: {
type: Number,
default: null,
},
profile: {
type: Object,
required: true,
@ -26,13 +32,10 @@ const props = defineProps({
});
function colorText() {
if (props.profile.stats) {
const stats = props.profile.stats;
if (stats.jubility) {
return getJubilityColor(stats.jubility);
} else if (stats.skillPoints) {
return getGitadoraColor(stats.skillPoints);
}
if (props.profile.jubility) {
return getJubilityColor(props.profile.jubility);
} else if (props.profile.records) {
return getGitadoraColor(props.profile.records.skill);
}
}
@ -40,46 +43,79 @@ const thisGame = getGameInfo(props.game);
</script>
<template>
<div class="flex content-center justify-center items-center">
<img v-if="profile.avatar" class="h-40" :src="profile.avatar" />
<div class="content-center justify-center items-center">
<div
class="md:flex md:space-x-12 md:justify-center md:items-center grid grid-cols-1 text-center"
>
<UserEmblem
v-if="game == 'jubeat' && version >= 10 && profile.last?.emblem"
:version="version"
:profile="profile"
class="place-self-center pb-6 md:pb-0"
/>
<UserQpro
v-if="game == 'iidx' && version >= 20 && profile.qpro"
:version="version"
:profile="profile"
class="place-self-center pb-6 md:pb-0"
/>
<div class="drop-shadow-xl">
<h1 :class="colorText()" class="text-4xl md:text-5xl font-bold">
{{ profile.username }}
</h1>
<p class="text-xl font-mono">{{ dashCode(profile.extid) }}</p>
</div>
</div>
<div class="space-y-2 text-center md:text-left lg:mx-12 p-2">
<h1 :class="colorText()" class="text-3xl md:text-4xl font-bold">
{{ profile.name }}
</h1>
<p class="text-xl font-mono">{{ dashCode(profile.extid) }}</p>
<p class="text-md md:text-lg">
Last played at <b>{{ profile.last.arcade }}</b> on
<b>{{ profile.last.date }}</b>
</p>
<div class="grid grid-cols-1 md:grid-cols-2 gap-3">
<div class="pt-2 grid grid-cols-1 md:grid-cols-2 xl:grid-cols-4 gap-3">
<BaseButton
v-if="!useSmall && game"
:icon="mdiAccountDetails"
:href="`/#/games/${game}/profiles/${profile.id}`"
:href="`/#/games/${game}/profiles/${profile.userId}`"
:outline="false"
color="info"
label="View Profile"
/>
<BaseButton
v-if="!useSmall && game"
:icon="mdiCog"
:href="`/#/games/${game}/profiles/${profile.id}/edit`"
:href="`/#/games/${game}/edit`"
:outline="false"
color="info"
label="Edit Profile"
/>
<BaseButton
v-if="!useSmall && !thisGame.noScores"
:href="`/#/games/${game}/scores/${profile.id}`"
:href="`/#/games/${game}/scores/${profile.userId}`"
:icon="mdiPlaylistMusicOutline"
:outline="false"
color="info"
label="My Scores"
/>
<BaseButton
v-if="!useSmall && !thisGame.noRecords"
:href="`/#/games/${game}/records/${profile.id}`"
:href="`/#/games/${game}/records/${profile.userId}`"
:icon="mdiFormatListText"
:outline="false"
color="info"
label="My Records"
/>
<BaseButton
v-if="!useSmall && !thisGame.noScores"
:href="`/#/games/${game}/scores`"
:icon="mdiPlaylistMusicOutline"
:outline="false"
color="info"
label="Network Scores"
/>
<BaseButton
v-if="!useSmall && !thisGame.noRecords"
:href="`/#/games/${game}/records`"
:icon="mdiFormatListText"
:outline="false"
color="info"
label="Network Records"
/>
</div>
</div>
</div>

Some files were not shown because too many files have changed in this diff Show More