/* eslint-disable prefer-arrow-callback, no-var, one-var, one-var-declaration-per-line, object-shorthand, quotes, comma-dangle, consistent-return, no-unused-vars, func-names, max-len */

import $ from 'jquery';
import Api from '~/api';

export default function initLDAPGroupsSelect() {
  var groupFormatSelection, ldapGroupResult;
  ldapGroupResult = function(group) {
    return group.cn;
  };
  groupFormatSelection = function(group) {
    return group.cn;
  };
  $('.ajax-ldap-groups-select').each(function(i, select) {
    return $(select).select2({
      id: function(group) {
        return group.cn;
      },
      placeholder: "Search for a LDAP group",
      minimumInputLength: 1,
      query: function(query) {
        var provider;
        provider = $('#ldap_group_link_provider').val();
        return Api.ldap_groups(query.term, provider, function(groups) {
          var data;
          data = {
            results: groups
          };
          return query.callback(data);
        });
      },
      initSelection: function(element, callback) {
        var id;
        id = $(element).val();
        if (id !== "") {
          return callback({
            cn: id
          });
        }
      },
      formatResult: ldapGroupResult,
      formatSelection: groupFormatSelection,
      dropdownCssClass: "ajax-groups-dropdown",
      formatNoMatches: function(nomatch) {
        return "Match not found; try refining your search query.";
      }
    });
  });
  return $('#ldap_group_link_provider').on('change', function() {
    return $('.ajax-ldap-groups-select').select2('data', null);
  });
}