User list: Avoid dupes and better sorting. Fix #2420
This commit is contained in:
parent
63ca84e7bc
commit
c13487332a
|
@ -114,30 +114,71 @@ var UserList = {
|
||||||
quotaSelect.append('<option value="' + escapeHTML(quota) + '" selected="selected">' + escapeHTML(quota) + '</option>');
|
quotaSelect.append('<option value="' + escapeHTML(quota) + '" selected="selected">' + escapeHTML(quota) + '</option>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var added = false;
|
$(tr).appendTo('tbody');
|
||||||
if (sort) {
|
if (sort) {
|
||||||
displayname = displayname.toLowerCase();
|
UserList.doSort();
|
||||||
$('tbody tr').each(function () {
|
|
||||||
if (displayname < $(this).attr('data-uid').toLowerCase()) {
|
|
||||||
$(tr).insertBefore($(this));
|
|
||||||
added = true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
if (!added) {
|
|
||||||
$(tr).appendTo('tbody');
|
|
||||||
}
|
|
||||||
return tr;
|
|
||||||
},
|
},
|
||||||
|
// From http://my.opera.com/GreyWyvern/blog/show.dml/1671288
|
||||||
|
alphanum: function(a, b) {
|
||||||
|
function chunkify(t) {
|
||||||
|
var tz = [], x = 0, y = -1, n = 0, i, j;
|
||||||
|
|
||||||
update: function () {
|
while (i = (j = t.charAt(x++)).charCodeAt(0)) {
|
||||||
if (typeof UserList.offset === 'undefined') {
|
var m = (i == 46 || (i >=48 && i <= 57));
|
||||||
UserList.offset = $('tbody tr').length;
|
if (m !== n) {
|
||||||
|
tz[++y] = "";
|
||||||
|
n = m;
|
||||||
|
}
|
||||||
|
tz[y] += j;
|
||||||
|
}
|
||||||
|
return tz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var aa = chunkify(a.toLowerCase());
|
||||||
|
var bb = chunkify(b.toLowerCase());
|
||||||
|
|
||||||
|
for (x = 0; aa[x] && bb[x]; x++) {
|
||||||
|
if (aa[x] !== bb[x]) {
|
||||||
|
var c = Number(aa[x]), d = Number(bb[x]);
|
||||||
|
if (c == aa[x] && d == bb[x]) {
|
||||||
|
return c - d;
|
||||||
|
} else return (aa[x] > bb[x]) ? 1 : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aa.length - bb.length;
|
||||||
|
},
|
||||||
|
doSort: function() {
|
||||||
|
var self = this;
|
||||||
|
var rows = $('tbody tr').get();
|
||||||
|
|
||||||
|
rows.sort(function(a, b) {
|
||||||
|
return UserList.alphanum($(a).find('td.name').text(), $(b).find('td.name').text());
|
||||||
|
});
|
||||||
|
|
||||||
|
var items = [];
|
||||||
|
$.each(rows, function(index, row) {
|
||||||
|
items.push(row);
|
||||||
|
if(items.length === 100) {
|
||||||
|
$('tbody').append(items);
|
||||||
|
items = [];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(items.length > 0) {
|
||||||
|
$('tbody').append(items);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
update: function () {
|
||||||
|
if (UserList.updating) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UserList.updating = true;
|
||||||
$.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset }), function (result) {
|
$.get(OC.Router.generate('settings_ajax_userlist', { offset: UserList.offset }), function (result) {
|
||||||
if (result.status === 'success') {
|
if (result.status === 'success') {
|
||||||
$.each(result.data, function (index, user) {
|
$.each(result.data, function (index, user) {
|
||||||
|
if($('tr[data-uid="' + user.name + '"]').length > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
var tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, false);
|
var tr = UserList.add(user.name, user.displayname, user.groups, user.subadmin, user.quota, false);
|
||||||
UserList.offset++;
|
UserList.offset++;
|
||||||
if (index == 9) {
|
if (index == 9) {
|
||||||
|
@ -147,7 +188,12 @@ var UserList = {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
console.log('length', result.data.length);
|
||||||
|
if (result.data.length > 0) {
|
||||||
|
UserList.doSort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
UserList.updating = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -242,6 +288,8 @@ var UserList = {
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
|
||||||
|
UserList.doSort();
|
||||||
|
UserList.offset = $('tbody tr').length;
|
||||||
$('tbody tr:last').bind('inview', function (event, isInView, visiblePartX, visiblePartY) {
|
$('tbody tr:last').bind('inview', function (event, isInView, visiblePartX, visiblePartY) {
|
||||||
OC.Router.registerLoadedCallback(function () {
|
OC.Router.registerLoadedCallback(function () {
|
||||||
UserList.update();
|
UserList.update();
|
||||||
|
@ -373,7 +421,9 @@ $(document).ready(function () {
|
||||||
OC.dialogs.alert(result.data.message,
|
OC.dialogs.alert(result.data.message,
|
||||||
t('settings', 'Error creating user'));
|
t('settings', 'Error creating user'));
|
||||||
} else {
|
} else {
|
||||||
UserList.add(username, username, result.data.groups, null, 'default', true);
|
if($('tr[data-uid="' + username + '"]').length === 0) {
|
||||||
|
UserList.add(username, username, result.data.groups, null, 'default', true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue