Include filter

This commit is contained in:
Douglas Barone 2022-06-08 19:09:11 +00:00
parent d4b338c6dc
commit 37a3d801d0
3 changed files with 25 additions and 6 deletions

View File

@ -1,10 +1,12 @@
import prisma from '../../prisma' import prisma from '../../prisma'
export async function wifiDevices(parent, { take = 50, skip = 0, search, sortBy, sortDesc }) { export async function wifiDevices(parent, { take = 50, skip = 0, search, sortBy, sortDesc, onlineOnly }) {
const mode = 'insensitive' const mode = 'insensitive'
if (!search) search = '' if (!search) search = ''
if (!onlineOnly) onlineOnly = undefined
const where = { const where = {
OR: [ OR: [
{ hostname: { contains: search, mode } }, { hostname: { contains: search, mode } },
@ -16,7 +18,8 @@ export async function wifiDevices(parent, { take = 50, skip = 0, search, sortBy,
{ controller: { contains: search, mode } }, { controller: { contains: search, mode } },
{ user: { displayName: { contains: search, mode } } }, { user: { displayName: { contains: search, mode } } },
{ user: { sAMAccountName: { contains: search, mode } } } { user: { sAMAccountName: { contains: search, mode } } }
] ],
status: onlineOnly && 'ONLINE'
} }
return { return {

View File

@ -37,7 +37,8 @@ const typeDefs = gql`
take: Int take: Int
skip: Int skip: Int
sortBy: WifiDevicesResultSortBy = "signalStrength" sortBy: WifiDevicesResultSortBy = "signalStrength"
sortDesc: Boolean = false sortDesc: Boolean = false,
onlineOnly: Boolean = false
): WifiDevicesResult! @auth(roles: ["superAdmin"]) ): WifiDevicesResult! @auth(roles: ["superAdmin"])
"Users that uses the Wi-Fi" "Users that uses the Wi-Fi"

View File

@ -3,17 +3,25 @@
<v-toolbar class="mb-2" flat outlined> <v-toolbar class="mb-2" flat outlined>
<v-text-field <v-text-field
v-model="search" v-model="search"
style="max-width: 300px"
label="Pesquisar" label="Pesquisar"
prepend-icon="mdi-devices" prepend-icon="mdi-devices"
clearable clearable
hide-details hide-details
:loading="$apollo.queries.wifiDevices.loading && !!search" :loading="$apollo.queries.wifiDevices.loading && !!search"
/> />
<v-spacer /> <v-spacer />
<v-switch
v-model="onlineOnly"
class="mx-2"
label="Somente online"
hide-details
/>
<v-select <v-select
v-model="itemsPerPage" v-model="itemsPerPage"
style="max-width: 130px"
class="shrink" class="shrink"
:items="[10, 20, 30, 50, 100]" :items="[10, 20, 30, 50, 100]"
label="Items por página" label="Items por página"
@ -87,7 +95,8 @@ export default {
page: 1, page: 1,
itemsPerPage: 10, itemsPerPage: 10,
sortBy: 'signalStrength', sortBy: 'signalStrength',
sortDesc: false sortDesc: false,
onlineOnly: false
}), }),
computed: { computed: {
computedWifiDevices() { computedWifiDevices() {
@ -108,6 +117,9 @@ export default {
} }
}, },
watch: { watch: {
onlineOnly() {
this.page = 1
},
search(newValue) { search(newValue) {
this.page = 1 this.page = 1
@ -130,6 +142,7 @@ export default {
$take: Int $take: Int
$sortBy: WifiDevicesResultSortBy $sortBy: WifiDevicesResultSortBy
$sortDesc: Boolean $sortDesc: Boolean
$onlineOnly: Boolean
) { ) {
wifiDevices( wifiDevices(
search: $search search: $search
@ -137,6 +150,7 @@ export default {
take: $take take: $take
sortBy: $sortBy sortBy: $sortBy
sortDesc: $sortDesc sortDesc: $sortDesc
onlineOnly: $onlineOnly
) { ) {
total total
data { data {
@ -176,7 +190,8 @@ export default {
skip: this.page * this.itemsPerPage - this.itemsPerPage, skip: this.page * this.itemsPerPage - this.itemsPerPage,
take: this.itemsPerPage, take: this.itemsPerPage,
sortBy: this.sortBy, sortBy: this.sortBy,
sortDesc: this.sortDesc sortDesc: this.sortDesc,
onlineOnly: this.onlineOnly
} }
} }
}, },