PageSourceSearch

https://vegetronix.com/scripts/site-common.js

js vegetronix.com collected 2026-10-03 21:21:01 UTC 4,455 bytes, 165 lines download raw bytes

1// Common javascript functions and variables to be reused across the site. 
2var dateFormat = 'YYYY-MM-DD';
3var timeFormat = 'HH:mm:ss';
4var timedateFormat = 'YYYY-MM-DD HH:mm:ss';
5var zeroTime = '0000-00-00 00:00:00';
6
7async function selectBoxFill(URL, selector, key_name, value_name, first_option) {
8	let obj = await $.post(URL, {}, null, "json");
9	// we need to always return a promise or the chain run out of order, giving undefined results. 
10	let sel = $(selector);
11	//console.log(obj);
12	if (obj.error_msg == "Success") {
13		let rows = obj.rows;
14		if (typeof first_option != 'undefined') {
15			sel.append(
16				$('<option>', {
17					value: 0,
18					text: first_option
19				})
20			);
21		}
22		rows.forEach(r => {
23			let key = r[key_name]; // can't use compound elements in a json object. 
24			let Name = r[value_name];
25			sel.append($('<option>', {
26				value: key,
27				text: Name
28			}));
29		});
30		return rows; // useful for debugging!
31	}
32}
33
34async function selectPairFill(URL, selector) {
35	let obj = await $.getJSON(URL);
36	//console.log(obj);
37	let sel = $(selector);
38	for (let key in obj) {
39		let value = obj[key];
40		sel.append(
41			$('<option>', {
42				value: key,
43				text: value
44			})
45		);
46	}
47	return obj;
48}
49
50function toLocalTimeArray(data, format) {
51	data.forEach(d => {
52		if (d.t != zeroTime) { // ignore zero date
53			let utc = moment.utc(d.t).toDate();
54			d.t = moment(utc).local().format(format);
55		}
56	});
57}
58
59function toLocalTime(dt, format) {
60	if (dt == zeroTime) return dt;
61	let utc = moment.utc(dt).toDate();
62	return moment(utc).local().format(format);
63}
64
65function trackingUrl(carrier, tracking) {
66	switch (carrier) {
67		case "USPS": return `http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?origTrackNum=${tracking}`;
68		case "UPS":
69		case "UPSDAP": return `http://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=${tracking}`;
70		case "DHL": return `http://www.dhl.com/en/express/tracking.html?brand=DHL&AWB=${tracking}`;
71		case "FEDEX": return `https://www.fedex.com/fedextrack/?trknbr=${tracking}`;
72		default: return "#";
73	}
74}
75
76function randomAlphaNumericString (length) {
77	let chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
78	let result = '';
79	for (let i = 0; i < length; i++) result += chars[Math.floor(Math.random() * chars.length)];
80	return result;
81}
82
83function catchMsg(er, selector) {
84	let msg;
85	if (typeof er == 'undefined') {
86		msg = 'Error: Undefined Error.';
87	} else if (typeof er == "string") {
88		msg = er;
89	} else {
90		switch (er.status) {
91			case 400: msg = `Error: Malformed request`; break;
92			case 401: msg = `Error: Unauthorized Access`; break;
93			case 404: msg = `Error: Page not Found`; break;
94			case 429: msg = `Error: Rate Limit Exceeded`; break;
95			case 500: msg = `Error: Internal Server Error`; break;
96			default: msg = `Error: Unknown Error - ${er.status}`;
97		}
98	}
99	$(selector).html(msg);
100}
101
102async function cartCount() {
103	let obj = await $.post('/cart/count', {}, null, "json");
104	if (obj.error_msg == "Success") {
105		let count = Number(obj.count);
106		$('#cart-count').text(count ? count : "");
107	}
108}
109
110async function pricesGet() {
111	let ProductIDs = $('.product-price').map((_, pp) => {
112		return $(pp).attr('ProductID');
113	}).get();
114	let obj = await $.post('/product/prices', { ProductIDs }, null, "json");
115	if (obj.error_msg == "Success") {
116		let rows = obj.rows;
117		//console.log(rows);
118		rows.forEach(p => {
119			$(`#price-${p.ProductID}`).html(`$${p.Price}`);
120		});
121	}
122}
123
124async function whoAmI() {
125	let user = await $.post('/whoami', {}, null, "json");
126	//console.log(user);
127	if (user) {
128		$('#logout-a').removeClass("d-none");
129		$('.whoami-name').html(`${user.first_name} ${user.last_name}`);
130		$('.whoami-id').html(`${user.id}`);
131		$('#nav-brand-link').attr('href', '/user/dash');
132		return user;
133	} else {
134		$('#login-a').removeClass("d-none");
135		$('#register-a').removeClass("d-none");
136	}
137	return null;
138}
139
140async function cartAdd(ProductID, Quantity) {
141	let obj = await $.post("/cart/add", { ProductID, Quantity }, null, "json");
142	if (obj.error_msg == "Success") {
143		location.assign("/cart");
144	}
145}
146
147$(() => {
148	$('.buy-now').click(async ev => {
149		ev.preventDefault();
150		let id = ev.currentTarget.id;
151		let Quantity = 1; // fixed for now. 
152		let ProductID = $(`#${id}`).attr('ProductID');
153		await cartAdd(ProductID, Quantity);
154		return false;
155	});
156
157
158	$('.carousel').carousel({ interval: 1500 }); // Globally changes the feature carousel speed.
159	pricesGet();
160	cartCount();
161	whoAmI();
162});
163
164
165

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.