diff --git a/src/khoj/interface/web/config.html b/src/khoj/interface/web/config.html index 8c48cb7a..2a05ef12 100644 --- a/src/khoj/interface/web/config.html +++ b/src/khoj/interface/web/config.html @@ -272,6 +272,34 @@ {% endif %} {% endif %} +
+

Scheduled Tasks

+
+
+ Scheduled Tasks +

Tasks

+
+
+

Manage your scheduled tasks handled by Khoj

+
+ + + + + + + + + +
NameNext RunActions
+
+ +
+
+
+ {% if billing_enabled %}

Billing

@@ -616,7 +644,6 @@ `; - } function listApiKeys() { @@ -624,7 +651,51 @@ fetch('/auth/token') .then(response => response.json()) .then(tokens => { - apiKeyList.innerHTML = tokens.map(generateTokenRow).join(""); + if (!tokens?.length > 0) return; + apiKeyList.innerHTML = tokens?.map(generateTokenRow).join(""); + }); + } + + // List user's API keys on page load + listApiKeys(); + + function deleteTask(taskId) { + const scheduledTaskList = document.getElementById("scheduled-tasks-list"); + // url encode the task id + taskId = encodeURIComponent(taskId); + fetch(`/api/task?task_id=${taskId}`, { + method: 'DELETE', + }) + .then(response => { + if (response.status == 200) { + const scheduledTaskItem = document.getElementById(`scheduled-task-item-${taskId}`); + scheduledTaskList.removeChild(scheduledTaskItem); + } + }); + } + + function generateTaskRow(taskObj) { + let taskId = taskObj.id; + let taskName = taskObj.name; + let taskNextRun = taskObj.next; + return ` + + ${taskName} + ${taskNextRun} + + Delete Task + + + `; + } + + function listScheduledTasks() { + const scheduledTasksList = document.getElementById("scheduled-tasks-list"); + fetch('/api/tasks') + .then(response => response.json()) + .then(tasks => { + if (!tasks?.length > 0) return; + scheduledTasksList.innerHTML = tasks.map(generateTaskRow).join(""); }); } @@ -637,8 +708,8 @@ }); } - // List user's API keys on page load - listApiKeys(); + // List user's scheduled tasks on page load + listScheduledTasks(); function removeFile(path) { fetch('/api/config/data/file?filename=' + path, {