PageSourceSearch

https://peninsulabeverage.co.za/static/790.js

js peninsulabeverage.co.za collected 2026-10-05 02:06:51 UTC 18,042 bytes, 601 lines download raw bytes

1/*!
2 * WRX ASSET HEADER
3 * SCRIPT ID: 604
4 * NAME: owrx.dx.data (27.1.0)
5 * VERSION: 27.1.1
6 */
7
8function ClearApiCache(keys){
9    
10    if(!Array.isArray(keys)){
11        keys = keys.split(',');
12    }
13    
14	var d = new $.Deferred();
15	$.getJSON('/api/Diagnostics/Cache/ClearByKeys', {
16		identifiers: JSON.stringify(keys)
17	})
18	.done(function (data) { 
19		d.resolve(data.Items);
20	}).fail(function(jqXHR, textStatus, errorThrown){
21		d.reject(jqXHR, textStatus, errorThrown);
22	}); 
23	return d.promise();
24}
25function CreateStore(options){
26	var baseStoreOptions = options.storeOptions || {};
27	delete options.storeOptions;
28
29	var _options = $.extend({
30		type: "entity",
31		endpoint: new URL(window.location.href).origin,
32		typeIdentifier: null,
33		keyName: "Id",
34		defaultFilter: null,
35		isLookup: false,
36		defaultParams: {},
37		defaultSkip: 0,
38		defaultTake: 100000,
39		deferLoading: false,
40		canCache: true
41	}, options );
42	
43	var storeOptions = $.extend({
44		key: _options.keyName,
45		load: function (loadOptions) {
46		
47			var d = new $.Deferred();
48
49			if(_options.deferLoading){
50				return d.resolve([], { totalCount: 0 });
51			}else{
52				var params = {};
53				params.filter = [];
54				if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) {
55					var searchFilter = [loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue];
56					params.filter.push(searchFilter);
57				}
58				if (loadOptions.filter) {
59				
60					if (loadOptions.filter.length > 1 && loadOptions.filter.length % 2 == 0) {
61						var newFilter = [];
62						for (index = 0; index < loadOptions.filter.length; ++index) {
63							newFilter.push(loadOptions.filter[index]);
64							newFilter.push("and");
65						}
66						newFilter.pop();
67						loadOptions.filter = newFilter;
68					}
69					if (params.filter.length > 0) {
70						params.filter.push("and");
71					}
72					params.filter.push(loadOptions.filter);
73				}
74				if (loadOptions.sort) {
75					params.sort = JSON.stringify(loadOptions.sort);
76				}
77				if (_options.defaultFilter && _options.defaultFilter.length > 0) {
78					var newFilter = [];
79					newFilter.push(_options.defaultFilter);
80					if (params.filter && params.filter.length > 0) {
81						newFilter.push("and");
82						newFilter.push(params.filter);
83					}
84					params.filter = newFilter;
85				}
86				params.filter = JSON.stringify(params.filter);
87				
88				params.skip = loadOptions.skip || _options.defaultSkip;
89				params.take = loadOptions.take || _options.defaultTake;
90
91				if(!_options.canCache){
92					params.force = true;
93				}
94
95				params = $.extend({}, _options.defaultParams, params );
96
97				$.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier, params)
98					.done(function (data) {
99					    if(_options.onDataLoaded && typeof _options.onDataLoaded === 'function'){
100							var results = _options.onDataLoaded(data.Items);
101							d.resolve(results, { totalCount: results.length });
102						}else{
103							d.resolve(data.Items, { totalCount: data.TotalCount });
104						}
105					})
106					.fail(function (jqXHR, textStatus, errorThrown) {
107						d.reject(jqXHR, textStatus, errorThrown);
108					});
109
110
111				return d.promise();
112			}
113		},
114		insert: function (values) {
115			values = $.extend({}, _options.defaultValues, values);
116			var d = new $.Deferred();
117			$.ajax({ 
118				url: _options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier, 
119				contentType: "application/json", 
120				method: "POST", 
121				data: JSON.stringify(values)
122			 })
123			.done(function (data) {
124				d.resolve(data.Items[0]);
125			})
126			.fail(function (jqXHR, textStatus, errorThrown) {
127				d.reject(jqXHR, textStatus, errorThrown);
128			});
129			return d.promise();
130		},
131		update: function (key, values) {
132            if(key == null || key == undefined || key < 0)
133				return Promise.reject();
134			var d = new $.Deferred();
135			$.ajax({ 
136				url: _options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/" + encodeURIComponent(key), 
137				contentType: "application/json", 
138				method: "PUT", 
139				data: JSON.stringify(values)
140			})
141			.done(function (data) {
142				d.resolve(data.Items[0]);
143			})
144			.fail(function (jqXHR, textStatus, errorThrown) {
145				d.reject(jqXHR, textStatus, errorThrown);
146			});
147			return d.promise();
148		},
149		remove: function (key) {
150            if(key == null || key == undefined || key < 0)
151				return Promise.reject();
152			var d = new $.Deferred();
153			$.ajax({ 
154				url: _options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/" + encodeURIComponent(key), 
155				method: "DELETE"
156			})
157			.done(function (data) {
158				d.resolve();
159			})
160			.fail(function (jqXHR, textStatus, errorThrown) {
161				d.reject(jqXHR, textStatus, errorThrown);
162			});
163			return d.promise();
164		},
165		byKey: function (key) {
166		    if(key == null || key == undefined || key < 0)
167				return Promise.reject();
168			var d = new $.Deferred();
169			if(_options.isLookup){
170				var params = {
171					filter : []
172				};
173				if(!_options.canCache){
174					params.force = true;
175				}
176				params.filter.push(['NumericValue', '=', encodeURIComponent(key)]);
177				if (_options.defaultFilter && _options.defaultFilter.length > 0) {
178					params.filter.push("and");
179					params.filter.push(_options.defaultFilter);
180				}
181				
182				params.filter = JSON.stringify(params.filter);
183				$.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier, params)
184				.done(function (data) {
185					d.resolve(data.Items, { totalCount: data.TotalCount });
186				})
187				.fail(function (jqXHR, textStatus, errorThrown) {
188					d.reject(jqXHR, textStatus, errorThrown);
189				});
190			}else{
191				var params = {};
192				if(!_options.canCache){
193					params.force = true;
194				}
195				$.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/" + encodeURIComponent(key), params)
196				.done(function (data) {
197					d.resolve(data.Items[0]);
198				})
199				.fail(function (jqXHR, textStatus, errorThrown) {
200					d.reject(jqXHR, textStatus, errorThrown);
201				});
202			}
203			return d.promise();
204		},
205	},baseStoreOptions);
206	var customStore = new DevExpress.data.CustomStore(storeOptions);
207
208	customStore.loadModel = function(controlId, fromSource){
209		var d = new $.Deferred();
210		var params = {
211			force: fromSource || !_options.canCache,
212			controlId: controlId || 184
213		}
214		$.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/model", params)
215		.done(function (data) {
216			d.resolve(data.Items[0]);
217		})
218		.fail(function (jqXHR, textStatus, errorThrown) {
219			d.reject(jqXHR, textStatus, errorThrown);
220		});
221		return d.promise();
222	}
223
224	customStore.loadDefults = function(controlId, fromSource){
225		var d = new $.Deferred();
226		var params = {
227			force: fromSource || !_options.canCache,
228			controlId: controlId || 184
229		}
230		$.getJSON(_options.endpoint + "/api/" + _options.type + "/" + _options.typeIdentifier + "/default", params)
231		.done(function (data) {
232			d.resolve(data.Items[0]);
233		})
234		.fail(function (jqXHR, textStatus, errorThrown) {
235			d.reject(jqXHR, textStatus, errorThrown);
236		});
237		return d.promise();
238	}
239	
240	customStore.getOptions = function(){
241		return $.extend({},_options);
242	}
243
244	customStore.option = function( key, value ) {
245		var options = key;
246		var parts;
247		var curOption;
248		var i;
249
250		if ( arguments.length === 0 ) {
251			return $.extend( {}, _options );
252		}
253
254		if ( typeof key === "string" ) {
255
256			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
257			options = {};
258			parts = key.split( "." );
259			key = parts.shift();
260			if ( parts.length ) {
261				curOption = options[ key ] = $.extend( {}, _options[ key ] );
262				for ( i = 0; i < parts.length - 1; i++ ) {
263					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
264					curOption = curOption[ parts[ i ] ];
265				}
266				key = parts.pop();
267				if ( arguments.length === 1 ) {
268					return curOption[ key ] === undefined ? null : curOption[ key ];
269				}
270				curOption[ key ] = value;
271			} else {
272				if ( arguments.length === 1 ) {
273					return _options[ key ] === undefined ? null : _options[ key ];
274				}
275				options[ key ] = value;
276			}
277		}
278
279		for ( key in options ) {
280			_options[ key ] = options[ key ];
281		}
282
283		return this;
284	}
285
286	return customStore;
287}
288function CreateQueryStore(options){
289
290	var baseStoreOptions = options.storeOptions || {};
291	delete options.storeOptions;
292
293	var _options = $.extend({}, {
294		typeIdentifier: 0,
295		keyName: 'Id',
296		endpoint: new URL(window.location.href).origin,
297		defaultFilter: null,
298		defaultParams:{},
299		defaultSkip: 0,
300		defaultTake: 100000,
301		deferLoading: false,
302		canCache: true
303	}, options);
304	var storeOptions = $.extend({
305	
306	    byKey: function (key) {
307		    if(key == null || key == undefined || key < 0)
308				return Promise.reject();
309			var d = new $.Deferred();
310			var params = {};
311			if(!_options.canCache){
312				params.force = true;
313				params[_options.keyName] = key;
314			}
315			params = $.extend({}, _options.defaultParams, params );
316
317			$.getJSON(_options.endpoint + "/api/query/" + _options.typeIdentifier, params)
318				.done(function (data) {
319					d.resolve(data.Items, { totalCount: data.TotalCount });
320				})
321				.fail(function (jqXHR, textStatus, errorThrown) {
322					d.reject(jqXHR, textStatus, errorThrown);
323				});
324			return d.promise();
325		},
326		
327		load: function (loadOptions) {
328			var d = new $.Deferred();
329
330			if(_options.deferLoading){
331				return d.resolve([], { totalCount: 0 });
332			}else{
333				var params = {};
334				params.filter = [];
335				if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) {
336					var searchFilter = [loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue];
337					params.filter.push(searchFilter);
338				}
339				if (loadOptions.filter) {
340					if (loadOptions.filter.length > 1 && loadOptions.filter.length % 2 == 0) {
341						var newFilter = [];
342						for (index = 0; index < loadOptions.filter.length; ++index) {
343							newFilter.push(loadOptions.filter[index]);
344							newFilter.push("and");
345						}
346						newFilter.pop();
347						loadOptions.filter = newFilter;
348					}
349					if (params.filter.length > 0) {
350						params.filter.push("and");
351					}
352					params.filter.push(loadOptions.filter);
353				}
354				
355				if (_options.defaultSort && _options.defaultSort.length > 0) {
356				    params.sort = _options.defaultSort;
357				}
358				if (loadOptions.sort) {
359					params.sort = loadOptions.sort;
360				}
361				if(params.sort){
362				    params.sort = JSON.stringify(params.sort);
363				}
364				if (_options.defaultFilter && _options.defaultFilter.length > 0) {
365					var newFilter = [];
366					newFilter.push(_options.defaultFilter);
367					if (params.filter && params.filter.length > 0) {
368						newFilter.push("and");
369						newFilter.push(params.filter);
370					}
371					params.filter = newFilter;
372				}
373				
374				params.filter = JSON.stringify(params.filter);
375				params.skip = loadOptions.skip || _options.defaultSkip;
376				params.take = loadOptions.take || _options.defaultTake;
377
378				if(!_options.canCache){
379					params.force = true;
380				}
381				params = $.extend({}, _options.defaultParams, params );
382
383				$.getJSON(_options.endpoint + "/api/query/" + _options.typeIdentifier, params)
384					.done(function (data) {
385						d.resolve(data.Items, { totalCount: data.TotalCount });
386					})
387					.fail(function (jqXHR, textStatus, errorThrown) {
388						d.reject(jqXHR, textStatus, errorThrown);
389					});
390				return d.promise();
391			}
392		},
393	},baseStoreOptions);
394
395	var customStore = new DevExpress.data.CustomStore(storeOptions);
396	customStore.getOptions = function(){
397		return $.extend({},_options);
398	}
399
400	customStore.option = function( key, value ) {
401		var options = key;
402		var parts;
403		var curOption;
404		var i;
405
406		if ( arguments.length === 0 ) {
407			return $.extend( {}, _options );
408		}
409
410		if ( typeof key === "string" ) {
411
412			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
413			options = {};
414			parts = key.split( "." );
415			key = parts.shift();
416			if ( parts.length ) {
417				curOption = options[ key ] = $.extend( {}, _options[ key ] );
418				for ( i = 0; i < parts.length - 1; i++ ) {
419					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
420					curOption = curOption[ parts[ i ] ];
421				}
422				key = parts.pop();
423				if ( arguments.length === 1 ) {
424					return curOption[ key ] === undefined ? null : curOption[ key ];
425				}
426				curOption[ key ] = value;
427			} else {
428				if ( arguments.length === 1 ) {
429					return _options[ key ] === undefined ? null : _options[ key ];
430				}
431				options[ key ] = value;
432			}
433		}
434
435		for ( key in options ) {
436			_options[ key ] = options[ key ];
437		}
438
439		return this;
440	}
441	
442	customStore.execute = function (values) {
443		values = $.extend({ }, _options.defaultValues, values);
444		var d = new $.Deferred();
445		$.ajax({ 
446			url: _options.endpoint + "/api/query/" + _options.typeIdentifier + '?force=true', 
447			contentType: "application/json", 
448			method: "POST", 
449			data: JSON.stringify(values)
450		 })
451		.done(function (data) {
452			d.resolve({Items: data.Items, TotalCount: data.TotalCount});
453		})
454		.fail(function (jqXHR, textStatus, errorThrown) {
455			d.reject(jqXHR, textStatus, errorThrown);
456		});
457		return d.promise();
458	};
459	
460	customStore.query = function (values) {
461		values = $.extend({ }, _options.defaultValues, values);
462		var d = new $.Deferred();
463		values.force = true;
464	    $.getJSON(_options.endpoint + "/api/query/" + _options.typeIdentifier,values)
465		.done(function (data) {
466			d.resolve({Items: data.Items, TotalCount: data.TotalCount});
467		})
468		.fail(function (jqXHR, textStatus, errorThrown) {
469			d.reject(jqXHR, textStatus, errorThrown);
470		});
471		return d.promise();
472	};
473	
474	return customStore;
475}
476
477function CombineFilters(baseFilter, filter){
478    var combinedFilter = [];
479    if((baseFilter || []).length > 0){
480        combinedFilter.push(baseFilter);
481    }
482    if((filter || []).length > 0){
483        if(combinedFilter.length > 0)
484            combinedFilter.push('and');
485        combinedFilter.push(filter);
486    }
487    return combinedFilter;
488}
489
490function CreateTypeStore(options)
491{
492    switch((options.type || 'entity').toLowerCase()){
493        case 'query' : return CreateQueryStore(options);
494        default : return CreateStore(options);
495    }
496}
497
498/*Proxy for legacy calls*/
499function GetApiWRXCustomStore(options)
500{
501	options = $.extend({},options,{
502	    endpoint:new URL(window.location.href).origin
503    });
504	return CreateStore(options);
505}
506
507/* WRX27 Freestyle compatibility: legacy lookup datasource helper mined from old global assets.
508 * Required by existing admin clone-to-channel dialogs; keep this narrow and do not re-import owrx.uix.global.
509 */
510(function (global) {
511    "use strict";
512
513    if (typeof global.getLookupEntityDataSource === "function") {
514        return;
515    }
516
517    global.getLookupEntityDataSource = function getLookupEntityDataSource(entity, filter, sort, search) {
518        var ds = new DevExpress.data.DataSource({
519            store: new DevExpress.data.CustomStore({
520                load: function (loadOptions) {
521                    var d = new $.Deferred();
522                    var params = {};
523
524                    if (loadOptions.filter) {
525                        if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) {
526                            var searchFilter = [loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue];
527
528                            if (Array.isArray(loadOptions.filter)) {
529                                loadOptions.filter = [loadOptions.filter, "and", searchFilter];
530                            } else {
531                                loadOptions.filter = "[" + loadOptions.filter + ",'and'," + JSON.stringify(searchFilter) + "]";
532                            }
533                        }
534
535                        params.filter = Array.isArray(loadOptions.filter) ? JSON.stringify(loadOptions.filter) : loadOptions.filter;
536                    } else if (loadOptions.searchExpr && loadOptions.searchValue && loadOptions.searchOperation) {
537                        params.filter = JSON.stringify([loadOptions.searchExpr, loadOptions.searchOperation, loadOptions.searchValue]);
538                    }
539
540                    if (loadOptions.sort) {
541                        params.sort = Array.isArray(loadOptions.sort) ? JSON.stringify(loadOptions.sort) : loadOptions.sort;
542                    }
543
544                    if (loadOptions.group) {
545                        params.group = JSON.stringify(loadOptions.group);
546                    }
547
548                    params.skip = loadOptions.skip;
549                    params.take = loadOptions.take;
550
551                    $.getJSON("/api/entity/" + entity, params)
552                        .done(function (data) {
553                            d.resolve(data.Items, { totalCount: data.TotalCount });
554                        })
555                        .fail(function (jqXHR, textStatus, errorThrown) {
556                            d.reject(jqXHR, textStatus, errorThrown);
557                        });
558
559                    return d.promise();
560                },
561
562                byKey: function (key) {
563                    if (!key) {
564                        return Promise.reject();
565                    }
566
567                    var d = new $.Deferred();
568                    var params = {};
569
570                    if (filter) {
571                        params.filter = filter;
572                    }
573
574                    $.getJSON("/api/entity/" + entity + "/" + encodeURIComponent(key), params)
575                        .done(function (data) {
576                            d.resolve(data.Items && data.Items.length ? data.Items[0] : null);
577                        })
578                        .fail(function (jqXHR, textStatus, errorThrown) {
579                            d.reject(jqXHR, textStatus, errorThrown);
580                        });
581
582                    return d.promise();
583                }
584            })
585        });
586
587        if (filter) {
588            ds.filter(filter);
589        }
590
591        if (sort) {
592            ds.sort(sort);
593        }
594
595        if (search) {
596            ds.searchExpr(search);
597        }
598
599        return ds;
600    };
601})(window);

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.