little tweak to user search show timing and 10 users, sort after slicing

v1.18.x
Baris Soner Usakli 11 years ago
parent 1d666bf7f0
commit f3bdc55348

@ -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);

@ -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});
});
});
};

Loading…
Cancel
Save