Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
d8263b28
Commit
d8263b28
authored
8 years ago
by
Thijs Wouters
Committed by
Alfredo Sumaran
8 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sort by label priority
Signed-off-by:
Rémy Coutable
<
remy@rymai.me
>
parent
0e2f26dd
No related merge requests found
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
77 additions
and
5 deletions
+77
-5
app/controllers/projects/labels_controller.rb
app/controllers/projects/labels_controller.rb
+1
-1
app/finders/issuable_finder.rb
app/finders/issuable_finder.rb
+6
-2
app/helpers/sorting_helper.rb
app/helpers/sorting_helper.rb
+10
-1
app/models/concerns/issuable.rb
app/models/concerns/issuable.rb
+8
-1
app/models/label.rb
app/models/label.rb
+23
-0
app/views/projects/labels/_form.html.haml
app/views/projects/labels/_form.html.haml
+4
-0
app/views/shared/_sort_dropdown.html.haml
app/views/shared/_sort_dropdown.html.haml
+2
-0
config/initializers/nulls_last.rb
config/initializers/nulls_last.rb
+15
-0
db/migrate/20160314094147_add_priority_to_label.rb
db/migrate/20160314094147_add_priority_to_label.rb
+6
-0
db/schema.rb
db/schema.rb
+2
-0
No files found.
app/controllers/projects/labels_controller.rb
View file @
d8263b28
...
...
@@ -100,7 +100,7 @@ class Projects::LabelsController < Projects::ApplicationController
end
def
label_params
params
.
require
(
:label
).
permit
(
:title
,
:description
,
:color
)
params
.
require
(
:label
).
permit
(
:title
,
:description
,
:color
,
:priority
)
end
def
label
...
...
This diff is collapsed.
Click to expand it.
app/finders/issuable_finder.rb
View file @
d8263b28
...
...
@@ -224,7 +224,7 @@ class IssuableFinder
def
sort
(
items
)
# Ensure we always have an explicit sort order (instead of inheriting
# multiple orders when combining ActiveRecord::Relation objects).
params
[
:sort
]
?
items
.
sort
(
params
[
:sort
])
:
items
.
reorder
(
id: :desc
)
params
[
:sort
]
?
items
.
sort
(
params
[
:sort
]
,
label_names
)
:
items
.
reorder
(
id: :desc
)
end
def
by_assignee
(
items
)
...
...
@@ -318,7 +318,11 @@ class IssuableFinder
end
def
label_names
params
[
:label_name
].
is_a?
(
String
)
?
params
[
:label_name
].
split
(
','
)
:
params
[
:label_name
]
if
labels?
params
[
:label_name
].
is_a?
(
String
)
?
params
[
:label_name
].
split
(
','
)
:
params
[
:label_name
]
else
[]
end
end
def
current_user_related?
...
...
This diff is collapsed.
Click to expand it.
app/helpers/sorting_helper.rb
View file @
d8263b28
...
...
@@ -14,7 +14,8 @@ module SortingHelper
sort_value_recently_signin
=>
sort_title_recently_signin
,
sort_value_oldest_signin
=>
sort_title_oldest_signin
,
sort_value_downvotes
=>
sort_title_downvotes
,
sort_value_upvotes
=>
sort_title_upvotes
sort_value_upvotes
=>
sort_title_upvotes
,
sort_value_priority
=>
sort_title_priority
}
end
...
...
@@ -28,6 +29,10 @@ module SortingHelper
}
end
def
sort_title_priority
'Priority'
end
def
sort_title_oldest_updated
'Oldest updated'
end
...
...
@@ -84,6 +89,10 @@ module SortingHelper
'Most popular'
end
def
sort_value_priority
'priority'
end
def
sort_value_oldest_updated
'updated_asc'
end
...
...
This diff is collapsed.
Click to expand it.
app/models/concerns/issuable.rb
View file @
d8263b28
...
...
@@ -48,6 +48,12 @@ module Issuable
scope
:non_archived
,
->
{
join_project
.
where
(
projects:
{
archived:
false
})
}
def
self
.
order_priority
(
labels
)
select
(
"
#{
table_name
}
.*, (
#{
Label
.
high_priority
(
name
,
table_name
,
labels
).
to_sql
}
) AS highest_priority"
)
.
group
(
"
#{
table_name
}
.id"
)
.
reorder
(
nulls_last
(
'highest_priority'
,
'ASC'
))
end
delegate
:name
,
:email
,
to: :author
,
...
...
@@ -105,12 +111,13 @@ module Issuable
where
(
t
[
:title
].
matches
(
pattern
).
or
(
t
[
:description
].
matches
(
pattern
)))
end
def
sort
(
method
)
def
sort
(
method
,
labels
=
[]
)
case
method
.
to_s
when
'milestone_due_asc'
then
order_milestone_due_asc
when
'milestone_due_desc'
then
order_milestone_due_desc
when
'downvotes_desc'
then
order_downvotes_desc
when
'upvotes_desc'
then
order_upvotes_desc
when
'priority'
then
order_priority
(
labels
)
else
order_by
(
method
)
end
...
...
This diff is collapsed.
Click to expand it.
app/models/label.rb
View file @
d8263b28
...
...
@@ -27,11 +27,28 @@ class Label < ActiveRecord::Base
format:
{
with:
/\A[^&\?,]+\z/
},
uniqueness:
{
scope: :project_id
}
before_save
:nillify_priority
default_scope
{
order
(
title: :asc
)
}
scope
:templates
,
->
{
where
(
template:
true
)
}
scope
:prioritized
,
->
(
value
=
true
)
{
where
(
priority:
value
)
}
def
self
.
high_priority
(
name
,
table_name
,
labels
)
unfiltered
=
unscoped
.
select
(
"MIN(labels.priority)"
)
.
joins
(
"INNER JOIN label_links ON label_links.label_id = labels.id"
)
.
where
(
"label_links.target_type = '
#{
name
}
'"
)
.
where
(
"label_links.target_id =
#{
table_name
}
.id"
)
.
where
(
"labels.project_id =
#{
table_name
}
.project_id"
)
if
labels
.
empty?
unfiltered
else
unfiltered
.
where
(
"labels.title NOT IN (?)"
,
labels
)
end
end
alias_attribute
:name
,
:title
def
self
.
reference_prefix
...
...
@@ -120,4 +137,10 @@ class Label < ActiveRecord::Base
id
end
end
def
nillify_priority
unless
self
.
priority
.
present?
self
.
priority
=
nil
end
end
end
This diff is collapsed.
Click to expand it.
app/views/projects/labels/_form.html.haml
View file @
d8263b28
...
...
@@ -24,6 +24,10 @@
-
suggested_colors
.
each
do
|
color
|
=
link_to
'#'
,
style:
"background-color:
#{
color
}
"
,
data:
{
color:
color
}
do
.form-group
=
f
.
label
:priority
,
"Priority"
,
class:
'control-label'
.col-sm-10
=
f
.
text_field
:priority
,
class:
"form-control"
.form-actions
-
if
@label
.
persisted?
...
...
This diff is collapsed.
Click to expand it.
app/views/shared/_sort_dropdown.html.haml
View file @
d8263b28
...
...
@@ -8,6 +8,8 @@
%b
.caret
%ul
.dropdown-menu.dropdown-menu-align-right.dropdown-menu-sort
%li
=
link_to
page_filter_path
(
sort:
sort_value_priority
)
do
=
sort_title_priority
=
link_to
page_filter_path
(
sort:
sort_value_recently_created
)
do
=
sort_title_recently_created
=
link_to
page_filter_path
(
sort:
sort_value_oldest_created
)
do
...
...
This diff is collapsed.
Click to expand it.
config/initializers/nulls_last.rb
0 → 100644
View file @
d8263b28
module
ActiveRecord
class
Base
def
self
.
nulls_last
(
field
,
direction
=
'ASC'
)
if
Gitlab
::
Database
.
postgresql?
"
#{
field
}
#{
direction
}
NULLS LAST"
else
if
direction
.
upcase
==
'ASC'
"-
#{
field
}
DESC"
else
"
#{
field
}
DESC"
end
end
end
end
end
This diff is collapsed.
Click to expand it.
db/migrate/20160314094147_add_priority_to_label.rb
0 → 100644
View file @
d8263b28
class
AddPriorityToLabel
<
ActiveRecord
::
Migration
def
change
add_column
:labels
,
:priority
,
:integer
add_index
:labels
,
:priority
end
end
This diff is collapsed.
Click to expand it.
db/schema.rb
View file @
d8263b28
...
...
@@ -496,8 +496,10 @@ ActiveRecord::Schema.define(version: 20160530150109) do
t
.
datetime
"updated_at"
t
.
boolean
"template"
,
default:
false
t
.
string
"description"
t
.
integer
"priority"
end
add_index
"labels"
,
[
"priority"
],
name:
"index_labels_on_priority"
,
using: :btree
add_index
"labels"
,
[
"project_id"
],
name:
"index_labels_on_project_id"
,
using: :btree
create_table
"lfs_objects"
,
force: :cascade
do
|
t
|
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment