mirror of
https://github.com/gurucomputing/headscale-ui.git
synced 2026-07-25 00:50:08 +00:00
Merge pull request #62 from gurucomputing/52-clean-up-api-functions
extracted sort functions from get functions
This commit is contained in:
commit
3a1311f2cd
2 changed files with 82 additions and 59 deletions
|
|
@ -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');
|
||||
|
|
|
|||
75
src/lib/common/sorting.svelte
Normal file
75
src/lib/common/sorting.svelte
Normal 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>
|
||||
Loading…
Add table
Add a link
Reference in a new issue