edit_cron.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const tabs = document.querySelector('.js-tabs');
  2. if (tabs) {
  3. const tabItems = tabs.querySelectorAll('.tabs-item');
  4. const panels = tabs.querySelectorAll('.tabs-panel');
  5. tabItems.forEach((tab) => {
  6. tab.addEventListener('click', (event) => {
  7. // Reset state
  8. panels.forEach((panel) => (panel.hidden = true));
  9. tabItems.forEach((tab) => {
  10. tab.setAttribute('aria-selected', false);
  11. tab.setAttribute('tabindex', -1);
  12. });
  13. // Show the selected panel
  14. const tabId = event.target.getAttribute('id');
  15. const panel = document.querySelector(`[aria-labelledby="${tabId}"]`);
  16. panel.hidden = false;
  17. // Mark the selected tab as active
  18. event.target.setAttribute('aria-selected', true);
  19. event.target.setAttribute('tabindex', 0);
  20. event.target.focus();
  21. });
  22. });
  23. }
  24. const generateCronButtons = document.querySelectorAll('.js-generate-cron');
  25. generateCronButtons.forEach((button) => {
  26. button.addEventListener('click', () => {
  27. const fieldset = button.closest('fieldset');
  28. const inputNames = ['min', 'hour', 'day', 'month', 'wday'];
  29. inputNames.forEach((inputName) => {
  30. const value = fieldset.querySelector(`[name=h_${inputName}]`).value;
  31. const formInput = document.querySelector(`#vstobjects input[name=v_${inputName}]`);
  32. formInput.value = value;
  33. formInput.classList.add('highlighted');
  34. formInput.addEventListener(
  35. 'transitionend',
  36. () => {
  37. formInput.classList.remove('highlighted');
  38. },
  39. { once: true }
  40. );
  41. });
  42. });
  43. });