Compare commits
19 Commits
7d6c8d0f10
...
fetch-test
Author | SHA1 | Date | |
---|---|---|---|
b73865157d | |||
ac2fb16703 | |||
ef29ef3d82 | |||
4d1f4ea120 | |||
6bfa1547f9 | |||
f3511277f9 | |||
de18d4957b | |||
c10bb714a9 | |||
117490fc3c | |||
ed23344d78 | |||
8e9f9d3825 | |||
b3c655df58 | |||
955956b13f | |||
f7ca05513c | |||
d57b2c39ee | |||
9f81c7c8c0 | |||
5aca026391 | |||
bbe2db581a | |||
0ce6139924 |
181
package-lock.json
generated
181
package-lock.json
generated
@ -22,8 +22,7 @@
|
|||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.17.0",
|
||||||
"prettier": "^3.0.3",
|
"prettier": "^3.0.3",
|
||||||
"unplugin-fonts": "^1.1.1",
|
"unplugin-fonts": "^1.1.1",
|
||||||
"unplugin-vue-components": "^0.26.0",
|
"vite": "^5.1.4",
|
||||||
"vite": "^5.0.11",
|
|
||||||
"vite-plugin-vuetify": "^2.0.1"
|
"vite-plugin-vuetify": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -36,15 +35,6 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@antfu/utils": {
|
|
||||||
"version": "0.7.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
|
|
||||||
"integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
|
|
||||||
"dev": true,
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/antfu"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.23.9",
|
"version": "7.23.9",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
|
||||||
@ -581,28 +571,6 @@
|
|||||||
"url": "https://opencollective.com/unts"
|
"url": "https://opencollective.com/unts"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/pluginutils": {
|
|
||||||
"version": "5.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
|
|
||||||
"integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@types/estree": "^1.0.0",
|
|
||||||
"estree-walker": "^2.0.2",
|
|
||||||
"picomatch": "^2.3.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.0.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"rollup": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||||
"version": "4.12.0",
|
"version": "4.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz",
|
||||||
@ -1764,15 +1732,6 @@
|
|||||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/function-bind": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
||||||
"dev": true,
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/glob": {
|
"node_modules/glob": {
|
||||||
"version": "7.2.3",
|
"version": "7.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||||
@ -1835,18 +1794,6 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/hasown": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"function-bind": "^1.1.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/help-me": {
|
"node_modules/help-me": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
|
||||||
@ -1932,18 +1879,6 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-core-module": {
|
|
||||||
"version": "2.13.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
|
|
||||||
"integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"hasown": "^2.0.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/is-extglob": {
|
"node_modules/is-extglob": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||||
@ -2050,18 +1985,6 @@
|
|||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/local-pkg": {
|
|
||||||
"version": "0.4.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
|
|
||||||
"integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/antfu"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/locate-path": {
|
"node_modules/locate-path": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||||
@ -2357,12 +2280,6 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-parse": {
|
|
||||||
"version": "1.0.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
|
||||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/picocolors": {
|
"node_modules/picocolors": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
|
||||||
@ -2535,23 +2452,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
|
||||||
"integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
|
"integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
|
||||||
},
|
},
|
||||||
"node_modules/resolve": {
|
|
||||||
"version": "1.22.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
|
||||||
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"is-core-module": "^2.13.0",
|
|
||||||
"path-parse": "^1.0.7",
|
|
||||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"resolve": "bin/resolve"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/resolve-from": {
|
"node_modules/resolve-from": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||||
@ -2771,18 +2671,6 @@
|
|||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/supports-preserve-symlinks-flag": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/synckit": {
|
"node_modules/synckit": {
|
||||||
"version": "0.8.8",
|
"version": "0.8.8",
|
||||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
|
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
|
||||||
@ -2901,67 +2789,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/unplugin-vue-components": {
|
|
||||||
"version": "0.26.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.26.0.tgz",
|
|
||||||
"integrity": "sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@antfu/utils": "^0.7.6",
|
|
||||||
"@rollup/pluginutils": "^5.0.4",
|
|
||||||
"chokidar": "^3.5.3",
|
|
||||||
"debug": "^4.3.4",
|
|
||||||
"fast-glob": "^3.3.1",
|
|
||||||
"local-pkg": "^0.4.3",
|
|
||||||
"magic-string": "^0.30.3",
|
|
||||||
"minimatch": "^9.0.3",
|
|
||||||
"resolve": "^1.22.4",
|
|
||||||
"unplugin": "^1.4.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/antfu"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@babel/parser": "^7.15.8",
|
|
||||||
"@nuxt/kit": "^3.2.2",
|
|
||||||
"vue": "2 || 3"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@babel/parser": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@nuxt/kit": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/unplugin-vue-components/node_modules/brace-expansion": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"balanced-match": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/unplugin-vue-components/node_modules/minimatch": {
|
|
||||||
"version": "9.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
|
|
||||||
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"brace-expansion": "^2.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=16 || 14 >=14.17"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/isaacs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/upath": {
|
"node_modules/upath": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
|
||||||
@ -2987,9 +2814,9 @@
|
|||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
||||||
},
|
},
|
||||||
"node_modules/vite": {
|
"node_modules/vite": {
|
||||||
"version": "5.1.3",
|
"version": "5.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/vite/-/vite-5.1.4.tgz",
|
||||||
"integrity": "sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==",
|
"integrity": "sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.19.3",
|
"esbuild": "^0.19.3",
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"eslint-plugin-vue": "^9.17.0",
|
"eslint-plugin-vue": "^9.17.0",
|
||||||
"prettier": "^3.0.3",
|
"prettier": "^3.0.3",
|
||||||
"unplugin-fonts": "^1.1.1",
|
"unplugin-fonts": "^1.1.1",
|
||||||
"vite": "^5.0.11",
|
"vite": "^5.1.4",
|
||||||
"vite-plugin-vuetify": "^2.0.1"
|
"vite-plugin-vuetify": "^2.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
src/assets/BrainBlast-Ai-Upscaled.jpg
Normal file
BIN
src/assets/BrainBlast-Ai-Upscaled.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 MiB |
BIN
src/assets/BrainBlast-For-HomeView-Alpha.png
Normal file
BIN
src/assets/BrainBlast-For-HomeView-Alpha.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
BIN
src/assets/BrainBlast-For-HomeView.jpg
Normal file
BIN
src/assets/BrainBlast-For-HomeView.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 768 KiB |
@ -1,21 +1,27 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-app-bar :elevation="12">
|
<v-app-bar :elevation="5">
|
||||||
<RouterMenu />
|
<RouterMenu />
|
||||||
<v-app-bar-title>Brain Blast</v-app-bar-title>
|
<v-app-bar-title>Brain Blast</v-app-bar-title>
|
||||||
|
|
||||||
<template v-slot:append>
|
<template v-slot:append>
|
||||||
<v-btn @click="toggleTheme" icon="mdi-theme-light-dark"></v-btn>
|
<v-btn icon @click="toggleTheme">
|
||||||
|
<v-icon>{{ darkTheme ? 'mdi-white-balance-sunny' : 'mdi-moon-waning-crescent' }}</v-icon>
|
||||||
|
</v-btn>
|
||||||
</template>
|
</template>
|
||||||
</v-app-bar>
|
</v-app-bar>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { ref } from 'vue'
|
||||||
import { useTheme } from 'vuetify'
|
import { useTheme } from 'vuetify'
|
||||||
import RouterMenu from '@/components/RouterMenu.vue'
|
import RouterMenu from '@/components/RouterMenu.vue'
|
||||||
|
|
||||||
const theme = useTheme()
|
const theme = useTheme()
|
||||||
|
const darkTheme = ref(true)
|
||||||
|
|
||||||
function toggleTheme () {
|
function toggleTheme() {
|
||||||
|
darkTheme.value = !darkTheme.value
|
||||||
theme.global.name.value = theme.global.current.value.dark ? 'light' : 'dark'
|
theme.global.name.value = theme.global.current.value.dark ? 'light' : 'dark'
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
36
src/components/CardControl.vue
Normal file
36
src/components/CardControl.vue
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<template>
|
||||||
|
<v-card tile outlined class="card">
|
||||||
|
<v-card-title class="card__title primary">
|
||||||
|
<v-icon left class="white--text pr-5 pl-2" size="50">mdi-camera-control</v-icon>
|
||||||
|
Contrôles
|
||||||
|
</v-card-title>
|
||||||
|
<v-container class="text-center">
|
||||||
|
<v-row justify="center">
|
||||||
|
<v-col cols="12" sm="6" md="5" class="mt-4">
|
||||||
|
<mqtt-button width="240" height="130" class="btn xs12 sm6 md3" topic="/display/control" message="previous">
|
||||||
|
<v-icon left size="100">mdi-skip-previous</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" sm="6" md="5" class="mt-4">
|
||||||
|
<mqtt-button width="240" height="130" class="btn card xs12 sm6 md3" topic="/display/control" message="next">
|
||||||
|
<v-icon left size="100">mdi-skip-next</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" sm="6" md="5" class="mb-4">
|
||||||
|
<mqtt-button width="240" height="130" class="btn card xs12 sm6 md3" topic="/display/control" message="pause">
|
||||||
|
<v-icon left size="100">mdi-pause</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" sm="6" md="5" class="mb-4">
|
||||||
|
<mqtt-button width="240" height="130" class="btn card xs12 sm6 md3 " topic="/display/control" message="play">
|
||||||
|
<v-icon left size="100">mdi-play</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-container>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import MqttButton from './MqttButton.vue';
|
||||||
|
</script>
|
30
src/components/CardSolution.vue
Normal file
30
src/components/CardSolution.vue
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<template>
|
||||||
|
<v-card tile outlined class="card">
|
||||||
|
<v-card-title class="card__title feedback">
|
||||||
|
<v-icon left class="white--text pr-5 pl-2" size="50">mdi-play-network-outline</v-icon>
|
||||||
|
Solution
|
||||||
|
</v-card-title>
|
||||||
|
<v-container class="text-center">
|
||||||
|
<v-row justify="center">
|
||||||
|
<v-container class="text-center">
|
||||||
|
<!-- Utilisation de styles CSS personnalisés pour centrer l'image -->
|
||||||
|
<v-img width="450" src="https://c4.wallpaperflare.com/wallpaper/908/893/291/funny-middle-finger-black-background-wallpaper-preview.jpg" style="margin: 0 auto;"></v-img>
|
||||||
|
</v-container>
|
||||||
|
</v-row>
|
||||||
|
</v-container>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
<style>
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
.image-container {
|
||||||
|
width: 300px;
|
||||||
|
overflow: hidden; /* Pour masquer le dépassement de l'image */
|
||||||
|
border: 1px solid #ccc; /* Bordure de l'image */
|
||||||
|
}
|
||||||
|
.image-container img {
|
||||||
|
width: 100%; /* Pour remplir complètement le conteneur */
|
||||||
|
height: auto; /* Pour maintenir le ratio d'aspect de l'image */
|
||||||
|
display: block; /* Pour éviter l'espace réservé pour les images */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
43
src/components/CardSoundboard.vue
Normal file
43
src/components/CardSoundboard.vue
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<v-card tile outlined class="card" color="">
|
||||||
|
<v-card-title class="card__title primary">
|
||||||
|
<v-icon left class="white--text pr-5 pl-2" size="50">mdi-music-box-multiple</v-icon>
|
||||||
|
Soundboard
|
||||||
|
</v-card-title>
|
||||||
|
<v-container class="text-center">
|
||||||
|
<v-row justify="center">
|
||||||
|
<v-col cols="12" sm="6" md="4" class="mt-4">
|
||||||
|
<mqtt-button class="btn" width="200" height="130" topic="/sound/playsound" message="good-response" rounded>
|
||||||
|
<v-icon size="100">mdi-check-circle-outline</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" sm="6" md="4" class="mt-4">
|
||||||
|
<mqtt-button class="btn" width="200" height="130" topic="/sound/playsound" message="bad-response" rounded>
|
||||||
|
<v-icon size="100">mdi-close-circle-outline</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" sm="6" md="4" class="mt-4">
|
||||||
|
<mqtt-button class="btn" width="200" height="130" topic="/sound/playsound" message="timer" rounded>
|
||||||
|
<v-icon size="100">mdi-timer-outline</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
<v-row justify="center">
|
||||||
|
<v-col cols="12" sm="6" md="4" class="mb-4">
|
||||||
|
<mqtt-button class="btn" width="220" height="130" topic="/sound/playsound" message="applause" rounded>
|
||||||
|
<v-icon size="100">mdi-human-handsup</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" sm="6" md="s" class="mb-4">
|
||||||
|
<mqtt-button class="btn" width="220" height="130" topic="/sound/playsound" message="bell" rounded>
|
||||||
|
<v-icon size="100">mdi-bell-outline</v-icon>
|
||||||
|
</mqtt-button>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-container>
|
||||||
|
</v-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import MqttButton from './MqttButton.vue';
|
||||||
|
</script>
|
22
src/components/MqttButton.vue
Normal file
22
src/components/MqttButton.vue
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<template>
|
||||||
|
<v-btn @click="_publishMessage" v-bind="$attrs">
|
||||||
|
<slot/>
|
||||||
|
</v-btn>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { publishMessage } from '@/services/mqttService'
|
||||||
|
import { ref, defineProps } from 'vue'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
topic: String,
|
||||||
|
message: null
|
||||||
|
})
|
||||||
|
|
||||||
|
const disabled = ref(false)
|
||||||
|
|
||||||
|
const _publishMessage = () => {
|
||||||
|
publishMessage(props.topic, JSON.stringify(props.message))
|
||||||
|
disabled.value = true
|
||||||
|
}
|
||||||
|
</script>
|
@ -1,86 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="item">
|
|
||||||
<i>
|
|
||||||
<slot name="icon"></slot>
|
|
||||||
</i>
|
|
||||||
<div class="details">
|
|
||||||
<h3>
|
|
||||||
<slot name="heading"></slot>
|
|
||||||
</h3>
|
|
||||||
<slot></slot>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.item {
|
|
||||||
margin-top: 2rem;
|
|
||||||
display: flex;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.details {
|
|
||||||
flex: 1;
|
|
||||||
margin-left: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
i {
|
|
||||||
display: flex;
|
|
||||||
place-items: center;
|
|
||||||
place-content: center;
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
color: var(--color-text);
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 1.2rem;
|
|
||||||
font-weight: 500;
|
|
||||||
margin-bottom: 0.4rem;
|
|
||||||
color: var(--color-heading);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 1024px) {
|
|
||||||
.item {
|
|
||||||
margin-top: 0;
|
|
||||||
padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
i {
|
|
||||||
top: calc(50% - 25px);
|
|
||||||
left: -26px;
|
|
||||||
position: absolute;
|
|
||||||
border: 1px solid var(--color-border);
|
|
||||||
background: var(--color-background);
|
|
||||||
border-radius: 8px;
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item:before {
|
|
||||||
content: ' ';
|
|
||||||
border-left: 1px solid var(--color-border);
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
bottom: calc(50% + 25px);
|
|
||||||
height: calc(50% - 25px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.item:after {
|
|
||||||
content: ' ';
|
|
||||||
border-left: 1px solid var(--color-border);
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: calc(50% + 25px);
|
|
||||||
height: calc(50% - 25px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.item:first-of-type:before {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item:last-of-type:after {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
1
src/fetch.txt
Normal file
1
src/fetch.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
test
|
@ -4,7 +4,6 @@ import { createApp } from 'vue'
|
|||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
|
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
|
|
||||||
registerPlugins(app)
|
registerPlugins(app)
|
||||||
|
|
||||||
app.mount('#app')
|
app.mount('#app')
|
||||||
|
@ -14,6 +14,27 @@ import { createVuetify } from 'vuetify'
|
|||||||
// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
|
// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
|
||||||
export default createVuetify({
|
export default createVuetify({
|
||||||
theme: {
|
theme: {
|
||||||
defaultTheme: 'dark'
|
themes: {
|
||||||
|
light: {
|
||||||
|
background: '#212121',
|
||||||
|
primary: '#cc0000',
|
||||||
|
controls: '#cc0000',
|
||||||
|
soundboard: '#9A2779',
|
||||||
|
secondary: '#b0bec5',
|
||||||
|
feedback: '#2E7D32',
|
||||||
|
accent: '#8c9eff',
|
||||||
|
error: '#b71c1c',
|
||||||
|
},
|
||||||
|
dark: {
|
||||||
|
background: '#121212',
|
||||||
|
primary: '#2979FF',
|
||||||
|
controls: '#AB47B',
|
||||||
|
secondary: '#90a4ae',
|
||||||
|
feedback: '#2E7D32',
|
||||||
|
accent: '#8c9eff',
|
||||||
|
error: '#b71c1c',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
defaultTheme: 'dark',
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
<template>
|
||||||
|
<v-container>
|
||||||
|
<v-row no-gutters>
|
||||||
|
<v-col class="align-start">
|
||||||
|
<card-control />
|
||||||
|
</v-col>
|
||||||
|
<v-col class="pl-3">
|
||||||
|
<card-soundboard />
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-container>
|
||||||
|
<v-container>
|
||||||
|
<v-row no-gutters>
|
||||||
|
<v-col>
|
||||||
|
<card-solution />
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-container>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
|
||||||
|
import CardSolution from '@/components/CardSolution.vue'
|
||||||
|
import CardControl from '@/components/CardControl.vue'
|
||||||
|
import CardSoundboard from '@/components/CardSoundboard.vue';
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
.card__title.primary {
|
||||||
|
background-color: #2979FF; /* Changez la couleur en fonction de votre thème */
|
||||||
|
}
|
||||||
|
.card__title.feedback {
|
||||||
|
background-color: #2E7D32; /* Changez la couleur en fonction de votre thème */
|
||||||
|
}
|
||||||
|
.btn{
|
||||||
|
border-radius:30px!important;
|
||||||
|
background-color: #2979FF; /* Changez la couleur en fonction de votre thème */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<v-img width="1645" src="../assets/BrainBlast-For-HomeView-Alpha.png"></v-img>
|
||||||
<h1>Bienvenue sur BrainBlast !</h1>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'VotreComposant', // Assurez-vous de donner un nom à votre composant
|
||||||
|
// Votre logique JavaScript ici, par exemple des méthodes, des données, etc.
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user