linagora-rse
Version:
66 lines (54 loc) • 1.84 kB
JavaScript
(function(angular) {
'use strict';
angular.module('esn.search').controller('ESNSearchAdvancedFormController', ESNSearchAdvancedFormController);
function ESNSearchAdvancedFormController(
$stateParams,
$rootScope,
esnSearchContextService,
esnSearchQueryService
) {
var self = this;
self.$onInit = $onInit;
self.$onDestroy = $onDestroy;
self.clearSearchQuery = clearSearchQuery;
self.clearAdvancedQuery = clearAdvancedQuery;
self.onProviderSelected = onProviderSelected;
self.doSearch = doSearch;
var removeStateListener = $rootScope.$on('$stateChangeSuccess', function(event, toState) {
// update the providers from the state
// avoid to change when we go to search state
if (toState.name !== 'search.main') {
clearSearchQuery();
loadProviders();
} else {
// For some reason it will not work if not set when coming back from a search result...
self.searchQuery = esnSearchQueryService.buildFromState($stateParams);
loadProviders();
}
});
function $onInit() {
self.searchQuery = esnSearchQueryService.buildFromState($stateParams);
loadProviders();
}
function $onDestroy() {
removeStateListener();
}
function loadProviders() {
esnSearchContextService.getProvidersContext().then(function(providers) {
self.providers = providers;
});
}
function clearSearchQuery() {
esnSearchQueryService.clear(self.searchQuery);
}
function clearAdvancedQuery() {
esnSearchQueryService.clearAdvancedQuery(self.searchQuery);
}
function onProviderSelected(provider) {
self.provider = provider;
}
function doSearch(query) {
self.search({ query: query, provider: self.provider || null });
}
}
})(angular);