انتقل إلى المحتوى

ميدياويكي:Gadget-ControlRequests.js

من ويكيبيديا، الموسوعة الحرة

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات (إفراغ الكاش الآن).

/*
[[ويكيبيديا:الميدان/تقنية#اقتراح_إضافة_لإخفاء_الطلبات_قيد_التنفيذ_أو_المجابة]]

القالب المتعلق: [[قالب:تحكم طلبات]]

تعمل الإضافة فقط إذا كان
[[تصنيف:Gadget-ControlRequests]]
موجود في الصفحة

[[مستخدم:Mr. Ibrahem]]

*/
const categoryToIcon = {
	'مؤجل': 'moajal',
	'جار': 'jar',
	'مقبول': 'maqboul',
	'مرفوض': 'marfoud',
	'انتظار': 'intidar',
	'all': 'all'
};

function filterDivs(className) {

	const iconClass = categoryToIcon[className] || '';

	$('.control1 > span').removeClass('active');
	$(`.control1 .icon-${iconClass}`).addClass('active');

	const allDivs = $('.جار, .مقبول, .مرفوض, .انتظار, .مؤجل');

	allDivs.each(function () {
		const div = $(this);
		if (div.hasClass(className) || className === 'all') {
			div.show();

			// Parsoid
			// div.closest('section').show();
			const section = div.closest('section');
			if (section.length) {
				section.show();
			} else {
				// legacy parser
				div.prevAll('.mw-heading:first').show();
				div.nextUntil('.mw-heading').show();
				// div.next('dl').show();
				// div.nextAll('hr:first').show();
			}
		} else {
			div.hide();

			// Parsoid
			// div.closest('section').hide();
			const section = div.closest('section');
			if (section.length) {
				section.hide();
			} else {
				// legacy parser
				div.prevAll('.mw-heading:first').hide();
				div.nextUntil('.mw-heading').hide();
				// div.next('dl').hide();
				// div.nextAll('hr:first').hide();
			}
		}
	});
}
function updateCounters() {
	const categories = Object.keys(categoryToIcon).filter(category => category !== 'all'); // استبعاد 'all'

	let total = 0;

	categories.forEach(category => {
		const count = $(`.${category}`).length;
		const iconClass = categoryToIcon[category] || '';
		if (count > 0) {
			total += count;

			if (iconClass) {
				const currentText = $(`.icon-${iconClass}`).text();
				$(`.icon-${iconClass}`).text(`${currentText} (${count})`);
			}
		} else {
			// remove on click event
			$(`.icon-${iconClass}`).off('click');
			// disable the icon
			$(`.icon-${iconClass}`).css('opacity', '0.5');
			$(`.icon-${iconClass}`).removeClass('cicons');
		}
	});

	if (total > 0) {
		const currentAllText = $('.icon-all').text();
		$('.icon-all').text(`${currentAllText} (${total})`);
	}
}

$(document).ready(function () {

	const controlDiv = $('.control1');

	if (controlDiv.length > 0) {
		controlDiv.show();

		controlDiv.find('.icon-jar').on('click', () => filterDivs('جار'));
		controlDiv.find('.icon-maqboul').on('click', () => filterDivs('مقبول'));
		controlDiv.find('.icon-marfoud').on('click', () => filterDivs('مرفوض'));
		controlDiv.find('.icon-intidar').on('click', () => filterDivs('انتظار'));
		controlDiv.find('.icon-moajal').on('click', () => filterDivs('مؤجل'));
		controlDiv.find('.icon-all').on('click', () => filterDivs('all'));

		updateCounters();

	}
});