Workers
+
{
return {
+ workers: useWorkers(),
+
shownStatuses: [],
availableStatuses: [], // Will be filled after data is loaded from the backend.
};
diff --git a/web/app/src/stores/workers.js b/web/app/src/stores/workers.js
index e111fe32..315c09a0 100644
--- a/web/app/src/stores/workers.js
+++ b/web/app/src/stores/workers.js
@@ -1,6 +1,6 @@
import { defineStore } from 'pinia'
-import { WorkerMgtApi } from '@/manager-api';
+import { WorkerMgtApi, WorkerStatusChangeRequest } from '@/manager-api';
import { apiClient } from '@/stores/api-query-count';
@@ -43,5 +43,23 @@ export const useWorkers = defineStore('workers', {
activeWorkerID: "",
});
},
+
+ reqStatusAwake() { return this.requestStatus("awake"); },
+ reqStatusAsleep() { return this.requestStatus("asleep"); },
+ reqStatusOffline() { return this.requestStatus("offline"); },
+
+ /**
+ * Transition the active worker to the new status.
+ * @param {string} newStatus
+ * @returns a Promise for the API request.
+ */
+ requestStatus(newStatus) {
+ if (!this.activeWorkerID) {
+ console.warn(`requestStatus(${newStatus}) impossible, no active worker ID`);
+ return;
+ }
+ const statuschange = new WorkerStatusChangeRequest(newStatus, false);
+ return api.requestWorkerStatusChange(this.activeWorkerID, statuschange);
+ },
},
})