Workflow info and update
This commit is contained in:
@@ -2,8 +2,39 @@
|
||||
|
||||
module ProjectAdmin
|
||||
class WorkflowsController < ApplicationController
|
||||
before_action :fetch_workflow, only: %w[show edit update destroy]
|
||||
|
||||
def index
|
||||
@workflows = @project.workflows
|
||||
end
|
||||
|
||||
def show
|
||||
# TODO: add loading statuses and other things
|
||||
end
|
||||
|
||||
def edit
|
||||
@form = ProjectAdmin::Workflows::Update.new(
|
||||
@workflow.attributes.slice('name', 'icon', 'color')
|
||||
)
|
||||
end
|
||||
|
||||
def update
|
||||
@form = ProjectAdmin::Workflows::Update.new(params.expect(workflow: %i[name color icon]))
|
||||
|
||||
if @form.perform(@workflow)
|
||||
redirect_to project_admin_workflow_path(@project, @workflow)
|
||||
else
|
||||
render :edit, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fetch_workflow
|
||||
@workflow = @project.workflows.find(params[:id])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# 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
|
||||
@@ -22,7 +22,7 @@ module ProjectAdmin
|
||||
def links
|
||||
{
|
||||
'Data' => edit_project_path(@project),
|
||||
'Workflows' => project_workflows_path(@project)
|
||||
'Workflows' => project_admin_workflows_path(@project)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
= form_with model: @form, url: url do |form|
|
||||
.field
|
||||
= form.label :name
|
||||
= form.text_field :name
|
||||
.field
|
||||
/ TODO: replace with radio buttons maybe
|
||||
= form.label :color
|
||||
= form.select :color, Workflow.colors
|
||||
.field
|
||||
/ TODO: replace with radio buttons maybe
|
||||
= form.label :icon
|
||||
= form.select :icon, Workflow.icons
|
||||
.submit
|
||||
= form.submit 'Submit'
|
||||
@@ -0,0 +1,5 @@
|
||||
h1
|
||||
| Editing workflow
|
||||
=< @workflow.name
|
||||
|
||||
= render 'form', url: project_admin_workflow_path(@project, @workflow)
|
||||
@@ -6,4 +6,5 @@
|
||||
article.row
|
||||
= workflow_display(workflow, full: true)
|
||||
ul.links.right
|
||||
li= link_to 'Edit', edit_project_workflow_path(@project, workflow), target: '_blank'
|
||||
li= link_to 'Info', project_admin_workflow_path(@project, workflow), target: '_blank'
|
||||
li= link_to 'Edit', edit_project_admin_workflow_path(@project, workflow), target: '_blank'
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
h1
|
||||
| Workflow
|
||||
|
||||
= workflow_display @workflow, full: true, badge: true
|
||||
|
||||
ul
|
||||
- @workflow.task_statuses.each do |status|
|
||||
li= status.name
|
||||
Reference in New Issue
Block a user