|
@@ -0,0 +1,46 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+$this->registerJs(
|
|
|
+<<<JS
|
|
|
+const deadline = new Date(2023, 9, 12);
|
|
|
+ // id таймера
|
|
|
+ let timerId = null;
|
|
|
+ // склонение числительных
|
|
|
+ function declensionNum(num, words) {
|
|
|
+ return words[(num % 100 > 4 && num % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][(num % 10 < 5) ? num % 10 : 5]];
|
|
|
+ }
|
|
|
+ // вычисляем разницу дат и устанавливаем оставшееся времени в качестве содержимого элементов
|
|
|
+ function countdownTimer() {
|
|
|
+ const diff = deadline - new Date();
|
|
|
+ if (diff <= 0) {
|
|
|
+ clearInterval(timerId);
|
|
|
+ }
|
|
|
+ const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0;
|
|
|
+ const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0;
|
|
|
+ const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0;
|
|
|
+ const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0;
|
|
|
+ _days.dataset.title = declensionNum(days, ['день', 'дня', 'дней']);
|
|
|
+ _hours.dataset.title = declensionNum(hours, ['час', 'часа', 'часов']);
|
|
|
+ _minutes.dataset.title = declensionNum(minutes, ['минута', 'минуты', 'минут']);
|
|
|
+// _seconds.dataset.title = declensionNum(seconds, ['секунда', 'секунды', 'секунд']);
|
|
|
+
|
|
|
+ _days.textContent = days + ' ' + _days.dataset.title;
|
|
|
+ _hours.textContent = hours + ' ' + _hours.dataset.title;
|
|
|
+ _minutes.textContent = minutes + ' ' + _minutes.dataset.title;
|
|
|
+// _seconds.textContent = seconds < 10 ? '0' + seconds : seconds;
|
|
|
+// _seconds.textContent = _seconds.textContent + ' ' + _seconds.dataset.title;
|
|
|
+}
|
|
|
+ // получаем элементы, содержащие компоненты даты
|
|
|
+ const _days = document.querySelector('.timer__days');
|
|
|
+ const _hours = document.querySelector('.timer__hours');
|
|
|
+ const _minutes = document.querySelector('.timer__minutes');
|
|
|
+ const _seconds = document.querySelector('.timer__seconds');
|
|
|
+ // вызываем функцию countdownTimer
|
|
|
+ countdownTimer();
|
|
|
+ // вызываем функцию countdownTimer каждую секунду
|
|
|
+ timerId = setInterval(countdownTimer, 1000);
|
|
|
+JS
|
|
|
+ ,
|
|
|
+ yii\web\View::POS_END,
|
|
|
+ 'counter'
|
|
|
+);
|