You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.2 KiB
38 lines
1.2 KiB
(function (Drupal) { |
|
"use strict"; |
|
|
|
Drupal.behaviors.nouisliderYearFormat = { |
|
attach: function (context) { |
|
// 1. Target the slider element |
|
const sliderEl = document.getElementById("year"); |
|
if (!sliderEl) return; |
|
|
|
// 2. Use a small function to attach the rounding logic |
|
const applyRounding = () => { |
|
if (sliderEl.noUiSlider && !sliderEl.dataset.yearFormatApplied) { |
|
sliderEl.dataset.yearFormatApplied = "true"; |
|
|
|
sliderEl.noUiSlider.on("update", function (values, handle) { |
|
const inputId = |
|
handle === 0 ? "nouislider-input-from" : "nouislider-input-to"; |
|
const input = document.getElementById(inputId); |
|
if (input) { |
|
// Round the string value ("1971.00" -> 1971) |
|
input.value = Math.round(parseFloat(values[handle])); |
|
} |
|
}); |
|
} |
|
}; |
|
|
|
// 3. Try immediately, then periodically until the slider is ready |
|
applyRounding(); |
|
const retry = setInterval(() => { |
|
applyRounding(); |
|
if (sliderEl.dataset.yearFormatApplied) clearInterval(retry); |
|
}, 100); |
|
|
|
// Stop trying after 3 seconds |
|
setTimeout(() => clearInterval(retry), 3000); |
|
}, |
|
}; |
|
})(Drupal);
|
|
|