Ajout d'un draft d'un quizz + un draft de l'exploitation des images via un webrequest sur pictureEngine.js
This commit is contained in:
@ -6,43 +6,43 @@ import ping from 'ping';
|
||||
Vue.use(Vuex);
|
||||
|
||||
const store = new Vuex.Store({
|
||||
state: {
|
||||
buzzerRedState: '',
|
||||
buzzerBlueState: '',
|
||||
buzzerOrangeState: '',
|
||||
state: {
|
||||
buzzerRedState: '',
|
||||
buzzerBlueState: '',
|
||||
buzzerOrangeState: '',
|
||||
buzzerGreenState: ''
|
||||
},
|
||||
mutations: {
|
||||
setBuzzerRedState(state, newState) {
|
||||
state.buzzerRedState = newState;
|
||||
},
|
||||
setBuzzerBlueState(state, newState) {
|
||||
state.buzzerBlueState = newState;
|
||||
},
|
||||
setBuzzerOrangeState(state, newState) {
|
||||
state.buzzerOrangeState = newState;
|
||||
},
|
||||
setBuzzerGreenState(state, newState) {
|
||||
state.buzzerGreenState = newState;
|
||||
mutations: {
|
||||
setBuzzerRedState(state, newState) {
|
||||
state.buzzerRedState = newState;
|
||||
},
|
||||
setBuzzerBlueState(state, newState) {
|
||||
state.buzzerBlueState = newState;
|
||||
},
|
||||
setBuzzerOrangeState(state, newState) {
|
||||
state.buzzerOrangeState = newState;
|
||||
},
|
||||
setBuzzerGreenState(state, newState) {
|
||||
state.buzzerGreenState = newState;
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
updateBuzzerStates({ commit }, { index, newState }) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
commit('setBuzzerRedState', newState);
|
||||
break;
|
||||
case 1:
|
||||
commit('setBuzzerBlueState', newState);
|
||||
break;
|
||||
case 2:
|
||||
commit('setBuzzerOrangeState', newState);
|
||||
break;
|
||||
case 3:
|
||||
commit('setBuzzerGreenState', newState);
|
||||
break;
|
||||
default:
|
||||
console.error('Index de buzzer invalide:', index);
|
||||
actions: {
|
||||
updateBuzzerStates({ commit }, { index, newState }) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
commit('setBuzzerRedState', newState);
|
||||
break;
|
||||
case 1:
|
||||
commit('setBuzzerBlueState', newState);
|
||||
break;
|
||||
case 2:
|
||||
commit('setBuzzerOrangeState', newState);
|
||||
break;
|
||||
case 3:
|
||||
commit('setBuzzerGreenState', newState);
|
||||
break;
|
||||
default:
|
||||
console.error('Index de buzzer invalide:', index);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -51,13 +51,11 @@ const store = new Vuex.Store({
|
||||
const hosts = ['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'];
|
||||
|
||||
async function pingHosts() {
|
||||
hosts.forEach(async (host, index) => {
|
||||
try {
|
||||
const res = await ping.promise.probe(host);
|
||||
store.dispatch('updateBuzzerStates', { index, newState: res.alive ? 'ON' : 'OFF' });
|
||||
} catch (error) {
|
||||
console.error(`Erreur lors du ping de ${host}:`, error.message);
|
||||
}
|
||||
hosts.forEach(async (host, index) => { try {
|
||||
const res = await ping.promise.probe(host);
|
||||
store.dispatch('updateBuzzerStates', {index, newState: res.alive ? 'ON' : 'OFF' }); }
|
||||
catch (error) {
|
||||
console.error(`Erreur lors du ping de ${host}:`, error.message); }
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,6 @@ export function publishMessage(topic, message) {
|
||||
// Fonction pour s'abonner à un topic MQTT et écouter les messages entrants
|
||||
export function subscribeToTopic(topic, callback) {
|
||||
client.subscribe(topic)
|
||||
client.on('message', (receivedTopic, message) => {
|
||||
callback(receivedTopic.toString(), message.toString())
|
||||
client.on('message', (receivedTopic, message) => { callback(receivedTopic.toString(), message.toString())
|
||||
})
|
||||
}
|
||||
|
43
ui/src/services/pictureEngine.js
Normal file
43
ui/src/services/pictureEngine.js
Normal file
@ -0,0 +1,43 @@
|
||||
import express from 'express';
|
||||
import { promises as fs } from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const app = express();
|
||||
const port = 3000;
|
||||
|
||||
// Obtenir le chemin du répertoire parent
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
// Middleware pour gérer les requêtes depuis le frontend
|
||||
app.use((req, res, next) => {
|
||||
res.setHeader('Access-Control-Allow-Origin', '*');
|
||||
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
|
||||
next();
|
||||
});
|
||||
|
||||
// Le dossier assets est situé un niveau au-dessus du dossier services
|
||||
const assetsDir = path.join(__dirname, '..', 'quizz/geography-history');
|
||||
console.log(assetsDir)
|
||||
|
||||
// Middleware pour servir les fichiers statiques
|
||||
app.use('/images', express.static(assetsDir));
|
||||
|
||||
// API pour lister les fichiers d'image
|
||||
app.get('/images-list', async (req, res) => {
|
||||
try {
|
||||
const files = await fs.readdir(assetsDir);
|
||||
|
||||
// Filtrer pour ne renvoyer que les fichiers d'image (par ex : .jpg, .png)
|
||||
const images = files.filter(file => /\.(jpg|jpeg|png|gif)$/.test(file));
|
||||
res.json(images);
|
||||
} catch (err) {
|
||||
|
||||
res.status(500).send('Erreur lors de la lecture du dossier');
|
||||
}
|
||||
});
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`Serveur démarré sur http://localhost:${port}`);
|
||||
});
|
Reference in New Issue
Block a user