diff --git a/app/components/global-search.js b/app/components/global-search.js
index 79178d414d..16c85fc518 100644
--- a/app/components/global-search.js
+++ b/app/components/global-search.js
@@ -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;
});
diff --git a/app/components/user-search.js b/app/components/user-search.js
index 958d856732..d60907528b 100644
--- a/app/components/user-search.js
+++ b/app/components/user-search.js
@@ -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 = {
diff --git a/app/styles/components/_global-search.scss b/app/styles/components/_global-search.scss
index d979a05d09..b109ebb373 100644
--- a/app/styles/components/_global-search.scss
+++ b/app/styles/components/_global-search.scss
@@ -37,6 +37,11 @@
color: darken($header-grey, 20);
font-style: italic;
}
+
+ &.results-count {
+ color: $ilios-green;
+ cursor: default;
+ }
div {
font-size: 14px;
diff --git a/app/styles/components/_livesearch.scss b/app/styles/components/_livesearch.scss
index 8e3de65cc5..0d1cfad59f 100644
--- a/app/styles/components/_livesearch.scss
+++ b/app/styles/components/_livesearch.scss
@@ -30,6 +30,11 @@
color: darken($header-grey, 20);
font-style: italic;
}
+
+ &.results-count {
+ color: $ilios-green;
+ cursor: default;
+ }
}
}
}
diff --git a/app/templates/components/global-search.hbs b/app/templates/components/global-search.hbs
index 206956f4a3..f568591b80 100644
--- a/app/templates/components/global-search.hbs
+++ b/app/templates/components/global-search.hbs
@@ -17,6 +17,7 @@
{{t 'general.currentlySearchingPrompt'}}
{{else}}
{{#if searchResults.content}}
+ {{searchResults.content.length}} {{t 'general.results'}}
{{#each searchResults.content as |proxy|}}
{{#link-to 'user' proxy}}
diff --git a/app/templates/components/user-search.hbs b/app/templates/components/user-search.hbs
index 49bd800898..d581b0364f 100644
--- a/app/templates/components/user-search.hbs
+++ b/app/templates/components/user-search.hbs
@@ -12,6 +12,7 @@
{{else}}
{{#if results.length}}
+ - {{results.length}} {{t 'general.results'}}
{{#each results as |proxy|}}
{{#if proxy.isUser}}
{{#if proxy.isActive}}
diff --git a/tests/acceptance/admin-test.js b/tests/acceptance/admin-test.js
index 3de24eb0a3..86c268da22 100644
--- a/tests/acceptance/admin-test.js
+++ b/tests/acceptance/admin-test.js
@@ -36,7 +36,7 @@ test('can search for users', function(assert) {
server.createList('user', 20, { email: 'user@example.edu' });
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';
diff --git a/tests/acceptance/course/overview-test.js b/tests/acceptance/course/overview-test.js
index 852726bffa..3496399ea9 100644
--- a/tests/acceptance/course/overview-test.js
+++ b/tests/acceptance/course/overview-test.js
@@ -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'));
@@ -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'));
});
});
});
diff --git a/tests/acceptance/course/session/ilm-test.js b/tests/acceptance/course/session/ilm-test.js
index 99f26a86b0..d1b0fbbde4 100644
--- a/tests/acceptance/course/session/ilm-test.js
+++ b/tests/acceptance/course/session/ilm-test.js
@@ -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);
@@ -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);
@@ -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(){
@@ -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(){
diff --git a/tests/acceptance/course/session/offerings-test.js b/tests/acceptance/course/session/offerings-test.js
index e45ad00bfc..faedabf7f8 100644
--- a/tests/acceptance/course/session/offerings-test.js
+++ b/tests/acceptance/course/session/offerings-test.js
@@ -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';
@@ -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');
diff --git a/tests/acceptance/instructorgroup-test.js b/tests/acceptance/instructorgroup-test.js
index 10a14cf689..2f23ccbd4b 100644
--- a/tests/acceptance/instructorgroup-test.js
+++ b/tests/acceptance/instructorgroup-test.js
@@ -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'));
});
});
});
@@ -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'));
diff --git a/tests/acceptance/learnergroup/overview-test.js b/tests/acceptance/learnergroup/overview-test.js
index 74d96b402a..83fa3f7f26 100644
--- a/tests/acceptance/learnergroup/overview-test.js
+++ b/tests/acceptance/learnergroup/overview-test.js
@@ -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'));
});
});
});
@@ -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'));
diff --git a/tests/acceptance/program/programyear/overview-test.js b/tests/acceptance/program/programyear/overview-test.js
index 739ab2ef19..06a834f4cc 100644
--- a/tests/acceptance/program/programyear/overview-test.js
+++ b/tests/acceptance/program/programyear/overview-test.js
@@ -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'));
});
});
});
@@ -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'));
diff --git a/tests/acceptance/user-test.js b/tests/acceptance/user-test.js
index c60a0528bf..d539b97f63 100644
--- a/tests/acceptance/user-test.js
+++ b/tests/acceptance/user-test.js
@@ -61,7 +61,7 @@ test('can search for users', function(assert) {
server.createList('user', 20, { email: 'user@example.edu' });
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';