Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/notifications_form.js')
-rw-r--r--app/assets/javascripts/notifications_form.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/app/assets/javascripts/notifications_form.js b/app/assets/javascripts/notifications_form.js
new file mode 100644
index 00000000000..39b8f492c35
--- /dev/null
+++ b/app/assets/javascripts/notifications_form.js
@@ -0,0 +1,59 @@
+// Generated by CoffeeScript 1.10.0
+(function() {
+ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+
+ this.NotificationsForm = (function() {
+ function NotificationsForm() {
+ this.toggleCheckbox = bind(this.toggleCheckbox, this);
+ this.removeEventListeners();
+ this.initEventListeners();
+ }
+
+ NotificationsForm.prototype.removeEventListeners = function() {
+ return $(document).off('change', '.js-custom-notification-event');
+ };
+
+ NotificationsForm.prototype.initEventListeners = function() {
+ return $(document).on('change', '.js-custom-notification-event', this.toggleCheckbox);
+ };
+
+ NotificationsForm.prototype.toggleCheckbox = function(e) {
+ var $checkbox, $parent;
+ $checkbox = $(e.currentTarget);
+ $parent = $checkbox.closest('.checkbox');
+ return this.saveEvent($checkbox, $parent);
+ };
+
+ NotificationsForm.prototype.showCheckboxLoadingSpinner = function($parent) {
+ return $parent.addClass('is-loading').find('.custom-notification-event-loading').removeClass('fa-check').addClass('fa-spin fa-spinner').removeClass('is-done');
+ };
+
+ NotificationsForm.prototype.saveEvent = function($checkbox, $parent) {
+ var form;
+ form = $parent.parents('form:first');
+ return $.ajax({
+ url: form.attr('action'),
+ method: form.attr('method'),
+ dataType: 'json',
+ data: form.serialize(),
+ beforeSend: (function(_this) {
+ return function() {
+ return _this.showCheckboxLoadingSpinner($parent);
+ };
+ })(this)
+ }).done(function(data) {
+ $checkbox.enable();
+ if (data.saved) {
+ $parent.find('.custom-notification-event-loading').toggleClass('fa-spin fa-spinner fa-check is-done');
+ return setTimeout(function() {
+ return $parent.removeClass('is-loading').find('.custom-notification-event-loading').toggleClass('fa-spin fa-spinner fa-check is-done');
+ }, 2000);
+ }
+ });
+ };
+
+ return NotificationsForm;
+
+ })();
+
+}).call(this);