Skip to content
Snippets Groups Projects
Commit 18f6ace9 authored by Sandro Lutz's avatar Sandro Lutz Committed by scmoritz
Browse files

Add busy state

parent 01ac8115
No related branches found
No related tags found
1 merge request!25Complete profile page
...@@ -85,13 +85,13 @@ class changePasswordForm { ...@@ -85,13 +85,13 @@ class changePasswordForm {
class rfidForm { class rfidForm {
submit() { submit() {
const savedRfid = this.rfid; const savedRfid = this.rfid;
this.valid = false; this.busy = true;
user.update({ rfid: savedRfid }).then(() => { user.update({ rfid: savedRfid }).then(() => {
this.rfid = savedRfid; this.rfid = savedRfid;
this.valid = true; this.busy = false;
}).catch(() => { }).catch(() => {
this.rfid = savedRfid; this.rfid = savedRfid;
this.valid = true; this.busy = false;
}); });
} }
...@@ -99,7 +99,7 @@ class rfidForm { ...@@ -99,7 +99,7 @@ class rfidForm {
const buttonArgs = { onclick: () => this.submit() }; const buttonArgs = { onclick: () => this.submit() };
if (this.rfid === undefined) this.rfid = user.get().rfid; if (this.rfid === undefined) this.rfid = user.get().rfid;
if (!this.valid) { if (!this.valid || this.busy) {
buttonArgs.disabled = 'disabled'; buttonArgs.disabled = 'disabled';
} }
...@@ -123,24 +123,19 @@ class rfidForm { ...@@ -123,24 +123,19 @@ class rfidForm {
// provides a button to (un-)subscribe for the announce // provides a button to (un-)subscribe for the announce
class announceSubscriptionForm { class announceSubscriptionForm {
oninit() {
this.valid = true;
}
submit() { submit() {
this.valid = false; this.busy = true;
user.update({ send_newsletter: !user.get().send_newsletter }).then(() => { user.update({ send_newsletter: !user.get().send_newsletter }).then(() => {
this.valid = true; this.busy = false;
}).catch(() => { }).catch(() => {
this.valid = true; this.busy = false;
}); });
} }
view() { view() {
const buttonArgs = { onclick: () => this.submit() }; const buttonArgs = { onclick: () => this.submit() };
if (this.rfid === undefined) this.rfid = user.get().rfid; if (this.busy) {
if (!this.valid) {
buttonArgs.disabled = 'disabled'; buttonArgs.disabled = 'disabled';
} }
...@@ -153,22 +148,54 @@ class groupMemberships { ...@@ -153,22 +148,54 @@ class groupMemberships {
static oninit() { static oninit() {
groups.load({ allow_self_enrollment: true }); groups.load({ allow_self_enrollment: true });
groups.loadMemberships(); groups.loadMemberships();
this.busy = [];
} }
static view() { static view() {
return m('div', [ return m('div', [
m('div', groups.getMemberships().map(membership => m('div', [ m('div', groups.getMemberships().map((membership) => {
m('span', membership.group.name), const buttonArgs = {
membership.expiry === undefined ? undefined : m('span', `(expires on ${membership.expiry})`), onclick: () => {
m('button', { onclick: () => groups.withdraw(membership._id, membership._etag) }, 'withdraw'), this.busy[membership.group._id] = true;
]))), groups.withdraw(membership._id, membership._etag).then(() => {
this.busy[membership.group._id] = false;
}).catch(() => {
this.busy[membership.group._id] = false;
});
},
};
if (this.busy[membership.group._id]) {
buttonArgs.disabled = 'disabled';
}
return m('div', [
m('span', membership.group.name),
membership.expiry === undefined ? undefined : m('span', `(expires on ${membership.expiry})`),
m('button', buttonArgs, 'withdraw'),
]);
})),
m('div', groups.getList().map((group) => { m('div', groups.getList().map((group) => {
if (groups.getMemberships().some(element => element.group._id === group._id)) { if (groups.getMemberships().some(element => element.group._id === group._id)) {
return undefined; return m.trust('');
}
const buttonArgs = {
onclick: () => {
this.busy[group._id] = true;
groups.enroll(group._id).then(() => {
this.busy[group._id] = false;
}).catch(() => {
this.busy[group._id] = false;
});
},
};
if (this.busy[group._id]) {
buttonArgs.disabled = 'disabled';
} }
return m('div', [ return m('div', [
m('span', group.name), m('span', group.name),
m('button', { onclick: () => groups.enroll(group._id) }, 'enroll'), m('button', buttonArgs, 'enroll'),
]); ]);
})), })),
]); ]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment