Workflow info and update
This commit is contained in:
@@ -2,8 +2,39 @@
|
|||||||
|
|
||||||
module ProjectAdmin
|
module ProjectAdmin
|
||||||
class WorkflowsController < ApplicationController
|
class WorkflowsController < ApplicationController
|
||||||
|
before_action :fetch_workflow, only: %w[show edit update destroy]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@workflows = @project.workflows
|
@workflows = @project.workflows
|
||||||
end
|
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
|
||||||
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
|
def links
|
||||||
{
|
{
|
||||||
'Data' => edit_project_path(@project),
|
'Data' => edit_project_path(@project),
|
||||||
'Workflows' => project_workflows_path(@project)
|
'Workflows' => project_admin_workflows_path(@project)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
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
|
article.row
|
||||||
= workflow_display(workflow, full: true)
|
= workflow_display(workflow, full: true)
|
||||||
ul.links.right
|
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
|
||||||
+9
-2
@@ -16,9 +16,16 @@ Rails.application.routes.draw do
|
|||||||
# Defines the root path route ("/")
|
# Defines the root path route ("/")
|
||||||
# root "posts#index"
|
# root "posts#index"
|
||||||
|
|
||||||
|
root to: redirect('/projects')
|
||||||
|
|
||||||
resources :projects do
|
resources :projects do
|
||||||
scope module: :project_admin do
|
namespace :project_admin, as: 'admin' do
|
||||||
resources :workflows, only: %i[index new create edit update destroy]
|
resources :workflows do
|
||||||
|
namespace :statuses do
|
||||||
|
get '/', action: :index
|
||||||
|
patch '/', action: :batch_update
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user