1class BasketHandler { 2 #basketHandler = '/local/action/basket.php'; 3 basketList = {}; 4 countItems = 0;//ÑÑÑÑÑик колиÑеÑÑва ÑлеменÑов 5 6 constructor() { 7 document.addEventListener('DOMContentLoaded', ()=>{ 8 setTimeout(()=>{ 9 this.get(); 10 }, 2000) 11 }) 12 } 13 14 //колиÑеÑÑво ÑлеменÑов 15 set count(value) { 16 this.countItems = parseInt(value); 17 HH.controlButtons.set.cart(this.count); 18 } 19 get count() { 20 return this.countItems; 21 } 22 23 add2basket(itemId, params = {}, callbackFn = false) { 24 /** 25 * itemID, 26 * params = { 27 * properties: [ 28 * { 29 * propCode: propCode, 30 * propValues: [ 31 * val_1, val_n 32 * ] 33 * } 34 * ] 35 * }, 36 * callbackFn = { 37 * f: function 38 * d: data for Function 39 * } 40 * */ 41 42 let requestData = this.getRequestData('add', { 43 id: itemId 44 }) 45 46 if (!!params && !!params.properties) { 47 requestData.properties = params.properties; 48 } 49 50 this.request(requestData, callbackFn); 51 } 52 53 removeFromBasket(recId, callbackFn = false) { 54 let requestData = this.getRequestData('remove', { 55 id: recId 56 }) 57 this.request(requestData, callbackFn) 58 } 59 60 /** ÐагÑÑзка акÑÑалÑной коÑÐ·Ð¸Ð½Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ */ 61 get(callbackFn = false) { 62 let requestData = this.getRequestData('getUserBasket', {}) 63 this.request(requestData, callbackFn); 64 } 65 66 initProcAll(res) { 67 if (res.status == true) { 68 if (!!this.basketList) { 69 for (let i in this.basketList) { 70 let inBtn = main.content.querySelector('[data-id="' + i + '"]'); 71 if (!catalog.basket.check(inBtn)) { 72 catalog.basket.toggleBasketClass(inBtn); 73 } 74 } 75 } 76 } 77 } 78 79 //подгоÑовка даннÑÑ 80 getRequestData(action = 'getUserBasket', data = {}) { 81 // data.site_id = siteConsts.siteId; 82 data.action = action; 83 84 return data; 85 } 86 87 //запÑÐ¾Ñ 88 request(requestData, callback = false) { 89 fetch(this.#basketHandler, { 90 method: 'POST', 91 headers: { 92 'Content-Type': 'application/json; charset=UTF-8', 93 'X-Requested-With': 'XMLHttpRequest' 94 }, 95 body: JSON.stringify(requestData) 96 }).then((res) => { 97 return res.json(); 98 }).then((res) => { 99 if (res.status == true) { 100 this.basketList = res.data; 101 try { 102 103 if (!!this.basketList) { 104 /* вÑзов ÑÑнкÑий-обÑабоÑÑиков (поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка ÑоваÑов в коÑзине) вÑÐµÑ Ð±Ð»Ð¾ÐºÐ¾Ð² Ñ ÑоваÑами на ÑÑÑаниÑе */ 105 if (!!res.processAll) { 106 this.initProcAll(res); 107 } 108 this.setCount(res); 109 } 110 } catch (e) { 111 console.log(e) 112 } 113 try { 114 //меÑÑики, аналиÑики 115 switch (requestData.action) { 116 case 'getUserBasket': 117 // metric.changeBasket(res.detailedData); 118 break; 119 case 'add': 120 // metric.addToBasket(requestData.id); 121 // metric.changeBasket(res.detailedData); 122 break; 123 case 'remove': 124 // metric.removeFromBasket(requestData.id); 125 // metric.changeBasket(res.detailedData); 126 break; 127 case 'clearAll': 128 break; 129 } 130 if (!!res.message) { 131 IW.showSmallWindow(res.message); 132 } 133 } catch (e) { 134 console.log(e) 135 } 136 } else { 137 if (!!res.message) { 138 IW.showSmallWindow(res.message); 139 } 140 } 141 try { 142 switch (requestData.action) { 143 case "add": 144 case "remove": 145 case "clearAll": 146 smBask.refresh.basketSm();
146 // обновлÑем малÑÑ ÐºÐ¾ÑÐ·Ð¸Ð½Ñ 147 break; 148 } 149 } catch (e) { 150 console.log(e); 151 } 152 try { 153 if (typeof callback == "function") { 154 callback(res); 155 } 156 } catch (e) { 157 console.log(e) 158 } 159 160 }).catch((err) => { 161 console.log(err); 162 }); 163 } 164 165 166 checkIsSetItems(id, bi) { 167 if (!!bi[id]) 168 return true; 169 let set = false; 170 for (let i in bi) 171 set = (bi[i].indexOf(id) !== -1) ? true : set; 172 173 return set; 174 } 175 176 setCount(object) { 177 // if (typeof HH == "undefined") { 178 // return; 179 // } 180 let c = 0; 181 c = Object.keys(object.data).length; 182 /*for (let i in object.data) { 183 c += Object.keys(object.data[i]).length; 184 }*/ 185 186 this.count = c; 187 188 } 189} 190 191 192let basket = new BasketHandler();
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.