Merge pull request #62 from gurucomputing/52-clean-up-api-functions

extracted sort functions from get functions
This commit is contained in:
routerino 2022-09-11 16:20:39 +10:00 committed by GitHub
commit 3a1311f2cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 82 additions and 59 deletions

View file

@ -1,14 +1,13 @@
<script context="module" lang="ts">
import { APIKey, Device, PreAuthKey, Route, User } from '$lib/common/classes';
import { deviceStore, userStore, apiTestStore } from '$lib/common/stores.js';
import { sortDevices, sortUsers } from '$lib/common/sorting.svelte';
import { filterDevices, filterUsers } from './searching.svelte';
export async function getUsers(): Promise<any> {
export async function getUsers() {
// variables in local storage
let headscaleURL = localStorage.getItem('headscaleURL') || '';
let headscaleAPIKey = localStorage.getItem('headscaleAPIKey') || '';
let sortKey = localStorage.getItem('headscaleUserSort') || '';
let sortDirection = localStorage.getItem('headscaleUserSortDirection') || '';
// endpoint url for getting users
let endpointURL = '/api/v1/namespace';
@ -41,33 +40,9 @@
});
await headscaleUsersResponse.json().then((data) => {
let collator = new Intl.Collator([], { numeric: true });
if (sortDirection == 'ascending') {
switch (sortKey) {
case 'id':
headscaleUsers = data.namespaces.sort((a: User, b: User) => collator.compare(a.id, b.id));
break;
case 'createdAt':
headscaleUsers = data.namespaces.sort((a: User, b: User) => -collator.compare(a.createdAt, b.createdAt));
break;
case 'name':
headscaleUsers = data.namespaces.sort((a: User, b: User) => collator.compare(a.name, b.name));
break;
}
}
if (sortDirection == 'descending') {
switch (sortKey) {
case 'id':
headscaleUsers = data.namespaces.sort((a: User, b: User) => -collator.compare(a.id, b.id));
break;
case 'createdAt':
headscaleUsers = data.namespaces.sort((a: User, b: User) => collator.compare(a.createdAt, b.createdAt));
break;
case 'name':
headscaleUsers = data.namespaces.sort((a: User, b: User) => -collator.compare(a.name, b.name));
break;
}
}
headscaleUsers = data.namespaces
// sort the users
headscaleUsers = sortUsers(headscaleUsers);
});
// Set the store
apiTestStore.set('succeeded');
@ -273,8 +248,6 @@
// variables in local storage
let headscaleURL = localStorage.getItem('headscaleURL') || '';
let headscaleAPIKey = localStorage.getItem('headscaleAPIKey') || '';
let sortKey = localStorage.getItem('headscaleDeviceSort') || '';
let sortDirection = localStorage.getItem('headscaleDeviceSortDirection') || '';
// endpoint url for getting users
let endpointURL = '/api/v1/machine';
@ -308,33 +281,8 @@
});
await headscaleDeviceResponse.json().then((data) => {
let collator = new Intl.Collator([], { numeric: true });
if (sortDirection == 'ascending') {
switch (sortKey) {
case 'id':
headscaleDevices = data.machines.sort((a: Device, b: Device) => collator.compare(a.id, b.id));
break;
case 'lastSeen':
headscaleDevices = data.machines.sort((a: Device, b: Device) => -collator.compare(a.lastSeen, b.lastSeen));
break;
case 'givenName':
headscaleDevices = data.machines.sort((a: Device, b: Device) => collator.compare(a.givenName, b.givenName));
break;
}
}
if (sortDirection == 'descending') {
switch (sortKey) {
case 'id':
headscaleDevices = data.machines.sort((a: Device, b: Device) => -collator.compare(a.id, b.id));
break;
case 'lastSeen':
headscaleDevices = data.machines.sort((a: Device, b: Device) => collator.compare(a.lastSeen, b.lastSeen));
break;
case 'givenName':
headscaleDevices = data.machines.sort((a: Device, b: Device) => -collator.compare(a.givenName, b.givenName));
break;
}
}
headscaleDevices = data.machines
headscaleDevices = sortDevices(headscaleDevices)
});
// set the stores
apiTestStore.set('succeeded');

View file

@ -0,0 +1,75 @@
<script context="module" lang="ts">
import type { Device, User } from './classes';
export function sortUsers(users: User[]): User[] {
let sortKey = localStorage.getItem('headscaleUserSort') || '';
let sortDirection = localStorage.getItem('headscaleUserSortDirection') || '';
let sortedUsers = users;
let collator = new Intl.Collator([], { numeric: true });
if (sortDirection == 'ascending') {
switch (sortKey) {
case 'id':
sortedUsers = users.sort((a: User, b: User) => collator.compare(a.id, b.id));
break;
case 'createdAt':
sortedUsers = users.sort((a: User, b: User) => -collator.compare(a.createdAt, b.createdAt));
break;
case 'name':
sortedUsers = users.sort((a: User, b: User) => collator.compare(a.name, b.name));
break;
}
}
if (sortDirection == 'descending') {
switch (sortKey) {
case 'id':
sortedUsers = users.sort((a: User, b: User) => -collator.compare(a.id, b.id));
break;
case 'createdAt':
sortedUsers = users.sort((a: User, b: User) => collator.compare(a.createdAt, b.createdAt));
break;
case 'name':
sortedUsers = users.sort((a: User, b: User) => -collator.compare(a.name, b.name));
break;
}
}
return sortedUsers;
}
export function sortDevices(devices: Device[]): Device[] {
let sortKey = localStorage.getItem('headscaleDeviceSort') || '';
let sortDirection = localStorage.getItem('headscaleDeviceSortDirection') || '';
let sortedDevices = devices;
let collator = new Intl.Collator([], { numeric: true });
if (sortDirection == 'ascending') {
switch (sortKey) {
case 'id':
sortedDevices = devices.sort((a: Device, b: Device) => collator.compare(a.id, b.id));
break;
case 'lastSeen':
sortedDevices = devices.sort((a: Device, b: Device) => -collator.compare(a.lastSeen, b.lastSeen));
break;
case 'givenName':
sortedDevices = devices.sort((a: Device, b: Device) => collator.compare(a.givenName, b.givenName));
break;
}
}
if (sortDirection == 'descending') {
switch (sortKey) {
case 'id':
sortedDevices = devices.sort((a: Device, b: Device) => -collator.compare(a.id, b.id));
break;
case 'lastSeen':
sortedDevices = devices.sort((a: Device, b: Device) => collator.compare(a.lastSeen, b.lastSeen));
break;
case 'givenName':
sortedDevices = devices.sort((a: Device, b: Device) => -collator.compare(a.givenName, b.givenName));
break;
}
}
return sortedDevices;
}
</script>