Layout updates

This commit is contained in:
Douglas Barone 2020-12-09 10:32:51 -04:00
parent dcbac7f2c7
commit ad3c6f05a3
7 changed files with 461 additions and 438 deletions

View File

@ -47,11 +47,11 @@
<v-list-item-title> {{ item.title }} </v-list-item-title>
</v-list-item>
</v-list>
<v-divider />
<v-card-actions>
<ThemeToggleBtn />
<v-spacer />
<v-btn color="error darken-2" depressed @click="doLogout">
<v-btn text depressed @click="doLogout">
<v-icon left>mdi-logout</v-icon> Sair
</v-btn>
</v-card-actions>

View File

@ -3,7 +3,8 @@
<transition-group
name="scale-transition"
tag="div"
class="d-flex flex-wrap"
class="d-flex flex-wrap mx-n2"
mode="out-in"
>
<v-col
v-for="userPresence in userPresences"
@ -108,7 +109,7 @@ export default {
<style scoped lang="scss">
.border-highlight {
box-shadow: 1.5px 1.5px 12px rgba(0, 0, 0, 0.05);
border-left: 3px solid grey;
border-left: 4px solid grey;
}
.online {
border-left-color: #4caf50;

View File

@ -28,11 +28,9 @@
</v-app-bar>
<v-main>
<v-container>
<v-slide-x-transition hide-on-leave>
<router-view />
</v-slide-x-transition>
</v-container>
<v-slide-x-transition hide-on-leave>
<router-view />
</v-slide-x-transition>
</v-main>
</div>
</template>

View File

@ -1,24 +1,24 @@
//.theme--light .gradient-bg,
//.theme--light .primary {
// background-color: #3fa14c;
// background-image: linear-gradient(
// 45deg,
// #3fa14cff 0%,
// #3ecf51 60%,
// #39e650 100%
// );
//}
//
//.theme--dark .gradient-bg,
//.theme--dark .primary {
// background-color: #174a63;
// background-image: linear-gradient(
// 45deg,
// #479bb3 0%,
// #457099 60%,
// #4762b3 100%
// );
//}
// .theme--light .gradient-bg,
// .theme--light .primary {
// background-color: #3fa14c;
// background-image: linear-gradient(
// 45deg,
// #3fa14cff 0%,
// #3ecf51 60%,
// #39e650 100%
// );
// }
// .theme--dark .gradient-bg,
// .theme--dark .primary {
// background-color: #174a63;
// background-image: linear-gradient(
// 45deg,
// #479bb3 0%,
// #457099 60%,
// #4762b3 100%
// );
// }
// .theme--light.v-application {
// background: #f5f5f5;
@ -27,3 +27,7 @@
// .theme--dark.v-application {
// background: #313233;
// }
.bottom-border {
border-bottom: 1px solid rgba(0, 0, 0, 0.12) !important;
}

View File

@ -1,75 +1,87 @@
<template>
<v-container fluid class="mb-12">
<v-text-field
v-model="search"
:loading="$apollo.queries.userPresence.loading"
class="mt-6 search"
label="Pesquisar"
hint="Ex.: jose, pp, sala 102, 10.7."
prepend-icon="mdi-account-search"
clearable
filled
style="max-width: 400px"
/>
<div>
<v-toolbar height="100" class="align-content-center bottom-border" flat>
<v-text-field
v-model="search"
:loading="$apollo.queries.userPresence.loading"
class="mt-6 search"
label="Pesquisar"
hint="Ex.: jose, pp, sala 102, 10.7."
prepend-icon="mdi-account-search"
clearable
filled
style="max-width: 512px"
>
<v-progress-circular
v-if="$apollo.queries.userPresence.loading"
slot="prepend"
color="grey"
class="pa-0 ma-0"
:width="2"
:size="24"
indeterminate
/>
</v-text-field>
</v-toolbar>
<v-container fluid class="mb-12">
<div v-if="stats" class="text-center my-4">
<v-chip color="green" class="mr-2" dark>
{{ stats.onlineUsers }}
</v-chip>
usuários online.
</div>
<UserPresenceStatusList
:user-presences="pagedUserPresences"
:loading="$apollo.queries.userPresence.loading && !userPresence"
/>
<div v-if="stats" class="text-center mb-6 mt-0">
<v-chip color="green" class="mr-2" dark>
{{ stats.onlineUsers }}
</v-chip>
usuários online.
</div>
<v-btn
:elevation="0"
color="accent"
:disabled="
!userPresence ||
resultSize >= userPresence.length ||
$apollo.queries.userPresence.loading
"
text
large
block
@click="resultSize += 12"
>
Mostrar mais
</v-btn>
<UserPresenceStatusList
:user-presences="pagedUserPresences"
:loading="$apollo.queries.userPresence.loading && !userPresence"
/>
<v-row class="mt-6">
<v-col cols="12" md="6">
<v-alert
class="fill-height"
color="info darken-2"
icon="mdi-alert"
outlined
dark
>
A lista de pessoas mostrada aqui é obtida através do uso da rede
<strong>Wi-Fi</strong> Este método não é preciso, podendo não
indicar alguém presente ou indicar alguém que deixou um dispositivo
no campus. Use esta lista com a <strong>devida cautela</strong>.
</v-alert>
</v-col>
<v-btn
:elevation="0"
color="accent"
:disabled="
!userPresence ||
resultSize >= userPresence.length ||
$apollo.queries.userPresence.loading
"
text
large
block
@click="resultSize += 12"
>
Mostrar mais
</v-btn>
<v-row class="mt-6">
<v-col cols="12" md="6">
<v-alert
class="fill-height"
color="info darken-2"
icon="mdi-alert"
outlined
dark
>
A lista de pessoas mostrada aqui é obtida através do uso da rede
<strong>Wi-Fi</strong> Este método não é preciso, podendo não indicar
alguém presente ou indicar alguém que deixou um dispositivo no campus.
Use esta lista com a <strong>devida cautela</strong>.
</v-alert>
</v-col>
<v-col cols="12" md="6">
<v-alert
class="fill-height"
color="info darken-2"
icon="mdi-update"
outlined
dark
>
A lista é atualizada automaticamente. Não é necessário
<strong>atualizar</strong> a página.
</v-alert>
</v-col>
</v-row>
</v-container>
<v-col cols="12" md="6">
<v-alert
class="fill-height"
color="info darken-2"
icon="mdi-update"
outlined
dark
>
A lista é atualizada automaticamente. Não é necessário
<strong>atualizar</strong> a página.
</v-alert>
</v-col>
</v-row>
</v-container>
</div>
</template>
<script>

View File

@ -1,22 +1,24 @@
<template>
<v-container fluid>
<v-toolbar flat class="mb-2 pt-3">
<div>
<v-toolbar height="100" class="align-content-center bottom-border" flat>
<v-text-field
v-model="search"
prepend-inner-icon="mdi-cellphone"
rounded
outlined
dense
label="Buscar"
hint="MAC, IP, Usuário"
:loading="$apollo.queries.wifiDevices.loading"
class="mt-6 search"
label="Pesquisar"
hint="MAC/IP/Usuário"
prepend-icon="mdi-cellphone"
clearable
filled
style="max-width: 512px"
/>
<v-tooltip bottom>
<span>Atualizar</span>
<template #activator="{ on }">
<v-btn
class="ml-2 mb-6"
class="ml-2"
:loading="$apollo.queries.wifiDevices.loading"
color="primary"
icon
large
v-on="on"
@ -27,172 +29,174 @@
</template>
</v-tooltip>
</v-toolbar>
<div v-if="stats" class="text-center mb-6 mt-0">
<v-chip color="green" class="mr-1" dark>
{{
wifiDevices && wifiDevices.filter(device => device.isOnline).length
}}
</v-chip>
online de
<v-chip class="mx-1">
{{ stats.totalWifiDevices }}
</v-chip>
no total.
</div>
<v-data-iterator
:items="computedWifiDevices"
:items-per-page.sync="itemsPerPage"
:page="page"
:loading="$apollo.queries.wifiDevices.loading"
:search="search"
>
<template #default="{ items }">
<v-expansion-panels multiple>
<v-expansion-panel v-for="device in items" :key="device.mac">
<v-expansion-panel-header>
<v-row dense align-content="center" no-gutters>
<v-col class="shrink" align-self="center">
<v-badge
:color="device.isOnline ? 'green' : 'grey'"
left
offset-y="16"
dot
<v-container fluid>
<div v-if="stats" class="text-center my-4">
<v-chip color="green" class="mr-1" dark>
{{
wifiDevices && wifiDevices.filter(device => device.isOnline).length
}}
</v-chip>
online de
<v-chip class="mx-1">
{{ stats.totalWifiDevices }}
</v-chip>
no total.
</div>
<v-data-iterator
:items="computedWifiDevices"
:items-per-page.sync="itemsPerPage"
:page="page"
:loading="$apollo.queries.wifiDevices.loading"
:search="search"
>
<template #default="{ items }">
<v-expansion-panels multiple>
<v-expansion-panel v-for="device in items" :key="device.mac">
<v-expansion-panel-header>
<v-row dense align-content="center" no-gutters>
<v-col class="shrink" align-self="center">
<v-badge
:color="device.isOnline ? 'green' : 'grey'"
left
offset-y="16"
dot
>
<ap-icon class="mr-4" :controller="device.controller" />
</v-badge>
</v-col>
<v-col align-self="center" cols="3">
{{ device.hostname }}
</v-col>
<v-col
v-if="$vuetify.breakpoint.mdAndUp"
cols="2"
class="grow"
>{{ device.ip }}</v-col
>
<ap-icon class="mr-4" :controller="device.controller" />
</v-badge>
</v-col>
<v-col align-self="center" cols="3">
{{ device.hostname }}
</v-col>
<v-col
v-if="$vuetify.breakpoint.mdAndUp"
cols="2"
class="grow"
>{{ device.ip }}</v-col
>
<v-col v-if="$vuetify.breakpoint.mdAndUp" class="grow">
<div>
<avatar left size="24px" :src="device.thumbnailPhoto" />{{
device.displayName
}}
</div>
</v-col>
</v-row>
</v-expansion-panel-header>
<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-col v-if="$vuetify.breakpoint.mdAndUp" class="grow">
<div>
<avatar left size="24px" :src="device.thumbnailPhoto" />{{
device.displayName
}}
</div>
</v-col>
</v-row>
</v-expansion-panel-header>
<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-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-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-item>
<v-list-item-action>
<Avatar :src="device.thumbnailPhoto" size="24px" />
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.displayName }}
</v-list-item-title>
<v-list-item-subtitle>
{{ device.sAMAccountName }}
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
</v-list>
</v-expansion-panel-content>
</v-expansion-panel>
</v-expansion-panels>
</template>
</v-data-iterator>
</v-container>
<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-item>
<v-list-item-action>
<Avatar :src="device.thumbnailPhoto" size="24px" />
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>
{{ device.displayName }}
</v-list-item-title>
<v-list-item-subtitle>
{{ device.sAMAccountName }}
</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
</v-list>
</v-expansion-panel-content>
</v-expansion-panel>
</v-expansion-panels>
</template>
</v-data-iterator>
</v-container>
</div>
</template>
<script>

