mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Added sort by username for directory items (#10482)
* done-sorting-usernames-on-users-page * sorted-usernames-on-users-page * spec written * specs added
This commit is contained in:
parent
6c3b1eb9b9
commit
ae7ff5eb73
@ -13,7 +13,14 @@
|
|||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
{{text-field value=nameInput placeholderKey="directory.filter_name" class="filter-name no-blur"}}
|
<div>
|
||||||
|
<span class="total-rows">
|
||||||
|
{{#if model.totalRows}}
|
||||||
|
{{i18n "directory.total_rows" count=model.totalRows}}
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
{{text-field value=nameInput placeholderKey="directory.filter_name" class="filter-name no-blur"}}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{#conditional-loading-spinner condition=isLoading}}
|
{{#conditional-loading-spinner condition=isLoading}}
|
||||||
@ -21,7 +28,7 @@
|
|||||||
|
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<th>{{i18n "directory.total_rows" count=model.totalRows}}</th>
|
{{table-header-toggle field="username" order=order asc=asc}}
|
||||||
{{table-header-toggle field="likes_received" order=order asc=asc icon="heart"}}
|
{{table-header-toggle field="likes_received" order=order asc=asc icon="heart"}}
|
||||||
{{table-header-toggle field="likes_given" order=order asc=asc icon="heart"}}
|
{{table-header-toggle field="likes_given" order=order asc=asc icon="heart"}}
|
||||||
{{table-header-toggle field="topic_count" order=order asc=asc}}
|
{{table-header-toggle field="topic_count" order=order asc=asc}}
|
||||||
|
@ -23,6 +23,9 @@
|
|||||||
.directory-controls {
|
.directory-controls {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
.total-rows {
|
||||||
|
color: var(--primary-medium);
|
||||||
|
}
|
||||||
.filter-name {
|
.filter-name {
|
||||||
height: 1em;
|
height: 1em;
|
||||||
}
|
}
|
||||||
|
@ -27,9 +27,11 @@ class DirectoryItemsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
order = params[:order] || DirectoryItem.headings.first
|
order = params[:order] || DirectoryItem.headings.first
|
||||||
|
dir = params[:asc] ? 'ASC' : 'DESC'
|
||||||
if DirectoryItem.headings.include?(order.to_sym)
|
if DirectoryItem.headings.include?(order.to_sym)
|
||||||
dir = params[:asc] ? 'ASC' : 'DESC'
|
|
||||||
result = result.order("directory_items.#{order} #{dir}")
|
result = result.order("directory_items.#{order} #{dir}")
|
||||||
|
elsif params[:order] === 'username'
|
||||||
|
result = result.order("users.#{order} #{dir}")
|
||||||
end
|
end
|
||||||
|
|
||||||
if period_type == DirectoryItem.period_types[:all]
|
if period_type == DirectoryItem.period_types[:all]
|
||||||
|
@ -578,6 +578,7 @@ en:
|
|||||||
sent_by_you: "Sent by <a href='%{userUrl}'>you</a>"
|
sent_by_you: "Sent by <a href='%{userUrl}'>you</a>"
|
||||||
|
|
||||||
directory:
|
directory:
|
||||||
|
username: "Username"
|
||||||
filter_name: "filter by username"
|
filter_name: "filter by username"
|
||||||
title: "Users"
|
title: "Users"
|
||||||
likes_given: "Given"
|
likes_given: "Given"
|
||||||
|
@ -60,6 +60,25 @@ describe DirectoryItemsController do
|
|||||||
expect(response).not_to be_successful
|
expect(response).not_to be_successful
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "sort username with asc as a parameter" do
|
||||||
|
get '/directory_items.json', params: { asc: true, order: 'username', period: 'all' }
|
||||||
|
expect(response.status).to eq(200)
|
||||||
|
json = response.parsed_body
|
||||||
|
|
||||||
|
names = json['directory_items'].map { |item| item['user']['username'] }
|
||||||
|
expect(names).to eq(names.sort)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "sort username without asc as a parameter" do
|
||||||
|
get '/directory_items.json', params: { order: 'username', period: 'all' }
|
||||||
|
expect(response.status).to eq(200)
|
||||||
|
json = response.parsed_body
|
||||||
|
|
||||||
|
names = json['directory_items'].map { |item| item['user']['username'] }
|
||||||
|
|
||||||
|
expect(names).to eq(names.sort.reverse)
|
||||||
|
end
|
||||||
|
|
||||||
it "finds user by name" do
|
it "finds user by name" do
|
||||||
get '/directory_items.json', params: { period: 'all', name: 'eviltrout' }
|
get '/directory_items.json', params: { period: 'all', name: 'eviltrout' }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
Loading…
Reference in New Issue
Block a user