common_utils.js 3.9 KB
Newer Older
1
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, no-unused-expressions, no-param-reassign, no-else-return, quotes, object-shorthand, comma-dangle, camelcase, one-var, vars-on-top, one-var-declaration-per-line, no-return-assign, consistent-return, padded-blocks, max-len */
Fatih Acet's avatar
Fatih Acet committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
(function() {
  (function(w) {
    var base;
    w.gl || (w.gl = {});
    (base = w.gl).utils || (base.utils = {});
    w.gl.utils.isInGroupsPage = function() {
      return gl.utils.getPagePath() === 'groups';
    };
    w.gl.utils.isInProjectPage = function() {
      return gl.utils.getPagePath() === 'projects';
    };
    w.gl.utils.getProjectSlug = function() {
      if (this.isInProjectPage()) {
        return $('body').data('project');
      } else {
        return null;
      }
    };
    w.gl.utils.getGroupSlug = function() {
      if (this.isInGroupsPage()) {
        return $('body').data('group');
      } else {
        return null;
      }
    };
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

    w.gl.utils.ajaxGet = function(url) {
      return $.ajax({
        type: "GET",
        url: url,
        dataType: "script"
      });
    };

    w.gl.utils.split = function(val) {
      return val.split(/,\s*/);
    };

    w.gl.utils.extractLast = function(term) {
      return this.split(term).pop();
    };

    w.gl.utils.rstrip = function rstrip(val) {
      if (val) {
        return val.replace(/\s+$/, '');
      } else {
        return val;
      }
    };

    w.gl.utils.disableButtonIfEmptyField = function(field_selector, button_selector, event_name) {
      event_name = event_name || 'input';
      var closest_submit, field, that;
      that = this;
      field = $(field_selector);
      closest_submit = field.closest('form').find(button_selector);
      if (this.rstrip(field.val()) === "") {
        closest_submit.disable();
      }
      return field.on(event_name, function() {
        if (that.rstrip($(this).val()) === "") {
          return closest_submit.disable();
        } else {
          return closest_submit.enable();
        }
      });
    };

    w.gl.utils.disableButtonIfAnyEmptyField = function(form, form_selector, button_selector) {
      var closest_submit, updateButtons;
      closest_submit = form.find(button_selector);
      updateButtons = function() {
        var filled;
        filled = true;
        form.find('input').filter(form_selector).each(function() {
          return filled = this.rstrip($(this).val()) !== "" || !$(this).attr('required');
        });
        if (filled) {
          return closest_submit.enable();
        } else {
          return closest_submit.disable();
        }
      };
      updateButtons();
      return form.keyup(updateButtons);
    };

    w.gl.utils.sanitize = function(str) {
      return str.replace(/<(?:.|\n)*?>/gm, '');
    };

    w.gl.utils.unbindEvents = function() {
      return $(document).off('scroll');
    };

    w.gl.utils.shiftWindow = function() {
      return w.scrollBy(0, -100);
    };


Fatih Acet's avatar
Fatih Acet committed
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
    gl.utils.updateTooltipTitle = function($tooltipEl, newTitle) {
      return $tooltipEl.tooltip('destroy').attr('title', newTitle).tooltip('fixTitle');
    };
    gl.utils.preventDisabledButtons = function() {
      return $('.btn').click(function(e) {
        if ($(this).hasClass('disabled')) {
          e.preventDefault();
          e.stopImmediatePropagation();
          return false;
        }
      });
    };
    gl.utils.getPagePath = function() {
      return $('body').data('page').split(':')[0];
    };
117 118 119 120 121
    gl.utils.parseUrl = function (url) {
      var parser = document.createElement('a');
      parser.href = url;
      return parser;
    };
122 123 124 125 126 127
    gl.utils.cleanupBeforeFetch = function() {
      // Unbind scroll events
      $(document).off('scroll');
      // Close any open tooltips
      $('.has-tooltip, [data-toggle="tooltip"]').tooltip('destroy');
    };
128 129 130 131 132

    gl.utils.isMetaKey = function(e) {
      return e.metaKey || e.ctrlKey || e.altKey || e.shiftKey;
    };

Fatih Acet's avatar
Fatih Acet committed
133 134 135
  })(window);

}).call(this);