File: D:/HostingSpaces/SBogers10/topswtw.komma.pro/wwwroot/js/app/searchbar/_autoComplete.ng.js
define([],
function() {
'use strict';
var app = angular.module('autoComplete', []);
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]);
app.service('searchService',['$http', function($http){
// Return public
return({ search: search });
function search(url, term){
var request = $http({
method: 'get',
url: String(url) + String(term) + String('&ajax=1')
});
return request.then(handleSuccess);
}
function handleSuccess(response) {
return(response.data);
}
}]);
app.directive('searchBar', function(){
return {
restrict: 'E',
scope: {
url: '@',
placeholder: '@'
},
controller: function($scope, $element, $log, $timeout, searchService){
var $this = this;
$this.data = {};
var hasFocus = false;
$scope.productsResults = {};
$scope.categoriesResults = {};
$scope.pagesResults = {};
$scope.search = function() {
searchService.search($scope.url, $scope.searchTerm).then(function (data) {
$this.data = data;
$log.debug(data);
$scope.productsResults = $this.data.productResults.result;
$scope.categoriesResults = $this.data.categoriesResults.result;
$scope.pagesResults = $this.data.pagesResults.result;
});
};
$scope.showSuggest = function(){
return (
$scope.productsResults.length > 0 ||
$scope.categoriesResults.length > 0 ||
$scope.pagesResults.length > 0
) && hasFocus;
};
$scope.$watch('searchTerm', function(oldval, newval){
if(oldval != newval) {
$scope.search();
}
});
$('.search-bar-input', $element).focus(function(e){
hasFocus = true;
$scope.$apply();
});
$('.search-bar-input', $element).blur(function(e){
$timeout(function(){
hasFocus = false;
$scope.$apply();
},100);
});
$scope.goToRoute = function(route){
window.location.href = '/' + route.toString();
};
},
templateUrl: 'js/app/searchbar/searchbar.tmpl.html'
};
});
return app;
}
);