Skip to content

Instantly share code, notes, and snippets.

@iamjenechka
Created February 15, 2024 14:01
Show Gist options
  • Save iamjenechka/73dcc438482d5ab6996cf136cc6f4829 to your computer and use it in GitHub Desktop.
Save iamjenechka/73dcc438482d5ab6996cf136cc6f4829 to your computer and use it in GitHub Desktop.
jQuery(function ($) {
var log = console.log;
let islamMonths = ['Мухаррам', 'Сафар', 'Раби аль-авваль', 'Раби ас-сани', 'Джумад аль-уля', 'Джумад ас-сани', 'Раджаб', 'Шабан', 'Рамадан', 'Шавваль', 'Зу-ль-када', 'Зу-ль-хиджа'];
let islamWeekDays = {
"Al Ahad": 'аль-Ахад',
"Al Athnayn": 'аль-Иснейн',
"Al Thalaata": 'ас-Суляса',
"Al Arba'a": 'аль-Арбиа',
"Al Khamees": 'аль-Хамис',
"Al Juma'a": 'аль-Джум’а',
"Al Sabt": 'ас-Сабт',
}
let gregorainMonths = ['Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря'];
let gregorainWeekDays = {
"Monday": 'понедельник',
"Tuesday": 'вторник',
"Wednesday": 'среда',
"Thursday": 'четверг',
"Friday": 'пятница',
"Saturday": 'суббота',
"Sunday": 'воскресенье',
}
if ($('#row-calendar').length) {
$('#row-calendar').find('.calendar').each(function () {
var year = this.dataset.year;
let month = this.dataset.month;
let configObject = {
language: 'ru',
container: this,
singleDate: true,
singleMonth: true,
alwaysOpen: true,
inline: true,
startOfWeek: 'monday',
startDate: this.dataset.start_date,
endDate: this.dataset.end_date,
showDateFilter: function (time, day) {
let dayType = '';
let dayData = '';
for (var num = 0; num < days_json_array.length; num++) {
if (days_json_array[num].day_date == year + '-' + month + '-' + (day < 10 ? '0' + day : day)) {
if (days_json_array[num].day_type == 1)
dayType = 'holyday';
else if (days_json_array[num].day_type == 2)
dayType = 'memory';
dayData = num;
}
}
return '<div class="day-inner ' + dayType + '" data-day_data="' + dayData + '">\
<span>' + day + '</span>\
<span class="islamic-date" data-date="' + day + '-' + month + '-' + year + '">'+/*kuwaiticalendar(diffDays)[5]+*/'</span>\
</div>';
}
};
$(this).dateRangePicker(configObject);
});
$('.calendar .toMonth').on('mouseenter', '.holyday, .memory', function (e) {
let popup = $('.calendar-day-popup');
if (!popup.length) {
$('body').append('<div class="calendar-day-popup"></div>');
popup = $('.calendar-day-popup');
}
popup.html('');
let day_data = days_json_array[this.dataset.day_data];
let description = $(day_data.description).text();
popup.append('<p><strong>' + day_data.name + '</strong></p>');
popup.append('<div class="description">' + description + '</div>');
popup.append('<a href="#' + day_data.url + '">Подробнее</a>');
popup.css({
display: 'flex'
});
$(this).append(popup);
});
$('.calendar .toMonth').on('mouseleave', '.holyday, .memory', function () {
let popup = $('.calendar-day-popup');
popup.hide();
});
$('.calendar').each(function (index) {
let month = $(this);
var caption = month.find('.caption');
var captionText = '';
fetch("http://api.aladhan.com/v1/gToHCalendar/" + (index + 1) + "/" + month.data('year'))
.then(response => response.json())
.then(data => {
let days = data.data;
month.find('.toMonth .islamic-date').each(function (i) {
this.innerHTML = parseInt(days[i].hijri.day);
if (i == 0) {
captionText = islamMonths[days[i].hijri.month.number - 1] + ' ' + days[i].hijri.year;
} else if (i == days.length - 1) {
captionText += ' - ' + islamMonths[days[i].hijri.month.number - 1] + ' ' + days[i].hijri.year;
caption.attr('data-caption', captionText);
}
});
})
.catch(error => console.error('Error fetching data:', error));
})
$('.day').click(function () {
$('.checked').removeClass('first-date-selected checked');
});
}
$('.dates_converter').on('click', '.tabs__item', function () {
let tab = $(this);
tab.addClass('active').siblings().removeClass('active');
let index = tab.index();
let contents = tab.closest('.dates_converter').find('.tabs-content__item');
$(contents[index]).show().siblings().hide();
});
var waitFirstConvert = true;
var waitSecondConvert = true;
$('.dates_converter').on('click', '.translate', function () {
let dayConvertFunction = this.dataset.day_convert_function;
let monthConvertFunction = this.dataset.month_convert_function;
let convertTo = this.dataset.convert_to;
let months = this.dataset.months;
let weekDays = this.dataset.week_days;
let offset = this.dataset.offset;
let controls = $(this).closest('.tabs-content__controls');
let contentResult = controls.closest('.tabs-content__item').find('.tabs-content__result');
let day = controls.find('.day').val();
let month = controls.find('.month').val();
let year = controls.find('.year').val();
fetch("http://api.aladhan.com/" + dayConvertFunction + "?date=" + day + '-' + month + '-' + year)
.then(response => response.json())
.then(data => {
let date = data.data[convertTo];
contentResult.find('.result-date span').text(parseInt(date.day) + ' ' + eval(months)[date.month.number - 1] + ' ' + date.year);
contentResult.find('.result-week-day span').text(eval(weekDays)[date.weekday.en]);
let daysCountSpan = contentResult.find('.result-days-count span').text(offset);
for (var i = 1; i <= 12; i++) {
fetch("http://api.aladhan.com/v1/" + monthConvertFunction + "/" + i + "/" + date.year)
.then(response => response.json())
.then(data => {
let daysPreMonth = data.data.length;
let daysCount = parseInt(daysCountSpan.text());
daysCountSpan.text(daysCount + daysPreMonth);
})
.catch(error => console.error('Error fetching data:', error));
}
})
.catch(error => console.error('Error fetching data:', error));
});
$($('.dates_converter .translate')[0]).click();
//$('.dates_converter .translate').click();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment