diff --git a/package-lock.json b/package-lock.json index 3ea382c..b36bb7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,15 @@ "name": "lts-stats-web", "version": "0.0.0", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.2.1", + "@fortawesome/free-solid-svg-icons": "^6.2.1", + "@fortawesome/vue-fontawesome": "^3.0.2", "@headlessui/vue": "^1.7.7", "@heroicons/vue": "^2.0.13", "@popperjs/core": "^2.11.6", "axios": "^1.2.2", "bootstrap": "^5.2.3", + "leaflet-rotatedmarker": "^0.2.0", "lodash": "^4.17.21", "moment": "^2.29.4", "pinia": "^2.0.29", @@ -25,11 +29,13 @@ "devDependencies": { "@rushstack/eslint-patch": "^1.1.4", "@vitejs/plugin-vue": "^4.0.0", + "@vue-leaflet/vue-leaflet": "^0.8.0", "@vue/eslint-config-prettier": "^7.0.0", "bulma": "^0.9.4", "eslint": "^8.22.0", "eslint-plugin-vue": "^9.3.0", "http-server": "^14.1.1", + "leaflet": "^1.9.3", "prettier": "^2.7.1", "sass": "^1.57.1", "vite": "^4.0.0" @@ -421,6 +427,48 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz", + "integrity": "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz", + "integrity": "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.2.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz", + "integrity": "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.2.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz", + "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, "node_modules/@headlessui/vue": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.7.tgz", @@ -667,6 +715,16 @@ "vue": "^3.2.25" } }, + "node_modules/@vue-leaflet/vue-leaflet": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@vue-leaflet/vue-leaflet/-/vue-leaflet-0.8.0.tgz", + "integrity": "sha512-oHPdD4zq243NvK98T+HiRT9qf1zvRys5KO0eDdRkZKd09i9Epj9ALPoRqF2NFUPcS8G2yEO1qCLiKAgFQ26ARQ==", + "dev": true, + "peerDependencies": { + "leaflet": "^1.6.0", + "vue": "^3.0.0" + } + }, "node_modules/@vue/compiler-core": { "version": "3.2.45", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", @@ -1959,6 +2017,17 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/leaflet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.3.tgz", + "integrity": "sha512-iB2cR9vAkDOu5l3HAay2obcUHZ7xwUBBjph8+PGtmW/2lYhbLizWtG7nTeYht36WfOslixQF9D/uSIzhZgGMfQ==", + "dev": true + }, + "node_modules/leaflet-rotatedmarker": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/leaflet-rotatedmarker/-/leaflet-rotatedmarker-0.2.0.tgz", + "integrity": "sha512-yc97gxLXwbZa+Gk9VCcqI0CkvIBC9oNTTjFsHqq4EQvANrvaboib4UdeQLyTnEqDpaXHCqzwwVIDHtvz2mUiDg==" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3223,6 +3292,33 @@ "strip-json-comments": "^3.1.1" } }, + "@fortawesome/fontawesome-common-types": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz", + "integrity": "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz", + "integrity": "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.2.1" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz", + "integrity": "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.2.1" + } + }, + "@fortawesome/vue-fontawesome": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.2.tgz", + "integrity": "sha512-xHVtVY8ASUeEvgcA/7vULUesENhD+pi/EirRHdMBqooHlXBqK+yrV6d8tUye1m5UKQKVgYAHMhUBfOnoiwvc8Q==", + "requires": {} + }, "@headlessui/vue": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.7.tgz", @@ -3411,6 +3507,13 @@ "dev": true, "requires": {} }, + "@vue-leaflet/vue-leaflet": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@vue-leaflet/vue-leaflet/-/vue-leaflet-0.8.0.tgz", + "integrity": "sha512-oHPdD4zq243NvK98T+HiRT9qf1zvRys5KO0eDdRkZKd09i9Epj9ALPoRqF2NFUPcS8G2yEO1qCLiKAgFQ26ARQ==", + "dev": true, + "requires": {} + }, "@vue/compiler-core": { "version": "3.2.45", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz", @@ -4386,6 +4489,17 @@ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "leaflet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.3.tgz", + "integrity": "sha512-iB2cR9vAkDOu5l3HAay2obcUHZ7xwUBBjph8+PGtmW/2lYhbLizWtG7nTeYht36WfOslixQF9D/uSIzhZgGMfQ==", + "dev": true + }, + "leaflet-rotatedmarker": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/leaflet-rotatedmarker/-/leaflet-rotatedmarker-0.2.0.tgz", + "integrity": "sha512-yc97gxLXwbZa+Gk9VCcqI0CkvIBC9oNTTjFsHqq4EQvANrvaboib4UdeQLyTnEqDpaXHCqzwwVIDHtvz2mUiDg==" + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", diff --git a/package.json b/package.json index e2f3848..594484d 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,15 @@ "docker-build": "docker build -t arhuako/ltsweb ." }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.2.1", + "@fortawesome/free-solid-svg-icons": "^6.2.1", + "@fortawesome/vue-fontawesome": "^3.0.2", "@headlessui/vue": "^1.7.7", "@heroicons/vue": "^2.0.13", "@popperjs/core": "^2.11.6", "axios": "^1.2.2", "bootstrap": "^5.2.3", + "leaflet-rotatedmarker": "^0.2.0", "lodash": "^4.17.21", "moment": "^2.29.4", "pinia": "^2.0.29", @@ -28,11 +32,13 @@ "devDependencies": { "@rushstack/eslint-patch": "^1.1.4", "@vitejs/plugin-vue": "^4.0.0", + "@vue-leaflet/vue-leaflet": "^0.8.0", "@vue/eslint-config-prettier": "^7.0.0", "bulma": "^0.9.4", "eslint": "^8.22.0", "eslint-plugin-vue": "^9.3.0", "http-server": "^14.1.1", + "leaflet": "^1.9.3", "prettier": "^2.7.1", "sass": "^1.57.1", "vite": "^4.0.0" diff --git a/src/App.vue b/src/App.vue index 7e73f3f..fdb8e43 100644 --- a/src/App.vue +++ b/src/App.vue @@ -46,9 +46,9 @@ export default { } const user = await authenticate(this.username, this.password); this.setUser(user); - console.log('user :>> ', user); this.username = ''; this.password = ''; + window.location.reload(); }, async logout() { await logout(); @@ -81,8 +81,9 @@ export default { @@ -129,10 +130,13 @@ export default { .logo { margin-right: 0.2rem; } -.tag { - font-size: 60% !important; -} .input-login { width: 100px; } +.loading-icon { + margin-top: 24px; + color: #ddd; + width: 100%; + text-align: center;; +} diff --git a/src/assets/images/coloring.svg b/src/assets/images/coloring.svg new file mode 100644 index 0000000..af47745 --- /dev/null +++ b/src/assets/images/coloring.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/images/map/location-blue.png b/src/assets/images/map/location-blue.png new file mode 100644 index 0000000..2a2ef5f Binary files /dev/null and b/src/assets/images/map/location-blue.png differ diff --git a/src/assets/images/map/location-gray.png b/src/assets/images/map/location-gray.png new file mode 100644 index 0000000..8438b33 Binary files /dev/null and b/src/assets/images/map/location-gray.png differ diff --git a/src/assets/images/map/location-green.png b/src/assets/images/map/location-green.png new file mode 100644 index 0000000..90322ef Binary files /dev/null and b/src/assets/images/map/location-green.png differ diff --git a/src/assets/images/map/location-lightblue.png b/src/assets/images/map/location-lightblue.png new file mode 100644 index 0000000..30b893c Binary files /dev/null and b/src/assets/images/map/location-lightblue.png differ diff --git a/src/assets/images/map/location-red.png b/src/assets/images/map/location-red.png new file mode 100644 index 0000000..537d469 Binary files /dev/null and b/src/assets/images/map/location-red.png differ diff --git a/src/assets/images/map/location-yellow.png b/src/assets/images/map/location-yellow.png new file mode 100644 index 0000000..650bfa6 Binary files /dev/null and b/src/assets/images/map/location-yellow.png differ diff --git a/src/assets/images/map/marker-here.png b/src/assets/images/map/marker-here.png new file mode 100644 index 0000000..201e2a5 Binary files /dev/null and b/src/assets/images/map/marker-here.png differ diff --git a/src/assets/images/map/marker-landing.png b/src/assets/images/map/marker-landing.png new file mode 100644 index 0000000..c5ee3e9 Binary files /dev/null and b/src/assets/images/map/marker-landing.png differ diff --git a/src/assets/images/map/marker-takeoff.png b/src/assets/images/map/marker-takeoff.png new file mode 100644 index 0000000..bb34024 Binary files /dev/null and b/src/assets/images/map/marker-takeoff.png differ diff --git a/src/assets/images/map/plane.png b/src/assets/images/map/plane.png new file mode 100644 index 0000000..55e4d3c Binary files /dev/null and b/src/assets/images/map/plane.png differ diff --git a/src/assets/images/ranks/01.png b/src/assets/images/ranks/01.png new file mode 100644 index 0000000..a58ad2d Binary files /dev/null and b/src/assets/images/ranks/01.png differ diff --git a/src/assets/images/ranks/02.png b/src/assets/images/ranks/02.png new file mode 100644 index 0000000..90d4bd5 Binary files /dev/null and b/src/assets/images/ranks/02.png differ diff --git a/src/assets/images/ranks/03.png b/src/assets/images/ranks/03.png new file mode 100644 index 0000000..bc0df3e Binary files /dev/null and b/src/assets/images/ranks/03.png differ diff --git a/src/assets/images/ranks/04.png b/src/assets/images/ranks/04.png new file mode 100644 index 0000000..0092890 Binary files /dev/null and b/src/assets/images/ranks/04.png differ diff --git a/src/assets/images/ranks/05.png b/src/assets/images/ranks/05.png new file mode 100644 index 0000000..182c085 Binary files /dev/null and b/src/assets/images/ranks/05.png differ diff --git a/src/assets/images/ranks/06.png b/src/assets/images/ranks/06.png new file mode 100644 index 0000000..6f9dcb2 Binary files /dev/null and b/src/assets/images/ranks/06.png differ diff --git a/src/assets/images/ranks/07.png b/src/assets/images/ranks/07.png new file mode 100644 index 0000000..e940acf Binary files /dev/null and b/src/assets/images/ranks/07.png differ diff --git a/src/assets/images/ranks/08.png b/src/assets/images/ranks/08.png new file mode 100644 index 0000000..96a0d60 Binary files /dev/null and b/src/assets/images/ranks/08.png differ diff --git a/src/assets/images/ranks/09.png b/src/assets/images/ranks/09.png new file mode 100644 index 0000000..600fd75 Binary files /dev/null and b/src/assets/images/ranks/09.png differ diff --git a/src/assets/images/ranks/10.png b/src/assets/images/ranks/10.png new file mode 100644 index 0000000..af2c1bb Binary files /dev/null and b/src/assets/images/ranks/10.png differ diff --git a/src/assets/images/ranks/11.png b/src/assets/images/ranks/11.png new file mode 100644 index 0000000..c05ede9 Binary files /dev/null and b/src/assets/images/ranks/11.png differ diff --git a/src/assets/images/ranks/12.png b/src/assets/images/ranks/12.png new file mode 100644 index 0000000..743d2ac Binary files /dev/null and b/src/assets/images/ranks/12.png differ diff --git a/src/assets/images/ranks/13.png b/src/assets/images/ranks/13.png new file mode 100644 index 0000000..a499dce Binary files /dev/null and b/src/assets/images/ranks/13.png differ diff --git a/src/assets/images/ranks/14.png b/src/assets/images/ranks/14.png new file mode 100644 index 0000000..79fb66b Binary files /dev/null and b/src/assets/images/ranks/14.png differ diff --git a/src/assets/images/ranks/15.png b/src/assets/images/ranks/15.png new file mode 100644 index 0000000..f9694a6 Binary files /dev/null and b/src/assets/images/ranks/15.png differ diff --git a/src/assets/images/ranks/16.png b/src/assets/images/ranks/16.png new file mode 100644 index 0000000..b588252 Binary files /dev/null and b/src/assets/images/ranks/16.png differ diff --git a/src/components/InSessionNow.vue b/src/components/InSessionNow.vue index d291ab6..7dee960 100644 --- a/src/components/InSessionNow.vue +++ b/src/components/InSessionNow.vue @@ -1,7 +1,7 @@ @@ -31,15 +31,15 @@ colsConfig: [ { align: 'left', - size: 8 + length: 8 }, { align: 'right', - size: 9 + length: 9 }, { align: 'right', - size: 5 + length: 5 }, ], } diff --git a/src/components/SolariBoard.vue b/src/components/SolariBoard.vue index 648b4d9..82fa6b2 100644 --- a/src/components/SolariBoard.vue +++ b/src/components/SolariBoard.vue @@ -10,7 +10,7 @@ @@ -36,7 +36,7 @@ export default { type: Number, default: () => 200 }, - size: { + length: { type: Number, default: () => 25 }, @@ -107,7 +107,7 @@ export default { mapRow(r, i) { r.loops = (_isNil(r.loops)) ? this.loops : r.loops; r.delay = ((_isNil(r.delay)) ? this.delay : r.delay) * i; - r.size = (_isNil(r.size)) ? this.size : r.size; + r.length = (_isNil(r.length)) ? this.length : r.length; r.align = (_isNil(r.align)) ? this.align : r.align; return r; }, diff --git a/src/components/SolariBoardRow.vue b/src/components/SolariBoardRow.vue index 8902e03..a68c4bc 100644 --- a/src/components/SolariBoardRow.vue +++ b/src/components/SolariBoardRow.vue @@ -1,5 +1,5 @@ @@ -29,6 +29,12 @@ position: relative; line-height: 1; + .big & { + font-size: 32px; + height: 38px; + width: 24px; + } + &::after { content:' '; display: inline-block; @@ -60,6 +66,10 @@ export default { props: { + size: { + type: String, + default: () => '' + }, textToShow: { type: String, default: () => '' @@ -68,7 +78,7 @@ type: Number, default: () => 0 }, - size: { + length: { type: Number, }, loops: { @@ -81,10 +91,10 @@ } }, data() { - const newArray = Array.apply(null, Array(this.size)).map(() => ' '); - const newArrayAnimating = Array.apply(null, Array(this.size)).map(() => false); + const newArray = Array.apply(null, Array(this.length)).map(() => ' '); + const newArrayAnimating = Array.apply(null, Array(this.length)).map(() => false); return { - charsAll: ' ABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789-:.>*', + charsAll: ' ABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789-:.>*¡!¿?@#', charsReference: _clone(newArray), charsToShow: _clone(newArray), isAnimating: newArrayAnimating, @@ -93,7 +103,7 @@ computed: { chars() { const text = this.getText(this.textToShow); - const chars = Array.apply(null, Array(this.size)).map(() => ' '); + const chars = Array.apply(null, Array(this.length)).map(() => ' '); const offset = (this.align === 'left') ? 0 : chars.length - text.length; for (let index = 0; index < text.length; index++) { @@ -122,7 +132,7 @@ return this.charsAll.indexOf(letter); }, getText(text) { - return (text.length > this.size) ? text.substring(0, this.size) : text; + return (text.length > this.length) ? text.substring(0, this.length) : text; }, async startAnimation() { const cts = _clone(this.charsReference); diff --git a/src/components/TableAcars.vue b/src/components/TableAcars.vue index 791d8da..2451b1b 100644 --- a/src/components/TableAcars.vue +++ b/src/components/TableAcars.vue @@ -1,7 +1,4 @@