add register and see panel
Deploy Nexus Portal to HestiaCP (FTP) / build-and-deploy (push) Successful in 30s
Deploy Nexus Portal to HestiaCP (FTP) / build-and-deploy (push) Successful in 30s
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
|
||||
// Le moteur logique pour la gestion des groupes d'infrastructures
|
||||
export const useVPC = () => {
|
||||
// 1. Initialisation : On cherche s'il y a déjà des VPC sauvegardés
|
||||
const [vpcs, setVpcs] = useState(() => {
|
||||
const saved = localStorage.getItem('nexus_vpcs');
|
||||
return saved ? JSON.parse(saved) : [];
|
||||
});
|
||||
|
||||
// 2. Sauvegarde automatique à chaque modification
|
||||
useEffect(() => {
|
||||
localStorage.setItem('nexus_vpcs', JSON.stringify(vpcs));
|
||||
}, [vpcs]);
|
||||
|
||||
// 3. Créer un nouveau VPC
|
||||
const createVPC = (name) => {
|
||||
if (!name.trim()) return;
|
||||
const newVpc = {
|
||||
id: `vpc_${Date.now()}`,
|
||||
name: name,
|
||||
services: [] // Tableau qui contiendra les IDs des commandes (ex: [13, 14])
|
||||
};
|
||||
setVpcs([...vpcs, newVpc]);
|
||||
};
|
||||
|
||||
// 4. Supprimer un VPC (Les services à l'intérieur ne sont pas supprimés, ils redeviennent "Libres")
|
||||
const deleteVPC = (vpcId) => {
|
||||
setVpcs(vpcs.filter(vpc => vpc.id !== vpcId));
|
||||
};
|
||||
|
||||
// 5. Assigner un service à un VPC
|
||||
const assignToVPC = (serviceId, targetVpcId) => {
|
||||
setVpcs(vpcs.map(vpc => {
|
||||
// On retire d'abord le service de tous les VPC pour éviter les doublons (1 service = 1 VPC max)
|
||||
const cleanedServices = vpc.services.filter(id => id !== serviceId);
|
||||
|
||||
// Si c'est le VPC cible, on ajoute le service
|
||||
if (vpc.id === targetVpcId) {
|
||||
return { ...vpc, services: [...cleanedServices, serviceId] };
|
||||
}
|
||||
// Sinon on retourne le VPC nettoyé
|
||||
return { ...vpc, services: cleanedServices };
|
||||
}));
|
||||
};
|
||||
|
||||
// 6. Retirer un service d'un VPC (Le rendre "Libre")
|
||||
const removeFromVPC = (serviceId) => {
|
||||
setVpcs(vpcs.map(vpc => ({
|
||||
...vpc,
|
||||
services: vpc.services.filter(id => id !== serviceId)
|
||||
})));
|
||||
};
|
||||
|
||||
return { vpcs, createVPC, deleteVPC, assignToVPC, removeFromVPC };
|
||||
};
|
||||
Reference in New Issue
Block a user