diff --git a/routers/web/projects/workflows.go b/routers/web/projects/workflows.go index 6865397bca4..682327176b0 100644 --- a/routers/web/projects/workflows.go +++ b/routers/web/projects/workflows.go @@ -233,7 +233,7 @@ func WorkflowsEvents(ctx *context.Context, project *project_model.Project) { ctx.JSON(http.StatusOK, outputWorkflows) } -func WorkflowsColumns(ctx *context.Context, project *project_model.Project) { +func WorkflowsOptions(ctx *context.Context, project *project_model.Project) { columns, err := project.GetColumns(ctx) if err != nil { ctx.ServerError("GetProjectColumns", err) @@ -254,10 +254,6 @@ func WorkflowsColumns(ctx *context.Context, project *project_model.Project) { }) } - ctx.JSON(http.StatusOK, outputColumns) -} - -func WorkflowsLabels(ctx *context.Context, project *project_model.Project) { labels, err := project_service.GetProjectLabels(ctx, project) if err != nil { ctx.ServerError("GetProjectLabels", err) @@ -284,7 +280,10 @@ func WorkflowsLabels(ctx *context.Context, project *project_model.Project) { }) } - ctx.JSON(http.StatusOK, outputLabels) + ctx.JSON(http.StatusOK, map[string]any{ + "columns": outputColumns, + "labels": outputLabels, + }) } func prepareProject(ctx *context.Context) *project_model.Project { @@ -320,12 +319,8 @@ func Workflows(ctx *context.Context) { WorkflowsEvents(ctx, p) return } - if workflowIDStr == "columns" { - WorkflowsColumns(ctx, p) - return - } - if workflowIDStr == "labels" { - WorkflowsLabels(ctx, p) + if workflowIDStr == "options" { + WorkflowsOptions(ctx, p) return } diff --git a/web_src/js/components/projects/ProjectWorkflow.vue b/web_src/js/components/projects/ProjectWorkflow.vue index 4c73fa2be13..6e730dfaebb 100644 --- a/web_src/js/components/projects/ProjectWorkflow.vue +++ b/web_src/js/components/projects/ProjectWorkflow.vue @@ -521,8 +521,7 @@ watch(() => store.workflowActions, () => { onMounted(async () => { // Load all necessary data store.workflowEvents = await store.loadEvents(); - await store.loadProjectColumns(); - await store.loadProjectLabels(); + await store.loadProjectOptions(); // Add native event listener to prevent conflicts with Gitea await nextTick(); diff --git a/web_src/js/components/projects/WorkflowStore.ts b/web_src/js/components/projects/WorkflowStore.ts index f9c7a886c9c..0b8c8cfeb49 100644 --- a/web_src/js/components/projects/WorkflowStore.ts +++ b/web_src/js/components/projects/WorkflowStore.ts @@ -71,9 +71,8 @@ type WorkflowStoreState = { updateDraft(event_id: string, filters: WorkflowFilters, actions: WorkflowActions): void; clearDraft(event_id: string): void; loadEvents(): Promise; - loadProjectColumns(): Promise; + loadProjectOptions(): Promise; loadWorkflowData(event_id: string): Promise; - loadProjectLabels(): Promise; resetWorkflowData(): void; saveWorkflow(): Promise; saveWorkflowStatus(): Promise; @@ -176,13 +175,16 @@ export function createWorkflowStore(props: any): WorkflowStoreState { return store.workflowEvents; }, - async loadProjectColumns(): Promise { + async loadProjectOptions(): Promise { try { - const response = await GET(`${props.projectLink}/workflows/columns`); - store.projectColumns = await response.json() as ProjectColumn[]; + const response = await GET(`${props.projectLink}/workflows/options`); + const data = await response.json(); + store.projectColumns = data.columns as ProjectColumn[]; + store.projectLabels = data.labels as ProjectLabel[]; } catch (error) { - console.error('Failed to load project columns:', error); + console.error('Failed to load project columns and labels:', error); store.projectColumns = []; + store.projectLabels = []; } }, @@ -190,8 +192,7 @@ export function createWorkflowStore(props: any): WorkflowStoreState { store.loading = true; try { // Load project columns and labels for the dropdowns - await store.loadProjectColumns(); - await store.loadProjectLabels(); + await store.loadProjectOptions(); const draft = store.getDraft(event_id); if (draft) { @@ -211,16 +212,6 @@ export function createWorkflowStore(props: any): WorkflowStoreState { } }, - async loadProjectLabels(): Promise { - try { - const response = await GET(`${props.projectLink}/workflows/labels`); - store.projectLabels = await response.json() as ProjectLabel[]; - } catch (error) { - console.error('Failed to load project labels:', error); - store.projectLabels = []; - } - }, - resetWorkflowData(): void { store.workflowFilters = createDefaultFilters(); store.workflowActions = createDefaultActions();