summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/protected_branches_access_select.js.es6
blob: e98312bbf37d2241917c28228aa3b944075bafdd (plain)
1
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
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
class ProtectedBranchesAccessSelect {
  constructor(container, saveOnSelect, selectDefault) {
    this.container = container;
    this.saveOnSelect = saveOnSelect;

    this.container.find(".allowed-to-merge").each((i, element) => {
      var fieldName = $(element).data('field-name');
      var dropdown = $(element).glDropdown({
        data: gon.merge_access_levels,
        selectable: true,
        fieldName: fieldName,
        clicked: _.chain(this.onSelect).partial(element).bind(this).value()
      });

      if (selectDefault) {
        dropdown.data('glDropdown').selectRowAtIndex(document.createEvent("Event"), 0);
      }
    });


    this.container.find(".allowed-to-push").each((i, element) => {
      var fieldName = $(element).data('field-name');
      var dropdown = $(element).glDropdown({
        data: gon.push_access_levels,
        selectable: true,
        fieldName: fieldName,
        clicked: _.chain(this.onSelect).partial(element).bind(this).value()
      });

      if (selectDefault) {
        dropdown.data('glDropdown').selectRowAtIndex(document.createEvent("Event"), 0);
      }
    });
  }

  onSelect(dropdown, selected, element, e) {
    $(dropdown).find('.dropdown-toggle-text').text(selected.text);
    if (this.saveOnSelect) {
      return $.ajax({
        type: "POST",
        url: $(dropdown).data('url'),
        dataType: "json",
        data: {
          _method: 'PATCH',
          id: $(dropdown).data('id'),
          protected_branch: {
            ["" + ($(dropdown).data('type')) + "_attributes"]: {
              "access_level": selected.id
            }
          }
        },
        success: function() {
          var row;
          row = $(e.target);
          return row.closest('tr').effect('highlight');
        },
        error: function() {
          return new Flash("Failed to update branch!", "alert");
        }
      });
    }
  }
}