1'use strict'; // 2 3 4// 761110 5// 35000 6 7// **************************************************** 8// Gestion des Menus (Header et Footer) 9// **************************************************** 10angular.module('AboShopApp').factory('menusManager', ['$q','TbsWS','utils','productsManager', 'commonConfig', '$rootScope', 'categoriesManager',function ($q, TbsWS, utils, productsManager, commonConfig, $rootScope, categoriesManager) { 11 var factory = {}; 12 13 function recursiveStoreId(items, list, param){ 14 for(var i =0;i<items.length;i++){ 15 if(items[i].type === "menu"){ 16 list = _.union(list, recursiveStoreId(items[i].items, list, param)); 17 } else if(items[i].type === param){ 18 list.push(items[i].id); 19 } 20 } 21 return list; 22 } 23 24 function removeItem(items){ 25 return _.filter(items, function(item){ 26 let sdelete = item.mustbedelete; 27 delete item.mustbedelete; 28 //return !sdelete; 29 return true; 30 }); 31 } 32 33 function recursivePrepareItem(item,itsCms,itsProduit,itsCategories){ 34 var cms,product,categorie; 35 item.translated=true; 36 if(item.type === "menu"){ 37 item.hassubmenu=false; 38 for(var i =0;i< item.items.length;i++){ 39 if(item.items[i].type === "menu"){ 40 item.hassubmenu=true; 41 } 42 recursivePrepareItem(item.items[i],itsCms,itsProduit,itsCategories); 43 } 44 item.items = removeItem(item.items); 45 } else if(item.type === "cms"){ 46 item.mustbedelete = false; 47 48 cms = utils.findById(itsCms, item.id, "idPage"); 49 if(cms){ 50 if(cms.estModal){ 51 item.estmodal = true; 52 } else { 53 item.id = item.id; 54 } 55 if(item.label === undefined){ 56 item.label = cms.titrePage; 57 item.translated=false; 58 } 59 } else { 60 item.mustbedelete = true; 61 } 62 item.img = commonConfig.nocmsimg; 63 } else if(item.type === "produit"){ 64 item.mustbedelete = false; 65 product = utils.findById(itsProduit, item.id, "refProduit"); 66 if(product && product !== undefined){ 67 item.img = product.images[0] + '?' + commonConfig.forceversion; 68 if(item.label === undefined){ 69 item.label = product.libelle; 70 item.translated=false; 71 } 72 item.estUnDon = product.estUnDon; 73 item.estUnArticleLibre = product.estUnArticleLibre; 74 item.estUnAbonnement = product.estUnAbonnement; 75 item.estUneFormule = product.estUneFormule; 76 } else { 77 item.mustbedelete = true; 78 } 79 } else if(item.type === "page"){ 80 item.mustbedelete = false; 81 item.img = commonConfig.nocmsimg; 82 } else if(item.type === "categorie"){ 83 item.mustbedelete = false; 84 categorie = utils.findById(itsCategories, parseInt(item.id), "refCategorie"); 85 if(categorie && categorie !== undefined){ 86 item.img = commonConfig.nocmsimg; 87 if(item.label === undefined){ 88 item.label = categorie.nom; 89 item.profil = categorie.profil; 90 item.translated=false; 91 item.page = categorie.page; 92 } 93 } else { 94 item.mustbedelete = true; 95 } 96 } else if(item.type === "link"){ 97 item.mustbedelete = false; 98 item.img = commonConfig.nocmsimg; 99 } else { 100 item.mustbedelete = true; 101 } 102 } 103 104 function loadMenu(deferred,json,itemsCms,itemsProduit,itsCategories){ 105 var cmenu,i =0; 106 for(var p in json){ 107 if(p.startsWith("menu")){ 108 cmenu = json[p]; 109 for(i =0;i<cmenu.length;i++){ 110 recursivePrepareItem(cmenu[i],itemsCms,itemsProduit,itsCategories); 111 } 112 json[p] = removeItem(cmenu); 113 } 114 } 115 deferred.resolve(json); 116 } 117 118 factory.buildMenu = function buildMenu(json) { 119 var deferred = $q.defer(), 120 p, 121 pagesCmsIds= [], 122 productsIds= [], 123 categoriesIds = [], 124 i =0, 125 j =0, 126 params = {}, 127 itemsCms=[], 128 itemsProduit=[], 129 itemsCategories = [], 130 loadProduit=false, 131 loadCms=false, 132 loadCategories=false; 133 134 135 function _tryEndLoad(){ 136 if(loadProduit && loadCms && loadCategories){ 137 loadMenu(deferred,json,itemsCms,itemsProduit,itemsCategories); 138 } 139 } 140 141 for(var p in json){ 142 if(p.startsWith("menu")){ 143 productsIds = _.union(productsIds, recursiveStoreId(json[p],productsIds,"produit"));
144 pagesCmsIds = _.union(pagesCmsIds, recursiveStoreId(json[p],pagesCmsIds,"cms")); 145 categoriesIds = _.union(categoriesIds, recursiveStoreId(json[p],categoriesIds,"categorie")); 146 } 147 } 148 productsIds = _.uniq(productsIds); 149 pagesCmsIds = _.uniq(pagesCmsIds); 150 categoriesIds = _.uniq(categoriesIds); 151 152 //Chargement des page cms et Quand tout est charge (cms + produit),on construit le menu 153 154 if(pagesCmsIds.length > 0){ 155 params.array = pagesCmsIds; 156 TbsWS.call('gettypepage/'+ $rootScope.preferredLanguage,'public',params).then( 157 function(data){ 158 loadCms=true; 159 itemsCms=data; 160 _tryEndLoad(); 161 } 162 ,function(error) { 163 loadCms=true; 164 _tryEndLoad(); 165 } 166 ); 167 } else { 168 loadCms=true; 169 _tryEndLoad(); 170 } 171 172 //Chargement des produits et Quand tout est charge (cms + produit),on construit le menu 173 if(productsIds.length > 0){ 174 productsManager.loadProductsFromIds(productsIds).then( 175 function(products){ 176 loadProduit=true; 177 itemsProduit = products; 178 _tryEndLoad(); 179 } 180 ,function(error) { 181 loadProduit=true; 182 _tryEndLoad(); 183 } 184 ); 185 } else { 186 loadProduit=true; 187 _tryEndLoad(); 188 } 189 190 //Chargement des categories et Quand tout est charge (cms + produit + categories),on construit le menu 191 if(categoriesIds.length > 0){ 192 categoriesManager.loadCategoriesFromIds(categoriesIds).then( 193 function(categories){ 194 loadCategories=true; 195 itemsCategories = categories; 196 _tryEndLoad(); 197 } 198 ,function(error) { 199 loadCategories=true; 200 _tryEndLoad(); 201 } 202 ); 203 } else { 204 loadCategories=true; 205 _tryEndLoad(); 206 } 207 208 return deferred.promise; 209 }; 210 return factory; 211}]);
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.