const RadiusNetworkNode = {
name: 'RadiusNetworkNode',
props: {
device: Object
},
template: `
{{ device.name }}
{{ device.ipv4.ip }}
{{ device.mac }}
{{ device.vendor }}
{{ details }}
`,
computed: {
iconClass() {
if (this.device.model === 'fbox') return 'fa-duotone fa-router';
if ((this.device.name || '').toLowerCase().includes('repeater')) return 'fa-duotone fa-wifi-exclamation';
if (this.device.type === 'wlan') return 'fa-duotone fa-mobile-screen';
return 'fa-duotone fa-desktop';
},
connectionType() {
if (this.device.type === 'wlan') return 'wlan';
if (this.device.type === 'ethernet') return 'ethernet';
return null;
},
nodeClass() {
return {
'is-router': this.device.model === 'fbox',
'is-repeater': (this.device.name || '').toLowerCase().includes('repeater'),
'is-offline': this.device.state && this.device.state.class !== 'globe_online' && this.device.state.class !== 'led_green'
}
},
details() {
if (this.device.properties && this.device.properties.length > 0) {
const props = this.device.properties.filter(p => p.txt && p.txt !== 'Mesh');
if (props.length > 0) return props[0].txt;
}
if (this.device.port && this.device.port !== 'WLAN') return this.device.port;
return null;
}
}
};
if (window.VueApp) {
VueApp.component('radius-network-node', RadiusNetworkNode);
}