Commit 7b6f2fb1 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'enhancement/issue_filter_dropdown' of /home/git/repositories/gitlab/gitlabhq

parents 5d66df0a 646fbe92
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
//= require jquery.waitforimages //= require jquery.waitforimages
//= require jquery.atwho //= require jquery.atwho
//= require jquery.scrollto //= require jquery.scrollto
//= require jquery.blockUI
//= require turbolinks //= require turbolinks
//= require jquery.turbolinks //= require jquery.turbolinks
//= require bootstrap //= require bootstrap
......
...@@ -15,7 +15,13 @@ ...@@ -15,7 +15,13 @@
$(this).html totalIssues + 1 $(this).html totalIssues + 1
else else
$(this).html totalIssues - 1 $(this).html totalIssues - 1
$("body").on "click", ".issues-filters .dropdown-menu a", ->
$('.issues-list').block(
message: null,
overlayCSS:
backgroundColor: '#DDD'
opacity: .4
)
reload: -> reload: ->
Issues.initSelects() Issues.initSelects()
...@@ -48,10 +54,6 @@ ...@@ -48,10 +54,6 @@
unless terms is last_terms unless terms is last_terms
last_terms = terms last_terms = terms
if terms.length >= 2 or terms.length is 0 if terms.length >= 2 or terms.length is 0
$('#search_status').val($('#status').val())
$('#search_assignee_id').val($('#assignee_id').val())
$('#search_milestone_id').val($('#milestone_id').val())
$('#search_label_name').val($('#label_name').val())
form.submit() form.submit()
checkChanged: -> checkChanged: ->
...@@ -62,9 +64,9 @@ ...@@ -62,9 +64,9 @@
ids.push $(value).attr("data-id") ids.push $(value).attr("data-id")
$("#update_issues_ids").val ids $("#update_issues_ids").val ids
$(".issues_filters").hide() $(".issues-filters").hide()
$(".issues_bulk_update").show() $(".issues_bulk_update").show()
else else
$("#update_issues_ids").val [] $("#update_issues_ids").val []
$(".issues_bulk_update").hide() $(".issues_bulk_update").hide()
$(".issues_filters").show() $(".issues-filters").show()
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
.append-right-20 { margin-right:20px } .append-right-20 { margin-right:20px }
.append-bottom-10 { margin-bottom:10px } .append-bottom-10 { margin-bottom:10px }
.append-bottom-20 { margin-bottom:20px } .append-bottom-20 { margin-bottom:20px }
.inline { display: inline-block }
.padded { padding:20px } .padded { padding:20px }
.ipadded { padding:20px!important } .ipadded { padding:20px!important }
......
...@@ -20,6 +20,12 @@ class IssuesController < ProjectResourceController ...@@ -20,6 +20,12 @@ class IssuesController < ProjectResourceController
@issues = @issues.where("title LIKE ?", "%#{terms}%") if terms.present? @issues = @issues.where("title LIKE ?", "%#{terms}%") if terms.present?
@issues = @issues.page(params[:page]).per(20) @issues = @issues.page(params[:page]).per(20)
assignee_id, milestone_id = params[:assignee_id], params[:milestone_id]
@assignee = @project.users.find(assignee_id) if assignee_id.present? && !assignee_id.to_i.zero?
@milestone = @project.milestones.find(milestone_id) if milestone_id.present? && !milestone_id.to_i.zero?
respond_to do |format| respond_to do |format|
format.html # index.html.erb format.html # index.html.erb
format.js format.js
......
...@@ -78,4 +78,15 @@ module IssuesHelper ...@@ -78,4 +78,15 @@ module IssuesHelper
"" ""
end end
end end
def project_issues_with_filter_path(project, opts)
default_opts = {
status: params[:status],
label_name: params[:label_name],
milestone_id: params[:milestone_id],
assignee_id: params[:assignee_id],
}
project_issues_path(@project, default_opts.merge(opts))
end
end end
module LabelsHelper module LabelsHelper
def issue_tags def issue_label_names
@project.issues.tag_counts_on(:labels).map(&:name) @project.issues_labels.map(&:name)
end end
def labels_autocomplete_source def labels_autocomplete_source
......
= form_tag project_issues_path(@project), method: 'get' do = form_tag project_issues_path(@project), method: 'get' do
%fieldset %fieldset
%ul.nav.nav-pills.nav-stacked %ul.nav.nav-pills.nav-stacked
%li{class: ("active" if !params[:status])} %li{class: ("active" if !params[:status] || params[:status].blank?)}
= link_to project_issues_path(@project, status: nil) do = link_to project_issues_path(@project, status: nil) do
Open Open
%li{class: ("active" if params[:status] == 'assigned-to-me')} %li{class: ("active" if params[:status] == 'assigned-to-me')}
......
...@@ -12,13 +12,73 @@ ...@@ -12,13 +12,73 @@
= hidden_field_tag 'update[issues_ids]', [] = hidden_field_tag 'update[issues_ids]', []
= hidden_field_tag :status, params[:status] = hidden_field_tag :status, params[:status]
= button_tag "Save", class: "btn update_selected_issues btn-small btn-save" = button_tag "Save", class: "btn update_selected_issues btn-small btn-save"
.issues_filters .issues-filters
= form_tag project_issues_path(@project), method: :get, remote: true do %span Filter by
= select_tag(:label_name, options_for_select(issue_tags, params[:label_name]), prompt: "Labels") .dropdown.inline.prepend-left-10
= select_tag(:assignee_id, options_from_collection_for_select([unassigned_filter] + @project.users.all, "id", "name", params[:assignee_id]), prompt: "Assignee") %a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
= select_tag(:milestone_id, options_from_collection_for_select([unassigned_filter] + issues_active_milestones, "id", "title", params[:milestone_id]), prompt: "Milestone") %i.icon-tags
= hidden_field_tag :status, params[:status] %span.light labels:
= hidden_field_tag :issue_search, params[:status], id: 'filter_issue_search' - if params[:label_name].present?
%strong= params[:label_name]
- else
Any
%b.caret
%ul.dropdown-menu
%li
= link_to project_issues_with_filter_path(@project, label_name: nil) do
Any
- issue_label_names.each do |label_name|
%li
= link_to project_issues_with_filter_path(@project, label_name: label_name) do
%span{class: "label #{label_css_class(label_name)}"}
%i.icon-tag
= label_name
.dropdown.inline.prepend-left-10
%a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
%i.icon-user
%span.light assignee:
- if @assignee.present?
%strong= @assignee.name
- elsif params[:assignee_id] == "0"
Unassigned
- else
Any
%b.caret
%ul.dropdown-menu
%li
= link_to project_issues_with_filter_path(@project, assignee_id: nil) do
Any
= link_to project_issues_with_filter_path(@project, assignee_id: 0) do
Unassigned
- @project.users.sort_by(&:name).each do |user|
%li
= link_to project_issues_with_filter_path(@project, assignee_id: user.id) do
= image_tag gravatar_icon(user.email), class: "avatar s16"
= user.name
.dropdown.inline.prepend-left-10
%a.dropdown-toggle.btn.btn-small{href: '#', "data-toggle" => "dropdown"}
%i.icon-time
%span.light milestone:
- if @milestone.present?
%strong= @milestone.title
- elsif params[:milestone_id] == "0"
Unspecified
- else
Any
%b.caret
%ul.dropdown-menu
%li
= link_to project_issues_with_filter_path(@project, milestone_id: nil) do
Any
= link_to project_issues_with_filter_path(@project, milestone_id: 0) do
Unspecified
- issues_active_milestones.each do |milestone|
%li
= link_to project_issues_with_filter_path(@project, milestone_id: milestone.id) do
%strong= milestone.title
%small.light= milestone.expires_at
%ul.well-list.issues-list %ul.well-list.issues-list
= render @issues = render @issues
......
This diff is collapsed.
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