Merge pull request #1 from PhaseII-eAmusement-Network/minified
Move minified branch into maser
2
.env.development
Normal 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
@@ -0,0 +1,2 @@
|
|||||||
|
VITE_API_URL="https://restfulsleep.phaseii.network"
|
||||||
|
VITE_API_KEY="your_api_key_should_be_here"
|
||||||
71
index.html
@@ -7,6 +7,40 @@
|
|||||||
<link rel="icon" href="/favicon.png">
|
<link rel="icon" href="/favicon.png">
|
||||||
<title>PhaseWeb 3</title>
|
<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>
|
</head>
|
||||||
<body class="scroll-smooth">
|
<body class="scroll-smooth">
|
||||||
<noscript>
|
<noscript>
|
||||||
@@ -15,41 +49,6 @@
|
|||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
<script type="module" src="/src/main.js"></script>
|
<script type="module" src="/src/main.js"></script>
|
||||||
<!-- built files will be auto injected -->
|
<!-- 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>
|
</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>
|
</html>
|
||||||
|
|||||||
97
package-lock.json
generated
@@ -12,11 +12,15 @@
|
|||||||
"@rushstack/eslint-patch": "^1.1.4",
|
"@rushstack/eslint-patch": "^1.1.4",
|
||||||
"axios": "^0.27.0",
|
"axios": "^0.27.0",
|
||||||
"chart.js": "^3.6.0",
|
"chart.js": "^3.6.0",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
|
"dotenv": "^16.4.5",
|
||||||
|
"js-cookie": "^3.0.5",
|
||||||
"numeral": "^2.0.6",
|
"numeral": "^2.0.6",
|
||||||
"particles.js": "^2.0.0",
|
"particles.js": "^2.0.0",
|
||||||
"pinia": "^2.0.13",
|
"pinia": "^2.0.13",
|
||||||
"vue": "^3.0.0",
|
"vue": "^3.0.0",
|
||||||
"vue-router": "^4.0.0"
|
"vue-router": "^4.0.0",
|
||||||
|
"vue3-easy-data-table": "^1.5.47"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rushstack/eslint-patch": "^1.1.4",
|
"@rushstack/eslint-patch": "^1.1.4",
|
||||||
@@ -654,9 +658,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001554",
|
"version": "1.0.30001628",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001628.tgz",
|
||||||
"integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==",
|
"integrity": "sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -791,6 +795,11 @@
|
|||||||
"node": ">= 8"
|
"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": {
|
"node_modules/cssesc": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
||||||
@@ -863,6 +872,17 @@
|
|||||||
"node": ">=6.0.0"
|
"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": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.567",
|
"version": "1.4.567",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz",
|
||||||
@@ -1568,9 +1588,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/follow-redirects": {
|
"node_modules/follow-redirects": {
|
||||||
"version": "1.15.2",
|
"version": "1.15.6",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
|
||||||
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
|
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
@@ -1840,6 +1860,14 @@
|
|||||||
"jiti": "bin/jiti.js"
|
"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": {
|
"node_modules/js-sdsl": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
|
||||||
@@ -2926,9 +2954,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "3.2.7",
|
"version": "3.2.10",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.10.tgz",
|
||||||
"integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
|
"integrity": "sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.15.9",
|
"esbuild": "^0.15.9",
|
||||||
@@ -3024,6 +3052,14 @@
|
|||||||
"vue": "^3.2.0"
|
"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": {
|
"node_modules/which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
@@ -3542,9 +3578,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001554",
|
"version": "1.0.30001628",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001628.tgz",
|
||||||
"integrity": "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==",
|
"integrity": "sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
@@ -3635,6 +3671,11 @@
|
|||||||
"which": "^2.0.1"
|
"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": {
|
"cssesc": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
||||||
@@ -3687,6 +3728,11 @@
|
|||||||
"esutils": "^2.0.2"
|
"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": {
|
"electron-to-chromium": {
|
||||||
"version": "1.4.567",
|
"version": "1.4.567",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz",
|
||||||
@@ -4118,9 +4164,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"follow-redirects": {
|
"follow-redirects": {
|
||||||
"version": "1.15.2",
|
"version": "1.15.6",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
|
||||||
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
|
"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
|
||||||
},
|
},
|
||||||
"form-data": {
|
"form-data": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
@@ -4305,6 +4351,11 @@
|
|||||||
"integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==",
|
"integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==",
|
||||||
"dev": true
|
"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": {
|
"js-sdsl": {
|
||||||
"version": "4.4.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
|
||||||
@@ -5016,9 +5067,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"vite": {
|
"vite": {
|
||||||
"version": "3.2.7",
|
"version": "3.2.10",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-3.2.10.tgz",
|
||||||
"integrity": "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==",
|
"integrity": "sha512-Dx3olBo/ODNiMVk/cA5Yft9Ws+snLOXrhLtrI3F4XLt4syz2Yg8fayZMWScPKoz12v5BUv7VEmQHnsfpY80fYw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"esbuild": "^0.15.9",
|
"esbuild": "^0.15.9",
|
||||||
@@ -5063,6 +5114,14 @@
|
|||||||
"@vue/devtools-api": "^6.4.5"
|
"@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": {
|
"which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
|||||||
@@ -12,11 +12,15 @@
|
|||||||
"@rushstack/eslint-patch": "^1.1.4",
|
"@rushstack/eslint-patch": "^1.1.4",
|
||||||
"axios": "^0.27.0",
|
"axios": "^0.27.0",
|
||||||
"chart.js": "^3.6.0",
|
"chart.js": "^3.6.0",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
|
"dotenv": "^16.4.5",
|
||||||
|
"js-cookie": "^3.0.5",
|
||||||
"numeral": "^2.0.6",
|
"numeral": "^2.0.6",
|
||||||
"particles.js": "^2.0.0",
|
"particles.js": "^2.0.0",
|
||||||
"pinia": "^2.0.13",
|
"pinia": "^2.0.13",
|
||||||
"vue": "^3.0.0",
|
"vue": "^3.0.0",
|
||||||
"vue-router": "^4.0.0"
|
"vue-router": "^4.0.0",
|
||||||
|
"vue3-easy-data-table": "^1.5.47"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rushstack/eslint-patch": "^1.1.4",
|
"@rushstack/eslint-patch": "^1.1.4",
|
||||||
|
|||||||
BIN
public/assets/card/bst.png
Normal file
|
After Width: | Height: | Size: 532 KiB |
BIN
public/assets/card/carpet.png
Normal file
|
After Width: | Height: | Size: 415 KiB |
BIN
public/assets/card/dancerush.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
public/assets/card/danevo.png
Normal file
|
After Width: | Height: | Size: 278 KiB |
BIN
public/assets/card/loveplus.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
public/assets/card/museca.png
Normal file
|
After Width: | Height: | Size: 5.3 MiB |
BIN
public/assets/card/newbishi.png
Normal file
|
After Width: | Height: | Size: 339 KiB |
BIN
public/assets/card/nost.png
Normal file
|
After Width: | Height: | Size: 339 KiB |
BIN
public/assets/card/reflec.png
Normal file
|
After Width: | Height: | Size: 513 KiB |
BIN
public/assets/card/time.png
Normal file
|
After Width: | Height: | Size: 1.9 MiB |
BIN
public/assets/card/tsum.png
Normal file
|
After Width: | Height: | Size: 4.0 MiB |
BIN
public/assets/games/bst/card/1.png
Normal file
|
After Width: | Height: | Size: 732 KiB |
BIN
public/assets/games/bst/card/2.png
Normal file
|
After Width: | Height: | Size: 388 KiB |
BIN
public/assets/games/dancerush/card/1.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
public/assets/games/danevo/card/1.png
Normal file
|
After Width: | Height: | Size: 278 KiB |
BIN
public/assets/games/ddr/card/11.png
Normal file
|
After Width: | Height: | Size: 370 KiB |
BIN
public/assets/games/ddr/card/12.png
Normal file
|
After Width: | Height: | Size: 484 KiB |
BIN
public/assets/games/ddrclass/card/10.png
Normal file
|
After Width: | Height: | Size: 316 KiB |
BIN
public/assets/games/ddrclass/card/9.png
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
public/assets/games/ddromni/card/13.png
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
public/assets/games/ddromni/card/14.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/assets/games/ddromni/card/15.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/assets/games/ddromni/card/16.png
Normal file
|
After Width: | Height: | Size: 616 KiB |
BIN
public/assets/games/ddromni/card/17.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
public/assets/games/ddromni/card/18.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/games/ddromni/card/19.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/assets/games/gitadora_dm/card/1.png
Normal file
|
After Width: | Height: | Size: 670 KiB |
BIN
public/assets/games/gitadora_dm/card/2.png
Normal file
|
After Width: | Height: | Size: 629 KiB |
BIN
public/assets/games/gitadora_dm/card/3.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/games/gitadora_dm/card/4.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/games/gitadora_dm/card/5.png
Normal file
|
After Width: | Height: | Size: 950 KiB |
BIN
public/assets/games/gitadora_dm/card/6.png
Normal file
|
After Width: | Height: | Size: 958 KiB |
BIN
public/assets/games/gitadora_dm/card/7.png
Normal file
|
After Width: | Height: | Size: 669 KiB |
BIN
public/assets/games/gitadora_dm/card/8.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
public/assets/games/gitadora_dm/card/9.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/games/gitadora_gf/card/1.png
Normal file
|
After Width: | Height: | Size: 670 KiB |
BIN
public/assets/games/gitadora_gf/card/2.png
Normal file
|
After Width: | Height: | Size: 629 KiB |
BIN
public/assets/games/gitadora_gf/card/3.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/games/gitadora_gf/card/4.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/games/gitadora_gf/card/5.png
Normal file
|
After Width: | Height: | Size: 968 KiB |
BIN
public/assets/games/gitadora_gf/card/6.png
Normal file
|
After Width: | Height: | Size: 958 KiB |
BIN
public/assets/games/gitadora_gf/card/7.png
Normal file
|
After Width: | Height: | Size: 669 KiB |
BIN
public/assets/games/gitadora_gf/card/8.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
public/assets/games/gitadora_gf/card/9.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
public/assets/games/iidxclass/card/14.png
Normal file
|
After Width: | Height: | Size: 475 KiB |
BIN
public/assets/games/iidxclass/card/15.png
Normal file
|
After Width: | Height: | Size: 659 KiB |
BIN
public/assets/games/iidxclass/card/16.png
Normal file
|
After Width: | Height: | Size: 831 KiB |
BIN
public/assets/games/iidxclass/card/17.png
Normal file
|
After Width: | Height: | Size: 378 KiB |
|
Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 243 KiB |
BIN
public/assets/games/jubeat/card/1.png
Normal file
|
After Width: | Height: | Size: 282 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 94 KiB |
BIN
public/assets/games/jubeat/card/11.png
Normal file
|
After Width: | Height: | Size: 441 KiB |
BIN
public/assets/games/jubeat/card/12.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/assets/games/jubeat/card/14.png
Normal file
|
After Width: | Height: | Size: 3.6 MiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 93 KiB |
BIN
public/assets/games/jubeat/card/4.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
public/assets/games/jubeat/card/5.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
public/assets/games/jubeat/card/6.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
public/assets/games/jubeat/card/7.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
public/assets/games/jubeat/card/8.png
Normal file
|
After Width: | Height: | Size: 411 KiB |
BIN
public/assets/games/jubeat/card/9.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
public/assets/games/loveplus/card/1.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
public/assets/games/loveplus/card/2.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
public/assets/games/reflec/card/1.png
Normal file
|
After Width: | Height: | Size: 513 KiB |
BIN
public/assets/games/reflec/card/2.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
public/assets/games/reflec/card/3.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
public/assets/games/reflec/card/3_a.png
Normal file
|
After Width: | Height: | Size: 214 KiB |
BIN
public/assets/games/reflec/card/3_sp.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
public/assets/games/reflec/card/3_su.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
public/assets/games/reflec/card/3_w.png
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
public/assets/games/reflec/card/4.png
Normal file
|
After Width: | Height: | Size: 355 KiB |
BIN
public/assets/games/reflec/card/5.png
Normal file
|
After Width: | Height: | Size: 944 KiB |
BIN
public/assets/games/reflec/card/6.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
public/assets/games/reflec/card/rb2_2.png
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
public/assets/games/tsum/card/1.png
Normal file
|
After Width: | Height: | Size: 4.0 MiB |
BIN
public/assets/icon/bishi.png
Normal file
|
After Width: | Height: | Size: 276 KiB |
BIN
public/assets/icon/bst.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
public/assets/icon/dancerush.png
Normal file
|
After Width: | Height: | Size: 295 KiB |
BIN
public/assets/icon/danevo.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
public/assets/icon/loveplus.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
public/assets/icon/museca.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
public/assets/icon/newbishi.png
Normal file
|
After Width: | Height: | Size: 276 KiB |
BIN
public/assets/icon/nost.png
Normal file
|
After Width: | Height: | Size: 276 KiB |
BIN
public/assets/icon/reflec.png
Normal file
|
After Width: | Height: | Size: 276 KiB |
BIN
public/assets/icon/tsum.png
Normal file
|
After Width: | Height: | Size: 310 KiB |
@@ -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"}]}
|
|
||||||
45
src/App.vue
@@ -5,3 +5,48 @@ import { RouterView } from "vue-router";
|
|||||||
<template>
|
<template>
|
||||||
<RouterView :key="$route.fullPath" />
|
<RouterView :key="$route.fullPath" />
|
||||||
</template>
|
</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>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export const getButtonColor = (
|
|||||||
success: "ring-emerald-300 dark:ring-emerald-700",
|
success: "ring-emerald-300 dark:ring-emerald-700",
|
||||||
danger: "ring-red-300 dark:ring-red-700",
|
danger: "ring-red-300 dark:ring-red-700",
|
||||||
warning: "ring-yellow-300 dark:ring-yellow-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: {
|
active: {
|
||||||
white: "bg-gray-100",
|
white: "bg-gray-100",
|
||||||
@@ -65,10 +65,10 @@ export const getButtonColor = (
|
|||||||
whiteDark: "bg-white text-black dark:bg-slate-900 dark:text-white",
|
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",
|
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",
|
contrast: "bg-gray-800 text-white dark:bg-white dark:text-black",
|
||||||
success: "bg-emerald-600 dark:bg-emerald-500 text-white",
|
success: "bg-emerald-600 dark:bg-emerald-700 text-white",
|
||||||
danger: "bg-red-600 dark:bg-red-500 text-white",
|
danger: "bg-red-600 dark:bg-red-800 text-white",
|
||||||
warning: "bg-yellow-600 dark:bg-yellow-500 text-white",
|
warning: "bg-yellow-600 dark:bg-yellow-700 text-white",
|
||||||
info: "bg-blue-600 dark:bg-blue-500 text-white",
|
info: "bg-blue-600 dark:bg-blue-900 text-white",
|
||||||
},
|
},
|
||||||
bgHover: {
|
bgHover: {
|
||||||
white: "hover:bg-gray-100",
|
white: "hover:bg-gray-100",
|
||||||
|
|||||||
@@ -1,87 +1,130 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { mdiTestTube, mdiStoreOutline, mdiHomeOutline } from "@mdi/js";
|
import {
|
||||||
import { getArea } from "@/constants/area";
|
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 BaseLevel from "@/components/BaseLevel.vue";
|
||||||
import CardBox from "@/components/CardBox.vue";
|
import BaseButton from "@/components/BaseButton.vue";
|
||||||
import PillTag from "@/components/PillTag.vue";
|
import PillTag from "@/components/PillTag.vue";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
useSmall: {
|
useSmall: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: false,
|
required: false,
|
||||||
default: true,
|
default: false,
|
||||||
},
|
},
|
||||||
arcadeData: {
|
arcade: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
function getCardStyle(game) {
|
var arcadeData = ref(props.arcade.data);
|
||||||
if (game !== null) {
|
function getCardStyle(path) {
|
||||||
|
if (path !== null) {
|
||||||
return `
|
return `
|
||||||
background-image: url('${game}');
|
background-image: url('${path}');
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const areaData = getArea(props.arcadeData.area);
|
// const areaData = getArea(props.arcadeData.area);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<CardBox :style="getCardStyle(arcadeData.image)">
|
<div
|
||||||
|
:style="getCardStyle('/assets/card/carpet.png')"
|
||||||
|
class="rounded-2xl mb-6 w-full"
|
||||||
|
>
|
||||||
<BaseLevel
|
<BaseLevel
|
||||||
type="justify-center"
|
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">
|
<div class="space-y-3 text-center w-full">
|
||||||
<h1 class="text-2xl lg:text-3xl font-bold">{{ arcadeData.name }}</h1>
|
<h1 class="text-2xl lg:text-3xl font-bold">{{ arcade.name }}</h1>
|
||||||
<div class="flex gap-2 justify-center items-center">
|
<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 }}
|
{{ areaData.flag }}
|
||||||
</h2>
|
</h2> -->
|
||||||
<h2 class="text-xl md:text-2xl font-bold">
|
<h2 class="text-xl md:text-2xl font-bold">
|
||||||
{{ areaData.name }}
|
{{ arcade.description }}
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</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">
|
<div class="flex flex-wrap gap-4 place-content-center">
|
||||||
<PillTag
|
<PillTag
|
||||||
v-if="arcadeData.beta"
|
v-if="arcadeData.is_beta"
|
||||||
label="Beta Enabled"
|
label="Beta Enabled"
|
||||||
color="warning"
|
color="warning"
|
||||||
:icon="mdiTestTube"
|
:icon="mdiTestTube"
|
||||||
/>
|
/>
|
||||||
<PillTag
|
<PillTag label="Private Arcade" color="info" :icon="mdiHomeOutline" />
|
||||||
v-if="arcadeData.public"
|
</div>
|
||||||
label="Public Arcade"
|
|
||||||
color="success"
|
<hr class="border-t border-1 w-full" />
|
||||||
:icon="mdiStoreOutline"
|
<p v-if="arcade.owners && arcade.owners.length" class="text-lg">
|
||||||
/>
|
Managed by
|
||||||
<PillTag
|
<span
|
||||||
v-if="!arcadeData.public"
|
v-for="(owner, index) in arcade.owners"
|
||||||
label="Private Arcade"
|
: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"
|
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>
|
||||||
</div>
|
</div>
|
||||||
</BaseLevel>
|
</BaseLevel>
|
||||||
</CardBox>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
outline: {
|
outline: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: false,
|
||||||
},
|
},
|
||||||
active: Boolean,
|
active: Boolean,
|
||||||
disabled: Boolean,
|
disabled: Boolean,
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ function openNewsView() {
|
|||||||
<div
|
<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"
|
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>
|
<p class="text-sm">{{ props.date }}</p>
|
||||||
<hr class="pb-1" />
|
<hr class="pb-1" />
|
||||||
<h2 class="text-xl pb-2">{{ props.title }}</h2>
|
<h2 class="text-xl pb-2">{{ props.title }}</h2>
|
||||||
|
|||||||
132
src/components/Cards/EmblemCardBox.vue
Normal 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>
|
||||||
@@ -8,6 +8,8 @@ import {
|
|||||||
import { dashCode } from "@/constants/userData";
|
import { dashCode } from "@/constants/userData";
|
||||||
import { getGameInfo } from "@/constants";
|
import { getGameInfo } from "@/constants";
|
||||||
import BaseButton from "@/components/BaseButton.vue";
|
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";
|
import { getGitadoraColor, getJubilityColor } from "@/constants/skillColor.js";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -15,6 +17,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
version: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
profile: {
|
profile: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true,
|
required: true,
|
||||||
@@ -26,13 +32,10 @@ const props = defineProps({
|
|||||||
});
|
});
|
||||||
|
|
||||||
function colorText() {
|
function colorText() {
|
||||||
if (props.profile.stats) {
|
if (props.profile.jubility) {
|
||||||
const stats = props.profile.stats;
|
return getJubilityColor(props.profile.jubility);
|
||||||
if (stats.jubility) {
|
} else if (props.profile.records) {
|
||||||
return getJubilityColor(stats.jubility);
|
return getGitadoraColor(props.profile.records.skill);
|
||||||
} else if (stats.skillPoints) {
|
|
||||||
return getGitadoraColor(stats.skillPoints);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,46 +43,79 @@ const thisGame = getGameInfo(props.game);
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="flex content-center justify-center items-center">
|
<div class="content-center justify-center items-center">
|
||||||
<img v-if="profile.avatar" class="h-40" :src="profile.avatar" />
|
<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">
|
<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">
|
<div class="pt-2 grid grid-cols-1 md:grid-cols-2 xl:grid-cols-4 gap-3">
|
||||||
{{ 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">
|
|
||||||
<BaseButton
|
<BaseButton
|
||||||
v-if="!useSmall && game"
|
v-if="!useSmall && game"
|
||||||
:icon="mdiAccountDetails"
|
:icon="mdiAccountDetails"
|
||||||
:href="`/#/games/${game}/profiles/${profile.id}`"
|
:href="`/#/games/${game}/profiles/${profile.userId}`"
|
||||||
|
:outline="false"
|
||||||
color="info"
|
color="info"
|
||||||
label="View Profile"
|
label="View Profile"
|
||||||
/>
|
/>
|
||||||
<BaseButton
|
<BaseButton
|
||||||
v-if="!useSmall && game"
|
v-if="!useSmall && game"
|
||||||
:icon="mdiCog"
|
:icon="mdiCog"
|
||||||
:href="`/#/games/${game}/profiles/${profile.id}/edit`"
|
:href="`/#/games/${game}/edit`"
|
||||||
|
:outline="false"
|
||||||
color="info"
|
color="info"
|
||||||
label="Edit Profile"
|
label="Edit Profile"
|
||||||
/>
|
/>
|
||||||
<BaseButton
|
<BaseButton
|
||||||
v-if="!useSmall && !thisGame.noScores"
|
v-if="!useSmall && !thisGame.noScores"
|
||||||
:href="`/#/games/${game}/scores/${profile.id}`"
|
:href="`/#/games/${game}/scores/${profile.userId}`"
|
||||||
:icon="mdiPlaylistMusicOutline"
|
:icon="mdiPlaylistMusicOutline"
|
||||||
|
:outline="false"
|
||||||
color="info"
|
color="info"
|
||||||
label="My Scores"
|
label="My Scores"
|
||||||
/>
|
/>
|
||||||
<BaseButton
|
<BaseButton
|
||||||
v-if="!useSmall && !thisGame.noRecords"
|
v-if="!useSmall && !thisGame.noRecords"
|
||||||
:href="`/#/games/${game}/records/${profile.id}`"
|
:href="`/#/games/${game}/records/${profile.userId}`"
|
||||||
:icon="mdiFormatListText"
|
:icon="mdiFormatListText"
|
||||||
|
:outline="false"
|
||||||
color="info"
|
color="info"
|
||||||
label="My Records"
|
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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||