From e2865c232efd4350dd82d0fbdfdf2f226e4e8461 Mon Sep 17 00:00:00 2001 From: Douglas Barbosa Alexandre Date: Tue, 15 Nov 2016 21:01:44 -0200 Subject: Rename LabelSubscription javascript to ProjectLabelSubscription --- .../javascripts/project_label_subscription.js.es6 | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 app/assets/javascripts/project_label_subscription.js.es6 (limited to 'app/assets/javascripts/project_label_subscription.js.es6') diff --git a/app/assets/javascripts/project_label_subscription.js.es6 b/app/assets/javascripts/project_label_subscription.js.es6 new file mode 100644 index 00000000000..fd5146e2f12 --- /dev/null +++ b/app/assets/javascripts/project_label_subscription.js.es6 @@ -0,0 +1,53 @@ +/* eslint-disable */ +(function(global) { + class ProjectLabelSubscription { + constructor(container) { + this.$container = $(container); + this.$buttons = this.$container.find('.js-subscribe-button'); + + this.$buttons.on('click', this.toggleSubscription.bind(this)); + } + + toggleSubscription(event) { + event.preventDefault(); + + const $btn = $(event.currentTarget); + const $span = $btn.find('span'); + const url = $btn.attr('data-url'); + const status = $btn.attr('data-status'); + + $btn.addClass('disabled'); + $span.toggleClass('hidden'); + + $.ajax({ + type: 'POST', + url: url + }).done(() => { + let newStatus, newAction; + + if (status === 'subscribed') { + [newStatus, newAction] = ['unsubscribed', 'Subscribe']; + } else { + [newStatus, newAction] = ['subscribed', 'Unsubscribe']; + } + + $span.toggleClass('hidden'); + $btn.removeClass('disabled'); + + this.$buttons.attr('data-status', newStatus); + this.$buttons.find('> span').text(newAction); + + for (let button of this.$buttons) { + let $button = $(button); + + if ($button.attr('data-original-title')) { + $button.tooltip('hide').attr('data-original-title', newAction).tooltip('fixTitle'); + } + } + }); + } + } + + global.ProjectLabelSubscription = ProjectLabelSubscription; + +})(window.gl || (window.gl = {})); -- cgit v1.2.3 From d533c0e7287f6e1474163ac3f63b5511e8b12244 Mon Sep 17 00:00:00 2001 From: Douglas Barbosa Alexandre Date: Tue, 15 Nov 2016 21:11:13 -0200 Subject: Avoid code duplication for label subscription status on label partial --- app/assets/javascripts/project_label_subscription.js.es6 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'app/assets/javascripts/project_label_subscription.js.es6') diff --git a/app/assets/javascripts/project_label_subscription.js.es6 b/app/assets/javascripts/project_label_subscription.js.es6 index fd5146e2f12..03a115cb35b 100644 --- a/app/assets/javascripts/project_label_subscription.js.es6 +++ b/app/assets/javascripts/project_label_subscription.js.es6 @@ -14,7 +14,7 @@ const $btn = $(event.currentTarget); const $span = $btn.find('span'); const url = $btn.attr('data-url'); - const status = $btn.attr('data-status'); + const oldStatus = $btn.attr('data-status'); $btn.addClass('disabled'); $span.toggleClass('hidden'); @@ -25,10 +25,10 @@ }).done(() => { let newStatus, newAction; - if (status === 'subscribed') { - [newStatus, newAction] = ['unsubscribed', 'Subscribe']; - } else { + if (oldStatus === 'unsubscribed') { [newStatus, newAction] = ['subscribed', 'Unsubscribe']; + } else { + [newStatus, newAction] = ['unsubscribed', 'Subscribe']; } $span.toggleClass('hidden'); -- cgit v1.2.3