diff --git a/web/app/assets/javascripts/bandProfile.js b/web/app/assets/javascripts/bandProfile.js
index 60c63f967..7551163e3 100644
--- a/web/app/assets/javascripts/bandProfile.js
+++ b/web/app/assets/javascripts/bandProfile.js
@@ -5,6 +5,7 @@
context.JK = context.JK || {};
context.JK.BandProfileScreen = function(app) {
var logger = context.JK.logger;
+ var rest = context.JK.Rest();
var bandId;
var isMember = false;
var band = {};
@@ -59,7 +60,7 @@
configureBandFollowingButton(true);
}
else {
- configureMemberFollowingButton(true);
+ configureMemberFollowingButton(true, id);
}
},
error: app.ajaxError
@@ -350,7 +351,6 @@
}
function bindPendingMembers() {
- $("#band-profile-members").append("
Pending Band Invitations
");
var url = "/api/bands/" + bandId + "/musicians?pending=true";
$.ajax({
type: "GET",
@@ -359,7 +359,10 @@
async: false,
processData:false,
success: function(response) {
- bindMusicians(response);
+ if (response && response.length > 0) {
+ $("#band-profile-members").append("
Pending Band Invitations
");
+ bindMusicians(response);
+ }
},
error: app.ajaxError
});
@@ -400,12 +403,34 @@
var following = isFollowingMember(musician.id);
configureMemberFollowingButton(following, musician.id);
+ configureRemoveMemberButton(musician.id);
+
// TODO: wire up Friend button click handler
// var friend = isFriend(musician.id);
// configureMemberFriendButton(friend, musician.id);
});
}
+ function configureRemoveMemberButton(userId) {
+
+ var $divMember = $('div[user-id=' + userId + ']', '#band-profile-members');
+ var $btnRemoveMember = $divMember.find('#btn-remove-member');
+ if (isMember) {
+ $btnRemoveMember.show();
+ $btnRemoveMember.unbind("click");
+ $btnRemoveMember.click(function() {
+ rest.removeBandMember(bandId, userId)
+ .done(function() {
+ $divMember.remove();
+ })
+ .fail(app.ajaxError);
+ });
+ }
+ else {
+ $btnRemoveMember.hide();
+ }
+ }
+
// TODO: refactor
// checks if person viewing the profile is also a band member
function setIsMember() {
@@ -441,12 +466,10 @@
if (isMember) {
$("#btn-follow-band").hide();
- $("#btn-edit-band-members").show();
$("#btn-edit-band-profile").show();
}
else {
$("#btn-follow-band").show();
- $("#btn-edit-band-members").hide();
$("#btn-edit-band-profile").hide();
}
diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js
index 648ced0ff..e2c44c86c 100644
--- a/web/app/assets/javascripts/jam_rest.js
+++ b/web/app/assets/javascripts/jam_rest.js
@@ -115,6 +115,17 @@
});
}
+ function removeBandMember(bandId, userId) {
+ var url = "/api/bands/" + bandId + "/musicians/" + userId;
+ return $.ajax({
+ type: "DELETE",
+ dataType: "json",
+ url: url,
+ async: false,
+ processData:false
+ });
+ }
+
function getSession(id) {
var url = "/api/sessions/" + id;
return $.ajax({
@@ -484,6 +495,7 @@
this.getBand = getBand;
this.createBandInvitation = createBandInvitation;
this.updateBandInvitation = updateBandInvitation;
+ this.removeBandMember = removeBandMember;
return this;
};
diff --git a/web/app/controllers/api_bands_controller.rb b/web/app/controllers/api_bands_controller.rb
index b3ca1e623..ff9c09833 100644
--- a/web/app/controllers/api_bands_controller.rb
+++ b/web/app/controllers/api_bands_controller.rb
@@ -65,7 +65,9 @@ class ApiBandsController < ApiController
def musician_destroy
unless params[:id].blank? || params[:user_id].blank?
+ BandMusician.delete_all "(band_id = '#{params[:id]}' AND user_id = '#{params[:user_id]}')"
end
+ render :json => {}, :status => 202
end
###################### FOLLOWERS ########################
diff --git a/web/app/views/clients/_bandProfile.html.erb b/web/app/views/clients/_bandProfile.html.erb
index 04e40c750..12c321312 100644
--- a/web/app/views/clients/_bandProfile.html.erb
+++ b/web/app/views/clients/_bandProfile.html.erb
@@ -19,7 +19,6 @@
@@ -92,6 +91,7 @@
{biography}
PROFILE
FOLLOW
+ REMOVE MEMBER
CONNECT