mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-09-13 13:57:34 -04:00
* refactor: Replace var with let/const in JavaScript files - Replace var with let for variables that are reassigned - Replace var with const for variables that are never reassigned - Modernize manage_tables.js and nominatim.autocomplete.js - Skip third-party libraries (imgpreview.full.jquery.js, clipboard.min.js) Closes #4491 * refactor: Replace var with let/const in inline JavaScript - Fixed CodeRabbit review: changed enable_actions and load_success from const to let in manage_tables.js (they are reassigned in init) - Replaced all var declarations in inline JavaScript in Views with let (for reassigned) or const (for never reassigned) - Modernized 48 additional files with inline JavaScript * refactor: Replace var with let/const in remaining JS files - Modernized gulpfile.js: 3 var declarations replaced - Modernized app/Views/errors/html/debug.js: all var declarations replaced - Used const for never-reassigned, let for reassigned variables * fix: Replace remaining var declarations in Views - Changed var to const in sales/register.php - Changed var to const in configs/receipt_config.php These were missed in the initial pass. * fix: Replace remaining var declarations in gulpfile.js - Converted 12 remaining var declarations to const - All variables are function-scoped and never reassigned - Complete coverage for this file now * fix: Address CodeRabbit review comments - items/manage.php: Remove duplicate let declaration for start_date (partial/daterangepicker already declares it) - header_js.php: Escape CSRF hash in JavaScript context - tax_jurisdictions.php: Fix mismatched selector (remove_tax_jurisdictions -> remove_tax_jurisdiction) * style(views): Replace var with let/const and fix comment casing - Convert var to let in items/manage.php for JS modernization - Capitalize \"Submit\" in validation comments across tax view files Signed-off-by: Travis Garrison <travis@chiraqbookstore.com> --------- Signed-off-by: Travis Garrison <travis@chiraqbookstore.com> Co-authored-by: Ollama <ollama@steganos.dev> Co-authored-by: objecttothis <17935339+objecttothis@users.noreply.github.com> Co-authored-by: Travis Garrison <travis@chiraqbookstore.com>
118 lines
2.8 KiB
JavaScript
118 lines
2.8 KiB
JavaScript
const tabLinks = new Array();
|
|
const contentDivs = new Array();
|
|
|
|
function init()
|
|
{
|
|
// Grab the tab links and content divs from the page
|
|
const tabListItems = document.getElementById('tabs').childNodes;
|
|
console.log(tabListItems);
|
|
for (let i = 0; i < tabListItems.length; i ++)
|
|
{
|
|
if (tabListItems[i].nodeName == "LI")
|
|
{
|
|
const tabLink = getFirstChildWithTagName(tabListItems[i], 'A');
|
|
const id = getHash(tabLink.getAttribute('href'));
|
|
tabLinks[id] = tabLink;
|
|
contentDivs[id] = document.getElementById(id);
|
|
}
|
|
}
|
|
|
|
// Assign onclick events to the tab links, and
|
|
// highlight the first tab
|
|
let i = 0;
|
|
|
|
for (const id in tabLinks)
|
|
{
|
|
tabLinks[id].onclick = showTab;
|
|
tabLinks[id].onfocus = function () {
|
|
this.blur()
|
|
};
|
|
if (i == 0)
|
|
{
|
|
tabLinks[id].className = 'active';
|
|
}
|
|
i ++;
|
|
}
|
|
|
|
// Hide all content divs except the first
|
|
let j = 0;
|
|
|
|
for (const id in contentDivs)
|
|
{
|
|
if (j != 0)
|
|
{
|
|
console.log(contentDivs[id]);
|
|
contentDivs[id].className = 'content hide';
|
|
}
|
|
j ++;
|
|
}
|
|
}
|
|
|
|
function showTab()
|
|
{
|
|
const selectedId = getHash(this.getAttribute('href'));
|
|
|
|
// Highlight the selected tab, and dim all others.
|
|
// Also show the selected content div, and hide all others.
|
|
for (const id in contentDivs)
|
|
{
|
|
if (id == selectedId)
|
|
{
|
|
tabLinks[id].className = 'active';
|
|
contentDivs[id].className = 'content';
|
|
}
|
|
else
|
|
{
|
|
tabLinks[id].className = '';
|
|
contentDivs[id].className = 'content hide';
|
|
}
|
|
}
|
|
|
|
// Stop the browser following the link
|
|
return false;
|
|
}
|
|
|
|
function getFirstChildWithTagName(element, tagName)
|
|
{
|
|
for (let i = 0; i < element.childNodes.length; i ++)
|
|
{
|
|
if (element.childNodes[i].nodeName == tagName)
|
|
{
|
|
return element.childNodes[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
function getHash(url)
|
|
{
|
|
const hashPos = url.lastIndexOf('#');
|
|
return url.substring(hashPos + 1);
|
|
}
|
|
|
|
function toggle(elem)
|
|
{
|
|
elem = document.getElementById(elem);
|
|
let disp;
|
|
|
|
if (elem.style && elem.style['display'])
|
|
{
|
|
// Only works with the "style" attr
|
|
disp = elem.style['display'];
|
|
}
|
|
else if (elem.currentStyle)
|
|
{
|
|
// For MSIE, naturally
|
|
disp = elem.currentStyle['display'];
|
|
}
|
|
else if (window.getComputedStyle)
|
|
{
|
|
// For most other browsers
|
|
disp = document.defaultView.getComputedStyle(elem, null).getPropertyValue('display');
|
|
}
|
|
|
|
// Toggle the state of the "display" style
|
|
elem.style.display = disp == 'block' ? 'none' : 'block';
|
|
|
|
return false;
|
|
}
|