تضامنًا مع حق الشعب الفلسطيني |
ميدياويكي:Gadget-countdown-timer.js
اذهب إلى التنقل
اذهب إلى البحث
ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.
/**
* Countdown Timer
*
* works with [[:ar:Module:countdown]]
*
* by [[:ar:User:حبيشان]]
*
*/
(function(){
var cdt = []
var cdt_params = ['date1', 'date2', 'eventbefore', 'eventstart', 'eventstart2', 'eventend', 'event', 'other', 'color']
const cminute=60,chour=cminute* 60, cday=chour*24, cweek=cday * 7;
const time_parts_values = [cweek, cday, chour, cminute, 1]
function get_parts(ms_time) {
ret = {}
ms_time = Math.floor(ms_time / 1000)
ret.week = Math.floor(ms_time / cweek);
ret.day = Math.floor((ms_time % cweek) / cday);
ret.hour = Math.floor((ms_time % cday) / chour);
ret.minute = Math.floor((ms_time % chour) / cminute);
ret.second = Math.floor((ms_time % cminute));
return ret
}
function formatMessage(text, ms_time, parts, color)
{
time_parts = ['week','day','hour','minute','second']
var maj = (text.indexOf('@مدة مجرورة@')>-1)
time_plural= [
['', 'أسبوع واحد', 'أسبوعان', 'أسابيع', 'أسبوعًا', 'أسبوعٍ'],
['', 'يوم واحد', 'يومان', 'أيام', 'يومًا', 'يومٍ'],
['', 'ساعة واحدة', 'ساعتان', 'ساعات', 'ساعةً', 'ساعةٍ'],
['', 'دقيقة واحدة', 'دقيقتان', 'دقائق', 'دقيقةً', 'دقيقةٍ'],
['', 'ثانية واحدة', 'ثانيان', 'ثوانٍ', 'ثانيةً', 'ثانيةٍ']
]
var tt = get_parts(ms_time);
var last_part;
parts = (parts>0)? parts : 2;
var part_count=0
ret = '';
for(var i = 0; i < time_parts.length; i++) {
if (tt[time_parts[i]] > 0) {
ret = ((ret.length>0)? ret + ' و' : '') +
((tt[time_parts[i]] < 3) ? '' : ('<span style="color: ' + (color || '#F00') + '; font-weight: bold;">' + String(tt[time_parts[i]] + '</span> '))) +
((tt[time_parts[i]]==2 && maj)? time_plural[i][2].slice(0,-2) + 'ين' : mw.language.convertPlural(tt[time_parts[i]], time_plural[i]));
part_count ++;
last_part = i;
if (part_count>=parts) break;
}
}
if (text !='') {
ret=text.replace((maj? '@مدة مجرورة@': '@مدة@'), ret)
}
return [ret, last_part]
}
function update_cdt(i) {
var time_to_start,time_to_end
var text,last_part;
cdt[i].parts = cdt[i].other && parseInt(cdt[i].other.substring(0,1)) || 2
if (cdt[i].date1) {
time_to_start = cdt[i].date1 - Date.now()
}
if (cdt[i].date2) {
time_to_end = cdt[i].date2 - Date.now()
}
if (time_to_start>0) {
cdt[i].eventbefore = cdt[i].eventbefore ||
cdt[i].event && ('بقي @مدة@ على بداية «' + cdt[i].event + '».') || '';
[text, last_part] = formatMessage(cdt[i].eventbefore, time_to_start, cdt[i].parts, cdt[i].color);
} else if (time_to_end) {
if (time_to_end > 0) {
cdt[i].eventstart2 = cdt[i].eventstart2 ||
cdt[i].event && ("بداية «" + cdt[i].event + "» وستكون النهاية بعد @مدة مجرورة@") || '';
[text, last_part] = formatMessage(cdt[i].eventstart2, time_to_end, cdt[i].parts,cdt[i].color);
} else {
text = cdt[i].eventend || cdt[i].event && ("انتهاء «" + cdt[i].event + "».") || '';
}
} else {
text = cdt[i].eventstart || cdt[i].event && ("بداية «" + cdt[i].event + '».') || '';
}
$('#cdt' + i + ' .cdt-ret')[0].innerHTML = text;
if (last_part) {
var ms = (new Date()) % (time_parts_values[last_part] * 1000);
setTimeout( function () {
update_cdt(i);
}, (time_parts_values[last_part] * 1000) + 100 - ms );
}
}
l = $('.countdown-timer')
for (i = 0; i < l.length; i++) {
l[i].id = 'cdt' + i
cdt[i] = { 'element': l[i] }
for (var j = 0; j < cdt_params.length; j++) {
param = $('#cdt' + i + ' .cdt-param-' + cdt_params[j]);
if (param.length) {
if (cdt_params[j].slice(0, -1) == 'date') {
cdt[i][cdt_params[j]] = new Date(param[0].textContent.substring(0, 19) + 'Z')
} else {
cdt[i][cdt_params[j]] = param[0].textContent
}
}
}
update_cdt(i);
}
})()