Refactor labels_filter_path and labels nav
Refactor labels_filter_path method to be consistent with other similar methods like search_filter_path, milestones_filter_path etc. Also move repeating code in labels index page nav into shared partial Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
600a10b9d1
commit
9d476b1142
9 changed files with 41 additions and 50 deletions
|
@ -59,8 +59,8 @@ module BoardsHelper
|
|||
|
||||
{
|
||||
toggle: "dropdown",
|
||||
list_labels_path: labels_filter_path(true, include_ancestor_groups: true),
|
||||
labels: labels_filter_path(true, include_descendant_groups: include_descendant_groups),
|
||||
list_labels_path: labels_filter_path_with_defaults(only_group_labels: true, include_ancestor_groups: true),
|
||||
labels: labels_filter_path_with_defaults(only_group_labels: true, include_descendant_groups: include_descendant_groups),
|
||||
labels_endpoint: @labels_endpoint,
|
||||
namespace_path: @namespace_path,
|
||||
project_path: @project&.path,
|
||||
|
|
|
@ -131,20 +131,26 @@ module LabelsHelper
|
|||
end
|
||||
end
|
||||
|
||||
def labels_filter_path(only_group_labels = false, include_ancestor_groups: true, include_descendant_groups: false)
|
||||
project = @target_project || @project
|
||||
|
||||
def labels_filter_path_with_defaults(only_group_labels: false, include_ancestor_groups: true, include_descendant_groups: false)
|
||||
options = {}
|
||||
options[:include_ancestor_groups] = include_ancestor_groups if include_ancestor_groups
|
||||
options[:include_descendant_groups] = include_descendant_groups if include_descendant_groups
|
||||
options[:only_group_labels] = only_group_labels if only_group_labels && @group
|
||||
options[:format] = :json
|
||||
|
||||
labels_filter_path(options)
|
||||
end
|
||||
|
||||
def labels_filter_path(options = {})
|
||||
project = @target_project || @project
|
||||
format = options.delete(:format) || :html
|
||||
|
||||
if project
|
||||
project_labels_path(project, :json, options)
|
||||
project_labels_path(project, format, options)
|
||||
elsif @group
|
||||
options[:only_group_labels] = only_group_labels if only_group_labels
|
||||
group_labels_path(@group, :json, options)
|
||||
group_labels_path(@group, format, options)
|
||||
else
|
||||
dashboard_labels_path(:json)
|
||||
dashboard_labels_path(format, options)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -14,24 +14,7 @@
|
|||
- if labels_or_filters
|
||||
#promote-label-modal
|
||||
%div{ class: container_class }
|
||||
.top-area.adjust
|
||||
%ul.nav-links.nav.nav-tabs
|
||||
%li{ class: active_when(subscribed != 'true') }>
|
||||
= link_to group_labels_path(@group) do
|
||||
= _('All')
|
||||
- if current_user
|
||||
%li{ class: active_when(subscribed == 'true') }>
|
||||
= link_to group_labels_path(@group, subscribed: 'true') do
|
||||
= _('Subscribed')
|
||||
.nav-controls
|
||||
= form_tag group_labels_path(@group), method: :get do
|
||||
= hidden_field_tag :subscribed, params[:subscribed]
|
||||
.input-group
|
||||
= search_field_tag :search, params[:search], { placeholder: _('Filter'), id: 'label-search', class: 'form-control search-text-input input-short', spellcheck: false }
|
||||
%span.input-group-append
|
||||
%button.btn.btn-default{ type: "submit", "aria-label" => _('Submit search') }
|
||||
= icon("search")
|
||||
= render 'shared/labels/sort_dropdown'
|
||||
= render 'shared/labels/nav'
|
||||
|
||||
.labels-container.prepend-top-5
|
||||
- if @labels.any?
|
||||
|
|
|
@ -13,25 +13,7 @@
|
|||
- if labels_or_filters
|
||||
#promote-label-modal
|
||||
%div{ class: container_class }
|
||||
.top-area.adjust
|
||||
%ul.nav-links.nav.nav-tabs
|
||||
%li{ class: active_when(subscribed != 'true') }>
|
||||
= link_to project_labels_path(@project) do
|
||||
= _('All')
|
||||
- if current_user
|
||||
%li{ class: active_when(subscribed == 'true') }>
|
||||
= link_to project_labels_path(@project, subscribed: 'true') do
|
||||
= _('Subscribed')
|
||||
|
||||
.nav-controls
|
||||
= form_tag project_labels_path(@project), method: :get do
|
||||
= hidden_field_tag :subscribed, params[:subscribed]
|
||||
.input-group
|
||||
= search_field_tag :search, params[:search], { placeholder: _('Filter'), id: 'label-search', class: 'form-control search-text-input input-short', spellcheck: false }
|
||||
%span.input-group-append
|
||||
%button.btn.btn-default{ type: "submit", "aria-label" => _('Submit search') }
|
||||
= icon("search")
|
||||
= render 'shared/labels/sort_dropdown'
|
||||
= render 'shared/labels/nav'
|
||||
|
||||
.labels-container.prepend-top-10
|
||||
- if can_admin_label
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
- if @project
|
||||
%board-add-issues-modal{ "new-issue-path" => new_project_issue_path(@project),
|
||||
"milestone-path" => milestones_filter_dropdown_path,
|
||||
"label-path" => labels_filter_path,
|
||||
"label-path" => labels_filter_path_with_defaults,
|
||||
"empty-state-svg" => image_path('illustrations/issues.svg'),
|
||||
":issue-link-base" => "issueLinkBase",
|
||||
":root-path" => "rootPath",
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
show_no: "true",
|
||||
show_any: "true",
|
||||
project_id: @project&.try(:id),
|
||||
labels: labels_filter_path(false),
|
||||
labels: labels_filter_path_with_defaults,
|
||||
namespace_path: @namespace_path,
|
||||
project_path: @project.try(:path) } }
|
||||
%span.dropdown-toggle-text
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
- classes = local_assigns.fetch(:classes, [])
|
||||
- selected = local_assigns.fetch(:selected, nil)
|
||||
- dropdown_title = local_assigns.fetch(:dropdown_title, "Filter by label")
|
||||
- dropdown_data = {toggle: 'dropdown', field_name: "label_name[]", show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path), labels: labels_filter_path, default_label: "Labels"}
|
||||
- dropdown_data = {toggle: 'dropdown', field_name: "label_name[]", show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path), labels: labels_filter_path_with_defaults, default_label: "Labels"}
|
||||
- dropdown_data.merge!(data_options)
|
||||
- label_name = local_assigns.fetch(:label_name, "Labels")
|
||||
- no_default_styles = local_assigns.fetch(:no_default_styles, false)
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
- selected_labels.each do |label|
|
||||
= hidden_field_tag "#{issuable.to_ability_name}[label_names][]", label.id, id: nil
|
||||
.dropdown
|
||||
%button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{ type: "button", data: {toggle: "dropdown", default_label: "Labels", field_name: "#{issuable.to_ability_name}[label_names][]", ability_name: issuable.to_ability_name, show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path), issue_update: issuable_json_path(issuable), labels: (labels_filter_path(false) if @project), display: 'static' } }
|
||||
%button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{ type: "button", data: {toggle: "dropdown", default_label: "Labels", field_name: "#{issuable.to_ability_name}[label_names][]", ability_name: issuable.to_ability_name, show_no: "true", show_any: "true", namespace_path: @project.try(:namespace).try(:full_path), project_path: @project.try(:path), issue_update: issuable_json_path(issuable), labels: (labels_filter_path_with_defaults if @project), display: 'static' } }
|
||||
%span.dropdown-toggle-text{ class: ("is-default" if selected_labels.empty?) }
|
||||
= multi_label_name(selected_labels, "Labels")
|
||||
= icon('chevron-down', 'aria-hidden': 'true')
|
||||
|
|
20
app/views/shared/labels/_nav.html.haml
Normal file
20
app/views/shared/labels/_nav.html.haml
Normal file
|
@ -0,0 +1,20 @@
|
|||
- subscribed = params[:subscribed]
|
||||
|
||||
.top-area.adjust
|
||||
%ul.nav-links.nav.nav-tabs
|
||||
%li{ class: active_when(subscribed != 'true') }>
|
||||
= link_to labels_filter_path do
|
||||
= _('All')
|
||||
- if current_user
|
||||
%li{ class: active_when(subscribed == 'true') }>
|
||||
= link_to labels_filter_path(subscribed: 'true') do
|
||||
= _('Subscribed')
|
||||
.nav-controls
|
||||
= form_tag labels_filter_path, method: :get do
|
||||
= hidden_field_tag :subscribed, params[:subscribed]
|
||||
.input-group
|
||||
= search_field_tag :search, params[:search], { placeholder: _('Filter'), id: 'label-search', class: 'form-control search-text-input input-short', spellcheck: false }
|
||||
%span.input-group-append
|
||||
%button.btn.btn-default{ type: "submit", "aria-label" => _('Submit search') }
|
||||
= icon("search")
|
||||
= render 'shared/labels/sort_dropdown'
|
Loading…
Reference in a new issue