HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/topswtwmobile.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;

    }
);