NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name jira-greenweb // @namespace http://tampermonkey.net/ // @license MIT // @version 0.2 // @description try to take over the world! // @author You // @match http://jira.greenweb.local/* // @grant none // ==/UserScript== $(document).ready(function () { JalaliDate = { g_days_in_month: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], j_days_in_month: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29] }; JalaliDate.gregorianToJalali = function(g_y, g_m, g_d) // تابع تبدیل تاریخ میلادی به جلالی { g_y = parseInt(g_y); g_m = parseInt(g_m); g_d = parseInt(g_d); var gy = g_y-1600; var gm = g_m-1; var gd = g_d-1; var g_day_no = 365*gy+parseInt((gy+3) / 4)-parseInt((gy+99)/100)+parseInt((gy+399)/400); for (var i=0; i < gm; ++i) g_day_no += JalaliDate.g_days_in_month[i]; if (gm>1 && ((gy%4==0 && gy%100!=0) || (gy%400==0))) /* leap and after Feb */ ++g_day_no; g_day_no += gd; var j_day_no = g_day_no-79; var j_np = parseInt(j_day_no/ 12053); j_day_no %= 12053; var jy = 979+33*j_np+4*parseInt(j_day_no/1461); j_day_no %= 1461; if (j_day_no >= 366) { jy += parseInt((j_day_no-1)/ 365); j_day_no = (j_day_no-1)%365; } for (i = 0; i < 11 && j_day_no >= JalaliDate.j_days_in_month[i]; ++i) { j_day_no -= JalaliDate.j_days_in_month[i]; } var jm = i+1; var jd = j_day_no+1; return [jy, jm, jd]; }; function convert(month) { // تبدیل ماه ها به جلالی و بالعکس switch (month) { case 'Jan' : return '1' ; case 'Feb' : return '2' ; case 'Mar' : return '3' ; case 'Apr' : return '4' ; case 'Nov' : return '11' ; case 'Dec' : return '12' ; case '1' : return 'Jan' ; case '2' : return 'Feb' ; case '3' : return 'Mar' ; case '4' : return 'Apr' ; case '11' : return 'Nov' ; case '12' : return 'Dec' ; default: return "Dec"; } } function covertweek (week) { // تبدیل روزهای هفته switch (week) { case 'Mon' : return 'دوشنبه' ; case 'Tue' : return 'سه شنبه' ; case 'Wed' : return 'چهارشنبه' ; case 'Thu' : return 'پنجشنبه' ; case 'Fri' : return 'جمعه' ; case 'Sat' : return 'شنبه' ; case 'Sun' : return 'یکشنبه' ; case 'Today' : return 'امروز' ; } } function DIssue () { var val = $('#due-date time').attr('datetime'); val = val.split('-'); var test=JalaliDate.gregorianToJalali(val[0], val[1], val[2]); $('#due-date time').append('<time class="duedate_jalili">'+test[0] + "/" + test[1] + "/" + test[2]+'</time>'); } // تابع کلی برای تبدیل تاریخ میلادی به جلالی function ChDate() { /* شروع تابع تبدیل تاریخ داخل جدول ها */ $('.issue-table > tbody > tr').each(function(){ if($(this).hasClass('changedtojalali') == false){ // وقتی یک تگ کلاس 'changedtojalali' داشته باشد یعنی تبدیل تاریخ روی آن تگ انجام شده است. $(this).addClass('changedtojalali'); var val = $('.duedate',this).text(); var val2 = $('.duedate',this).text(); val = val.split('/'); var test=JalaliDate.gregorianToJalali(20+val[2], convert(val[1]), val[0]); $('.duedate',this).text(test[0] + "/" + test[1] + "/" + test[2]); if($('.duedate',this).text() == "NaN/1/NaN"){ // بررسی معتبر بودن تاریخ پس از تغییر $('.duedate',this).text(""); }else{ $('.duedate',this).append('<span class="ddata-tooltip">'+ val2 +'</span>'); } } }); /* پایان تابع تبدیل تاریخ داخل جدول ها */ /* تغییر تاریخ داخل تگ های time */ $('.action-details span.date, #viewissuesidebar .user-tz, .user-tz').each(function(){ if($(this).hasClass('changedtojalali') == false){ // وقتی یک تگ کلاس 'changedtojalali' داشته باشد یعنی تبدیل تاریخ روی آن تگ انجام شده است. $(this).addClass('changedtojalali'); var val = $('.livestamp',this).attr('datetime').split('T'); // دریافت تاریخ از اتربیوت datetime از کلاس livestamp , date format : YYYY-MM-DDTH:M:S+0330 var mdate = val[0].split('-'); var newdate = JalaliDate.gregorianToJalali(mdate[0], mdate[1], mdate[2]); newdate = newdate[0] + "/" + newdate[1] + "/" + newdate[2]; var newdate2 = mdate[2] + "/" + convert(mdate[1]) + "/" + (mdate[0]-2000); var newtime = val[1].split(':'); newtime = newtime[0] + ":" + newtime[1]; $(this).html(newdate + " " + newtime); // چاپ تاریخ جدید در تگ مورد نظر $(this).removeAttr('title'); $(this).append('<span class="ddata-tooltip">' + newdate2 + " " + newtime + '</span>'); } }); /* تغییر تاریخ داخل تگ های time */ /* تغییر تمامی تاریخ های داخل قسمت Project pages -> Tempo Part */ $("#tempo-content").each(function(){ var mdate = $('.date',this).html(); // دریافت تاریخ از تگ مورد نظر var mdate2 = $('.date',this).html(); if($(this).hasClass('changedtojalali') == false){ // وقتی یک تگ کلاس 'changedtojalali' داشته باشد یعنی تبدیل تاریخ روی آن تگ انجام شده است. $('.date',this).addClass('changedtojalali'); mdate = mdate.split('-'); var datepart1 = mdate[0].split('/'); var datepart2 = mdate[1].split('/'); var newdate1 = JalaliDate.gregorianToJalali(20+datepart1[2], convert(datepart1[1]), datepart1[0]); newdate1 = newdate1[0] + "/" + newdate1[1] + "/" + newdate1[2]; var newdate2 = JalaliDate.gregorianToJalali(20+datepart2[2], convert(datepart2[1]), datepart2[0]); newdate2 = newdate2[0] + "/" + newdate2[1] + "/" + newdate2[2]; $('.date',this).html(newdate1 + " - " + newdate2); $('.date',this).css('width','180px'); $('.date',this).append('<span class="ddata-tooltip">' + mdate2 + '</span>'); // اضافه کردن تولتیپ } }); /* تغییر تمامی تاریخ های داخل قسمت Project pages -> Tempo Part */ /* تغییر تاریخ های داخل قسمت Tempo pages -> Timesheets -> weekdays dates */ $("._canvas__day_header_content___1b06_").each(function(){ if($(this).hasClass('changedtojalali') == false){ // وقتی یک تگ کلاس 'changedtojalali' داشته باشد یعنی تبدیل تاریخ روی آن تگ انجام شده است. var day = $('._canvas__name_of_day___UsEQR', this).text(); day = covertweek(day); $('._canvas__name_of_day___UsEQR', this).html(day); $(this).addClass('changedtojalali'); var mdate = $("._canvas__header_date___2tBnp",this).html(); // دریافت تاریخ میلادی از تگ مورد نظر mdate = mdate.split('.'); var newdate = JalaliDate.gregorianToJalali(2018, mdate[1], mdate[0]); $("._canvas__header_date___2tBnp",this).html(newdate[2] + "." + newdate[1]); // ست کردن تاریخ جلالی روی تگ مورد نظر } }); /* تغییر تاریخ های داخل قسمت Tempo pages -> Timesheets -> weekdays dates */ /* تغییر تاریخ تولتیپ های پایین قسمت جدول انتخاب تاریخ جدید (pickdate) */ $(".calendar table>tfoot tr.footrow").each(function(){ if($('td',this).hasClass('changedtojalali') == false){ $(this).append('<td colspan="8" class="changedtojalali"></td>'); } var olddate = $('td.ttip',this).html(); // دریافت تاریخ میلادی olddate = olddate.split(' '); if($.isNumeric(olddate[2])){ // چک کردن صحیح بودن تاریخ که باید عدد باشد olddate[0] = olddate[0].replace(',', ''); var day = covertweek(olddate[0]); // تغییر نام روز هفته به جلالی var newdate = JalaliDate.gregorianToJalali(2018,olddate[1],olddate[2]); $('.changedtojalali',this).html(day + " " + newdate[1] + "/" + newdate[2]); // خیره تاریخ جدید در تگ جدید ساخته شده در خط 176 $('.calendar table>tfoot tr.footrow>td.ttip').hide(); // پنهان کردن تگ اصلی حاوی تاریخ میلادی $('.calendar table>tfoot tr.footrow>td.changedtojalali').show(); } }); /* تغییر تاریخ تولتیپ های پایین قسمت جدول انتخاب تاریخ جدید (pickdate) */ /* تغییر تاریخ های داخل ورودی ها (inputs) */ $('.field-group input[size="7"], .field-group input[id="duedate"], .tempo-field-group input.tempo-date-field').each(function(){ var val = $(this).val(); val = val.split('/'); if($.isNumeric(val[1]) != true){ // چک کردن ماه تاریخ مورد نظر که نبایستی عدد باشد var newdate = JalaliDate.gregorianToJalali(20+val[2],convert(val[1]),val[0]); newdate = newdate[0] + "/" + newdate[1] + "/" + newdate[2]; if(newdate != "NaN/1/NaN"){ // تایخ جلالی درست شده آیا معتبر است؟ $(this).val(newdate); } } }); /* تغییر تاریخ های داخل ورودی ها (inputs) */ /* روند نمایش تولتیپ های درست شده */ $('#tempo-content, .issuePanelWrapper .action-details, #viewissuesidebar, .dashboard-item-content, .issue-table > tbody > tr').each(function(){ $('.date, .user-tz, .duedate',this).mouseenter(function(){ $('.ddata-tooltip',this).show(); }); $('.date, .user-tz, .duedate',this).mouseleave(function(){ $('.ddata-tooltip',this).hide(); }); var myFrame = $('.gadget-iframe',this).contents().find('.gadgetHeaderDiv h5.dateHeader'); myFrame.mouseenter(function(){ $('.ddata-tooltip',this).show(); }); myFrame.mouseleave(function(){ $('.ddata-tooltip',this).hide(); }); }); /* روند نمایش تولتیپ های درست شده */ $('.dashboard-item-content .gadget-iframe').each(function(){ if($(this).hasClass('changedtojalali') == false){ // وقتی یک تگ کلاس 'changedtojalali' داشته باشد یعنی تبدیل تاریخ روی آن تگ انجام شده است. var myFrame = $(this).contents().find('.gadgetHeaderDiv h5.dateHeader'); // دریافت اطلاعات داخل تگ آی فریم مود نظر و پیدا کردن تاریخ میلادی موجود در آن var olddate = myFrame.text(); if(olddate != ''){ // بررسی خالی نبودن تگ میلادی $(this).addClass('changedtojalali'); olddate = olddate.split('-'); var date_part1 = olddate[0].split('/'); var date_part2 = olddate[1].split('/'); date_part1 = JalaliDate.gregorianToJalali(20+date_part1[2],convert(date_part1[1]),date_part1[0]); date_part2 = JalaliDate.gregorianToJalali(20+date_part2[2],convert(date_part2[1]),date_part2[0]); myFrame.html(date_part1[0] + "/" + date_part1[1] + "/" + date_part1[2] + " - " + date_part2[0] + "/" + date_part2[1] + "/" + date_part2[2]); // اضافه کردن تاریخ جلالی myFrame.append('<span class="ddata-tooltip">' + olddate[0] + "-" + olddate[1] + '</span>'); // اضافه کردن تولتیپ تاریخ جلالی } } }); /*$('._header__day_navigation_date___2wvF3>span').each(function(){ if($(this).hasClass('changedtojalali') == false){ $(this).addClass('changedtojalali'); var datedate = $(this).text(); datedate = datedate.split(' - '); var datepart1 = datedate[0].split(' '); var datepart2 = datedate[1].split(', '); var newdate1 = JalaliDate.gregorianToJalali(datepart2[1],convert(datepart1[0]),datepart1[1]); var newdate2 = JalaliDate.gregorianToJalali(datepart2[1],convert(datepart1[0]),datepart2[0]); var newdate = newdate1[0] + "/" + newdate1[1] + "/" + newdate1[2] + " - " + newdate2[0] + "/" + newdate2[1] + "/" + newdate2[2]; $(this).html(newdate); } });*/ } setInterval(function(){ ChDate(); },800); // اجرای تابع مورد نظر هر 800 میلی ثانیه برای چک کردن وجود داشتن تاریخ های میلادی و تبدیل آن به جلالی setTimeout(DIssue,1500); // اجرای تابع مورد نظر بعد از 1500 میلی ثانیه صبر });