Better filtering
This commit is contained in:
parent
cf76272456
commit
61825de579
4
server/package-lock.json
generated
4
server/package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "ifms-pti-svr",
|
||||
"version": "2.12.4",
|
||||
"version": "2.12.5",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "ifms-pti-svr",
|
||||
"version": "2.12.4",
|
||||
"version": "2.12.5",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@prisma/client": "^3.11.0",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ifms-pti-svr",
|
||||
"version": "2.12.4",
|
||||
"version": "2.12.5",
|
||||
"description": "Servidor do Portal de TI do IFMS",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import prisma from '../../prisma'
|
||||
|
||||
export async function wifiDevices(_, { take = 100, skip = 0, search }) {
|
||||
export async function wifiDevices(parent, { take = 100, skip = 0, search }) {
|
||||
const mode = 'insensitive'
|
||||
|
||||
if (search === null)
|
||||
|
|
|
@ -1,15 +1,44 @@
|
|||
import prisma from '../../prisma'
|
||||
|
||||
// TODO: Add filtering
|
||||
export async function wifiUsers() {
|
||||
const wifiUsers = await prisma.user.findMany({
|
||||
where: { wifiDevices: { some: { id: { not: undefined } } } },
|
||||
include: { wifiDevices: true }
|
||||
})
|
||||
export async function wifiUsers(parent, { take = 100, skip = 0, search }) {
|
||||
const mode = 'insensitive'
|
||||
|
||||
return wifiUsers.sort(
|
||||
(a, b) =>
|
||||
b.wifiDevices.filter(device => device.status == 'ONLINE').length -
|
||||
a.wifiDevices.filter(device => device.status == 'ONLINE').length
|
||||
)
|
||||
if (search === null)
|
||||
search = undefined
|
||||
|
||||
return prisma.user.findMany({
|
||||
where: {
|
||||
AND: [
|
||||
{ wifiDevices: { some: { id: { not: undefined } } } },
|
||||
{
|
||||
OR: [
|
||||
{ wifiDevices: { some: { hostname: { contains: search, mode } } } },
|
||||
{
|
||||
wifiDevices: {
|
||||
some: {
|
||||
accessPoint: {
|
||||
OR: [
|
||||
{ name: { contains: search, mode } },
|
||||
{ local: { contains: search, mode } },
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{ wifiDevices: { some: { mac: { contains: search, mode } } } },
|
||||
{ wifiDevices: { some: { ip: { contains: search, mode } } } },
|
||||
{ displayName: { contains: search, mode } }, ,
|
||||
{ sAMAccountName: { contains: search, mode } },
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
include: { wifiDevices: true },
|
||||
orderBy: [
|
||||
{ wifiDevices: { _count: 'desc' } },
|
||||
{ displayName: 'asc' }],
|
||||
take,
|
||||
skip
|
||||
})
|
||||
}
|
||||
|
|
|
@ -41,7 +41,10 @@ const typeDefs = gql`
|
|||
): [WifiDevice]! @auth(roles: ["superAdmin"])
|
||||
|
||||
"Users that uses the Wi-Fi"
|
||||
wifiUsers: [User]! @auth(roles: ["superAdmin"])
|
||||
wifiUsers(
|
||||
search: String = ""
|
||||
take: Int
|
||||
skip: Int): [User]! @auth(roles: ["superAdmin"])
|
||||
|
||||
"Application Logs"
|
||||
logs(
|
||||
|
|
4
web/package-lock.json
generated
4
web/package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "ifms-pti",
|
||||
"version": "2.12.4",
|
||||
"version": "2.12.5",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "ifms-pti",
|
||||
"version": "2.12.4",
|
||||
"version": "2.12.5",
|
||||
"dependencies": {
|
||||
"@mdi/font": "^6.6.96",
|
||||
"apollo-link-ws": "^1.0.20",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ifms-pti",
|
||||
"version": "2.12.4",
|
||||
"version": "2.12.5",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
|
|
|
@ -59,18 +59,18 @@ export default {
|
|||
route: { name: 'wifi-devices' },
|
||||
role: 'superAdmin'
|
||||
},
|
||||
{
|
||||
title: 'Access Points',
|
||||
icon: 'mdi-access-point',
|
||||
route: { name: 'access-points' },
|
||||
role: 'superAdmin'
|
||||
},
|
||||
{
|
||||
title: 'Usuários Wi-Fi',
|
||||
icon: 'mdi-account-voice',
|
||||
route: { name: 'wifi-users' },
|
||||
role: 'superAdmin'
|
||||
},
|
||||
{
|
||||
title: 'Access Points',
|
||||
icon: 'mdi-access-point',
|
||||
route: { name: 'access-points' },
|
||||
role: 'superAdmin'
|
||||
},
|
||||
{
|
||||
title: 'Inspecionar Usuário',
|
||||
icon: 'mdi-account-search',
|
||||
|
|
|
@ -1,16 +1,12 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-toolbar height="115" class="align-content-center bottom-border" flat>
|
||||
<v-container fluid>
|
||||
<v-toolbar class="mb-2" flat outlined>
|
||||
<v-text-field
|
||||
v-model="search"
|
||||
class="mt-6 search"
|
||||
label="Pesquisar"
|
||||
hint="MAC/IP/Usuário"
|
||||
prepend-icon="mdi-magnify"
|
||||
prepend-inner-icon="mdi-account-search"
|
||||
clearable
|
||||
outlined
|
||||
rounded
|
||||
style="max-width: 512px"
|
||||
hide-details
|
||||
/>
|
||||
|
||||
<v-tooltip bottom>
|
||||
|
@ -29,7 +25,6 @@
|
|||
</template>
|
||||
</v-tooltip>
|
||||
</v-toolbar>
|
||||
<v-container fluid>
|
||||
<div v-if="wifiDevices && stats" class="text-center my-4">
|
||||
<v-chip color="primary" class="mr-1" dark>
|
||||
{{ stats.onlineWifiDevices }}
|
||||
|
@ -192,8 +187,10 @@
|
|||
</v-expansion-panels>
|
||||
</template>
|
||||
</v-data-iterator>
|
||||
<v-alert type="info" outlined dismissible>
|
||||
São exibidos apenas os 100 primeiros resultados da pesquisa
|
||||
</v-alert>
|
||||
</v-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
|
|
@ -1,16 +1,12 @@
|
|||
<template>
|
||||
<div>
|
||||
<v-toolbar height="115" class="align-content-center bottom-border" flat>
|
||||
<v-container fluid>
|
||||
<v-toolbar class="mb-2" flat outlined>
|
||||
<v-text-field
|
||||
v-model="search"
|
||||
class="mt-6 search"
|
||||
label="Pesquisar"
|
||||
hint="Nome/conta"
|
||||
prepend-icon="mdi-account-search"
|
||||
prepend-inner-icon="mdi-account-search"
|
||||
clearable
|
||||
outlined
|
||||
rounded
|
||||
style="max-width: 512px"
|
||||
hide-details
|
||||
/>
|
||||
|
||||
<v-tooltip bottom>
|
||||
|
@ -29,7 +25,6 @@
|
|||
</template>
|
||||
</v-tooltip>
|
||||
</v-toolbar>
|
||||
<v-container fluid>
|
||||
<div v-if="stats" class="text-center my-4">
|
||||
<v-chip color="primary" class="mr-2" dark>
|
||||
{{ stats.onlineUsers }}
|
||||
|
@ -42,7 +37,6 @@
|
|||
<v-data-iterator
|
||||
:items="sortedWifiUsers"
|
||||
:loading="$apollo.queries.wifiUsers.loading"
|
||||
:search="search"
|
||||
>
|
||||
<template #default="{ items }">
|
||||
<v-expansion-panels>
|
||||
|
@ -199,8 +193,10 @@
|
|||
</v-expansion-panels>
|
||||
</template>
|
||||
</v-data-iterator>
|
||||
<v-alert type="info" outlined dismissible>
|
||||
São exibidos apenas os 100 primeiros resultados da pesquisa
|
||||
</v-alert>
|
||||
</v-container>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import gql from 'graphql-tag'
|
||||
|
@ -225,8 +221,8 @@ export default {
|
|||
wifiUsers: {
|
||||
fetchPolicy: 'cache-and-network',
|
||||
query: gql`
|
||||
query {
|
||||
wifiUsers {
|
||||
query wifiUsers($search: String) {
|
||||
wifiUsers(search: $search) {
|
||||
displayName
|
||||
sAMAccountName
|
||||
thumbnailPhoto
|
||||
|
@ -244,7 +240,12 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
`,
|
||||
variables() {
|
||||
return {
|
||||
search: this.search
|
||||
}
|
||||
}
|
||||
},
|
||||
stats: {
|
||||
query: gql`
|
||||
|
|
Loading…
Reference in New Issue
Block a user