PageSourceSearch

https://acemarketing.net/Modules/ProductSetAutoUpdate/1_0_1/js/ProductSetAutoUpdate.js?rls=20260909

js acemarketing.net collected 2026-09-29 10:06:50 UTC 10,736 bytes, 250 lines download raw bytes

1
2// Ajax auth setup.
3
4$.fn.loadProductSetOnDemand = function(options){
5    var element = this,
6        settings = { 
7            setId: 0,
8            startPage: 1,
9            rpp: 0,
10            vsQuery: '',
11            element: ''
12        };
13
14    if (!element.length) {
15        return false;
16    }
17
18    if (options) {
19        $.extend(settings, options);
20    }
21
22    var model = {
23        retData: ko.observableArray(),
24        products: ko.observable(0),
25        compeleteProducts:ko.observable(0),
26        total: ko.observable(),
27        setId: settings.setId,
28        pageIndex: ko.observable(1),
29        pageSize: ko.observable(1),
30        pageCount: ko.observable(1),
31        pages: ko.observableArray([]),
32        productFrom: ko.observable(),
33        productTo: ko.observable(),
34        nextPage: function () {
35            if (this.pageIndex() >= this.pageCount()) {
36                return false;
37            }
38            this.pageIndex(this.pageIndex() + 1);
39            loadCurrentPage('NXTPSL');
40            return false;
41        },
42        previousPage: function () {
43            if (this.pageIndex() <= 1) {
44                return false;
45            }
46            this.pageIndex(this.pageIndex() - 1);
47            loadCurrentPage('PRVPSL');
48
49            return false;
50        },
51        gotoPage: function (page) {
52            this.pageIndex(page.pageNumber());
53        },
54        ImageSource: function (mdl) {
55            var ret = '/images/toolbar_icon.png',
56                vsUrl = Module.ProductSetAutoUpdate.Scene7BaseAndRender;
57                imgUrl = mdl.ImageUrl;
58            if (imgUrl) { 
59                if (mdl.HasVirtualSample && settings.vsQuery != 'stock') {
60                    var src = vsUrl + imgUrl.replace(/\media\//g, '') + settings.vsQuery;
61                    recordVSImpressionStats(src, mdl.Id);
62                } else {
63                    var src = Module.ProductSetAutoUpdate.URL.api + '/v1/' + imgUrl;// + (settings.vsQuery !== null ? '&' : '?') + 'size=small';
64                }
65                ret = src;
66            }
67            return ret;
68        }
69    }
70
71    var vsSetup = function () {
72        var vsCookie = getCookie('VSCookie'),
73            vsText = getCookie('VSTxt'),
74            vsBlankProd = getCookie('VS_Blank_Product'),
75            useTextPref = Module.ProductSetAutoUpdate.UseText,
76            useStockImage = Module.ProductSetAutoUpdate.UseStockImage;
77
78        /* text */
79        var vsTextObj = vsText.replace('TextURL=?', '').replace(/\?/g, '&').replace(/\$/g, '').replace(/is{/g, '').replace(/ugc{/g, '').replace(/}/g, '').replace(/ASI\//g, '');
80        vsTextObj = queryStringToJSON('?' + vsTextObj);
81        /* logo */
82        var vsCookieObj = vsCookie.replace('LogoURL=?', '').replace(/\?/g, '&').replace(/\$/g, '').replace(/is{/g, '').replace(/ugc{/g, '').replace(/}/g, '').replace(/ASI\//g, '');
83        vsCookieObj = queryStringToJSON('?' + vsCookieObj);
84        /* blank */
85        vsBlankProdObj = queryStringToJSON('?' + vsBlankProd);
86
87        vsCookie = vsCookie.replace('LogoURL=', '');
88        vsText = vsText.replace('TextURL=', '');
89
90        if (typeof vsCookieObj.logoid === 'undefined' && typeof vsTextObj.text === 'undefined' && typeof vsBlankProdObj.useblankprod === 'undefined') {
91            /* use preference settings set up by distributor */
92            if (useStockImage === 'False') {
93                if (useTextPref === 'True') {
94                    var textSeg = Module.ProductSetAutoUpdate.TextSegmentFromPref;
95                    var newTextUrl = textSeg.replace('&amp;', '&');
96                    settings.vsQuery = Module.ProductSetAutoUpdate.BaseTextSeg + newTextUrl + Module.ProductSetAutoUpdate.EndTextSeg;
97                }
98                else {
99                    var logo = Module.ProductSetAutoUpdate.DefaultLogoFromPref;
100                    var logoUrl = Module.ProductSetAutoUpdate.DefaultLogoUrl;
101                    settings.vsQuery = logoUrl.replace('logo', logo);
102                }
103            }
104            else {
105                settings.vsQuery = 'stock';
106            }
107        }
108        else {
109            /* user has made a change - these changes override distributor settings in pref */
110            if (vsBlankProdObj.useblankprod !== '0') {
111                settings.vsQuery = '';
112            } else if (vsCookieObj.logoid !== '0') {
113                settings.vsQuery = vsCookie;
114            } else if (vsTextObj.text) {
115                settings.vsQuery = vsText;
116            } else {
117                settings.vsQuery = 'stock';
118            }
119        }
120    }
121
122    var queryStringToJSON = function (url) {
123        if (url === '')
124            return '';
125        var pairs = (url || location.search).slice(1).split('&');
126        var result = {};
127        for (var idx = 0; idx < pairs.length; idx++) {
128          var pair = pairs[idx].split('=');
129          if (!!pair[0])
130            result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
131        }
132        return result;
133    }
134    var shuffle = function (array) {
135        var currentIndex = array.length, temp, randomIndex;
136        while (0 !== currentIndex) {
137            randomIndex = Math.floor(Math.random() * currentIndex);
138            currentIndex -= 1;
139            temp = array[currentIndex];
140            array[currentIndex] = array[randomIndex];
141            array[randomIndex] = temp;
142        }
143        return array;
144    }
145    var loadCurrentPage = function (action)
146    {
147        var productFrom = model.pageIndex() * settings.rpp - settings.rpp + 1,
148                       productTo = model.pageIndex() * settings.rpp,
149                       productIds = [];
150        model.products(model.compeleteProducts().slice(productFrom - 1, productTo));
151        totalResult = model.compeleteProducts().length;
152        if (totalResult < productTo) {
153            productTo = totalResult;
154        }
155        $.each(model.products(), function (idx, obj) {
156            productIds.push(obj.Id);
157        });
158        /* STATS CAPTURE */
159        recordProductSetObjectStats(totalResult, settings.setId);
160        recordProductSetInboundStats();
161        recordProductsViewedPerPageStats(productIds, settings.setId);
162        if (action) {
163            recordProductSetAutoAction(action);
164        }
165        /* END STATS CAPTURE */
166        //model.products(data.Results);
167        model.total(totalResult);
168        //model.pageIndex(data.Page);
169        model.pageCount(Math.ceil(totalResult / settings.rpp));
170        model.productFrom(totalResult ? productFrom : 0);
171        model.productTo(totalResult ? productTo : 0);
172    }
173    var loadService = function (page) {
174      var requestUrl = Module.ProductSetAutoUpdate.URL.api + '/v1/products/{0}/{1}.json?q={2}&rpp={3}&sort={4}&dl={5}&include_detail={6}&callback=?'; //0=type,1=id,2=query,3=page,4=results_per_page,5=sort,6=dl,7=include_detail
175        $.ajax({
176            type: 'GET',
177            dataType: 'json',
178            url: String.format(requestUrl, 'collection', settings.setId, '', 113, 'RNDM', '', false),
179            cache: false,
180            success: function (data) {
181                data = data.d ? data.d : data;
182                if (data && data.Results.length>0) {
183                    model.pageIndex(1);
184                    model.compeleteProducts(shuffle(data.Results));
185                    loadCurrentPage();
186                } else {
187                    element.parents('.ProductSetAutoUpdate').hide();
188                }
189            }
190        });
191    }
192    if (settings.setId && settings.setId != 0 && element) {
193        vsSetup();
194        ko.applyBindings(model, $(element)[0]);
195        loadService(settings.startPage);
196        element.find('.prodImg img').lazyload({ effect: 'fadeIn', failimage: failImg }).trigger("appear");
197    } else {
198        element.parents('.ProductSetAutoUpdate').hide();
199    }
200}
201
202function recordProductSetObjectStats(total, setId) {    
203    if (setId && Module.ProductSetAutoUpdate.BusinessLevel_CD) {
204        asi.StatBuffer.getInstance().addRecord(asi.app.getModule('PRDATU').getStatRecord({ "schemaCode": "OPST11", "immediate": false, "productset_id": setId, "businesslevel_cd": Module.ProductSetAutoUpdate.BusinessLevel_CD, "product_cnt": total }));
205    }
206}
207
208function recordProductSetInboundStats () {
209    asi.StatBuffer.getInstance().addRecord(asi.app.getModule('PRDATU').getStatRecord({ "schemaCode": "ICNN11", "immediate": false, "inboundcall_cd": "UNKNOW" }));
210}
211
212function recordProductsViewedPerPageStats(productIds, setId) {
213    if (setId && productIds.length > 0) {
214        asi.StatBuffer.getInstance().addRecord(asi.app.getModule('PRDATU').getStatRecord({ "schemaCode": "OPRD19", "immediate": false, "product_ids": productIds.toString(), "productset_id": setId, "hits_cnt": productIds.length, "adaction_cd": "POTD" }));
215    }
216}
217
218function recordProductSetAutoAction (actionCD) {
219    asi.StatBuffer.getInstance().addRecord(asi.app.getModule('PRDATU').getStatRecord({ "schemaCode": "ACNN11", "immediate": false, "appaction_cd": actionCD }));
220}
221
222function onProductDetail(productId, setId, isVSOpen) {
223    asi.StatBuffer.getInstance().addRecord(asi.app.getModule('PRDATU').getStatRecord({ "schemaCode": "OPRD19", "immediate": false, "product_ids": productId.toString(), "productset_id": setId, "hits_cnt": 1, "adaction_cd": "POCT" }));
224    var url = Module.ProductSetAutoUpdate.URL.ProductDetailsBasic + '&productID=' + productId + '&tab=ProductSet&autoLaunchVS=' + isVSOpen + '&ProdSetIds=' + setId;
225    post_to_url(url, {}, '_self');
226}
227
228function recordVSImpressionStats (imageUrl, prodId) {
229    var defaultLogoIsSet = Module.ProductSetAutoUpdate.DefaultLogoIsSet == 'True' ? true : false;
230    var textUsed = imageUrl.toUpperCase().indexOf("TEXT500") >= 0 ? true : false;
231    var collectStat = !textUsed && defaultLogoIsSet ? false : true;
232    var useBlank = Module.ProductSetAutoUpdate.UseBlank == 'True' ? true : false;
233    if (collectStat) {
234        if (prodId) {
235            asi.StatBuffer.getInstance().addRecord(asi.app.getModule('PRDATU').getStatRecord({ "schemaCode": "ACVS11", "immediate": false, "product_id": prodId, "isvstextused": (textUsed ? "1" : "0"), "isvsblankused": (useBlank ? "1" : "0"), "appaction_cd": "VSIPST" }));
236        }
237    }
238}
239
240function LoadStockImage(stockImageURL) {
241    $('.prodImg img').attr('src', stockImageURL);
242}
243
244function imgError(img) {
245    img.onerror = "";
246    var orig = $(img).attr('data-original');
247    img.src = orig;
248}
249
250//  var CC = Module.ProductSetAutoUpdate.WrapperId;

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.