Files
roi-theme/wp-content/plugins/advanced-ads-pro/modules/placement-tests/assets/placement-tests.js
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

135 lines
2.8 KiB
JavaScript
Executable File

(function () {
/**
* Placements to be tested against each other
*
* @type {{}}
*/
const candidates = {};
/**
* Update the candidate placement list
*
* @param {string} slug placement slug.
* @param {number} weight test weight.
*/
const updateCandidates = (slug, weight) => {
if (isNaN(weight) && 'undefined' !== typeof candidates[slug]) {
delete candidates[slug];
return;
}
candidates[slug] = weight;
};
/**
* Check the visibility of the various "Save new test" buttons.
*
* @param {Node} input test weight select input.
*/
const updateButton = (input) => {
document.querySelectorAll('.save-new-test').forEach((el) => {
el.classList.add('hidden');
});
if (1 < Object.keys(candidates).length) {
input
.closest('td')
.querySelector('.save-new-test')
.classList.remove('hidden');
}
};
/**
* Save a new test into the database
*/
const saveNewTest = () => {
wp.ajax
.post('advads_new_placement_test', {
nonce: document
.getElementById('placement-ajax-nonce')
.innerText.trim(),
candidates,
})
.always(function () {
document.location.reload();
});
};
/**
* Update current tests data
*/
const updateTests = () => {
const testsData = {};
const inputs = document
.getElementById('placement-tests')
.querySelectorAll('input,select');
inputs.forEach((input) => {
const name = input.name;
if (!name) {
return;
}
if ('checkbox' === input.type && !input.checked) {
return;
}
testsData[name] = input.value;
});
testsData.nonce = document
.getElementById('placement-ajax-nonce')
.innerText.trim();
inputs.forEach((el) => {
el.disabled = true;
});
wp.ajax
.post('advads_update_placement_tests', testsData)
.always(function () {
document.location.reload();
});
};
// Test weight edited.
document.getElementById('posts-filter').addEventListener('change', (ev) => {
if (!ev.target.classList.contains('advads-add-to-placement-test')) {
return;
}
const input = ev.target;
updateCandidates(input.dataset.slug, parseInt(input.value, 10));
updateButton(input);
});
// Create a new test.
document.getElementById('posts-filter').addEventListener('click', (ev) => {
if (!ev.target.classList.contains('save-new-test')) {
return;
}
if (!Object.keys(candidates).length) {
return;
}
ev.target.classList.add('hidden');
document
.querySelectorAll('.advads-add-to-placement-test')
.forEach((el) => {
el.disabled = true;
});
ev.preventDefault();
saveNewTest();
});
// Update current tests.
const updateTestsButton = document.getElementById('update-placement-tests');
if (updateTestsButton) {
updateTestsButton.addEventListener('click', (ev) => {
ev.preventDefault();
updateTests();
});
}
})();