mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-07-07 16:33:10 +02:00
little tweak to user search show timing and 10 users, sort after slicing
This commit is contained in:
@@ -127,16 +127,16 @@ define(function() {
|
||||
foundUserLabel = foundUser.getElementsByTagName('span')[0];
|
||||
|
||||
socket.emit('admin.user.search', searchText, function(err, results) {
|
||||
if (!err && results && results.length > 0) {
|
||||
var numResults = results.length,
|
||||
if (!err && results && results.users.length > 0) {
|
||||
var numResults = results.users.length,
|
||||
resultsSlug = document.createDocumentFragment(),
|
||||
x;
|
||||
if (numResults > 4) numResults = 4;
|
||||
for (x = 0; x < numResults; x++) {
|
||||
foundUserImg.src = results[x].picture;
|
||||
foundUserLabel.innerHTML = results[x].username;
|
||||
foundUser.setAttribute('title', results[x].username);
|
||||
foundUser.setAttribute('data-uid', results[x].uid);
|
||||
foundUserImg.src = results.users[x].picture;
|
||||
foundUserLabel.innerHTML = results.users[x].username;
|
||||
foundUser.setAttribute('title', results.users[x].username);
|
||||
foundUser.setAttribute('data-uid', results.users[x].uid);
|
||||
resultsSlug.appendChild(foundUser.cloneNode(true));
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ define(function() {
|
||||
groupMembersEl.on('click', 'li[data-uid]', function() {
|
||||
var uid = this.getAttribute('data-uid'),
|
||||
gid = detailsModal.attr('data-gid');
|
||||
|
||||
|
||||
socket.emit('admin.groups.get', gid, function(err, groupObj){
|
||||
if (!err){
|
||||
if (groupObj.name == 'Administrators' && uid == yourid){
|
||||
|
||||
@@ -196,23 +196,23 @@ define(function() {
|
||||
socket.emit('admin.user.search', username, function(err, data) {
|
||||
if(err) {
|
||||
return app.alertError(err.message);
|
||||
}console.log(data)
|
||||
}
|
||||
|
||||
var html = templates.prepare(templates['admin/users'].blocks['users']).parse({
|
||||
users: data
|
||||
users: data.users
|
||||
}),
|
||||
userListEl = document.querySelector('.users');
|
||||
|
||||
userListEl.innerHTML = html;
|
||||
jQuery('.fa-spinner').addClass('none');
|
||||
|
||||
if (data && data.length === 0) {
|
||||
if (data && data.users.length === 0) {
|
||||
$('#user-notfound-notify').html('User not found!')
|
||||
.show()
|
||||
.addClass('label-danger')
|
||||
.removeClass('label-success');
|
||||
} else {
|
||||
$('#user-notfound-notify').html(data.length + ' user' + (data.length > 1 ? 's' : '') + ' found!')
|
||||
$('#user-notfound-notify').html(data.users.length + ' user' + (data.users.length > 1 ? 's' : '') + ' found! Search took ' + data.timing + ' ms.')
|
||||
.show()
|
||||
.addClass('label-success')
|
||||
.removeClass('label-danger');
|
||||
|
||||
@@ -52,6 +52,8 @@ define(function() {
|
||||
return app.alert(err.message);
|
||||
}
|
||||
|
||||
console.log(data);
|
||||
|
||||
if (!data) {
|
||||
$('#user-notfound-notify').html('You need to be logged in to search!');
|
||||
$('#user-notfound-notify').parent().addClass('btn-warning label-warning');
|
||||
@@ -59,18 +61,18 @@ define(function() {
|
||||
}
|
||||
|
||||
var html = templates.prepare(templates['users'].blocks['users']).parse({
|
||||
users: data
|
||||
users: data.users
|
||||
}),
|
||||
userListEl = $('#users-container');
|
||||
|
||||
userListEl.html(html);
|
||||
|
||||
|
||||
if (data && data.length === 0) {
|
||||
if (data && data.users.length === 0) {
|
||||
$('#user-notfound-notify').html('User not found!');
|
||||
$('#user-notfound-notify').parent().addClass('btn-warning label-warning');
|
||||
} else {
|
||||
$('#user-notfound-notify').html(data.length + ' user' + (data.length > 1 ? 's' : '') + ' found!');
|
||||
$('#user-notfound-notify').html(data.users.length + ' user' + (data.users.length > 1 ? 's' : '') + ' found! Search took ' + data.timing + ' ms.');
|
||||
$('#user-notfound-notify').parent().addClass('btn-success label-success');
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ SocketAdmin.user.search = function(socket, username, callback) {
|
||||
});
|
||||
}
|
||||
|
||||
async.each(data, isAdmin, function(err) {
|
||||
async.each(data.users, isAdmin, function(err) {
|
||||
callback(err, data);
|
||||
});
|
||||
});
|
||||
@@ -126,7 +126,7 @@ SocketAdmin.categories.search = function(socket, data, callback) {
|
||||
cid = data.cid;
|
||||
|
||||
user.search(username, function(err, data) {
|
||||
async.map(data, function(userObj, next) {
|
||||
async.map(data.users, function(userObj, next) {
|
||||
CategoryTools.privileges(cid, userObj.uid, function(err, privileges) {
|
||||
if(err) {
|
||||
return next(err);
|
||||
|
||||
32
src/user.js
32
src/user.js
@@ -490,34 +490,36 @@ var bcrypt = require('bcrypt'),
|
||||
|
||||
User.search = function(query, callback) {
|
||||
if (!query || query.length === 0) {
|
||||
return callback(null, []);
|
||||
return callback(null, {timing:0, users:[]});
|
||||
}
|
||||
var start = process.hrtime();
|
||||
|
||||
// TODO: Have this use db.getObjectKeys (doesn't exist yet)
|
||||
db.getObject('username:uid', function(err, usernamesHash) {
|
||||
if (err) {
|
||||
return callback(null, []);
|
||||
return callback(null, {timing: 0, users:[]});
|
||||
}
|
||||
|
||||
query = query.toLowerCase();
|
||||
|
||||
var usernames = Object.keys(usernamesHash),
|
||||
results = [];
|
||||
|
||||
results = usernames.filter(function(username) { // Remove non-matches
|
||||
return username.indexOf(query) === 0;
|
||||
}).sort(function(a, b) { // Sort alphabetically
|
||||
results = usernames.filter(function(username) {
|
||||
return username.toLowerCase().indexOf(query) === 0;
|
||||
})
|
||||
.slice(0, 10)
|
||||
.sort(function(a, b) {
|
||||
return a > b;
|
||||
}).slice(0, 5) // Limit 5
|
||||
.map(function(username) { // Translate to uids
|
||||
})
|
||||
.map(function(username) {
|
||||
return usernamesHash[username];
|
||||
});
|
||||
|
||||
if (results && results.length) {
|
||||
User.getDataForUsers(results, function(userdata) {
|
||||
callback(null, userdata);
|
||||
});
|
||||
} else {
|
||||
callback(null, []);
|
||||
}
|
||||
User.getDataForUsers(results, function(userdata) {
|
||||
var diff = process.hrtime(start);
|
||||
var timing = (diff[0] * 1e3 + diff[1] / 1e6).toFixed(1);
|
||||
callback(null, {timing: timing, users: userdata});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user