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: () => { wifiUsers: () => {
return prisma.user.findMany({ return prisma.user.findMany({
orderBy: { displayName: 'asc' },
where: { wifiDevices: { some: { NOT: { lastSeen: null } } } }, where: { wifiDevices: { some: { NOT: { lastSeen: null } } } },
include: { wifiDevices: true } include: { wifiDevices: true }
}) })

View File

@ -228,7 +228,8 @@ export default {
isOnline: device.status == 'ONLINE', isOnline: device.status == 'ONLINE',
displayName: device.user?.displayName || 'Não autenticado', displayName: device.user?.displayName || 'Não autenticado',
sAMAccountName: device.user?.sAMAccountName, 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> <template>
<v-container fluid> <v-container fluid>
<v-data-iterator <v-data-iterator
:items="computedWifiUsers" :items="sortedWifiUsers"
:loading="$apollo.queries.wifiUsers.loading" :loading="$apollo.queries.wifiUsers.loading"
:search="search" :search="search"
> >
@ -68,11 +68,111 @@
:key="device.mac" :key="device.mac"
> >
<v-expansion-panel-header> <v-expansion-panel-header>
<div>
<v-icon
left
:color="device.status == 'ONLINE' ? 'green' : ''"
>mdi-cellphone-wireless</v-icon
>
{{ device.hostname || device.mac }} {{ device.oui }} {{ device.hostname || device.mac }} {{ device.oui }}
</div>
</v-expansion-panel-header> </v-expansion-panel-header>
<v-expansion-panel-content>{{ <v-expansion-panel-content
device ><v-list dense>
}}</v-expansion-panel-content> <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-panel>
</v-expansion-panels> </v-expansion-panels>
</v-expansion-panel-content> </v-expansion-panel-content>
@ -93,10 +193,19 @@ export default {
search: '' search: ''
}), }),
computed: { computed: {
computedWifiUsers() { sortedWifiUsers() {
return this.wifiUsers?.sort( return this.wifiUsers
(a, b) => b.wifiDevices.length - a.wifiDevices.length ?.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: { apollo: {
@ -116,6 +225,7 @@ export default {
firstSeen firstSeen
lastSeen lastSeen
status status
apName
} }
} }
} }