diff --git a/server/src/utils/wifiUtils.js b/server/src/utils/wifiUtils.js index 4d92638..03afdd5 100644 --- a/server/src/utils/wifiUtils.js +++ b/server/src/utils/wifiUtils.js @@ -51,6 +51,7 @@ async function updateDBWithOnlineDevices() { }, update: { ...device, + hostname: device.hostname || device.mac, user } }) diff --git a/web/src/views/WifiDevices.vue b/web/src/views/WifiDevices.vue index a4791a5..d6ff00d 100644 --- a/web/src/views/WifiDevices.vue +++ b/web/src/views/WifiDevices.vue @@ -4,12 +4,20 @@ :items="computedWifiDevices" :items-per-page.sync="itemsPerPage" :page="page" + :loading="$apollo.queries.wifiDevices.loading" > - - Dispositivos Wi-Fi - + + - - - - - + + + + + + mdi-cellphone-wireless + + {{ item.hostname }} - {{ item.ip }} + + + + + + + mdi-wifi + + + + {{ item.essid }} (próximo ao AP {{ item.apName }}) + + SSID + + - {{ item.mac }} - - - - + + + mdi-wifi-off + + + + {{ item.essid }} (próximo ao AP {{ item.apName }}) + + + Dispositivo off-line + + + + + + + mdi-ip-network + + + + {{ item.ip }} + + + Último endereço IP conhecido + + + + + + mdi-expansion-card-variant + + + + {{ item.mac }} + + + {{ item.oui }} + + + + + + mdi-eye + + + + {{ item.lastSeen | dateAndTime }} + + + Visto pela última vez + + + + + + mdi-check-decagram + + + + {{ item.firstSeen | dateAndTime }} + + + Visto pela primeira vez + + + + + + + + + + {{ item.user.displayName }} + + + {{ item.user.sAMAccountName }} + + + + + + + - Footer @@ -51,6 +148,7 @@ export default { name: 'WifiDevices', components: { Avatar }, data: () => ({ + search: '', itemsPerPage: 24, itemsPerPageArray: [15, 30, 60, 120], page: 1 @@ -84,15 +182,26 @@ export default { }, computed: { computedWifiDevices() { - return this.wifiDevices?.map(device => ({ - ...device, - hostname: device.hostname || 'Desconhecido', - user: device.user || { - displayName: 'Não identificado', - sAMAccountName: null, - thumbnailPhoto: null - } - })) + const filter = this.search.toLowerCase() + + return this.wifiDevices + ?.map(device => ({ + ...device, + hostname: device.hostname || 'Desconhecido', + isOnline: device.status == 'ONLINE', + user: device.user || { + displayName: 'Não autenticado', + sAMAccountName: null, + thumbnailPhoto: null + } + })) + .filter( + ({ ip, mac, user }) => + ip.includes(filter) || + mac.includes(filter) || + user.displayName.toLowerCase().includes(filter) || + user.sAMAccountName?.includes(filter) + ) } } }