UNPKG

node-red-contrib-displayext-node

Version:

A node for software DisplayEXT

101 lines (86 loc) 3.45 kB
const fs = require('fs'); const path = require('path'); module.exports = function(RED) { function UpdateDataNode(config) { RED.nodes.createNode(this, config); var node = this; // Spécifiez le chemin du fichier data.json const dataFilePath = path.join(__dirname, '..', 'data.json'); // Fonction pour mettre à jour le fichier data.json function updateData(payload) { // Lire le fichier data.json fs.readFile(dataFilePath, 'utf8', (err, data) => { if (err) { node.error('Erreur de lecture du fichier data.json: ' + err); return; } // Parse les données JSON let devices = JSON.parse(data); // Recherche du device à mettre à jour let deviceIndex = devices.findIndex(device => device.name === payload.oldName); if (deviceIndex !== -1) { // Si le device existe, le mettre à jour devices[deviceIndex].name = payload.name; devices[deviceIndex].ip = payload.ip; devices[deviceIndex].port = payload.port; } else { // Si le device n'existe pas, on l'ajoute devices.push({ name: payload.name, ip: payload.ip, port: payload.port }); } // Sauvegarder les modifications dans le fichier data.json fs.writeFile(dataFilePath, JSON.stringify(devices, null, 2), 'utf8', (err) => { if (err) { node.error('Erreur d\'écriture dans le fichier data.json: ' + err); return; } node.log('Le fichier data.json a été mis à jour'); }); }); } // Fonction pour supprimer un device du fichier data.json function deleteDevice(payload) { // Lire le fichier data.json fs.readFile(dataFilePath, 'utf8', (err, data) => { if (err) { node.error('Erreur de lecture du fichier data.json: ' + err); return; } // Parse les données JSON let devices = JSON.parse(data); // Recherche et suppression du device basé sur le name let deviceIndex = devices.findIndex(device => device.name === payload.deviceName); if (deviceIndex !== -1) { // Supprimer le device de la liste devices.splice(deviceIndex, 1); // Sauvegarder les modifications dans le fichier data.json fs.writeFile(dataFilePath, JSON.stringify(devices, null, 2), 'utf8', (err) => { if (err) { node.error('Erreur d\'écriture dans le fichier data.json: ' + err); return; } node.log('Le device a été supprimé et le fichier data.json mis à jour'); }); } else { node.error('Device non trouvé pour suppression'); } }); } // Lors de la réception du message, on vérifie l'action et appelle la fonction appropriée this.on('input', function(msg) { if (msg.payload) { if (msg.payload.action === 'updateDevice') { updateData(msg.payload.device); } else if (msg.payload.action === 'deleteDevice') { deleteDevice(msg.payload); } else { node.error('Aucune action valide dans le message'); } } }); } RED.nodes.registerType('update-data', UpdateDataNode); };