Browse Source

Merge branch 'edge' of https://github.com/Akuket/wekan into Akuket-edge

Lauri Ojansivu 6 years ago
parent
commit
b8275b3404

+ 8 - 3
client/components/settings/peopleBody.jade

@@ -3,8 +3,13 @@ template(name="people")
     unless currentUser.isAdmin
       | {{_ 'error-notAuthorized'}}
     else
-      .content-title
-        span {{_ 'people'}}
+      .content-title.ext-box
+        .ext-box-left
+          span {{_ 'people'}}
+          input#searchInput(placeholder="{{_ 'search'}}")
+          button#searchButton {{_ 'enter'}}
+        .ext-box-right
+          span {{_ 'people-number'}} #{peopleNumber}
       .content-body
         .side-menu
           ul
@@ -103,4 +108,4 @@ template(name="editUserPopup")
       | {{_ 'password'}}
       input.js-profile-password(type="password")
 
-    input.primary.wide(type="submit" value="{{_ 'save'}}")
+    input.primary.wide(type="submit" value="{{_ 'save'}}")

+ 35 - 1
client/components/settings/peopleBody.js

@@ -8,6 +8,8 @@ BlazeComponent.extendComponent({
     this.error = new ReactiveVar('');
     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;
@@ -26,6 +28,33 @@ BlazeComponent.extendComponent({
       });
     });
   },
+  events() {
+    return [{
+      'click #searchButton'() {
+        this.filterPeople();
+      },
+      'keydown #searchInput'(event) {
+        if (event.keyCode === 13 && !event.shiftKey) {
+          this.filterPeople();
+        }
+      },
+    }];
+  },
+  filterPeople() {
+    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,9 +78,14 @@ BlazeComponent.extendComponent({
     this.loading.set(w);
   },
   peopleList() {
-    return Users.find({}, {
+    const users = Users.find(this.findUsersOptions.get(), {
       fields: {_id: true},
     });
+    this.number.set(users.count());
+    return users;
+  },
+  peopleNumber() {
+    return this.number.get();
   },
 }).register('people');
 

+ 21 - 0
client/components/settings/peopleBody.styl

@@ -13,3 +13,24 @@ table
 
   tr:nth-child(even)
     background-color: #dddddd;
+
+.ext-box
+  display: flex;
+  flex-direction: row;
+  height: 34px;
+
+  .ext-box-left
+    display: flex;
+    width: 40%
+
+  span
+    vertical-align: center;
+    line-height: 34px;
+    margin-right: 10px;
+
+  input, button
+    margin: 0 10px 0 0;
+    padding: 0;
+
+  button
+    min-width: 60px;

+ 2 - 1
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: "
 }

+ 3 - 2
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"
-}
+    "duplicate-board": "Dupliquer le tableau",
+    "people-number": "Le nombre d'utilisateurs est de : "
+}