var __extends=this&&this.__extends||function(d,b){function __(){this.constructor=d}for(var p in b)b.hasOwnProperty(p)&&(d[p]=b[p]);d.prototype=null===b?Object.create(b):(__.prototype=b.prototype,new __)},App;!function(App){!function(ProductSearch){ProductSearch.app=angular.module(Constants.appModuleIds.productSearch,[Constants.appModuleIds.default,"ui.bootstrap","ui.select"])}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){var AutoCompleteResultItemTerm=function(){function AutoCompleteResultItemTerm(){}return AutoCompleteResultItemTerm}();ProductSearch.AutoCompleteResultItemTerm=AutoCompleteResultItemTerm;var AutoCompleteResultItem=function(_super){function AutoCompleteResultItem(){_super.apply(this,arguments)}return __extends(AutoCompleteResultItem,_super),AutoCompleteResultItem}(AutoCompleteResultItemTerm);ProductSearch.AutoCompleteResultItem=AutoCompleteResultItem;var AutoCompleteResult=function(){function AutoCompleteResult(){}return AutoCompleteResult}();ProductSearch.AutoCompleteResult=AutoCompleteResult}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){var AutoCompleteRequestItem=function(){function AutoCompleteRequestItem(){}return AutoCompleteRequestItem}();ProductSearch.AutoCompleteRequestItem=AutoCompleteRequestItem}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){var AutoCompleteSubjectModel=function(){function AutoCompleteSubjectModel(){}return AutoCompleteSubjectModel}();App.AutoCompleteSubjectModel=AutoCompleteSubjectModel}(App||(App={}));var App;!function(App){var AutoCompletePostModel=function(){function AutoCompletePostModel(){}return AutoCompletePostModel}();App.AutoCompletePostModel=AutoCompletePostModel,AutoCompletePostModel.prototype.toPost=function(){var searchHistory={},searchHistoryString=null;return this.searchHistory&&(this.searchHistory.forEach(function(item){searchHistory[item.subject]=item.terms}),searchHistoryString=JSON.stringify(searchHistory)),{terms:this.terms,minStock:this.minStock,search:searchHistoryString}}}(App||(App={}));var App;!function(App){var AutoCompleteRequestModel=function(){function AutoCompleteRequestModel(){this.minStock=2,this.sortKey="price",this.sortDirection=1}return AutoCompleteRequestModel}();App.AutoCompleteRequestModel=AutoCompleteRequestModel}(App||(App={}));var App;!function(App){!function(ProductSearch){var SearchService=function(){function SearchService($q,httpHelper,searchSessionService){var _this=this;this.$q=$q,this.httpHelper=httpHelper,this.searchSessionService=searchSessionService,this.autoComplete=function(searchModel){if(searchModel||(searchModel=_this.searchSessionService.search),null==searchModel)return _this.$q.resolve([]);var postModel=searchModel.toPostModel(),category="";return postModel.category&&(category=postModel.category.value),_this.httpHelper.post(Constants.serviceUrls.productSearch.autoComplete+category,postModel.toPost()).then(function(result){return result})},this.getProductTypes=function(){return _this.httpHelper.post(Constants.serviceUrls.productSearch.getProductTypes).then(function(result){return result})},this.getProductFacets=function(searchModel){if(null==searchModel||(!searchModel.values||0===searchModel.values.length)&&null==searchModel.activeProductType)return _this.$q.resolve([]);var postModel=searchModel.toPostModel(),post=postModel.toPost();post.skip=0,post.take=0;var category="";return postModel.category&&(category=postModel.category.value),null==category||""===category?_this.$q.resolve([]):_this.httpHelper.post(Constants.serviceUrls.productSearch.getProducts[category],post).then(function(result){return result?result.facets:[]})},this.getBrands=function(searchModel){if(null==searchModel||(!searchModel.values||0===searchModel.values.length)&&null==searchModel.activeProductType)return _this.$q.resolve([]);var postModel=searchModel.toPostModel(),post=postModel.toPost();post.skip=0,post.take=0;var category="";return postModel.category&&(category=postModel.category.value),null==category||""===category?_this.$q.resolve([]):_this.httpHelper.post(Constants.serviceUrls.productSearch.getBrands[category],post).then(function(result){return result?result.facets:[]})}}return SearchService.$inject=["$q",Constants.sharedFactoryIds.httpHelper,Constants.sharedServiceIds.searchSession],SearchService}();ProductSearch.SearchService=SearchService,ProductSearch.app.service(Constants.sharedServiceIds.searchService,SearchService)}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){!function(Controllers){var SearchController=function(){function SearchController($rootScope,$scope,$state,$translate,$q,$timeout,searchService,searchSessionService){var _this=this;if(this.$rootScope=$rootScope,this.$scope=$scope,this.$state=$state,this.$translate=$translate,this.$q=$q,this.$timeout=$timeout,this.searchService=searchService,this.searchSessionService=searchSessionService,this.searchObjects={},this.searchValues={},this.facetSubjects={},this.quantities=[{key:1,value:1},{key:2,value:2},{key:4,value:this.$translate.instant("4ormore")}],this.selectProductType=function(productType){_this.activeProductType.value!=productType&&_this.goToProductType(productType)},this.checkProductType=function(productTypeKey){if(productTypeKey){var lowerProductType=productTypeKey.toLowerCase();if(_this.productTypes){var index=_this.productTypes.findIndex(function(p){return p.value==lowerProductType});if(index>-1&&(!_this.activeProductType||!_this.activeProductType.equalsObj(_this.productTypes[index]))){_this.activeProductType&&(_this.searchSessionService.search=null,_this.$state.go(_this.$state.$current,(_a={},_a[Constants.routeParams.autosearch]=null,_a[Constants.routeParams.product]=null,_a[Constants.routeParams.search]=null,_a),{notify:!1})),_this.activeProductType=_this.productTypes[index];var searchObj=_this.searchSessionService.search;searchObj.activeProductType=_this.activeProductType,_this.searchSessionService.search=searchObj;var checkGroupAfterProductTypeChange=_this.$scope.$on(SearchController.productTypeChangedEvent,function(){_this.$timeout(function(){_this.checkGroup(_this.$state.params[Constants.routeParams.group])},10),checkGroupAfterProductTypeChange()})}}}var _a},this.checkGroup=function(groupKey){if(_this.prefilledFacetGroups=Constants.defaultPrefilledFacetGroups,_this.searchValues||(_this.searchValues={}),groupKey&&(_this.searchValues.vehiclegroups=groupKey),_this.activeProductType&&_this.prefilledFacetGroups[_this.activeProductType.value]&&(groupKey&&(_this.prefilledFacetGroups[_this.activeProductType.value].vehiclegroups=groupKey),!_this.$state.params[Constants.routeParams.autosearch])){var searchValues={};if(_this.prefilledFacetGroups[_this.activeProductType.value])for(var i in _this.prefilledFacetGroups[_this.activeProductType.value])_this.prefilledFacetGroups[_this.activeProductType.value].hasOwnProperty(i)&&(searchValues[i]=_this.prefilledFacetGroups[_this.activeProductType.value][i]);searchValues.equalsObj(_this.searchValues)?_this.$timeout(function(){_this.checkLocalSearchValues(_this.activeProductType,searchValues,_this.searchValues)},0):_this.searchValues=searchValues}},this.goToProductType=function(productType){_this.$state.go(_this.$state.$current,(_a={},_a[Constants.routeParams.category]=productType,_a[Constants.routeParams.product]=null,_a[Constants.routeParams.dot]=null,_a[Constants.routeParams.demo]=null,_a[Constants.routeParams.studded]=null,_a[Constants.routeParams.damaged]=null,_a[Constants.routeParams.group]=null,_a[Constants.routeParams.autosearch]=null,_a[Constants.routeParams.search]=null,_a),{notify:!1});var _a},this.goToGroup=function(group){_this.$state.go(_this.$state.$current,(_a={},_a[Constants.routeParams.product]=null,_a[Constants.routeParams.dot]=null,_a[Constants.routeParams.demo]=null,_a[Constants.routeParams.studded]=null,_a[Constants.routeParams.damaged]=null,_a[Constants.routeParams.group]=group,_a[Constants.routeParams.autosearch]=null,_a[Constants.routeParams.search]=null,_a),{notify:!1});var _a},this.delayedSearch=function(){if(!_this.$state.params[Constants.routeParams.autosearch])if(_this.delayedSearchObj&&_this.$timeout.cancel(_this.delayedSearchObj),0!=decodeURIComponent(window.location.href).indexOf(App.Variables.productPage)){var redirUrl=App.Variables.productPage+"#/s/p/?"+Constants.routeParams.autosearch+"=true&"+Constants.routeParams.save+"=true";_this.activeProductType&&(redirUrl+="&"+Constants.routeParams.category+"="+_this.activeProductType.value),window.location.assign(redirUrl)}else _this.delayedSearchObj=_this.$timeout(_this.search,50)},this.search=function(searchTerms){var search=_this.searchSessionService.search;if(search.searchTerms=searchTerms,search.sortDirection=null,search.sortKey=null,search.facets=null,search.activeProductType=_this.activeProductType,_this.searchSessionService.search=search,_this.searchSessionService.isSearching=!0,0!=decodeURIComponent(window.location.href).indexOf(App.Variables.productPage)){var redirUrl=App.Variables.productPage+"#/s/p/?"+Constants.routeParams.autosearch+"=true&"+Constants.routeParams.save+"=true";_this.activeProductType&&(redirUrl+="&"+Constants.routeParams.category+"="+_this.activeProductType.value),window.location.assign(redirUrl)}else _this.$state.go(_this.$state.$current,(_a={},_a[Constants.routeParams.autosearch]=!0,_a[Constants.routeParams.product]=null,_a[Constants.routeParams.dot]=null,_a[Constants.routeParams.demo]=null,_a[Constants.routeParams.studded]=null,_a[Constants.routeParams.damaged]=null,_a[Constants.routeParams.category]=_this.activeProductType?_this.activeProductType.value:null,_a[Constants.routeParams.group]=_this.searchValues&&_this.searchValues.vehiclegroups?_this.searchValues.vehiclegroups:null,_a[Constants.routeParams.changingOrder]=null,_a[Constants.routeParams.search]=null,_a),{notify:!1,location:"replace"}),_this.$scope.$emit(Constants.events.search,!0);var _a},this.getAllFacets=function(localFacets){var facets=_this.searchSessionService.facets,searchAll=angular.copy(_this.searchSessionService.search);searchAll.values=[];var nullFacets=angular.copy(searchAll),searchFacets=angular.copy(_this.searchSessionService.search.values);return localFacets.map(function(facetGroup){if(Constants.standaloneFacetGroupNames[_this.activeProductType.value]&&Constants.standaloneFacetGroupNames[_this.activeProductType.value].indexOf(facetGroup.name.value)>-1&&facets){var existingSubjectFacet=facets.filter(function(x){return x.name.value==facetGroup.name.value})[0];if(existingSubjectFacet)return _this.$q.resolve({key:facetGroup.name.value,value:existingSubjectFacet})}if(searchFacets&&0!==searchFacets.length&&0!==searchFacets.filter(function(facet){return facet.subjectKey===facetGroup.name.value}).length){var returnFacetGroups=null,myFacetGroup=angular.copy(nullFacets);Constants.standaloneFacetGroupNames[_this.activeProductType.value]&&-1===Constants.standaloneFacetGroupNames[_this.activeProductType.value].indexOf(facetGroup.name.value)&&searchFacets.forEach(function(facet){facet.subjectKey!==facetGroup.name.value&&myFacetGroup.values.push(facet)});var facetGroupSearch=angular.copy(searchAll);return facetGroupSearch.values=myFacetGroup.values,_this.searchService.getProductFacets(facetGroupSearch).then(function(results){(returnFacetGroups=results.filter(function(result){return result.name.value===facetGroup.name.value})[0])||(returnFacetGroups={name:facetGroup.name,values:[]});var currentValues=returnFacetGroups.values.map(function(facetValue){return facetValue.value}),facetValues=_this.searchObjects[facetGroup.name.value];return facetValues&&facetValues.length>0&&facetValues.forEach(function(facetValue){-1==currentValues.indexOf(facetValue.value)&&returnFacetGroups.values.push({count:0,display:facetValue.display,value:facetValue.value})}),{key:facetGroup.name.value,value:returnFacetGroups}})}return _this.$q.resolve({key:facetGroup.name.value,value:facetGroup})})},this.sessionSearchValuesWatcher=null,this.facetsSubjectWatcher=null,this.searchObjectsWatcher=null,this.searchValuesWatcher=null,this.checkLocalSearchValues=function(productType,newValue,oldValue){if(newValue){var addValue,j,values_1={};for(var i_1 in newValue)!function(i_1){if(newValue.hasOwnProperty(i_1)&&void 0!=newValue[i_1]&&null!=newValue[i_1]&&("string"!=typeof newValue[i_1]||newValue[i_1].length>0)){var facetGroup_1=_this.facetSubjects[i_1];if(addValue=function(value){var facetValue=null;facetGroup_1&&facetGroup_1.length>0&&(facetValue=facetGroup_1.filter(function(x){return x.value==value})[0]),!facetValue&&_this.searchSessionService.search.values&&_this.searchSessionService.search.values.filter(function(x){return x.subjectKey==i_1&&x.value==value}).length>0&&(facetValue=_this.searchSessionService.search.values.filter(function(x){return x.subjectKey==i_1&&x.value==value})[0]),!facetValue&&facetGroup_1&&facetGroup_1.length>0&&((facetValue=facetGroup_1.filter(function(x){return x.value==value})[0])||(facetValue=angular.copy(facetGroup_1[0]),facetValue.value=value)),facetValue||(facetValue=new ProductSearch.AutoCompleteRequestItem,facetValue.value=value,facetValue.display=value,facetValue.group=productType.display,facetValue.groupKey=productType.value,facetValue.subject=i_1,facetValue.subjectKey=i_1),values_1[i_1]?values_1[i_1].push(facetValue):values_1[i_1]=[facetValue]},newValue[i_1]instanceof Array)for(j=0;j<newValue[i_1].length;j++)addValue(newValue[i_1][j].toString());else addValue(newValue[i_1].toString())}}(i_1);if(oldValue&&newValue.vehiclegroups!=oldValue.vehiclegroups){if(_this.activeProductType){var updateObjects=!1;for(var i in newValue)if(newValue.hasOwnProperty(i)&&!_this.prefilledFacetGroups[_this.activeProductType.value].hasOwnProperty(i)){updateObjects=!0;break}updateObjects||(_this.searchObjects=values_1)}_this.goToGroup(newValue.vehiclegroups)}else _this.searchObjects=values_1,newValue.equalsObj(oldValue)||_this.$state.go(_this.$state.$current,(_a={},_a[Constants.routeParams.autosearch]=null!=newValue.vehicleId||null,_a[Constants.routeParams.search]=null,_a),{notify:!1})}var _a},this.bindSearchWatchers=function(productType){_this.searchObjects=null,_this.searchValues=null,_this.sessionSearchValuesWatcher&&_this.sessionSearchValuesWatcher(),_this.searchValuesWatcher&&_this.searchValuesWatcher(),_this.facetsSubjectWatcher&&_this.facetsSubjectWatcher(),_this.searchObjectsWatcher&&_this.searchObjectsWatcher(),productType&&"all"!=productType.value&&(_this.sessionSearchValuesWatcher=_this.$scope.$watch(function(){return _this.searchSessionService.search.values},function(newValue,oldValue){if(newValue=_this.searchSessionService.search.values){for(var searchObjects={},i=0;i<newValue.length;i++)searchObjects[newValue[i].subjectKey]?searchObjects[newValue[i].subjectKey].push(newValue[i]):searchObjects[newValue[i].subjectKey]=[newValue[i]];_this.searchObjects=searchObjects,_this.searchService.getProductFacets(_this.searchSessionService.search).then(function(result){result?_this.$q.all(_this.getAllFacets(result)).then(function(results){var convertedResult=results.reduce(function(acc,cur){return acc[cur.key]=cur.value,acc},{});_this.searchSessionService.subjectFacets=convertedResult}):_this.searchSessionService.subjectFacets={}})}},!0),_this.facetsSubjectWatcher=_this.$scope.$watch(function(){return _this.searchSessionService.subjectFacets},function(newValue){var facetSubjects={};if(_this.activeProductType)for(var i in newValue)if(newValue.hasOwnProperty(i)){var facetGroup=newValue[i];facetSubjects[i]=_this.transformFacets(facetGroup)}if(_this.facetSubjects=facetSubjects,_this.activeProductType){var requiredGroups=Constants.standaloneFacetGroupNames[_this.activeProductType.value];if(requiredGroups&&requiredGroups.length>0){var newSearchObjects=angular.copy(_this.searchObjects);newSearchObjects||(newSearchObjects={}),requiredGroups.forEach(function(x){if(!newSearchObjects[x]&&_this.facetSubjects&&_this.facetSubjects[x]){var value=_this.facetSubjects[x][0],prefilledValues=_this.prefilledFacetGroups[_this.activeProductType.value];prefilledValues&&void 0!=prefilledValues[x]&&null!=prefilledValues[x]&&(value=_this.facetSubjects[x].filter(function(facet){return facet.value==prefilledValues[x].toString()})[0]),null==value&&(value=_this.facetSubjects[x][0]),newSearchObjects[x]=[value]}}),newSearchObjects.equalsObj(_this.searchObjects)||(_this.searchObjects=newSearchObjects)}}}),_this.searchObjectsWatcher=_this.$scope.$watch(function(){return _this.searchObjects},function(newValue,oldValue){var searchObjects=[],searchValues={},search=_this.searchSessionService.search;if(newValue){for(var i in newValue)newValue.hasOwnProperty(i)&&void 0!=newValue[i]&&null!=newValue[i]&&("string"!=typeof newValue[i]||newValue[i].length>0)&&newValue[i].forEach(function(val){searchObjects.push(val);var valueToUse=val.value;try{var parsedValue=JSON.parse(valueToUse);"boolean"==typeof parsedValue&&(valueToUse=parsedValue)}catch(e){}searchValues[i]?(searchValues[i]instanceof Array||(searchValues[i]=[searchValues[i]]),searchValues[i].push(valueToUse)):searchValues[i]=valueToUse});0===searchObjects.length&&(search.facets=null)}else search.facets=null;(0!=searchObjects.length||void 0!=_this.searchSessionService.search.values&&null!=_this.searchSessionService.search)&&(search.values=searchObjects),_this.searchSessionService.search=search,_this.searchValues=searchValues},!0),_this.searchValuesWatcher=_this.$scope.$watch(function(){return _this.searchValues},function(newValue,oldValue){_this.checkLocalSearchValues(productType,newValue,oldValue)},!0))},this.transformFacets=function(facetGroup){return facetGroup.values.map(function(item){var requestItem=new ProductSearch.AutoCompleteRequestItem;return requestItem.groupKey=_this.activeProductType.value,requestItem.group=_this.activeProductType.display,requestItem.subjectKey=facetGroup.name.value,requestItem.subject=facetGroup.name.display,requestItem.display=item.display,requestItem.value=item.value,requestItem})},this.prefilledFacetGroups=Constants.defaultPrefilledFacetGroups,this.isValidForm=function(){if(!_this.activeProductType)return!1;var values=_this.searchSessionService.search.values;if(void 0==values)return!1;var standaloneFacetGroups=Constants.standaloneFacetGroupNames[_this.activeProductType.value];return void 0==standaloneFacetGroups?values.length>0:values.filter(function(x){return-1===standaloneFacetGroups.indexOf(x.subjectKey)}).length>0},this.placeholderText=function(key){if(!Constants.placeholderTexts[key])return"";if(!_this.searchSessionService.search.values)return Constants.placeholderTexts[key].default;var vehicleType=_this.searchSessionService.search.values.filter(function(item){return"vehicletype"==item.subjectKey})[0];return vehicleType&&Constants.placeholderTexts[key][vehicleType.value]?Constants.placeholderTexts[key][vehicleType.value]:Constants.placeholderTexts[key].default},this.checkSearch=function(newValue,$select){newValue&&0!=newValue.length||$select&&_this.$timeout(function(){$select.activeIndex=-1},0)},$scope.$watch(function(){return _this.activeProductType},function(productType){var search=new App.AutoCompleteRequestModel;search.activeProductType=productType,_this.searchSessionService.facets=null,_this.searchService.getProductFacets(search).then(function(result){_this.searchSessionService.facets=result,_this.searchSessionService.facets?_this.$q.all(_this.getAllFacets(_this.searchSessionService.facets)).then(function(results){var convertedResult=results.reduce(function(acc,cur){return acc[cur.key]=cur.value,acc},{});_this.searchSessionService.subjectFacets=convertedResult}):_this.searchSessionService.subjectFacets={}}),_this.bindSearchWatchers(productType),$scope.$broadcast(SearchController.productTypeChangedEvent)}),$scope.$watch(function(){return _this.$state.params[Constants.routeParams.category]},function(productType){_this.$state.params[Constants.routeParams.autosearch]||(_this.searchSessionService.search=null),_this.checkProductType(productType)}),$scope.$watch(function(){return _this.$state.params[Constants.routeParams.group]},function(group){_this.$state.params[Constants.routeParams.autosearch]||(_this.searchSessionService.search=null),_this.checkGroup(group)}),$scope.$watch(function(){return _this.selectedQty},function(qty){var autosearch=_this.searchSessionService.search.minStock!=qty&&_this.searchSessionService.search.values&&_this.searchSessionService.search.values.length>0&&_this.activeProductType&&(!Constants.standaloneFacetGroupNames[_this.activeProductType.value]||_this.searchSessionService.search.values.length>Constants.standaloneFacetGroupNames[_this.activeProductType.value].length),search=_this.searchSessionService.search;search.minStock=qty,_this.searchSessionService.search=search,autosearch&&_this.search()}),searchService.getProductTypes().then(function(result){_this.productTypes=result,_this.productTypes.unshift({value:"all",display:_this.$translate.instant("all")}),null!=_this.$state.params[Constants.routeParams.category]?_this.checkProductType(_this.$state.params[Constants.routeParams.category]):_this.checkProductType("all")}),this.selectedQty=this.searchSessionService.search.minStock,this.$state.params[Constants.routeParams.autosearch]&&this.searchSessionService.search&&this.searchSessionService.search.values){for(var searchObjects={},i=0;i<this.searchSessionService.search.values.length;i++)searchObjects[this.searchSessionService.search.values[i].subjectKey]?searchObjects[this.searchSessionService.search.values[i].subjectKey].push(this.searchSessionService.search.values[i]):searchObjects[this.searchSessionService.search.values[i].subjectKey]=[this.searchSessionService.search.values[i]];this.searchObjects=searchObjects}if(this.$state.params[Constants.routeParams.changingOrder]&&this.$state.params[Constants.routeParams.product]){var currentSearch=this.searchSessionService.search,activeProductType=null;currentSearch&&(activeProductType=currentSearch.activeProductType),activeProductType||(activeProductType={display:"tyres",value:"tyres"});var search=new App.AutoCompleteRequestModel;search.activeProductType=activeProductType,search.values=[{group:search.activeProductType.display,groupKey:search.activeProductType.value,subject:"productId",subjectKey:"productId",display:this.$state.params[Constants.routeParams.product],value:this.$state.params[Constants.routeParams.product],triggerAction:!1}],this.searchSessionService.search=search,this.search()}}return SearchController.controllerId="searchController",SearchController.productTypeChangedEvent="productTypeChanged",SearchController.$inject=["$rootScope","$scope","$state","$translate","$q","$timeout",Constants.sharedServiceIds.searchService,Constants.sharedServiceIds.searchSession],SearchController}();Controllers.SearchController=SearchController,ProductSearch.app.controller(SearchController.controllerId,SearchController)}(ProductSearch.Controllers||(ProductSearch.Controllers={}))}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){function appRun(routehelper,$translate){routehelper.configureRoutes(getRoutes($translate))}var getRoutes=function($translate){return[{name:Constants.routes.search,url:"/s?"+Constants.routeParams.category+"&"+Constants.routeParams.autosearch+"&"+Constants.routeParams.group+"&"+Constants.routeParams.changingOrder,cache:!1,title:"",order:1,requireLogin:!1,views:{search:{controller:App.ProductSearch.Controllers.SearchController.controllerId+" as scvm"}}}]};App.ProductSearch.app.run(appRun)}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){App.ProductSearch.app.config(function($urlRouterProvider){$urlRouterProvider.otherwise("/s")});var Init=function(){function Init($rootScope,$templateCache,searchSessionService){$templateCache.put("extended/select-multiple.tpl."+Constants.extensionHtml,'<div class="ui-select-container ui-select-multiple ui-select-bootstrap ui-select-extended dropdown form-control" ng-class="{open: $select.open}">    <div>        <div class="ui-select-match"></div>        <span ng-show="$select.open && $select.refreshing && $select.spinnerEnabled" class="ui-select-refreshing {{$select.spinnerClass}}"></span>         <input type="search" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="ui-select-search input-xs" placeholder="{{$select.placeholder}}" ng-disabled="$select.disabled" ng-model="$select.search" role="combobox" aria-expanded="{{$select.open}}" aria-label="{{$select.baseTitle}}" ng-class="{\'spinner\': $select.refreshing}" ondrop="return false;">    </div>    <div class="ui-select-choices"></div>    <div class="ui-select-no-choice"></div></div>'),$templateCache.put("extended/match-multiple.tpl."+Constants.extensionHtml,$templateCache.get("bootstrap/match-multiple.tpl."+Constants.extensionHtml)),$templateCache.put("extended/choices.tpl."+Constants.extensionHtml,'<ul class="ui-select-choices ui-select-choices-content ui-select-dropdown dropdown-menu" ng-show="$select.open && $select.items.length > 0">   <li class="ui-select-choices-group" id="ui-select-choices-{{ $select.generatedId }}">       <div ng-show="$select.isGrouped" class="ui-select-choices-group-label dropdown-header" ng-bind-html="$group.name | trustedHtml"></div>       <div ng-attr-id="ui-select-choices-row-{{ $select.generatedId }}-{{$index}}"             class="ui-select-choices-row"             ng-class="{active: $select.isActive(this), disabled: $select.isDisabled(this)}"             role="option">           <span class="ui-select-choices-row-inner"></span>       </div>   </li></ul>'),$templateCache.put("custom/match-multiple.tpl."+Constants.extensionHtml,$templateCache.get("bootstrap/match-multiple.tpl."+Constants.extensionHtml)),$templateCache.put("custom/choices.tpl."+Constants.extensionHtml,$templateCache.get("bootstrap/choices.tpl."+Constants.extensionHtml)),$templateCache.put("custom/select-multiple.tpl."+Constants.extensionHtml,'<div class="ui-select-container ui-select-multiple ui-select-bootstrap dropdown form-control" ng-class="{open: $select.open}">    <div>        <div class="ui-select-match"></div>        <span ng-show="$select.open && $select.refreshing && $select.spinnerEnabled" class="ui-select-refreshing {{$select.spinnerClass}}"></span>         <input type="search" autocomplete="off" autocorrect="off"                autocapitalize="off" spellcheck="false" class="ui-select-search input-xs"                placeholder="{{$select.placeholder}}" ng-disabled="$select.disabled"                ng-model="$select.search" role="combobox"                aria-expanded="{{$select.open}}" aria-label="{{$select.baseTitle}}" ng-class="{\'spinner\': $select.refreshing}" ondrop="return false;">    </div>    <div class="ui-select-choices"></div>    <div class="ui-select-no-choice"></div></div>'),$rootScope.isMaster||(searchSessionService.showAllProducts=!1)}return Init}();App.ProductSearch.app.run(["$rootScope","$templateCache",Constants.sharedServiceIds.searchSession,function($rootScope,$templateCache,searchSessionService){return new Init($rootScope,$templateCache,searchSessionService)}])}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){!function(Controllers){var SearchAllController=function(){function SearchAllController($rootScope,$scope,$state,$timeout,searchService,searchSessionService){var _this=this;this.$rootScope=$rootScope,this.$scope=$scope,this.$state=$state,this.$timeout=$timeout,this.searchService=searchService,this.searchSessionService=searchSessionService,this.freeSearch="",this.searchValues=null,this.results=[],this.needToClose=!1,this._autoClose=!1,this.setSearch=function(values){var search=_this.searchSessionService.search;if(values){0==values.length&&(search.facets=null);var possibleTrigger=values.filter(function(item){return item.triggerAction});possibleTrigger.length>0&&_this.goToProductType(possibleTrigger[0].groupKey)}else search.facets=null;search.values=values,_this.searchSessionService.search=search},this.goToProductType=function(productType){_this.$state.go(_this.$state.$current,(_a={},_a[Constants.routeParams.category]=productType,_a),{notify:!1});var _a},this.resetSearch=function($select,autoSearch){$select&&($select.search=""),_this.results=[],autoSearch&&(_this.$scope.$broadcast("focusSearch"),_this.searchValues&&_this.searchValues.length>0&&_this.searchAutocomplete(null,$select,!0))},this.searchAutocomplete=function(newValue,$select,removeIndex,clearOnEmptySearch){if(_this.freeSearch=newValue,!newValue&&(!_this.searchValues||0==_this.searchValues.length||clearOnEmptySearch))return _this.resetSearch(),void($select&&_this.$timeout(function(){$select.activeIndex=-1},0));var searchObj=angular.copy(_this.searchSessionService.search);return searchObj.terms=newValue,searchObj.values=_this.searchValues,searchObj.facets=null,searchObj.sortKey=null,searchObj.sortDirection=null,searchObj.searchTerms=null,_this.searchService.autoComplete(searchObj).then(function(result){_this.previousGroup=null,_this.previousSubject=null,_this.results=[].concat.apply([],result.map(function(group){if(group.results)return[].concat.apply([],group.results.map(function(subject){return[].concat.apply([],subject.terms.map(function(item){var requestItem=new ProductSearch.AutoCompleteRequestItem;return requestItem.groupKey=group.category.value,requestItem.group=group.category.display,requestItem.subjectKey=subject.value,requestItem.subject=subject.display,requestItem.display=item.display,requestItem.value=item.value,requestItem}))}));if(group.hasOwnProperty("triggerAction")){var requestItem=new ProductSearch.AutoCompleteRequestItem;return requestItem.groupKey=group.category.value,requestItem.group=group.category.display,requestItem.subjectKey=null,requestItem.triggerAction=group.triggerAction,requestItem}return[]})),$select&&_this.$timeout(function(){(removeIndex||$select.search&&0==_this.results.length)&&($select.activeIndex=-1)},0)})},this.previousGroup=null,this.previousSubject=null,this.searchGroups=function(item){var groupName="&nbsp;",groupClass="hidden-xs",divider="";return _this.previousGroup==item.group&&_this.previousSubject!=item.subjectKey||(groupName=item.group,divider='<div class="divider"></div>',groupClass="",_this.previousSubject=item.subjectKey,1!=App.Functions.unique(_this.results.filter(function(group){return group.groupKey==item.groupKey}).map(function(item){return item.subjectKey})).length&&(groupClass="pos-abs")),_this.previousGroup=item.group,divider+'<h4 class="'+groupClass+'" data-group="'+item.groupKey+'">'+groupName+"</h4>"+(null!=item.subjectKey?'<h5 data-subject="'+item.subjectKey+'">'+item.subject+"</h5>":"")},this.trySearch=function(searchString,callback){if(null==_this.searchValues||0==_this.searchValues.length){if(!_this.results||0==_this.results.length)return;_this.searchValues=[_this.results[0]],searchString="",_this.freeSearch=null,_this.setSearch(_this.searchValues),_this.needClear=!0}callback(searchString)},this.needClear=!1,this.searchValues=this.searchSessionService.search.values,this.freeSearch=this.searchSessionService.search.searchTerms,$scope.$watch(function(){return _this.searchValues},function(newValue,oldValue){_this.needToClose=newValue&&newValue.length>=2,_this.needToClose&&(_this.autoClose=!0),_this.setSearch(newValue),_this.needToClose&&_this.searchAction&&_this.trySearch("",_this.searchAction)},!0),this.$state.params[Constants.routeParams.autosearch]&&this.searchSessionService.search&&(this.searchValues=this.searchSessionService.search.values)}return Object.defineProperty(SearchAllController.prototype,"autoClose",{get:function(){var val=this._autoClose;return this._autoClose=!1,val},set:function(val){this._autoClose=val},enumerable:!0,configurable:!0}),
SearchAllController.controllerId="searchAllController",SearchAllController.$inject=["$rootScope","$scope","$state","$timeout",Constants.sharedServiceIds.searchService,Constants.sharedServiceIds.searchSession],SearchAllController}();Controllers.SearchAllController=SearchAllController,ProductSearch.app.controller(SearchAllController.controllerId,SearchAllController)}(ProductSearch.Controllers||(ProductSearch.Controllers={}))}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){!function(Controllers){var SearchRimsController=function(){function SearchRimsController($rootScope,$scope,$state,$translate,searchSessionService){var _this=this;if(this.$rootScope=$rootScope,this.$scope=$scope,this.$state=$state,this.$translate=$translate,this.searchSessionService=searchSessionService,this.searchTypes=[{value:"configurator",display:this.$translate.instant("configurator")},{value:"basic",display:this.$translate.instant("basic")}],this.searchType=this.searchTypes[0].value,this.isProductPage=function(){return 0==decodeURIComponent(window.location.href).indexOf(App.Variables.productPage)},this.goToProductPage=function(){if(!_this.isProductPage()){var redirUrl=App.Variables.productPage+"#/s/p/?"+Constants.routeParams.category+"=rims";_this.searchType&&(redirUrl+="&"+Constants.routeParams.group+"="+_this.searchType),window.location.assign(redirUrl)}},$state.params[Constants.routeParams.group])this.searchTypes.findIndex(function(x){return x.value.toLowerCase()==$state.params[Constants.routeParams.group].toLowerCase()})>-1&&(this.searchType=$state.params[Constants.routeParams.group]);else if(searchSessionService.search&&searchSessionService.search.values){var possibleVehicleGroup=searchSessionService.search.values.filter(function(x){return"vehiclegroups"==x.subjectKey})[0];possibleVehicleGroup&&this.searchTypes.findIndex(function(x){return x.value.toLowerCase()==possibleVehicleGroup.value.toLowerCase()})>-1&&(this.searchType=possibleVehicleGroup.value)}$scope.$watch(function(){return _this.searchType},function(newVal){"configurator"!=newVal||_this.isProductPage()?$state.params[Constants.routeParams.group]?$state.params[Constants.routeParams.group]!=_this.searchType&&_this.$state.go(_this.$state.$current,(_b={},_b[Constants.routeParams.product]=null,_b[Constants.routeParams.dot]=null,_b[Constants.routeParams.demo]=null,_b[Constants.routeParams.studded]=null,_b[Constants.routeParams.damaged]=null,_b[Constants.routeParams.group]=newVal,_b[Constants.routeParams.autosearch]=null,_b[Constants.routeParams.search]=null,_b),{notify:!1}):_this.$state.go(_this.$state.$current,(_a={},_a[Constants.routeParams.group]=newVal,_a),{notify:!1}):_this.goToProductPage();var _a,_b})}return SearchRimsController.controllerId="searchRimsController",SearchRimsController.$inject=["$rootScope","$scope","$state","$translate",Constants.sharedServiceIds.searchSession],SearchRimsController}();Controllers.SearchRimsController=SearchRimsController,ProductSearch.app.controller(SearchRimsController.controllerId,SearchRimsController)}(ProductSearch.Controllers||(ProductSearch.Controllers={}))}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){!function(Controllers){var SearchTyresController=function(){function SearchTyresController($rootScope,$scope,$state,searchService,searchSessionService){var _this=this;this.$rootScope=$rootScope,this.$scope=$scope,this.$state=$state,this.searchService=searchService,this.searchSessionService=searchSessionService,this.searchValues=null,this.results=[],this.resetSearch=function($select){$select&&($select.search="")},this.getFacetsByKey=function(facets,key){var group=_this.searchSessionService.search.activeProductType,facetGroup=facets.filter(function(x){return x.name.value===key})[0];return facetGroup&&facetGroup.values?facetGroup.values.sort(function(a,b){return b.count-a.count}).map(function(item){var requestItem=new ProductSearch.AutoCompleteRequestItem;return requestItem.groupKey=group.value,requestItem.group=group.display,requestItem.subjectKey=facetGroup.name.value,requestItem.subject=facetGroup.name.display,requestItem.display=item.display,requestItem.value=item.value,requestItem}):[]},this.getFacets=function(facets,key){var group=_this.searchSessionService.search.activeProductType,facetGroup=facets[key];return facetGroup&&facetGroup.values?facetGroup.values.sort(function(a,b){return b.count-a.count}).map(function(item){var requestItem=new ProductSearch.AutoCompleteRequestItem;return requestItem.groupKey=group.value,requestItem.group=group.display,requestItem.subjectKey=facetGroup.name.value,requestItem.subject=facetGroup.name.display,requestItem.display=item.display,requestItem.value=item.value,requestItem}):[]},this.searchValues=this.searchSessionService.search.values}return SearchTyresController.controllerId="searchTyresController",SearchTyresController.$inject=["$rootScope","$scope","$state",Constants.sharedServiceIds.searchService,Constants.sharedServiceIds.searchSession],SearchTyresController}();Controllers.SearchTyresController=SearchTyresController,ProductSearch.app.controller(SearchTyresController.controllerId,SearchTyresController)}(ProductSearch.Controllers||(ProductSearch.Controllers={}))}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){var PropsFilterIndex=function(){function PropsFilterIndex(){return function(items,props){var out=[];return angular.isArray(items)?items.forEach(function(item){for(var itemMatches=!1,keys=Object.keys(props),i=0;i<keys.length;i++){var prop=keys[i];if(!angular.isUndefined(props[prop])){var text=props[prop].toString().toLowerCase();if(null!=item[prop]&&-1!==item[prop].toString().toLowerCase().indexOf(text)){itemMatches=!0;break}}}itemMatches&&out.push(item)}):out=items,out}}return PropsFilterIndex.filterName="propsFilter",PropsFilterIndex}();ProductSearch.PropsFilterIndex=PropsFilterIndex,ProductSearch.app.filter(PropsFilterIndex.filterName,function(){return new PropsFilterIndex})}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));var App;!function(App){!function(ProductSearch){var SearchPostModel=function(){function SearchPostModel(){}return SearchPostModel}();ProductSearch.SearchPostModel=SearchPostModel}(App.ProductSearch||(App.ProductSearch={}))}(App||(App={}));
