/**
* Get Parameter value
*
* @param name
* @returns {*}
*/
function wp_statistics_getParameterValue(name) {
var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (results) {
return results[1];
}
}
/**
* Enable Tab
*
* @param tab_id
*/
function wp_statistics_enableTab(tab_id) {
jQuery('.wp-statistics-settings .wps-optionsMenu .wps-optionsMenuItem').removeClass('current');
jQuery('.wp-statistics-settings .tab-content').removeClass('current');
jQuery("[data-tab=" + tab_id + "]").addClass('current');
jQuery("#" + tab_id).addClass('current');
const url = new URL(window.location.href);
url.searchParams.set('tab', tab_id);
url.searchParams.delete('save_setting');
window.history.pushState({}, '', url.toString());
if (jQuery('#wp-statistics-settings-form').length) {
var click_url = jQuery(location).attr('href') + '&tab=' + tab_id;
jQuery('#wp-statistics-settings-form').attr('action', click_url).submit();
}
}
function createMobileDropdown() {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initializeDropdownWithRetry);
} else {
initializeDropdownWithRetry();
}
function initializeDropdownWithRetry() {
let retryCount = 0;
const maxRetries = 10;
const retryInterval = 500;
function tryInitializeDropdown() {
const menu = document.querySelector('.wps-optionsMenu');
if (menu) {
initializeDropdown();
} else {
retryCount++;
if (retryCount < maxRetries) {
setTimeout(tryInitializeDropdown, retryInterval);
} else {
const wrapper = document.createElement('div');
wrapper.classList.add('wps-setting-select-wrapper');
document.body.appendChild(wrapper);
}
}
}
function initializeDropdown() {
const menu = document.querySelector('.wps-optionsMenu');
if (!menu) {
console.warn('Menu element (.wps-optionsMenu) not found');
return;
}
const wrapper = document.createElement('div');
wrapper.classList.add('wps-setting-select-wrapper');
const select = document.createElement('select');
select.classList.add('wps-options-mobile-menu');
select.setAttribute('aria-label', 'mobile menu');
const settingsItems = menu.querySelectorAll('a[data-tab]:not(.premium)');
const premiumItems = menu.querySelectorAll('a[data-tab].premium');
const titleElement = menu.querySelector('.wps-settings-side__title');
const groupLabel = titleElement ? titleElement.textContent : wps_js._('settings');
const settingsGroup = document.createElement('optgroup');
settingsGroup.label = groupLabel;
settingsItems.forEach(item => {
const option = document.createElement('option');
option.value = item.getAttribute('data-tab');
option.textContent = item.querySelector('span').textContent;
settingsGroup.appendChild(option);
});
select.appendChild(settingsGroup);
if (premiumItems.length > 0) {
const premiumGroup = document.createElement('optgroup');
premiumGroup.label = wps_js._('premium_addons');
premiumItems.forEach(item => {
const option = document.createElement('option');
option.value = item.getAttribute('data-tab');
option.textContent = item.querySelector('span').textContent;
premiumGroup.appendChild(option);
});
select.appendChild(premiumGroup);
}
wrapper.appendChild(select);
menu.parentNode.insertBefore(wrapper, menu);
const currentItem = menu.querySelector('a[data-tab].current');
if (currentItem) {
const currentTab = currentItem.getAttribute('data-tab');
select.value = currentTab;
} else if (settingsItems.length > 0) {
const defaultTab = settingsItems[0].getAttribute('data-tab');
select.value = defaultTab;
navigateToTab(defaultTab);
}
const dirValue = jQuery('body').hasClass('rtl') ? 'rtl' : 'ltr';
if (typeof $.fn.select2 === 'function') {
$(select).select2({
dropdownCssClass: 'wps-setting-input__dropdown',
minimumResultsForSearch: Infinity,
dir: dirValue
});
if (currentItem) {
const currentTab = currentItem.getAttribute('data-tab');
$(select).val(currentTab).trigger('change.select2');
} else if (settingsItems.length > 0) {
const defaultTab = settingsItems[0].getAttribute('data-tab');
$(select).val(defaultTab).trigger('change.select2');
}
}
$(select).on('change', function (e) {
const selectedTab = e.target.value;
navigateToTab(selectedTab);
});
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.attributeName === 'class') {
const currentItem = menu.querySelector('a[data-tab].current');
if (currentItem) {
const currentTab = currentItem.getAttribute('data-tab');
if ($(select).val() !== currentTab) {
$(select).val(currentTab).trigger('change.select2');
}
}
}
});
});
menu.querySelectorAll('a[data-tab]').forEach(item => {
observer.observe(item, {attributes: true});
});
}
tryInitializeDropdown();
}
}
function navigateToTab(tab) {
// Remove 'current' class from all menu items
document.querySelectorAll('.wps-optionsMenuItem').forEach(item => {
item.classList.remove('current');
});
const selectedItem = document.querySelector(`[data-tab="${tab}"]`);
if (selectedItem) {
wp_statistics_enableTab(tab);
selectedItem.classList.add('current');
}
}
jQuery(document).ready(function () {
createMobileDropdown();
});
window.onload = function () {
const closeButton = document.querySelector('.wps-alert__close');
if (closeButton) {
const alert = closeButton.closest('.wps-alert');
if (alert) {
closeButton.addEventListener('click', function () {
alert.remove();
});
}
}
const goToTopButton = document.querySelector('.wps-gototop');
if (goToTopButton) {
goToTopButton.addEventListener('click', function () {
window.scrollTo({top: 0, behavior: 'smooth'});
});
window.addEventListener('scroll', function () {
const viewportHeight = 100;
const scrollPosition = window.scrollY;
if (scrollPosition > viewportHeight) {
goToTopButton.classList.add('active');
} else {
goToTopButton.classList.remove('active');
}
});
}
const historicalInputs = document.querySelectorAll('[data-id^="historical_total_"] input[type="number"]');
const historicalSubmitButton = document.getElementById('historical-submit');
if (historicalInputs.length === 2 && historicalSubmitButton) {
function validateInput(value) {
return /^\d+$/.test(value);
}
function updateInputState() {
let allValid = true;
historicalInputs.forEach(input => {
const value = input.value;
if (!validateInput(value)) {
input.classList.add('invalid');
allValid = false;
} else {
input.classList.remove('invalid');
}
});
historicalSubmitButton.disabled = !allValid;
}
historicalInputs.forEach(input => {
input.addEventListener('input', updateInputState);
input.addEventListener('keydown', function(e) {
const invalidKeys = ['+', '-', 'e', 'E', '.'];
if (invalidKeys.includes(e.key)) {
e.preventDefault();
}
});
input.addEventListener('paste', function(e) {
const pastedData = e.clipboardData.getData('text');
if (!validateInput(pastedData)) {
e.preventDefault();
input.classList.add('invalid');
historicalSubmitButton.disabled = true;
}
});
input.addEventListener('drop', function(e) {
e.preventDefault();
const droppedData = e.dataTransfer.getData('text');
if (validateInput(droppedData)) {
input.value = droppedData;
}
updateInputState();
});
input.addEventListener('dragover', function(e) {
e.preventDefault();
});
});
updateInputState();
}
};
/**
* Check has setting page
*/
if (jQuery('.wp-statistics-settings').length) {
var current_tab = wp_statistics_getParameterValue('tab');
if (current_tab) {
wp_statistics_enableTab(current_tab);
}
document.querySelectorAll('.iris-square-value').forEach(element => {
if (!element.classList.contains('screen-reader-text')) {
const span = document.createElement('span');
span.className = 'screen-reader-text';
span.textContent = 'square-value';
element.appendChild(span);
}
});
jQuery('.wp-statistics-settings .wps-optionsMenu .wps-optionsMenuItem').click(function () {
var tab_id = jQuery(this).attr('data-tab');
wp_statistics_enableTab(tab_id);
});
const triggerInput = document.querySelector('input[name="user_custom_header_ip_method"]');
const customHeaderRadio = document.getElementById('custom-header');
if (triggerInput && customHeaderRadio) {
customHeaderRadio.addEventListener('change', function () {
if (customHeaderRadio.checked) {
triggerInput.focus();
}
});
function checkCustomHeader() {
customHeaderRadio.checked = true;
}
triggerInput.addEventListener('click', checkCustomHeader);
triggerInput.addEventListener('paste', checkCustomHeader);
triggerInput.addEventListener('input', checkCustomHeader);
triggerInput.addEventListener('dragover', checkCustomHeader);
triggerInput.addEventListener('drop', checkCustomHeader);
}
}
const copyButtons = document.querySelectorAll('.wps-input-group__copy');
copyButtons.forEach(button => {
button.addEventListener('click', function () {
const inputField = this.closest('.wps-input-group__action').querySelector('input');
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(inputField.value).then(() => {
const originalText = button.textContent;
button.textContent = wps_js._('copied');
button.classList.remove('has-icon');
setTimeout(() => {
button.textContent = originalText;
button.classList.add('has-icon');
}, 2000);
}).catch(err => {
console.error('Failed to copy: ', err);
});
}
});
});
const settingSelect2 = jQuery('.wps-wrap__settings select');
if (settingSelect2.length) {
settingSelect2.select2({
dropdownCssClass: 'wps-setting-input__dropdown',
minimumResultsForSearch: Infinity,
});
}
function getUrlParameter(name) {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(name);
}
const row = getUrlParameter('row');
if (row) {
const targetRow = document.querySelector(`tr[data-id="${row}"]`);
if (targetRow) {
setTimeout(() => {
targetRow.scrollIntoView({behavior: 'smooth', block: 'center'});
targetRow.classList.add('wps-highlight');
}, 500);
} else {
console.log(`No row found with data-id="${row}"`);
}
}