PageSourceSearch

https://boutique.canardpc.com/core/aboshop/category.factory.js?v=

js canardpc.com collected 2026-10-01 11:49:36 UTC 12,535 bytes, 388 lines download raw bytes

1'use strict'; //
2
3// ****************************************************
4//  Gestion des Produits
5// ****************************************************
6angular.module('AboShopApp').factory('categoriesManager', ['$q', 'TbsWS', 'commonConfig', '$rootScope', 'formulaireManager', '$state',function ($q, TbsWS, commonConfig, $rootScope, formulaireManager, $state) {
7
8		var factory = {};
9
10        factory.loadCategoriesFromIds = function loadCategoriesFromIds(categoriesId){
11        	var deferred = $q.defer();
12			var resultCategories = [];
13			if(categoriesId.length > 0){
14				factory.getCategories("all").then(
15					function(categories){
16						if(categories !== undefined){
17							for(let p in categories){
18								if(_.contains(categoriesId,categories[p].refCategorie.toString())){
19									resultCategories.push(categories[p]);
20								}
21							}
22						}
23						deferred.resolve(resultCategories);
24	          		}
25			          ,function() {
26						deferred.resolve(resultCategories);
27			        }
28				);
29			}
30		    return deferred.promise;
31	   };
32
33        factory.getCategory = function getCategory(refCat, light=false){
34			var deferred = $q.defer();
35			if(refCat === undefined || refCat === ""){
36				deferred.resolve({});
37			} else {
38				TbsWS.call('category/'+$rootScope.preferredLanguage+'/'+ refCat+'?light='+light,'public').then(
39			          function(category){
40			        	if($state.current.data.seoMap === undefined){
41			        		$state.current.data.seoMap = [];
42				        }
43			        	if(category.seo !== undefined && category.seo !== null && 
44			          			(category.seo.urlRewrite === undefined || category.seo.urlRewrite === null || category.seo.urlRewrite === "")) {
45				    		let ob = factory.getHrefCategorie(category);
46				    		category.seo.urlRewrite = ob.url;
47				    	}
48			        	if (category.seo !== undefined && category.seo !== null && category.seo.urlRewrite !== undefined
49							&& category.seo.urlRewrite !== null && category.seo.urlRewrite !== "") {
50						  if (category.seo.urlRewrite.startsWith('/') === false) {
51							  category.seo.urlRewrite = '/' + category.seo.urlRewrite;
52						  }
53					  	}
54						if(category.seo !== undefined && category.seo !== null) {
55			        		$state.current.data.seoMap.push(category.seo);
56						}
57			          	deferred.resolve(category);
58			          }
59			          ,function(error) {
60			          	deferred.resolve({});
61			        }
62			    );
63			}
64		    return deferred.promise;
65	   };
66       
67	   factory.getHrefCategorie = function getHrefCategorie( categorie ) {
68	    	let ob = TbsWS.getUrlHome();
69	    	if(categorie!== undefined && categorie.refCategorie !== undefined){
70	    		if(categorie.profil !== undefined && categorie.profil != null && categorie.profil != ""){
71		    		ob.profil = categorie.profil;
72	    		}
73	    		if (categorie.page == true) {
74					ob.url = '/common/categories-list/'+categorie.refCategorie;
75				} else {
76					ob.url = '/common/categories/'+categorie.refCategorie;
77				}
78	    	}
79	    	return ob;
80		};
81
82		function getParentCategorie(catarbo,refCategorieParent){
83			for(let p in catarbo){
84				let cat = catarbo[p];
85				if(cat.refCategorie == refCategorieParent){
86					return cat;
87				}
88				if(cat.categories !== undefined && cat.categories.length > 0){
89					let parent = getParentCategorie(cat.categories,refCategorieParent);
90					if(parent !== null){
91						return parent;
92					}
93				}
94			}
95			return null;
96		}
97
98        factory.getEnfantsCategories = function getEnfantsCategories(refCat){
99			var deferred = $q.defer();
100
101			TbsWS.call('categoriesenfantsbycategorie/' + $rootScope.preferredLanguage +'/' + refCat,'public').then(
102				function(categories){
103					deferred.resolve(categories);
104				}
105				,function(error) {
106					console.error(error);
107					deferred.resolve([]);
108				}
109			);
110			return deferred.promise;
111		};
112
113		factory.nbCategoriesEnfants = function nbCategoriesEnfants(refCat){
114			var deferred = $q.defer();
115
116			TbsWS.call('nbcategoriesenfantsbycategories/' + $rootScope.preferredLanguage +'/' + refCat,'public').then(
117				function(result){
118					if (result && result.key === "nbcategoriesenfantsbycategories"){
119						deferred.resolve(result.value);
120					} else {
121						deferred.resolve(0);
122					}
123				}
124				,function(error) {
125					deferred.resolve(0);
126				}
127			);
128			return deferred.promise;
129		};
130
131		factory.getCategories = function getCategories(returnAll){
132			 var deferred = $q.defer();
133			 TbsWS.call('categories/'+ $rootScope.preferredLanguage + '/' + returnAll,'public').then(
134				   function(categories){
135					   deferred.resolve(categories);
136				   }
137				   ,function(error) {
138					   console.error(error);
139					   deferred.resolve([]);
140				 }
141			 );
142			 return deferred.promise;
143		};
144
145	   factory.getCategoriesKeyValue = function getCategoriesKeyValue(){
146			console.log('getCategoriesKeyValue');
147			var deferred = $q.defer();
148			TbsWS.call('categorieskeyvalue/'+ $rootScope.preferredLanguage,'public').then(
149		          function(categories){
150		          	deferred.resolve(categories);
151		          }
152		          ,function(error) {
153		          	console.error(error);
154		          	deferred.resolve([]);
155		        }
156		    );
157		    return deferred.promise;
158	   };
159
160		factory.getCategoriesHome = function getCategoriesHome(){
161			var deferred = $q.defer();
162			TbsWS.call('categorieshome/'+ $rootScope.preferredLanguage,'public').then(
163				function(categories){
164					deferred.resolve(categories);
165				}
166				,function(error) {
167					console.error(error);
168					deferred.resolve([]);
169				}
170			);
171			return deferred.promise;
172		};
173
174        factory.getCategoriesAndPrepare = function getCategoriesAndPrepare(){
175			var deferred = $q.defer();
176
177			factory.getCategories().then(
178		          function(categories){
179		          	let catarbo = [];
180		          	for(let p in categories){
181		          		let cat = categories[p];
182		          		cat.strclasses = '';
183		          		cat.categories = [];
184		          		cat.sortbyname = new Object();
185		          		let parent = null;
186		          		if(cat.refCategorieParent !== null){
187		          			parent = getParentCategorie(catarbo,cat.refCategorieParent);
188		          		}
189		          		if(parent === null){
190		          			catarbo.push(cat);
191		          		} else {
192		          			parent.categories.push(cat);
193		          		}
194		          	}
195		          	deferred.resolve(catarbo);
196		          }
197		          ,function(error) {
198		          	console.error(error);
199		          	deferred.resolve([]);
200		        }
201		    );
202		    return deferred.promise;
203	   };
204
205		factory.getCategoriesHomeAndPrepare = function getCategoriesHomeAndPrepare(){
206			var deferred = $q.defer();
207
208			factory.getCategoriesHome().then(
209				function(categories){
210					let catarbo = [];
211					for(let p in categories){
212						let cat = categories[p];
213						let parent = null;
214						cat.categories = [];
215
216						if(cat.refCategorieParent !== null){
217							parent = getParentCategorie(catarbo,cat.refCategorieParent);
218						}
219
220						if(parent === null){
221							catarbo.push(cat);
222						} else {
223							parent.categories.push(cat);
224						}
225
226					}
227					deferred.resolve(catarbo);
228				}
229				,function(error) {
230					console.error(error);
231					deferred.resolve([]);
232				}
233			);
234			return deferred.promise;
235		};
236
237        factory.getFiltreParDateForm = function getFiltreParDateForm(cat, filter){
238
239        	var filterForm={},
240				yearsObj=[],
241				monthsObj=[],
242				ob={},
243				min=0,
244				i=0,
245				indexYear=-1,
246				indexMonth=-1;
247
248			filterForm.fields = [];
249
250			if(cat.filtreDateMin != null && cat.filtreDateMax != null && cat.filtreParDateActif == true){
251				min=new Date(cat.filtreDateMin).getFullYear();
252				i=new Date(cat.filtreDateMax).getFullYear();
253
254				yearsObj.push({value:"all",label:"DICO_NO_FILTER"});
255
256				while(i>=min){
257					ob = {value:i,label:i};
258					yearsObj.push(ob);
259					if(i == parseInt(filter.year)){
260						indexYear = yearsObj.length-1;
261					}
262					i--;
263				}
264
265				monthsObj = [	{value:"all",label:"DICO_NO_FILTER"},
266								{value:1,label:"DICO_JANVIER"},
267								{value:2,label:"DICO_FEVRIER"},
268								{value:3,label:"DICO_MARS"},
269								{value:4,label:"DICO_AVRIL"},
270								{value:5,label:"DICO_MAI"},
271								{value:6,label:"DICO_JUIN"},
272								{value:7,label:"DICO_JUILLET"},
273								{value:8,label:"DICO_AOUT"},
274								{value:9,label:"DICO_SEPTEMBRE"},
275								{value:10,label:"DICO_OCTOBRE"},
276								{value:11,label:"DICO_NOVEMBRE"},
277								{value:12,label:"DICO_DECEMBRE"}
278							];
279
280				ob = {};
281				formulaireManager.createSelect("years",ob,"DICO_YEAR",yearsObj,false, (filter.year == "all"?0:indexYear));
282				filterForm.fields.push(ob);
283
284				ob = {};
285				formulaireManager.createSelect("months",ob,"DICO_MONTH",monthsObj,false, (filter.month == "all"?0:parseInt(filter.month)));
286				filterForm.fields.push(ob);
287			}
288
289		    return filterForm;
290	   };
291
292	   function getCategorie(categories,refCategorie){
293	   		for(let p in categories){
294	   			let cat = categories[p];
295	   			if(cat.refCategorie == refCategorie){
296	   				return cat;
297	   			}
298	   		}
299	   		return null;
300	   }
301
302	   factory.getToAscii = function getToAscii(chaine){
303		   let result = '0';
304		   if(chaine !== undefined && chaine != null){
305 	   			for(let i=0;i<chaine.length;i++){
306 	   				result += ''+chaine.charCodeAt(i);
307 	   			}
308		   }
309		   return result;
310	   };
311
312	   factory.buildCategoriesList = function buildCategoriesList(src) {
313    		var deferred = $q.defer();
314	    	TbsWS.getJson(src).then(
315		          function(json){
316		          	factory.getCategoriesAndPrepare().then(
317				          function(categories){
318				      	   		function inArray (myarray, comparer) {
319					      		   	 for(var i=0; i < myarray.length; i++) {
320					      		   	     if(comparer(myarray[i])) return true;
321					      		   	 }
322					      		   	 return false;
323				      		   	};
324				      		   	function pushIfNotExist(myarray, element, comparer) {
325				      			   	 if (!inArray(myarray, comparer)) {
326				      			   		 myarray.push(element);
327				      			   	 }
328				      			 };
329
330				        	  	const categorieslocal = [];
331				        	  	const categoriesbutton = [];
332				        	  	const allsorts = [];
333								for(let p=0;p<json.length;p++){
334	          	   					const ascii = 'a'+factory.getToAscii(json[p].label);
335									if(json[p].categories !== undefined){
336					          	   		if(json[p].categories.length == 0){
337					          	   			let i = 0;
338						          	   		for(let c in categories){
339						        	   			let cat = categories[c];
340						        	   			cat.strclasses += ' '+ascii;
341						        	   			cat.sortbyname[ascii] = i+1;
342						        	   			pushIfNotExist(categorieslocal, cat,function(e) {
343								        	  	    return e.refCategorie === cat.refCategorie;
344								        	  	});
345						        	   			i++;
346						        	   		}
347					          	   		} else {
348					          	   			for(let i=0;i<json[p].categories.length;i++){
349					          	   				let cat = getCategorie(categories,json[p].categories[i]);
350					          	   				if(cat !== null){
351							        	   			cat.strclasses += ' '+ascii;
352							        	   			cat.sortbyname[ascii] = i+1;
353							        	   			pushIfNotExist(categorieslocal,cat,function(e) {
354									        	  	    return e.refCategorie === cat.refCategorie;
355									        	  	});
356					          	   				}
357					          	   			}
358					          	   		}
359					          	   		if (json[p].label !== "default"){
360					          	   			let obj = {};
361					          	   			obj.label = json[p].label;
362					          	   			obj.key = ascii;
363					          	   			categoriesbutton.push(obj);
364					          	   		}
365					          	   		allsorts.push(ascii);
366				          	   		}
367					          	}
368
369				          		let obj = {};
370				          		obj.categories = categorieslocal;
371				          		obj.categoriesbutton = categoriesbutton;
372				          		obj.allsorts = allsorts;
373					          	deferred.resolve(obj);
374				          }
375				          ,function(error) {
376				          	deferred.reject(error);
377				        }
378				    );
379		          }
380		          ,function(error) {
381		              deferred.reject(error);
382		        }
383		    );
384		    return deferred.promise;
385	    };
386
387        return factory;
388    }]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.