PageSourceSearch

https://podshipnikru.com/local/templates/redesign-podshipnik/js/classes/BasketHandler.js

js podshipnikru.com collected 2026-10-02 17:49:44 UTC 5,985 bytes, 192 lines download raw bytes

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.