feat: add smart_tv, printer and smartphone device types
Add three new device types (21 total) with Lucide icons (Tv2, Printer, Smartphone), colour-coded badges, and translations in fr/en/es. No backend migration needed — type is a free string field. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
## ✨ Características
|
## ✨ Características
|
||||||
|
|
||||||
- 🗂️ **Inventario manual** — añade y gestiona dispositivos (18 tipos) con IPs, VLANs, descripciones y enlaces web opcionales
|
- 🗂️ **Inventario manual** — añade y gestiona dispositivos (21 tipos) con IPs, VLANs, descripciones y enlaces web opcionales
|
||||||
- 🗺️ **Vista de topología** — disposición en tarjetas por red (LAN / VLAN 802.1Q), con secciones WAN y puerta de enlace
|
- 🗺️ **Vista de topología** — disposición en tarjetas por red (LAN / VLAN 802.1Q), con secciones WAN y puerta de enlace
|
||||||
- 📡 **Ping ICMP** — comprueba la accesibilidad de todos los hosts conocidos con un clic
|
- 📡 **Ping ICMP** — comprueba la accesibilidad de todos los hosts conocidos con un clic
|
||||||
- 🔍 **Descubrimiento automático** — ping sweep + consulta PTR DNS en una subred para importar nuevos hosts
|
- 🔍 **Descubrimiento automático** — ping sweep + consulta PTR DNS en una subred para importar nuevos hosts
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
## ✨ Fonctionnalités
|
## ✨ Fonctionnalités
|
||||||
|
|
||||||
- 🗂️ **Inventaire manuel** — ajout et gestion d'équipements (18 types) avec IPs, VLANs, descriptions et liens web optionnels
|
- 🗂️ **Inventaire manuel** — ajout et gestion d'équipements (21 types) avec IPs, VLANs, descriptions et liens web optionnels
|
||||||
- 🗺️ **Vue topologie** — disposition en cards par réseau (LAN / VLAN 802.1Q), avec sections WAN et passerelle
|
- 🗺️ **Vue topologie** — disposition en cards par réseau (LAN / VLAN 802.1Q), avec sections WAN et passerelle
|
||||||
- 📡 **Ping ICMP** — vérification de l'accessibilité de tous les hôtes connus en un clic
|
- 📡 **Ping ICMP** — vérification de l'accessibilité de tous les hôtes connus en un clic
|
||||||
- 🔍 **Découverte automatique** — ping sweep + lookup PTR DNS sur un sous-réseau pour importer de nouveaux hôtes
|
- 🔍 **Découverte automatique** — ping sweep + lookup PTR DNS sur un sous-réseau pour importer de nouveaux hôtes
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
## ✨ Features
|
## ✨ Features
|
||||||
|
|
||||||
- 🗂️ **Manual inventory** — add and manage devices (18 types) with IPs, VLANs, descriptions and optional web links
|
- 🗂️ **Manual inventory** — add and manage devices (21 types) with IPs, VLANs, descriptions and optional web links
|
||||||
- 🗺️ **Topology view** — card-based layout per network (LAN / VLAN 802.1Q), with WAN and gateway sections
|
- 🗺️ **Topology view** — card-based layout per network (LAN / VLAN 802.1Q), with WAN and gateway sections
|
||||||
- 📡 **ICMP ping sweep** — check reachability of all known hosts in one click
|
- 📡 **ICMP ping sweep** — check reachability of all known hosts in one click
|
||||||
- 🔍 **Auto-discovery** — ping sweep + PTR DNS lookup on a subnet to import new hosts
|
- 🔍 **Auto-discovery** — ping sweep + PTR DNS lookup on a subnet to import new hosts
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ import { computed } from 'vue'
|
|||||||
import {
|
import {
|
||||||
Server, Network, Wifi, Database, Globe, GitFork,
|
Server, Network, Wifi, Database, Globe, GitFork,
|
||||||
Camera, Thermometer, Gauge, House, PlugZap, ShieldAlert,
|
Camera, Thermometer, Gauge, House, PlugZap, ShieldAlert,
|
||||||
Lightbulb, BellRing, Antenna, Monitor, Laptop, Box,
|
Lightbulb, BellRing, Antenna, Monitor, Laptop, Tv2, Printer, Smartphone, Box,
|
||||||
} from 'lucide-vue-next'
|
} from 'lucide-vue-next'
|
||||||
import { detectBrands } from '../brandIcons.js'
|
import { detectBrands } from '../brandIcons.js'
|
||||||
|
|
||||||
@@ -64,6 +64,9 @@ const LUCIDE_MAP = {
|
|||||||
access_point: Antenna,
|
access_point: Antenna,
|
||||||
desktop: Monitor,
|
desktop: Monitor,
|
||||||
laptop: Laptop,
|
laptop: Laptop,
|
||||||
|
smart_tv: Tv2,
|
||||||
|
printer: Printer,
|
||||||
|
smartphone: Smartphone,
|
||||||
other: Box,
|
other: Box,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -299,6 +299,9 @@ const deviceTypes = computed(() => [
|
|||||||
{ value: 'access_point', label: t('typeAccessPoint') },
|
{ value: 'access_point', label: t('typeAccessPoint') },
|
||||||
{ value: 'desktop', label: t('typeDesktop') },
|
{ value: 'desktop', label: t('typeDesktop') },
|
||||||
{ value: 'laptop', label: t('typeLaptop') },
|
{ value: 'laptop', label: t('typeLaptop') },
|
||||||
|
{ value: 'smart_tv', label: t('typeSmartTv') },
|
||||||
|
{ value: 'printer', label: t('typePrinter') },
|
||||||
|
{ value: 'smartphone', label: t('typeSmartphone') },
|
||||||
{ value: 'other', label: t('typeOther') },
|
{ value: 'other', label: t('typeOther') },
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -566,6 +569,9 @@ h1 { font-size: 22px; font-weight: 700; color: var(--text-primary); }
|
|||||||
.icon-access_point { background: #CCFBF1; color: #0F766E; }
|
.icon-access_point { background: #CCFBF1; color: #0F766E; }
|
||||||
.icon-desktop { background: #E0E7FF; color: #4338CA; }
|
.icon-desktop { background: #E0E7FF; color: #4338CA; }
|
||||||
.icon-laptop { background: #DCFCE7; color: #15803D; }
|
.icon-laptop { background: #DCFCE7; color: #15803D; }
|
||||||
|
.icon-smart_tv { background: #FCE7F3; color: #9D174D; }
|
||||||
|
.icon-printer { background: #ECFEFF; color: #0E7490; }
|
||||||
|
.icon-smartphone { background: #FFFBEB; color: #B45309; }
|
||||||
.icon-other { background: #F1F5F9; color: #475569; }
|
.icon-other { background: #F1F5F9; color: #475569; }
|
||||||
|
|
||||||
.device-info { flex: 1; min-width: 0; }
|
.device-info { flex: 1; min-width: 0; }
|
||||||
@@ -593,6 +599,9 @@ h1 { font-size: 22px; font-weight: 700; color: var(--text-primary); }
|
|||||||
.badge-access_point { background: #14B8A6; }
|
.badge-access_point { background: #14B8A6; }
|
||||||
.badge-desktop { background: #4F46E5; }
|
.badge-desktop { background: #4F46E5; }
|
||||||
.badge-laptop { background: #16A34A; }
|
.badge-laptop { background: #16A34A; }
|
||||||
|
.badge-smart_tv { background: #DB2777; }
|
||||||
|
.badge-printer { background: #0891B2; }
|
||||||
|
.badge-smartphone { background: #D97706; }
|
||||||
.badge-other { background: #94A3B8; }
|
.badge-other { background: #94A3B8; }
|
||||||
.badge-virt { background: #1E293B; }
|
.badge-virt { background: #1E293B; }
|
||||||
.badge-virt-baremetal { background: #475569; }
|
.badge-virt-baremetal { background: #475569; }
|
||||||
|
|||||||
@@ -91,6 +91,9 @@ const LANGS = {
|
|||||||
typeAccessPoint: 'Borne WiFi / Access Point',
|
typeAccessPoint: 'Borne WiFi / Access Point',
|
||||||
typeDesktop: 'Ordinateur fixe',
|
typeDesktop: 'Ordinateur fixe',
|
||||||
typeLaptop: 'Ordinateur portable',
|
typeLaptop: 'Ordinateur portable',
|
||||||
|
typeSmartTv: 'TV connectée',
|
||||||
|
typePrinter: 'Imprimante',
|
||||||
|
typeSmartphone: 'Smartphone',
|
||||||
typeOther: 'Autre',
|
typeOther: 'Autre',
|
||||||
virtBaremetal: 'Bare-metal',
|
virtBaremetal: 'Bare-metal',
|
||||||
virtLxc: 'LXC',
|
virtLxc: 'LXC',
|
||||||
@@ -246,6 +249,9 @@ const LANGS = {
|
|||||||
typeAccessPoint: 'WiFi Access Point',
|
typeAccessPoint: 'WiFi Access Point',
|
||||||
typeDesktop: 'Desktop computer',
|
typeDesktop: 'Desktop computer',
|
||||||
typeLaptop: 'Laptop',
|
typeLaptop: 'Laptop',
|
||||||
|
typeSmartTv: 'Smart TV',
|
||||||
|
typePrinter: 'Printer',
|
||||||
|
typeSmartphone: 'Smartphone',
|
||||||
typeOther: 'Other',
|
typeOther: 'Other',
|
||||||
virtBaremetal: 'Bare-metal',
|
virtBaremetal: 'Bare-metal',
|
||||||
virtLxc: 'LXC',
|
virtLxc: 'LXC',
|
||||||
@@ -398,6 +404,9 @@ const LANGS = {
|
|||||||
typeAccessPoint: 'Punto de acceso WiFi',
|
typeAccessPoint: 'Punto de acceso WiFi',
|
||||||
typeDesktop: 'Ordenador de sobremesa',
|
typeDesktop: 'Ordenador de sobremesa',
|
||||||
typeLaptop: 'Portátil',
|
typeLaptop: 'Portátil',
|
||||||
|
typeSmartTv: 'Smart TV',
|
||||||
|
typePrinter: 'Impresora',
|
||||||
|
typeSmartphone: 'Smartphone',
|
||||||
typeOther: 'Otro',
|
typeOther: 'Otro',
|
||||||
virtBaremetal: 'Bare-metal',
|
virtBaremetal: 'Bare-metal',
|
||||||
virtLxc: 'LXC',
|
virtLxc: 'LXC',
|
||||||
|
|||||||
Reference in New Issue
Block a user