diff --git a/src/lib/common/Stores.svelte b/src/lib/common/Stores.svelte
index d6ab38e..ea120e5 100644
--- a/src/lib/common/Stores.svelte
+++ b/src/lib/common/Stores.svelte
@@ -1,6 +1,6 @@
diff --git a/src/lib/common/apiFunctions.svelte b/src/lib/common/apiFunctions.svelte
index 9ff0d56..c0e83fe 100644
--- a/src/lib/common/apiFunctions.svelte
+++ b/src/lib/common/apiFunctions.svelte
@@ -163,7 +163,7 @@
});
}
- export async function getDevices(): Promise {
+ export async function getDevices(sortKey: string, sortDirection: string): Promise {
// variables in local storage
let headscaleURL = localStorage.getItem('headscaleURL') || '';
let headscaleAPIKey = localStorage.getItem('headscaleAPIKey') || '';
@@ -172,7 +172,7 @@
let endpointURL = '/api/v1/machine';
//returning variables
- let headscaleDevices = new Device();
+ let headscaleDevices = [new Device()];
let headscaleDeviceResponse: Response = new Response();
await fetch(headscaleURL + endpointURL, {
@@ -197,7 +197,11 @@
});
await headscaleDeviceResponse.json().then((data) => {
- headscaleDevices = data.machines;
+ if(sortDirection == 'ascending') {
+ headscaleDevices = data.machines.sort((a: Device, b: Device) => (a[sortKey as keyof Device] < b[sortKey as keyof Device]) ? -1 : 1);
+ } else {
+ headscaleDevices = data.machines.sort((a: Device, b: Device) => (a[sortKey as keyof Device] > b[sortKey as keyof Device]) ? -1 : 1);
+ }
});
return headscaleDevices;
}
diff --git a/src/lib/common/commonFunctions.svelte b/src/lib/common/commonFunctions.svelte
new file mode 100644
index 0000000..7b4684d
--- /dev/null
+++ b/src/lib/common/commonFunctions.svelte
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/src/lib/common/stores.js b/src/lib/common/stores.js
index f4976e8..1e6c328 100644
--- a/src/lib/common/stores.js
+++ b/src/lib/common/stores.js
@@ -14,4 +14,7 @@ export const headscaleAPIKeyStore = writable('');
export const preAuthHideStore = writable(false);
// stores user and device data
export const headscaleUserStore = writable([new User()]);
-export const headscaleDeviceStore = writable([new Device()]);
\ No newline at end of file
+export const headscaleDeviceStore = writable([new Device()]);
+// stores sorting preferences
+export const headscaleDeviceSortStore = writable('id');
+export const headscaleDeviceSortDirectionStore = writable('ascending');
\ No newline at end of file
diff --git a/src/lib/devices/CreateDevice.svelte b/src/lib/devices/CreateDevice.svelte
index cabdca2..a48786d 100644
--- a/src/lib/devices/CreateDevice.svelte
+++ b/src/lib/devices/CreateDevice.svelte
@@ -1,6 +1,6 @@