aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/apps/global-permissions/groups-view.js
blob: 3e515d9403154fe619ddbb99171701e7a8073a9e (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
define([
  'components/common/modals',
  'react',
  'components/select-list/main',
  '../../api/permissions',
  './templates'
], function (Modal, React, SelectList, Permissions) {

  return Modal.extend({
    template: Templates['global-permissions-groups'],

    onRender: function () {
      var that = this;
      this._super();
      var props = {
        loadItems: function (options, callback) {
          var _data = { permission: that.options.permission, p: options.page, ps: 100 };
          options.query ? _.extend(_data, { q: options.query }) : _.extend(_data, { selected: options.selection });
          Permissions.getGroups(_data).done(function (r) {
            var paging = _.defaults({}, r.paging, { total: 0, pageIndex: 1 });
            callback(r.groups, paging);
          });
        },
        renderItem: function (group) {
          return group.name;
        },
        getItemKey: function (group) {
          return group.name;
        },
        selectItem: function (group, callback) {
          Permissions.grantToGroup(that.options.permission, group.name).done(callback);
        },
        deselectItem: function (group, callback) {
          Permissions.revokeFromGroup(that.options.permission, group.name).done(callback);
        }
      };
      React.render(
          React.createElement(SelectList, props),
          this.$('#global-permissions-groups')[0]
      );
    },

    onDestroy: function () {
      this.options.refresh();
      this._super();
    }
  });

});