Workflow creation
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user