Workflow creation

This commit is contained in:
2026-04-22 02:15:16 +03:00
parent 52f2191a25
commit fb03bb1a2d
7 changed files with 26 additions and 37 deletions
@@ -12,16 +12,23 @@ module ProjectAdmin
# TODO: add loading statuses and other things
end
def edit
@form = ProjectAdmin::Workflows::Update.new(
@workflow.attributes.slice('name', 'icon', 'color')
)
def new
@workflow = @project.workflows.build
end
def update
@form = ProjectAdmin::Workflows::Update.new(params.expect(workflow: %i[name color icon]))
def create
@workflow = @project.workflows.build(workflow_params)
if @workflow.save
redirect_to project_admin_workflow_path(@project, @workflow)
else
render :new, status: :unprocessable_entity
end
end
if @form.perform(@workflow)
def edit; end
def update
if @workflow.update(workflow_params)
redirect_to project_admin_workflow_path(@project, @workflow)
else
render :edit, status: :unprocessable_entity
@@ -36,5 +43,9 @@ module ProjectAdmin
def fetch_workflow
@workflow = @project.workflows.find(params[:id])
end
def workflow_params
params.expect(workflow: %i[name color icon])
end
end
end
@@ -1,27 +0,0 @@
# frozen_string_literal: true
module ProjectAdmin
module Workflows
class Update < ApplicationService
attribute :id, :integer
attribute :name, :string
attribute :icon, :string
attribute :color, :string
validates :name, presence: true
validates :icon, inclusion: { in: Workflow.icons.values }
validates :color, inclusion: { in: Workflow.colors.values }
delegate :model_name, to: Workflow
def persisted? = true
def perform(workflow)
@workflow = workflow
@id = workflow.id
@workflow.assign_attributes(icon:, color:, name:)
save @workflow
end
end
end
end
@@ -1,4 +1,4 @@
= form_with model: @form, url: url do |form|
= form_with model: @workflow, url: url, data: {'turbo-frame': '_top'} do |form|
.field
= form.label :name
= form.text_field :name
@@ -2,6 +2,9 @@
h2
span Workflows
.links
= link_to 'New', new_project_admin_workflow_path(@project)
- @workflows.each do |workflow|
article.row
= workflow_display(workflow, full: true)
@@ -0,0 +1,2 @@
= project_admin_frame(@project) do
= render 'form', url: project_admin_workflows_path(@project, @workflow)
@@ -3,7 +3,7 @@ h1
.row
= workflow_display @workflow, full: true, badge: true
.links
.links.right
= link_to 'Edit', edit_project_admin_workflow_path(@project, @workflow)
h2 Statuses
@@ -1,5 +1,5 @@
= project_admin_workflow_frame(@workflow) do
= form_with model: @form, scope: 'workflow', url: project_admin_workflow_statuses_path(@project, @workflow), method: :put, data: {controller: 'dynamic-forms', 'dynamic-forms-field-name-value': 'task_statuses_attributes', 'dynamic-forms-field-template-value': '_extra_form', 'dynamic-forms-index-template-value': '__index__', 'dynamic-forms-count-value': @form.task_statuses.count} do |f|
= form_with model: @form, scope: 'workflow', url: project_admin_workflow_statuses_path(@project, @workflow), method: :put, data: {controller: 'dynamic-forms', 'dynamic-forms-field-name-value': 'task_statuses_attributes', 'dynamic-forms-field-template-value': '_extra_form', 'dynamic-forms-index-template-value': '__index__', 'dynamic-forms-count-value': @form.task_statuses.count, 'turbo-frame': '_top'} do |f|
section.workflow-statuses-batch-update-fieldsets data-dynamic-forms-target="container"
= f.fields_for :task_statuses, include_id: false do |tsf|
= render 'batch_update_fieldset', ff: tsf, with_destroy: true