Workflow creation
This commit is contained in:
@@ -12,16 +12,23 @@ module ProjectAdmin
|
|||||||
# TODO: add loading statuses and other things
|
# TODO: add loading statuses and other things
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def new
|
||||||
@form = ProjectAdmin::Workflows::Update.new(
|
@workflow = @project.workflows.build
|
||||||
@workflow.attributes.slice('name', 'icon', 'color')
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def create
|
||||||
@form = ProjectAdmin::Workflows::Update.new(params.expect(workflow: %i[name color icon]))
|
@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)
|
redirect_to project_admin_workflow_path(@project, @workflow)
|
||||||
else
|
else
|
||||||
render :edit, status: :unprocessable_entity
|
render :edit, status: :unprocessable_entity
|
||||||
@@ -36,5 +43,9 @@ module ProjectAdmin
|
|||||||
def fetch_workflow
|
def fetch_workflow
|
||||||
@workflow = @project.workflows.find(params[:id])
|
@workflow = @project.workflows.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def workflow_params
|
||||||
|
params.expect(workflow: %i[name color icon])
|
||||||
|
end
|
||||||
end
|
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
|
.field
|
||||||
= form.label :name
|
= form.label :name
|
||||||
= form.text_field :name
|
= form.text_field :name
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
h2
|
h2
|
||||||
span Workflows
|
span Workflows
|
||||||
|
|
||||||
|
.links
|
||||||
|
= link_to 'New', new_project_admin_workflow_path(@project)
|
||||||
|
|
||||||
- @workflows.each do |workflow|
|
- @workflows.each do |workflow|
|
||||||
article.row
|
article.row
|
||||||
= workflow_display(workflow, full: true)
|
= 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
|
.row
|
||||||
= workflow_display @workflow, full: true, badge: true
|
= workflow_display @workflow, full: true, badge: true
|
||||||
.links
|
.links.right
|
||||||
= link_to 'Edit', edit_project_admin_workflow_path(@project, @workflow)
|
= link_to 'Edit', edit_project_admin_workflow_path(@project, @workflow)
|
||||||
|
|
||||||
h2 Statuses
|
h2 Statuses
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
= project_admin_workflow_frame(@workflow) do
|
= 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"
|
section.workflow-statuses-batch-update-fieldsets data-dynamic-forms-target="container"
|
||||||
= f.fields_for :task_statuses, include_id: false do |tsf|
|
= f.fields_for :task_statuses, include_id: false do |tsf|
|
||||||
= render 'batch_update_fieldset', ff: tsf, with_destroy: true
|
= render 'batch_update_fieldset', ff: tsf, with_destroy: true
|
||||||
|
|||||||
Reference in New Issue
Block a user