diff --git a/src/lib/components/ControlModules/dialogs/dialog-shocker-add.svelte b/src/lib/components/ControlModules/dialogs/dialog-shocker-add.svelte
new file mode 100644
index 00000000..d39945ff
--- /dev/null
+++ b/src/lib/components/ControlModules/dialogs/dialog-shocker-add.svelte
@@ -0,0 +1,109 @@
+
+
+
+
+
+ Add Shocker
+ Register a new shocker to one of your hubs.
+
+
+
+
+
+ RF ID
+
+
+
+
+ Model
+
+
+ {modelOptions.find((o) => o.value === data.model)?.label ?? 'Select model'}
+
+
+
+ {#each modelOptions as option (option.value)}
+ {option.label}
+ {/each}
+
+
+
+
+
+
+ Hub
+
+
+ {hubs.find(([id]) => id === data.device)?.[1].name ?? 'Select hub'}
+
+
+
+ {#each hubs as [id, hub] (id)}
+ {hub.name}
+ {/each}
+
+
+
+
+
+
+ close()}>Cancel
+ Add Shocker
+
diff --git a/src/lib/components/ControlModules/impl/ShockerMenu.svelte b/src/lib/components/ControlModules/impl/ShockerMenu.svelte
index 6b92d1eb..fa95feaf 100644
--- a/src/lib/components/ControlModules/impl/ShockerMenu.svelte
+++ b/src/lib/components/ControlModules/impl/ShockerMenu.svelte
@@ -1,10 +1,15 @@
@@ -27,6 +69,25 @@
{/snippet}
+
+ {#if pauseLoading}
+
+ {:else if shocker.isPaused}
+
+ {:else}
+
+ {/if}
+ {shocker.isPaused ? 'Resume' : 'Pause'}
+
+
+
+ Edit
+
View Logs
+
+
+
+ Delete
+
diff --git a/src/routes/(app)/settings/sessions/+page.svelte b/src/routes/(app)/settings/sessions/+page.svelte
index 0242b660..470477c7 100644
--- a/src/routes/(app)/settings/sessions/+page.svelte
+++ b/src/routes/(app)/settings/sessions/+page.svelte
@@ -22,7 +22,6 @@
import { toast } from 'svelte-sonner';
import DataTableActions from './data-table-actions.svelte';
- let loading = $state(false);
let data = $state([]);
let sorting = $state([]);
@@ -48,18 +47,11 @@
},
];
- function handleProblem(problem: ProblemDetails): boolean {
- return false;
- }
-
async function fetchSessions() {
- loading = true;
try {
data = await sessionsApi.sessionsListSessions();
} catch (error) {
- await handleApiError(error, handleProblem);
- } finally {
- loading = false;
+ await handleApiError(error);
}
}
diff --git a/src/routes/(app)/shockers/[shockerId=guid]/edit/+page.svelte b/src/routes/(app)/shockers/[shockerId=guid]/edit/+page.svelte
new file mode 100644
index 00000000..ad372995
--- /dev/null
+++ b/src/routes/(app)/shockers/[shockerId=guid]/edit/+page.svelte
@@ -0,0 +1,149 @@
+
+
+
+ {#if !shocker}
+
+
+ Loading shocker...
+
+ {:else}
+
+
Edit Shocker
+
+
+
+
+ RF ID
+
+
+
+
+ Model
+
+
+ {modelOptions.find((o) => o.value === model)?.label ?? 'Select model'}
+
+
+
+ {#each modelOptions as option (option.value)}
+ {option.label}
+ {/each}
+
+
+
+
+
+
+ Pause State
+
+
{}}
+ />
+
+ {shocker.isPaused ? 'Shocker is paused' : 'Shocker is active'}
+
+
+
+
+
+ {#if saving} {/if}
+ Save Changes
+
+
+
+
+
+
Danger Zone
+
+ Permanently delete this shocker. This action cannot be undone.
+
+
Delete Shocker
+
+
+ {/if}
+
diff --git a/src/routes/(app)/shockers/own/+page.svelte b/src/routes/(app)/shockers/own/+page.svelte
index 3276f58e..a54afd08 100644
--- a/src/routes/(app)/shockers/own/+page.svelte
+++ b/src/routes/(app)/shockers/own/+page.svelte
@@ -1,18 +1,27 @@
@@ -32,6 +63,9 @@
Shockers
+
+ Add Shocker
+
STOP
@@ -54,10 +88,22 @@
-
-
-
-
+
+
+
+ {#snippet child({ props })}
+
+
+
+ {/snippet}
+
+
+
+ Global Limits
+ (Coming soon)
+
+
+