Added sorting

This commit is contained in:
Douglas Barone 2022-12-21 07:48:28 -04:00
parent d8620c570b
commit 5ed3d074b0
5 changed files with 66 additions and 10 deletions

View File

@ -1,12 +1,12 @@
{
"name": "ifms-pti-svr",
"version": "3.4.8",
"version": "3.4.9",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ifms-pti-svr",
"version": "3.4.8",
"version": "3.4.9",
"license": "ISC",
"dependencies": {
"@prisma/client": "^4.7.1",

View File

@ -1,6 +1,6 @@
{
"name": "ifms-pti-svr",
"version": "3.4.8",
"version": "3.4.9",
"description": "Servidor do Portal de TI do IFMS",
"main": "src/index.js",
"prisma": {

4
web/package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "ifms-pti",
"version": "3.4.8",
"version": "3.4.9",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "ifms-pti",
"version": "3.4.8",
"version": "3.4.9",
"dependencies": {
"@mdi/font": "^6.9.96",
"apollo-link-ws": "^1.0.20",

View File

@ -1,6 +1,6 @@
{
"name": "ifms-pti",
"version": "3.4.8",
"version": "3.4.9",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",

View File

@ -3,13 +3,23 @@
<v-toolbar dense flat>
<v-spacer />
<v-select
v-model="minutesIn"
class="mr-2"
v-model="orderBy"
style="max-width: 250px"
:items="orderByOptions"
hide-details
outlined
dense
prepend-icon="mdi-timer-outline"
prepend-inner-icon="mdi-sort"
/>
<v-select
v-model="minutesIn"
style="max-width: 250px"
:items="minutesInItems"
hide-details
outlined
dense
prepend-inner-icon="mdi-timer-outline"
/>
</v-toolbar>
<v-expand-transition>
@ -22,7 +32,7 @@
<v-container fluid>
<v-row dense>
<v-col
v-for="subnet in subnets"
v-for="subnet in orderedSubnets"
:key="subnet.shortname"
sm="12"
md="6"
@ -127,9 +137,55 @@ export default {
text: 'Últimos 30 dias',
value: 43200
}
]
],
orderByOptions: [
'Alfabética',
'Clientes atualmente',
'Pico de clientes',
'Menor quantidade de clientes',
'Média de clientes'
],
orderBy: 'Alfabética'
}),
computed: {
orderedSubnets() {
const subnets = this.subnets
if (!subnets) return []
const orderBy = this.orderBy
if (orderBy === 'Alfabética') {
return subnets.sort((a, b) => {
return a.name.localeCompare(b.name)
})
}
if (orderBy === 'Pico de clientes') {
return subnets.sort((a, b) => {
return this.subnetPeakClients(b) - this.subnetPeakClients(a)
})
}
if (orderBy === 'Menor quantidade de clientes') {
return subnets.sort((a, b) => {
return this.subnetLowestClients(a) - this.subnetLowestClients(b)
})
}
if (orderBy === 'Média de clientes') {
return subnets.sort((a, b) => {
return this.subnetAvgClients(b) - this.subnetAvgClients(a)
})
}
if (orderBy === 'Clientes atualmente') {
return subnets.sort((a, b) => {
return b.stats[0].clients - a.stats[0].clients
})
}
return subnets
},
maxClients() {
const maxClients = this.subnets?.reduce((max, subnet) => {
return Math.max(max, this.subnetPeakClients(subnet))