diff --git a/lumi2/static/js/group_create.js b/lumi2/static/js/group_create.js new file mode 100644 index 0000000..6c0e846 --- /dev/null +++ b/lumi2/static/js/group_create.js @@ -0,0 +1,164 @@ +class UserEntry { + constructor(username, isMember, rowElement) { + this.username = username; + this.isMember = isMember; + this.rowElement = rowElement; + this.buttonElement = $(rowElement).find(".toggleMembershipButton"); + if (isMember) { + $(this.buttonElement).click(() => this.onClickLeave()); + } else { + $(this.buttonElement).click(() => this.onClickJoin()); + } + } + + onClickLeave() { + this.isMember = false; + $(this.buttonElement).off("click"); + $(this.buttonElement).click(() => this.onClickJoin()); + $(this.rowElement).prependTo($("#tableNonMembers").find("tbody")); + this.setButtonAppearanceJoinGroup(); + if (membersTableIsEmpty()) { + showEmptyTableNotice(); + } + disableCreateGroupButton(); + } + + onClickJoin() { + this.isMember = true; + $(this.buttonElement).off("click"); + $(this.buttonElement).click(() => this.onClickLeave()); + $(this.rowElement).prependTo($("#tableMembers").find("tbody")); + this.setButtonAppearanceLeaveGroup(); + hideEmptyTableNotice(); + enableCreateGroupButton(); + } + + setButtonAppearanceLeaveGroup() { + this.buttonElement.removeClass("btn-danger btn-success btn-secondary"); + this.buttonElement.addClass("btn-danger"); + this.buttonElement.empty(); + this.buttonElement.html( + ' Cancel' + ); + } + + setButtonAppearanceJoinGroup() { + this.buttonElement.removeClass("btn-danger btn-success btn-secondary"); + this.buttonElement.addClass("btn-success"); + this.buttonElement.empty(); + this.buttonElement.html( + ' Add' + ); + } +} + +function showErrorMessage(message) { + $("nav").after([ + '
+
Members | +||
---|---|---|
+ You must add at least one member. + |
+
Other Users | +||
---|---|---|
+ |
+ + {{ user.username }} + | ++ + | +