Wifi views OK

This commit is contained in:
Douglas Barone 2020-11-30 14:15:19 -04:00
parent c4efe7f168
commit adb6289e99
3 changed files with 121 additions and 11 deletions

View File

@ -110,7 +110,6 @@ const Query = {
wifiUsers: () => {
return prisma.user.findMany({
orderBy: { displayName: 'asc' },
where: { wifiDevices: { some: { NOT: { lastSeen: null } } } },
include: { wifiDevices: true }
})

View File

@ -228,7 +228,8 @@ export default {
isOnline: device.status == 'ONLINE',
displayName: device.user?.displayName || 'Não autenticado',
sAMAccountName: device.user?.sAMAccountName,
thumbnailPhoto: device.user?.thumbnailPhoto
thumbnailPhoto: device.user?.thumbnailPhoto,
ip: device.ip == 'Unknown' ? 'Sem endereço IP' : device.ip
}))
}
}

View File

@ -1,7 +1,7 @@
<template>
<v-container fluid>
<v-data-iterator
:items="computedWifiUsers"
:items="sortedWifiUsers"
:loading="$apollo.queries.wifiUsers.loading"
:search="search"
>
@ -68,11 +68,111 @@
:key="device.mac"
>
<v-expansion-panel-header>
{{ device.hostname || device.mac }} {{ device.oui }}
<div>
<v-icon
left
:color="device.status == 'ONLINE' ? 'green' : ''"
>mdi-cellphone-wireless</v-icon
>
{{ device.hostname || device.mac }} {{ device.oui }}
</div>
</v-expansion-panel-header>
<v-expansion-panel-content>{{
device
}}</v-expansion-panel-content>
<v-expansion-panel-content
><v-list dense>
<v-list-item v-if="device.isOnline">
<v-list-item-action>
<v-icon color="green darken-1">mdi-wifi</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.essid }}
</v-list-item-title>
<v-list-item-subtitle> SSID </v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item v-else>
<v-list-item-action>
<v-icon>mdi-wifi-off</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.essid }}
</v-list-item-title>
<v-list-item-subtitle>
Dispositivo off-line
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-action>
<v-icon>mdi-access-point</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.apName }}
</v-list-item-title>
<v-list-item-subtitle>
Access Point ({{ device.controller }})
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-action>
<v-icon>mdi-ip-network</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.ip }}
</v-list-item-title>
<v-list-item-subtitle>
Último endereço IP conhecido
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-action>
<v-icon>mdi-expansion-card-variant</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.mac }}
</v-list-item-title>
<v-list-item-subtitle>
{{ device.oui }}
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-action>
<v-icon>mdi-eye</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.lastSeen | dateAndTime }}
</v-list-item-title>
<v-list-item-subtitle>
Visto pela última vez
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item>
<v-list-item-action>
<v-icon>mdi-check-decagram</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.firstSeen | dateAndTime }}
</v-list-item-title>
<v-list-item-subtitle>
Visto pela primeira vez
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
</v-list></v-expansion-panel-content
>
</v-expansion-panel>
</v-expansion-panels>
</v-expansion-panel-content>
@ -93,10 +193,19 @@ export default {
search: ''
}),
computed: {
computedWifiUsers() {
return this.wifiUsers?.sort(
(a, b) => b.wifiDevices.length - a.wifiDevices.length
)
sortedWifiUsers() {
return this.wifiUsers
?.sort(
(a, b) =>
b.wifiDevices.filter(device => device.status == 'ONLINE').length -
a.wifiDevices.filter(device => device.status == 'ONLINE').length
)
.map(user => ({
...user,
wifiDevices: user.wifiDevices.sort(a =>
a.status == 'ONLINE' ? -1 : 1
)
}))
}
},
apollo: {
@ -116,6 +225,7 @@ export default {
firstSeen
lastSeen
status
apName
}
}
}