diff --git a/app/assets/javascripts/my_modules/status_flow.js b/app/assets/javascripts/my_modules/status_flow.js index 0b0e27a18..bc283d47b 100644 --- a/app/assets/javascripts/my_modules/status_flow.js +++ b/app/assets/javascripts/my_modules/status_flow.js @@ -1,6 +1,10 @@ /* global animateSpinner */ (function() { + $('.task-flows').on('click', '#viewTaskFlow', function() { + $('#statusFlowModal').modal('show'); + }); + $('#statusFlowModal').on('show.bs.modal', function() { var $modalBody = $(this).find('.modal-body'); animateSpinner($modalBody); diff --git a/app/controllers/my_module_status_flow_controller.rb b/app/controllers/my_module_status_flow_controller.rb index e44fbc587..eb738f8db 100644 --- a/app/controllers/my_module_status_flow_controller.rb +++ b/app/controllers/my_module_status_flow_controller.rb @@ -5,7 +5,7 @@ class MyModuleStatusFlowController < ApplicationController before_action :check_view_permissions def show - my_module_statuses = @my_module.my_module_status_flow.my_module_statuses + my_module_statuses = @my_module.my_module_status_flow.my_module_statuses.sort_by_position render json: { html: render_to_string(partial: 'my_modules/modals/status_flow_modal_body.html.erb', locals: { my_module_statuses: my_module_statuses }) } end diff --git a/app/models/my_module_status.rb b/app/models/my_module_status.rb index 2fc836a89..101606c40 100644 --- a/app/models/my_module_status.rb +++ b/app/models/my_module_status.rb @@ -30,6 +30,23 @@ class MyModuleStatus < ApplicationRecord my_module_status_flow.final_status == self end + def self.sort_by_position(order = :asc) + ordered_statuses, statuses = all.to_a.partition { |i| i.previous_status_id.nil? } + + return [] if ordered_statuses.empty? + + until statuses.empty? + next_element, statuses = statuses.partition { |i| ordered_statuses.last.id == i.previous_status_id } + if next_element.empty? + break + else + ordered_statuses.concat(next_element) + end + end + ordered_statuses = ordered_statuses.reverse if order == :desc + ordered_statuses + end + private def next_in_same_flow diff --git a/app/views/my_modules/status_flow/_task_flow_button.html.erb b/app/views/my_modules/status_flow/_task_flow_button.html.erb index f4c7ceb41..0978b99b6 100644 --- a/app/views/my_modules/status_flow/_task_flow_button.html.erb +++ b/app/views/my_modules/status_flow/_task_flow_button.html.erb @@ -6,7 +6,7 @@ data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" - style="<%= "background-color: ##{status.color}" %>;"> + style="<%= "background-color: #{status.color}" %>;"> <%= status.name %> @@ -14,18 +14,18 @@ <% unless status.initial_status? %> <% previous_s = status.previous_status %>
  • - <%= t 'my_module_statuses.dropdown.return_label' %> "><%= previous_s.name %> + <%= t 'my_module_statuses.dropdown.return_label' %> "><%= previous_s.name %>
  • <% end %> <% unless status.final_status? %> <% next_s = status.next_status %>
  • - <%= t('my_module_statuses.dropdown.move_label') %> "><%= next_s.name %> + <%= t('my_module_statuses.dropdown.move_label') %> "><%= next_s.name %>
  • <% end %> -
  • - <%= t('my_module_statuses.dropdown.view_flow_label') %> +
  • + <%= t('my_module_statuses.dropdown.view_flow_label') %>