enable/disable

pull/30205/head
Lunny Xiao 2025-09-03 22:06:58 -07:00
parent af5ba854d9
commit f681274e5d
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
4 changed files with 40 additions and 7 deletions

View File

@ -229,3 +229,13 @@ func DeleteWorkflow(ctx context.Context, id int64) error {
_, err := db.GetEngine(ctx).ID(id).Delete(&Workflow{}) _, err := db.GetEngine(ctx).ID(id).Delete(&Workflow{})
return err return err
} }
func EnableWorkflow(ctx context.Context, id int64) error {
_, err := db.GetEngine(ctx).ID(id).Cols("enabled").Update(&Workflow{Enabled: true})
return err
}
func DisableWorkflow(ctx context.Context, id int64) error {
_, err := db.GetEngine(ctx).ID(id).Cols("enabled").Update(&Workflow{Enabled: false})
return err
}

View File

@ -488,10 +488,16 @@ func WorkflowsStatus(ctx *context.Context) {
enabledStr := ctx.Req.FormValue("enabled") enabledStr := ctx.Req.FormValue("enabled")
enabled := enabledStr == "true" enabled := enabledStr == "true"
wf.Enabled = enabled if enabled {
if err := project_model.UpdateWorkflow(ctx, wf); err != nil { if err := project_model.EnableWorkflow(ctx, workflowID); err != nil {
ctx.ServerError("UpdateWorkflow", err) ctx.ServerError("EnableWorkflow", err)
return return
}
} else {
if err := project_model.DisableWorkflow(ctx, workflowID); err != nil {
ctx.ServerError("DisableWorkflow", err)
return
}
} }
ctx.JSON(http.StatusOK, map[string]any{ ctx.JSON(http.StatusOK, map[string]any{

View File

@ -214,7 +214,8 @@ const createNewWorkflow = (baseEventType, capabilities, displayName) => {
actions: [], actions: [],
filter_summary: '', filter_summary: '',
base_event_type: baseEventType, base_event_type: baseEventType,
enabled: true, workflow_event: baseEventType,
enabled: true, // Ensure new workflows are enabled by default
}; };
store.selectedWorkflow = newWorkflow; store.selectedWorkflow = newWorkflow;

View File

@ -200,7 +200,9 @@ export function createWorkflowStore(props: { projectLink: string, eventID: strin
const formData = new FormData(); const formData = new FormData();
formData.append('enabled', store.selectedWorkflow.enabled.toString()); formData.append('enabled', store.selectedWorkflow.enabled.toString());
const response = await POST(`${props.projectLink}/workflows/${store.selectedWorkflow.event_id}/status`, { // Use workflow ID for status update
const workflowId = store.selectedWorkflow.id;
const response = await POST(`${props.projectLink}/workflows/${workflowId}/status`, {
data: formData, data: formData,
}); });
@ -208,6 +210,8 @@ export function createWorkflowStore(props: { projectLink: string, eventID: strin
const errorText = await response.text(); const errorText = await response.text();
console.error('Failed to update workflow status:', errorText); console.error('Failed to update workflow status:', errorText);
alert(`Failed to update workflow status: ${response.status} ${response.statusText}`); alert(`Failed to update workflow status: ${response.status} ${response.statusText}`);
// Revert the status change on error
store.selectedWorkflow.enabled = !store.selectedWorkflow.enabled;
return; return;
} }
@ -218,9 +222,16 @@ export function createWorkflowStore(props: { projectLink: string, eventID: strin
if (existingIndex >= 0) { if (existingIndex >= 0) {
store.workflowEvents[existingIndex].enabled = store.selectedWorkflow.enabled; store.workflowEvents[existingIndex].enabled = store.selectedWorkflow.enabled;
} }
console.log(`Workflow status updated to: ${store.selectedWorkflow.enabled ? 'enabled' : 'disabled'}`);
} else {
// Revert the status change on failure
store.selectedWorkflow.enabled = !store.selectedWorkflow.enabled;
alert('Failed to update workflow status');
} }
} catch (error) { } catch (error) {
console.error('Error updating workflow status:', error); console.error('Error updating workflow status:', error);
// Revert the status change on error
store.selectedWorkflow.enabled = !store.selectedWorkflow.enabled;
alert(`Error updating workflow status: ${error.message}`); alert(`Error updating workflow status: ${error.message}`);
} }
}, },
@ -229,7 +240,9 @@ export function createWorkflowStore(props: { projectLink: string, eventID: strin
if (!store.selectedWorkflow || store.selectedWorkflow.id === 0) return; if (!store.selectedWorkflow || store.selectedWorkflow.id === 0) return;
try { try {
const response = await POST(`${props.projectLink}/workflows/${store.selectedWorkflow.event_id}/delete`, { // Use workflow ID for deletion
const workflowId = store.selectedWorkflow.id;
const response = await POST(`${props.projectLink}/workflows/${workflowId}/delete`, {
data: new FormData(), data: new FormData(),
}); });
@ -247,6 +260,9 @@ export function createWorkflowStore(props: { projectLink: string, eventID: strin
if (existingIndex >= 0) { if (existingIndex >= 0) {
store.workflowEvents.splice(existingIndex, 1); store.workflowEvents.splice(existingIndex, 1);
} }
console.log('Workflow deleted successfully');
} else {
alert('Failed to delete workflow');
} }
} catch (error) { } catch (error) {
console.error('Error deleting workflow:', error); console.error('Error deleting workflow:', error);