Commit f107d0bb authored by Sean McGivern's avatar Sean McGivern Committed by Jose Vargas

Add helpers to reverse issuable sorting

this is just me testing to see where the linebreak should be because I d
- `issuable_sort_option_overrides` has sort options that are only
  available by reversing the sorting.
- `issuable_reverse_sort_order_hash` maps sorting in one direction
  to the other, both ways.
- `issuable_sort_option_title` uses `issuable_sort_option_overrides` to
  get the correct title (so you see the same sort title no matter the
  direction we ordered in).
- `issuable_sort_direction_button` shows a button to reverse the
  sorting. It's disabled if the current sort is irreversible
  (like for Priority).
parent 85c6d178
......@@ -138,6 +138,56 @@ module SortingHelper
link_to item, path, class: sorted_by == item ? 'is-active' : ''
end
def issuable_sort_option_overrides
{
sort_value_oldest_created => sort_value_created_date,
sort_value_oldest_updated => sort_value_recently_updated,
sort_value_milestone_later => sort_value_milestone
}
end
def issuable_reverse_sort_order_hash
{
sort_value_created_date => sort_value_oldest_created,
sort_value_recently_created => sort_value_oldest_created,
sort_value_recently_updated => sort_value_oldest_updated,
sort_value_milestone => sort_value_milestone_later
}.merge(issuable_sort_option_overrides)
end
def issuable_sort_option_title(sort_value)
sort_value = issuable_sort_option_overrides[sort_value] || sort_value
sort_options_hash[sort_value]
end
def issuable_sort_direction_button(sort_value)
link_class = 'btn btn-default'
reverse_sort = issuable_reverse_sort_order_hash[sort_value]
if reverse_sort
reverse_url = page_filter_path(sort: reverse_sort)
else
reverse_url = '#'
link_class << ' disabled'
end
link_to(reverse_url, type: 'button', class: link_class) do
icon_suffix =
if sort_value == sort_value_milestone
'lowest'
elsif sort_value == sort_value_due_date
'lowest'
elsif sort_value.ends_with?('_asc')
'lowest'
else
'highest'
end
sprite_icon("sort-#{icon_suffix}", size: 16)
end
end
# Titles.
def sort_title_access_level_asc
s_('SortOptions|Access level, ascending')
......
- sorted_by = sort_options_hash[@sort]
- sort_value = @sort
- sort_title = issuable_sort_option_title(sort_value)
- viewing_issues = controller.controller_name == 'issues' || controller.action_name == 'issues'
.dropdown.inline.prepend-left-10
.btn-group{ role: 'group' }
.btn-group{ role: 'group' }
%button.dropdown-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' }, class: 'btn btn-default' }
= sorted_by
= sort_title
= icon('chevron-down')
%ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable.dropdown-menu-sort
%li
= sortable_item(sort_title_priority, page_filter_path(sort: sort_value_priority, label: true), sorted_by)
= sortable_item(sort_title_created_date, page_filter_path(sort: sort_value_created_date, label: true), sorted_by)
= sortable_item(sort_title_recently_updated, page_filter_path(sort: sort_value_recently_updated, label: true), sorted_by)
= sortable_item(sort_title_milestone, page_filter_path(sort: sort_value_milestone, label: true), sorted_by)
= sortable_item(sort_title_due_date, page_filter_path(sort: sort_value_due_date, label: true), sorted_by) if viewing_issues
= sortable_item(sort_title_popularity, page_filter_path(sort: sort_value_popularity, label: true), sorted_by)
= sortable_item(sort_title_label_priority, page_filter_path(sort: sort_value_label_priority, label: true), sorted_by)
%a{ type: 'button', href: '#', class: 'btn btn-default' }
= sprite_icon('sort-lowest', size: 16)
= sortable_item(sort_title_priority, page_filter_path(sort: sort_value_priority, label: true), sort_title)
= sortable_item(sort_title_created_date, page_filter_path(sort: sort_value_created_date, label: true), sort_title)
= sortable_item(sort_title_recently_updated, page_filter_path(sort: sort_value_recently_updated, label: true), sort_title)
= sortable_item(sort_title_milestone, page_filter_path(sort: sort_value_milestone, label: true), sort_title)
= sortable_item(sort_title_due_date, page_filter_path(sort: sort_value_due_date, label: true), sort_title) if viewing_issues
= sortable_item(sort_title_popularity, page_filter_path(sort: sort_value_popularity, label: true), sort_title)
= sortable_item(sort_title_label_priority, page_filter_path(sort: sort_value_label_priority, label: true), sort_title)
= issuable_sort_direction_button(sort_value)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment