From 308417852c218501af60aeae3f947707cc7c64cc Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 19 Apr 2019 14:57:52 +0200 Subject: [PATCH 1/3] Search user in admin panel --- client/components/settings/peopleBody.jade | 6 ++++-- client/components/settings/peopleBody.js | 23 +++++++++++++++++++++- client/components/settings/peopleBody.styl | 17 ++++++++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index 4d06637e2..e459da6e0 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -3,8 +3,10 @@ template(name="people") unless currentUser.isAdmin | {{_ 'error-notAuthorized'}} else - .content-title + .content-title.ext-box span {{_ 'people'}} + input#searchInput(placeholder="{{_ 'search'}}") + button#searchButton {{_ 'enter'}} .content-body .side-menu ul @@ -103,4 +105,4 @@ template(name="editUserPopup") | {{_ 'password'}} input.js-profile-password(type="password") - input.primary.wide(type="submit" value="{{_ 'save'}}") \ No newline at end of file + input.primary.wide(type="submit" value="{{_ 'save'}}") diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index a4d709743..245c88847 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -8,6 +8,7 @@ BlazeComponent.extendComponent({ this.error = new ReactiveVar(''); this.loading = new ReactiveVar(false); this.people = new ReactiveVar(true); + this.findUsersOptions = new ReactiveVar({}); this.page = new ReactiveVar(1); this.loadNextPageLocked = false; @@ -26,6 +27,25 @@ BlazeComponent.extendComponent({ }); }); }, + events() { + return [{ + 'click #searchButton'(event) { + const value = $('#searchInput').first().val(); + if (value === '') { + this.findUsersOptions.set({}); + } else { + const regex = new RegExp(value, 'i'); + this.findUsersOptions.set({ + $or: [ + { username: regex }, + { 'profile.fullname': regex }, + { 'emails.address': regex }, + ] + }); + } + } + }]; + }, loadNextPage() { if (this.loadNextPageLocked === false) { this.page.set(this.page.get() + 1); @@ -49,7 +69,8 @@ BlazeComponent.extendComponent({ this.loading.set(w); }, peopleList() { - return Users.find({}, { + // get users in front to cache them + return Users.find(this.findUsersOptions.get(), { fields: {_id: true}, }); }, diff --git a/client/components/settings/peopleBody.styl b/client/components/settings/peopleBody.styl index 84db44a7a..fb9d5c6b9 100644 --- a/client/components/settings/peopleBody.styl +++ b/client/components/settings/peopleBody.styl @@ -13,3 +13,20 @@ table tr:nth-child(even) background-color: #dddddd; + +.ext-box + display: flex; + flex-direction: row; + height: 34px; + + span + vertical-align: center; + line-height: 34px; + margin-right: 10px; + + input, button + margin: 0 10px 0 0; + padding: 0; + + button + min-width: 60px; From 070feb4b664cf84613fed378d568a9449c3780e6 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 19 Apr 2019 16:17:17 +0200 Subject: [PATCH 2/3] Number of users --- client/components/settings/peopleBody.jade | 9 +++-- client/components/settings/peopleBody.js | 42 ++++++++++++++-------- client/components/settings/peopleBody.styl | 4 +++ i18n/en.i18n.json | 3 +- i18n/fr.i18n.json | 5 +-- 5 files changed, 43 insertions(+), 20 deletions(-) diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index e459da6e0..30b7a807e 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -4,9 +4,12 @@ template(name="people") | {{_ 'error-notAuthorized'}} else .content-title.ext-box - span {{_ 'people'}} - input#searchInput(placeholder="{{_ 'search'}}") - button#searchButton {{_ 'enter'}} + .ext-box-left + span {{_ 'people'}} + input#searchInput(placeholder="{{_ 'search'}}") + button#searchButton {{_ 'enter'}} + .ext-box-right + span {{_ 'people-number'}} #{peopleNumber} .content-body .side-menu ul diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index 245c88847..db7be138b 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -9,6 +9,7 @@ BlazeComponent.extendComponent({ this.loading = new ReactiveVar(false); this.people = new ReactiveVar(true); this.findUsersOptions = new ReactiveVar({}); + this.number = new ReactiveVar(0); this.page = new ReactiveVar(1); this.loadNextPageLocked = false; @@ -30,22 +31,30 @@ BlazeComponent.extendComponent({ events() { return [{ 'click #searchButton'(event) { - const value = $('#searchInput').first().val(); - if (value === '') { - this.findUsersOptions.set({}); - } else { - const regex = new RegExp(value, 'i'); - this.findUsersOptions.set({ - $or: [ - { username: regex }, - { 'profile.fullname': regex }, - { 'emails.address': regex }, - ] - }); + this.filterPeople(event); + }, + 'keydown #searchInput'(event) { + if (event.keyCode === 13 && !event.shiftKey) { + this.filterPeople(event); } } }]; }, + filterPeople(event) { + const value = $('#searchInput').first().val(); + if (value === '') { + this.findUsersOptions.set({}); + } else { + const regex = new RegExp(value, 'i'); + this.findUsersOptions.set({ + $or: [ + { username: regex }, + { 'profile.fullname': regex }, + { 'emails.address': regex }, + ] + }); + } + }, loadNextPage() { if (this.loadNextPageLocked === false) { this.page.set(this.page.get() + 1); @@ -69,11 +78,16 @@ BlazeComponent.extendComponent({ this.loading.set(w); }, peopleList() { - // get users in front to cache them - return Users.find(this.findUsersOptions.get(), { + const users = Users.find(this.findUsersOptions.get(), { fields: {_id: true}, }); + this.number.set(users.count()); + return users; }, + peopleNumber() { + return this.number.get(); + } + }).register('people'); Template.peopleRow.helpers({ diff --git a/client/components/settings/peopleBody.styl b/client/components/settings/peopleBody.styl index fb9d5c6b9..b98c53409 100644 --- a/client/components/settings/peopleBody.styl +++ b/client/components/settings/peopleBody.styl @@ -19,6 +19,10 @@ table flex-direction: row; height: 34px; + .ext-box-left + display: flex; + width: 40% + span vertical-align: center; line-height: 34px; diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 4e4af38bb..22e159346 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -686,5 +686,6 @@ "error-ldap-login": "An error occurred while trying to login", "display-authentication-method": "Display Authentication Method", "default-authentication-method": "Default Authentication Method", - "duplicate-board": "Duplicate Board" + "duplicate-board": "Duplicate Board", + "people-number": "The number of people is: " } diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index bc7614d57..1eb2a278d 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -683,5 +683,6 @@ "error-ldap-login": "Une erreur s'est produite lors de la tentative de connexion", "display-authentication-method": "Afficher la méthode d'authentification", "default-authentication-method": "Méthode d'authentification par défaut", - "duplicate-board": "Dupliquer le tableau" -} \ No newline at end of file + "duplicate-board": "Dupliquer le tableau", + "people-number": "Le nombre d'utilisateurs est de : " +} From e63eee0c68d35a155da79f31ab18ddc5a76bde13 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 19 Apr 2019 16:39:14 +0200 Subject: [PATCH 3/3] fix lints --- client/components/settings/peopleBody.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/client/components/settings/peopleBody.js b/client/components/settings/peopleBody.js index db7be138b..3ec96bb00 100644 --- a/client/components/settings/peopleBody.js +++ b/client/components/settings/peopleBody.js @@ -30,17 +30,17 @@ BlazeComponent.extendComponent({ }, events() { return [{ - 'click #searchButton'(event) { - this.filterPeople(event); + 'click #searchButton'() { + this.filterPeople(); }, 'keydown #searchInput'(event) { if (event.keyCode === 13 && !event.shiftKey) { - this.filterPeople(event); + this.filterPeople(); } - } + }, }]; }, - filterPeople(event) { + filterPeople() { const value = $('#searchInput').first().val(); if (value === '') { this.findUsersOptions.set({}); @@ -51,7 +51,7 @@ BlazeComponent.extendComponent({ { username: regex }, { 'profile.fullname': regex }, { 'emails.address': regex }, - ] + ], }); } }, @@ -86,8 +86,7 @@ BlazeComponent.extendComponent({ }, peopleNumber() { return this.number.get(); - } - + }, }).register('people'); Template.peopleRow.helpers({