Skip to content

Commit

Permalink
Merge pull request #1233 from jrjohnson/1228-globalsearchlimit
Browse files Browse the repository at this point in the history
Improved user search
  • Loading branch information
stopfstedt committed Dec 11, 2015
2 parents 05546ce + 132bb82 commit e21a435
Show file tree
Hide file tree
Showing 14 changed files with 77 additions and 56 deletions.
3 changes: 2 additions & 1 deletion app/components/global-search.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ export default Component.extend({
const searchResults = store.query('user', {
q,
'order_by[lastName]': 'ASC',
'order_by[firstName]': 'ASC'
'order_by[firstName]': 'ASC',
limit: 100
}).then((users) => {
return users;
});
Expand Down
3 changes: 2 additions & 1 deletion app/components/user-search.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ export default Component.extend({
sortTerm: oneWay('content.title'),
});
let query = {
q: searchTerms
q: searchTerms,
limit: 100
};
if (this.get('roles')) {
query.filters = {
Expand Down
5 changes: 5 additions & 0 deletions app/styles/components/_global-search.scss
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@
color: darken($header-grey, 20);
font-style: italic;
}

&.results-count {
color: $ilios-green;
cursor: default;
}

div {
font-size: 14px;
Expand Down
5 changes: 5 additions & 0 deletions app/styles/components/_livesearch.scss
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@
color: darken($header-grey, 20);
font-style: italic;
}

&.results-count {
color: $ilios-green;
cursor: default;
}
}
}
}
Expand Down
1 change: 1 addition & 0 deletions app/templates/components/global-search.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
<li>{{t 'general.currentlySearchingPrompt'}}</li>
{{else}}
{{#if searchResults.content}}
<li class='results-count'>{{searchResults.content.length}} {{t 'general.results'}}</li>
{{#each searchResults.content as |proxy|}}
<li>
{{#link-to 'user' proxy}}
Expand Down
1 change: 1 addition & 0 deletions app/templates/components/user-search.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
{{else}}
{{#if results.length}}
<ul class='results'>
<li class='results-count'>{{results.length}} {{t 'general.results'}}</li>
{{#each results as |proxy|}}
{{#if proxy.isUser}}
{{#if proxy.isActive}}
Expand Down
2 changes: 1 addition & 1 deletion tests/acceptance/admin-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ test('can search for users', function(assert) {
server.createList('user', 20, { email: '[email protected]' });

const userSearch = '.global-search input';
const secondResult = '.global-search .results li:eq(1)';
const secondResult = '.global-search .results li:eq(2)';
const secondResultUsername = `${secondResult} a .livesearch-user-name`;
const secondResultEmail = `${secondResult} a .livesearch-user-email`;
const name = '.user-display-name';
Expand Down
33 changes: 18 additions & 15 deletions tests/acceptance/course/overview-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -413,17 +413,18 @@ test('manage directors', function(assert) {
click('span.search-icon', searchBox);
andThen(function(){
let searchResults = find('.live-search li', directors);
assert.equal(searchResults.length, 3);
assert.equal(getElementText($(searchResults[0])), getText('0 guy M. Mc0son'));
assert.ok(!$(searchResults[0]).hasClass('inactive'));
assert.equal(getElementText($(searchResults[1])), getText('Added M. Guy'));
assert.ok($(searchResults[1]).hasClass('inactive'));
assert.equal(getElementText($(searchResults[2])), getText('Disabled M. Guy'));
assert.equal(searchResults.length, 4);
assert.equal(getElementText($(searchResults[0])), getText('3 Results'));
assert.equal(getElementText($(searchResults[1])), getText('0 guy M. Mc0son'));
assert.ok(!$(searchResults[1]).hasClass('inactive'));
assert.equal(getElementText($(searchResults[2])), getText('Added M. Guy'));
assert.ok($(searchResults[2]).hasClass('inactive'));
assert.equal(getElementText($(searchResults[3])), getText('Disabled M. Guy'));
assert.ok($(searchResults[3]).hasClass('inactive'));

click('.removable-list li:eq(0)', directors).then(function(){
assert.ok(!$(find('.live-search li:eq(1)', directors)).hasClass('inactive'));
click(searchResults[0]);
assert.ok(!$(find('.live-search li:eq(2)', directors)).hasClass('inactive'));
click(searchResults[1]);
});
andThen(function(){
assert.equal(getElementText(find('.coursedirectors .removable-list')), getText('0 guy M. Mc0son'));
Expand Down Expand Up @@ -465,18 +466,20 @@ test('search twice and list should be correct', function(assert) {
click('span.search-icon', searchBox);
andThen(function(){
let searchResults = find('.live-search li', directors);
assert.equal(searchResults.length, 2);
assert.equal(getElementText($(searchResults[0])), getText('0 guy M. Mc0son'));
assert.equal(getElementText($(searchResults[1])), getText('Added M. Guy'));
click(searchResults[0]).then(function(){
assert.equal(searchResults.length, 3);
assert.equal(getElementText($(searchResults[0])), getText('2 Results'));
assert.equal(getElementText($(searchResults[1])), getText('0 guy M. Mc0son'));
assert.equal(getElementText($(searchResults[2])), getText('Added M. Guy'));
click(searchResults[1]).then(function(){
let searchBoxInput = find('input', searchBox);
fillIn(searchBoxInput, 'guy');
click('span.search-icon', searchBox);
andThen(function(){
let searchResults = find('.live-search li', directors);
assert.equal(searchResults.length, 2);
assert.equal(getElementText($(searchResults[0])), getText('0 guy M. Mc0son'));
assert.equal(getElementText($(searchResults[1])), getText('Added M. Guy'));
assert.equal(searchResults.length, 3);
assert.equal(getElementText($(searchResults[0])), getText('2 Results'));
assert.equal(getElementText($(searchResults[1])), getText('0 guy M. Mc0son'));
assert.equal(getElementText($(searchResults[2])), getText('Added M. Guy'));
});
});
});
Expand Down
12 changes: 6 additions & 6 deletions tests/acceptance/course/session/ilm-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -319,8 +319,8 @@ test('manage instructors search users', function(assert) {
fillIn(searchBoxInput, 'guy');
click('span.search-icon', searchBox).then(()=>{
let searchResults = find('.live-search .results li', container);
assert.equal(searchResults.length, 7);
let expectedResults = '0 guy M. Mc0son 1 guy M. Mc1son 2 guy M. Mc2son 3 guy M. Mc3son 4 guy M. Mc4son 5 guy M. Mc5son 6 guy M. Mc6son';
assert.equal(searchResults.length, 8);
let expectedResults = '7 Results 0 guy M. Mc0son 1 guy M. Mc1son 2 guy M. Mc2son 3 guy M. Mc3son 4 guy M. Mc4son 5 guy M. Mc5son 6 guy M. Mc6son';
assert.equal(getElementText(searchResults), getText(expectedResults));

let activeResults = find('.live-search .results li.active', container);
Expand Down Expand Up @@ -349,8 +349,8 @@ test('manage instructors search groups', function(assert) {
fillIn(searchBoxInput, 'group');
click('span.search-icon', searchBox).then(()=>{
let searchResults = find('.live-search .results li', container);
assert.equal(searchResults.length, 5);
let expectedResults = 'instructorgroup 0 instructorgroup 1 instructorgroup 2 instructorgroup 3 instructorgroup 4';
assert.equal(searchResults.length, 6);
let expectedResults = '5 Results instructorgroup 0 instructorgroup 1 instructorgroup 2 instructorgroup 3 instructorgroup 4';
assert.equal(getElementText(searchResults), getText(expectedResults));

let activeResults = find('.live-search .results li.active', container);
Expand All @@ -372,7 +372,7 @@ test('add instructor group', function(assert) {
let input = find('.search-box input', container);
fillIn(input, 'group');
click('span.search-icon', container).then(()=>{
click('.live-search .results li:eq(3)');
click('.live-search .results li:eq(4)');
});
});
andThen(function(){
Expand Down Expand Up @@ -406,7 +406,7 @@ test('add instructor', function(assert) {
let input = find('.search-box input', container);
fillIn(input, 'guy');
click('span.search-icon', container).then(()=>{
click('.live-search .results li:eq(4)');
click('.live-search .results li:eq(5)');
});
});
andThen(function(){
Expand Down
3 changes: 2 additions & 1 deletion tests/acceptance/course/session/offerings-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ test('users can edit existing offerings (single & multi-day)', function(assert)

const learnerGroupOne = '.selectable li:first';
const searchBox = '.search-box:last input';
const searchBoxOption = '.live-search li:first';
const searchBoxOption = '.live-search li:contains("instructor group 0")';
const createButton = '.done';

const dayOfWeek = '.offering-block-date-dayofweek:first';
Expand Down Expand Up @@ -470,6 +470,7 @@ test('users can edit existing offerings (single & multi-day)', function(assert)
click(searchBoxOption);
click(createButton);
andThen(() => {

assert.equal(find(multiDayDesc).text().trim(), 'Multiday', 'multi-day statement is correct');
assert.equal(find(multiDayStarts).text().trim(), 'Starts Wednesday October 5th @ 11:45 AM', 'multi-day statement is correct');
assert.equal(find(multiDayEnds).text().trim(), 'Ends Sunday December 25th @ 7:30 PM', 'multi-day statement is correct');
Expand Down
21 changes: 11 additions & 10 deletions tests/acceptance/instructorgroup-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,17 +109,18 @@ test('search instructors', function(assert) {
var container = find('.instructorgroup-overview').eq(0);
fillIn(find('.search-box input', container), 'guy').then(function(){
var searchResults = find('.results li', container);
assert.equal(searchResults.length, 5);
assert.equal(getElementText(searchResults.eq(0)), getText('0 guy M. Mc0son'));
assert.ok(searchResults.eq(0).hasClass('active'));
assert.equal(getElementText(searchResults.eq(1)), getText('1 guy M. Mc1son'));
assert.ok(!searchResults.eq(1).hasClass('active'));
assert.equal(getElementText(searchResults.eq(2)), getText('2 guy M. Mc2son'));
assert.equal(searchResults.length, 6);
assert.equal(getElementText(searchResults.eq(0)), getText('5 Results'));
assert.equal(getElementText(searchResults.eq(1)), getText('0 guy M. Mc0son'));
assert.ok(searchResults.eq(1).hasClass('active'));
assert.equal(getElementText(searchResults.eq(2)), getText('1 guy M. Mc1son'));
assert.ok(!searchResults.eq(2).hasClass('active'));
assert.equal(getElementText(searchResults.eq(3)), getText('3 guy M. Mc3son'));
assert.ok(searchResults.eq(3).hasClass('active'));
assert.equal(getElementText(searchResults.eq(4)), getText('4 guy M. Mc4son'));
assert.equal(getElementText(searchResults.eq(3)), getText('2 guy M. Mc2son'));
assert.ok(!searchResults.eq(3).hasClass('active'));
assert.equal(getElementText(searchResults.eq(4)), getText('3 guy M. Mc3son'));
assert.ok(searchResults.eq(4).hasClass('active'));
assert.equal(getElementText(searchResults.eq(5)), getText('4 guy M. Mc4son'));
assert.ok(searchResults.eq(5).hasClass('active'));
});
});
});
Expand All @@ -135,7 +136,7 @@ test('add instructor', function(assert) {
assert.equal(getElementText(items.eq(1)), getText('2 guy M. Mc2son'));

fillIn(find('.search-box input', container), 'guy').then(function(){
click('.results li:eq(3)', container).then(function(){
click('.results li:eq(4)', container).then(function(){
var items = find('.removable-list li', container);
assert.equal(items.length, 3);
assert.equal(getElementText(items.eq(0)), getText('1 guy M. Mc1son'));
Expand Down
19 changes: 10 additions & 9 deletions tests/acceptance/learnergroup/overview-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,17 +121,18 @@ test('search default instructors', function(assert) {
var container = find('.learnergroup-overview').eq(0);
fillIn(find('.search-box input', container), 'guy').then(function(){
var searchResults = find('.results li', container);
assert.equal(searchResults.length, 5);
assert.equal(getElementText(searchResults.eq(0)), getText('0 guy M. Mc0son'));
assert.ok(searchResults.eq(0).hasClass('active'));
assert.equal(getElementText(searchResults.eq(1)), getText('1 guy M. Mc1son'));
assert.equal(searchResults.length, 6);
assert.equal(getElementText(searchResults.eq(0)), getText('5 Results'));
assert.equal(getElementText(searchResults.eq(1)), getText('0 guy M. Mc0son'));
assert.ok(searchResults.eq(1).hasClass('active'));
assert.equal(getElementText(searchResults.eq(2)), getText('2 guy M. Mc2son'));
assert.equal(getElementText(searchResults.eq(2)), getText('1 guy M. Mc1son'));
assert.ok(searchResults.eq(2).hasClass('active'));
assert.equal(getElementText(searchResults.eq(3)), getText('3 guy M. Mc3son'));
assert.ok(searchResults.eq(3).hasClass('inactive'));
assert.equal(getElementText(searchResults.eq(4)), getText('4 guy M. Mc4son'));
assert.equal(getElementText(searchResults.eq(3)), getText('2 guy M. Mc2son'));
assert.ok(searchResults.eq(3).hasClass('active'));
assert.equal(getElementText(searchResults.eq(4)), getText('3 guy M. Mc3son'));
assert.ok(searchResults.eq(4).hasClass('inactive'));
assert.equal(getElementText(searchResults.eq(5)), getText('4 guy M. Mc4son'));
assert.ok(searchResults.eq(5).hasClass('inactive'));
});
});
});
Expand All @@ -147,7 +148,7 @@ test('add default instructor', function(assert) {
assert.equal(getElementText(items.eq(1)), getText('4 guy M. Mc4son'));

fillIn(find('.search-box input', container), 'guy').then(function(){
click('.results li:eq(1)', container).then(function(){
click('.results li:eq(2)', container).then(function(){
var items = find('.removable-list li', container);
assert.equal(items.length, 3);
assert.equal(getElementText(items.eq(0)), getText('1 guy M. Mc1son'));
Expand Down
23 changes: 12 additions & 11 deletions tests/acceptance/program/programyear/overview-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,20 @@ test('search directors', function(assert) {
var container = find('.programyear-overview').eq(0);
fillIn(find('.search-box input', container), 'guy').then(function(){
var searchResults = find('.results li', container);
assert.equal(searchResults.length, 6);
assert.equal(getElementText(searchResults.eq(0)), getText('0 guy M. Mc0son'));
assert.ok(searchResults.eq(0).hasClass('active'));
assert.equal(getElementText(searchResults.eq(1)), getText('1 guy M. Mc1son'));
assert.ok(searchResults.eq(1).hasClass('inactive'));
assert.equal(getElementText(searchResults.eq(2)), getText('2 guy M. Mc2son'));
assert.equal(searchResults.length, 7);
assert.equal(getElementText(searchResults.eq(0)), getText('6 Results'));
assert.equal(getElementText(searchResults.eq(1)), getText('0 guy M. Mc0son'));
assert.ok(searchResults.eq(1).hasClass('active'));
assert.equal(getElementText(searchResults.eq(2)), getText('1 guy M. Mc1son'));
assert.ok(searchResults.eq(2).hasClass('inactive'));
assert.equal(getElementText(searchResults.eq(3)), getText('3 guy M. Mc3son'));
assert.equal(getElementText(searchResults.eq(3)), getText('2 guy M. Mc2son'));
assert.ok(searchResults.eq(3).hasClass('inactive'));
assert.equal(getElementText(searchResults.eq(4)), getText('4 guy M. Mc4son'));
assert.ok(searchResults.eq(4).hasClass('active'));
assert.equal(getElementText(searchResults.eq(5)), getText('5 guy M. Mc5son'));
assert.equal(getElementText(searchResults.eq(4)), getText('3 guy M. Mc3son'));
assert.ok(searchResults.eq(4).hasClass('inactive'));
assert.equal(getElementText(searchResults.eq(5)), getText('4 guy M. Mc4son'));
assert.ok(searchResults.eq(5).hasClass('active'));
assert.equal(getElementText(searchResults.eq(6)), getText('5 guy M. Mc5son'));
assert.ok(searchResults.eq(6).hasClass('active'));
});
});
});
Expand All @@ -84,7 +85,7 @@ test('add director', function(assert) {
assert.equal(getElementText(items.eq(2)), getText('3 guy M. Mc3son'));

fillIn(find('.search-box input', container), 'guy').then(function(){
click('.results li:eq(5)', container).then(function(){
click('.results li:eq(6)', container).then(function(){
var items = find('.removable-list li', container);
assert.equal(items.length, 4);
assert.equal(getElementText(items.eq(0)), getText('1 guy M. Mc1son'));
Expand Down
2 changes: 1 addition & 1 deletion tests/acceptance/user-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ test('can search for users', function(assert) {
server.createList('user', 20, { email: '[email protected]' });

const userSearch = '.global-search input';
const secondResult = '.global-search .results li:eq(1)';
const secondResult = '.global-search .results li:eq(2)';
const secondResultUsername = `${secondResult} a .livesearch-user-name`;
const secondResultEmail = `${secondResult} a .livesearch-user-email`;
const name = '.user-display-name';
Expand Down

0 comments on commit e21a435

Please sign in to comment.