mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 15:30:13 +01:00
Added pagination to people management in admin panel
This commit is contained in:
parent
1f6545e411
commit
3bead1bf78
4 changed files with 55 additions and 7 deletions
|
|
@ -46,12 +46,12 @@ template(name="peopleRow")
|
||||||
| true
|
| true
|
||||||
else
|
else
|
||||||
| false
|
| false
|
||||||
td {{ userData.createdAt }}
|
td {{ moment userData.createdAt 'LLL' }}
|
||||||
td
|
td
|
||||||
if userData.active
|
if userData.loginDisabled
|
||||||
| true
|
|
||||||
else
|
|
||||||
| false
|
| false
|
||||||
|
else
|
||||||
|
| true
|
||||||
td
|
td
|
||||||
a.edit-user
|
a.edit-user
|
||||||
| edit
|
| edit
|
||||||
|
|
@ -80,5 +80,10 @@ template(name="editUserPopup")
|
||||||
select.select-role.js-profile-isadmin
|
select.select-role.js-profile-isadmin
|
||||||
option(value="false") No
|
option(value="false") No
|
||||||
option(value="true" selected="{{user.isAdmin}}") Yes
|
option(value="true" selected="{{user.isAdmin}}") Yes
|
||||||
|
label
|
||||||
|
| {{_ 'isActive'}}
|
||||||
|
select.select-active.js-profile-isactive
|
||||||
|
option(value="false") Yes
|
||||||
|
option(value="true" selected="{{user.loginDisabled}}") No
|
||||||
|
|
||||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,46 @@
|
||||||
Meteor.subscribe('people');
|
const usersPerPage = 25;
|
||||||
|
|
||||||
BlazeComponent.extendComponent({
|
BlazeComponent.extendComponent({
|
||||||
|
mixins() {
|
||||||
|
return [Mixins.InfiniteScrolling];
|
||||||
|
},
|
||||||
onCreated() {
|
onCreated() {
|
||||||
this.error = new ReactiveVar('');
|
this.error = new ReactiveVar('');
|
||||||
this.loading = new ReactiveVar(false);
|
this.loading = new ReactiveVar(false);
|
||||||
this.people = new ReactiveVar(true);
|
this.people = new ReactiveVar(true);
|
||||||
|
|
||||||
|
this.page = new ReactiveVar(1);
|
||||||
|
this.loadNextPageLocked = false;
|
||||||
|
this.callFirstWith(null, 'resetNextPeak');
|
||||||
|
this.autorun(() => {
|
||||||
|
const limit = this.page.get() * usersPerPage;
|
||||||
|
|
||||||
|
this.subscribe('people', limit, () => {
|
||||||
|
this.loadNextPageLocked = false;
|
||||||
|
const nextPeakBefore = this.callFirstWith(null, 'getNextPeak');
|
||||||
|
this.calculateNextPeak();
|
||||||
|
const nextPeakAfter = this.callFirstWith(null, 'getNextPeak');
|
||||||
|
if (nextPeakBefore === nextPeakAfter) {
|
||||||
|
this.callFirstWith(null, 'resetNextPeak');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
loadNextPage() {
|
||||||
|
if (this.loadNextPageLocked === false) {
|
||||||
|
this.page.set(this.page.get() + 1);
|
||||||
|
this.loadNextPageLocked = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
calculateNextPeak() {
|
||||||
|
const element = this.find('.main-body');
|
||||||
|
if (element) {
|
||||||
|
const altitude = element.scrollHeight;
|
||||||
|
this.callFirstWith(this, 'setNextPeak', altitude);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reachNextPeak() {
|
||||||
|
this.loadNextPage();
|
||||||
},
|
},
|
||||||
setError(error) {
|
setError(error) {
|
||||||
this.error.set(error);
|
this.error.set(error);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
.main-body
|
||||||
|
overflow: scroll;
|
||||||
|
|
||||||
table
|
table
|
||||||
font-family: arial, sans-serif;
|
font-family: arial, sans-serif;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
Meteor.publish('people', function () {
|
Meteor.publish('people', (limit) => {
|
||||||
return Meteor.users.find({}, {fields:{}});
|
check(limit, Number);
|
||||||
|
return Users.find({}, {
|
||||||
|
limit,
|
||||||
|
sort: {createdAt: -1},
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue