Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved user search #1233

Merged
merged 2 commits into from
Dec 11, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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