summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/project_label_subscription.js.es6
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-11-15 21:01:44 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-11-17 15:10:13 -0200
commite2865c232efd4350dd82d0fbdfdf2f226e4e8461 (patch)
tree78de20903a9e0af41763e8fa3883a497036d0170 /app/assets/javascripts/project_label_subscription.js.es6
parenta0accaf7cce23f53066335629e52407172ef60c5 (diff)
downloadgitlab-ce-e2865c232efd4350dd82d0fbdfdf2f226e4e8461.tar.gz
Rename LabelSubscription javascript to ProjectLabelSubscription
Diffstat (limited to 'app/assets/javascripts/project_label_subscription.js.es6')
-rw-r--r--app/assets/javascripts/project_label_subscription.js.es653
1 files changed, 53 insertions, 0 deletions
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 = {}));