View File

@ -1,22 +1,24 @@
<template>
<v-container fluid>
<v-toolbar flat class="mb-2 pt-3">
<div>
<v-toolbar height="100" class="align-content-center bottom-border" flat>
<v-text-field
v-model="search"
prepend-inner-icon="mdi-account"
rounded
outlined
label="Buscar"
hint="Nome, conta"
dense
:loading="$apollo.queries.wifiUsers.loading"
class="mt-6 search"
label="Pesquisar"
hint="Nome/conta"
prepend-icon="mdi-account-search"
clearable
filled
style="max-width: 512px"
/>
<v-tooltip bottom>
<span>Atualizar</span>
<template #activator="{ on }">
<v-btn
class="ml-2 mb-6"
class="ml-2"
:loading="$apollo.queries.wifiUsers.loading"
color="primary"
icon
large
v-on="on"
@ -27,173 +29,175 @@
</template>
</v-tooltip>
</v-toolbar>
<div v-if="stats" class="text-center mb-6 mt-0">
<v-chip color="green" class="mr-2" dark>
{{ stats.onlineUsers }}
</v-chip>
usuários online de
<v-chip class="ml-2">
{{ stats.totalUsers }}
</v-chip>
</div>
<v-data-iterator
:items="sortedWifiUsers"
:loading="$apollo.queries.wifiUsers.loading"
:search="search"
>
<template #default="{ items }">
<v-expansion-panels>
<v-expansion-panel v-for="user in items" :key="user.sAMAccountName">
<v-expansion-panel-header>
<div style="width: 50px">
<avatar size="24" left :src="user.thumbnailPhoto" />
{{ user.displayName }} ({{ user.sAMAccountName }})
</div>
<template #actions>
<v-badge
class="mx-4"
color="grey darken-1"
bottom
offset-y="10"
:content="
user.wifiDevices
.filter(wifiDevice => !wifiDevice.isOnline)
.length.toString()
"
>
<v-container fluid>
<div v-if="stats" class="text-center my-4">
<v-chip color="green" class="mr-2" dark>
{{ stats.onlineUsers }}
</v-chip>
usuários online de
<v-chip class="ml-2">
{{ stats.totalUsers }}
</v-chip>
</div>
<v-data-iterator
:items="sortedWifiUsers"
:loading="$apollo.queries.wifiUsers.loading"
:search="search"
>
<template #default="{ items }">
<v-expansion-panels>
<v-expansion-panel v-for="user in items" :key="user.sAMAccountName">
<v-expansion-panel-header>
<div style="width: 50px">
<avatar size="24" left :src="user.thumbnailPhoto" />
{{ user.displayName }} ({{ user.sAMAccountName }})
</div>
<template #actions>
<v-badge
color="green"
top
class="mx-4"
color="grey darken-1"
bottom
offset-y="10"
:content="
user.wifiDevices
.filter(wifiDevice => wifiDevice.isOnline)
.filter(wifiDevice => !wifiDevice.isOnline)
.length.toString()
"
>
<v-icon>mdi-cellphone-wireless</v-icon>
<v-badge
color="green"
top
offset-y="10"
:content="
user.wifiDevices
.filter(wifiDevice => wifiDevice.isOnline)
.length.toString()
"
>
<v-icon>mdi-cellphone-wireless</v-icon>
</v-badge>
</v-badge>
</v-badge>
</template>
</v-expansion-panel-header>
<v-expansion-panel-content>
<v-expansion-panels accordion>
<v-expansion-panel
v-for="device in user.wifiDevices"
:key="device.mac"
>
<v-expansion-panel-header>
<div>
<v-icon left :color="device.isOnline ? 'green' : ''">
mdi-cellphone-wireless
</v-icon>
{{ device.hostname || device.mac }} {{ device.oui }}
</div>
</v-expansion-panel-header>
<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
</template>
</v-expansion-panel-header>
<v-expansion-panel-content>
<v-expansion-panels accordion>
<v-expansion-panel
v-for="device in user.wifiDevices"
:key="device.mac"
>
</v-expansion-panel>
</v-expansion-panels>
</v-expansion-panel-content>
</v-expansion-panel>
</v-expansion-panels>
</template>
</v-data-iterator>
</v-container>
<v-expansion-panel-header>
<div>
<v-icon left :color="device.isOnline ? 'green' : ''">
mdi-cellphone-wireless
</v-icon>
{{ device.hostname || device.mac }} {{ device.oui }}
</div>
</v-expansion-panel-header>
<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>
</v-expansion-panel>
</v-expansion-panels>
</template>
</v-data-iterator>
</v-container>
</div>
</template>
<script>
import gql from 'graphql-tag'