import coreModule from 'app/core/core_module';
import appEvents from 'app/core/app_events';
import _ from 'lodash';
const template = `
  
`;
export class UserPickerCtrl {
  user: any;
  debouncedSearchUsers: any;
  userPicked: any;
  /** @ngInject */
  constructor(private backendSrv, private $scope, $sce) {
    this.reset();
    this.debouncedSearchUsers = _.debounce(this.searchUsers, 500, {'leading': true, 'trailing': false});
  }
  searchUsers(query: string) {
    return Promise.resolve(this.backendSrv.get('/api/users/search?perpage=10&page=1&query=' + query).then(result => {
      return _.map(result.users, user => {
        return {text: user.login + ' -  ' + user.email, value: user};
      });
    }));
  }
  onChange(option) {
    this.userPicked({$user: option.value});
  }
  reset() {
    this.user = {text: 'Choose', value: null};
  }
}
export interface User {
  id: number;
  name: string;
  login: string;
  email: string;
}
export function userPicker() {
  return {
    restrict: 'E',
    template: template,
    controller: UserPickerCtrl,
    bindToController: true,
    controllerAs: 'ctrl',
    scope: {
      userPicked: '&',
    },
    link: function(scope, elem, attrs, ctrl) {
      scope.$on("user-picker-reset", () => {
        ctrl.reset();
      });
    }
  };
}
coreModule.directive('userPicker', userPicker);