react-mobiscroll
Version:
A simple wrapper of Mobiscroll for ReactJS.
208 lines (175 loc) • 6.77 kB
JavaScript
(function ($) {
var JalaliDate = {
gDaysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
jDaysInMonth: [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29]
};
JalaliDate.jalaliToGregorian = function (jY, jM, jD) {
jY = parseInt(jY);
jM = parseInt(jM);
jD = parseInt(jD);
var i;
var jy = jY - 979;
var jm = jM - 1;
var jd = jD - 1;
var jDayNo = 365 * jy + parseInt(jy / 33) * 8 + parseInt((jy % 33 + 3) / 4);
for (i = 0; i < jm; ++i) {
jDayNo += JalaliDate.jDaysInMonth[i];
}
jDayNo += jd;
var gDayNo = jDayNo + 79;
var gy = 1600 + 400 * parseInt(gDayNo / 146097);
gDayNo = gDayNo % 146097;
var leap = true;
if (gDayNo >= 36525) {
gDayNo--;
gy += 100 * parseInt(gDayNo / 36524);
gDayNo = gDayNo % 36524;
if (gDayNo >= 365) {
gDayNo++;
} else {
leap = false;
}
}
gy += 4 * parseInt(gDayNo / 1461);
gDayNo %= 1461;
if (gDayNo >= 366) {
leap = false;
gDayNo--;
gy += parseInt(gDayNo / 365);
gDayNo = gDayNo % 365;
}
for (i = 0; gDayNo >= JalaliDate.gDaysInMonth[i] + (i == 1 && leap) ; i++) {
gDayNo -= JalaliDate.gDaysInMonth[i] + (i == 1 && leap);
}
var gm = i + 1;
var gd = gDayNo + 1;
return [gy, gm, gd];
};
JalaliDate.checkDate = function (jY, jM, jD) {
return !(jY < 0 || jY > 32767 || jM < 1 || jM > 12 || jD < 1 || jD >
(JalaliDate.jDaysInMonth[jM - 1] + (jM == 12 && ((jY - 979) % 33 % 4) === 0)));
};
JalaliDate.gregorianToJalali = function (gY, gM, gD) {
gY = parseInt(gY);
gM = parseInt(gM);
gD = parseInt(gD);
var i;
var gy = gY - 1600;
var gm = gM - 1;
var gd = gD - 1;
var gDayNo = 365 * gy + parseInt((gy + 3) / 4) - parseInt((gy + 99) / 100) + parseInt((gy + 399) / 400);
for (i = 0; i < gm; ++i) {
gDayNo += JalaliDate.gDaysInMonth[i];
}
if (gm > 1 && ((gy % 4 === 0 && gy % 100 !== 0) || (gy % 400 === 0))) {
++gDayNo;
}
gDayNo += gd;
var jDayNo = gDayNo - 79;
var jNp = parseInt(jDayNo / 12053);
jDayNo %= 12053;
var jy = 979 + 33 * jNp + 4 * parseInt(jDayNo / 1461);
jDayNo %= 1461;
if (jDayNo >= 366) {
jy += parseInt((jDayNo - 1) / 365);
jDayNo = (jDayNo - 1) % 365;
}
for (i = 0; i < 11 && jDayNo >= JalaliDate.jDaysInMonth[i]; ++i) {
jDayNo -= JalaliDate.jDaysInMonth[i];
}
var jm = i + 1;
var jd = jDayNo + 1;
return [jy, jm, jd];
};
$.mobiscroll.i18n.fa = $.extend($.mobiscroll.i18n.fa, {
// Core
setText: 'تاييد',
cancelText: 'انصراف',
clearText: 'واضح ',
selectedText: 'منتخب',
// Datetime component
dateFormat: 'yy/mm/dd',
dateOrder: 'yymmdd',
dayNames: ['يکشنبه', 'دوشنبه', 'سهشنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
dayNamesShort: ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
dayNamesMin: ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
dayText: 'روز',
hourText: 'ساعت',
minuteText: 'دقيقه',
monthNames: ['فروردين', 'ارديبهشت', 'خرداد', 'تير', 'مرداد', 'شهريور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'],
monthNamesShort: ['فروردين', 'ارديبهشت', 'خرداد', 'تير', 'مرداد', 'شهريور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'],
//monthNamesShort: ['Farvardin', 'Ordibehesht', 'Khordad', 'Tir', 'Mordad', 'Shahrivar', 'Mehr', 'Aban', 'Azar', 'Dey', 'Bahman', 'Esfand'],
monthText: 'ماه',
secText: 'ثانيه',
timeFormat: 'HH:ii',
timeWheels: 'HHii',
yearText: 'سال',
nowText: 'اکنون',
amText: 'ب',
pmText: 'ص',
getYear: function (date) {
return JalaliDate.gregorianToJalali(date.getFullYear(), (date.getMonth() + 1), date.getDate())[0];
},
getMonth: function (date) {
return --JalaliDate.gregorianToJalali(date.getFullYear(), (date.getMonth() + 1), date.getDate())[1];
},
getDay: function (date) {
return JalaliDate.gregorianToJalali(date.getFullYear(), (date.getMonth() + 1), date.getDate())[2];
},
getDate: function (y, m, d, h, i, s, u) {
if (m < 0) {
y += Math.floor(m / 12);
m = 12 + m % 12;
}
if (m > 11) {
y += Math.floor(m / 12);
m = m % 12;
}
var gregorianDate = JalaliDate.jalaliToGregorian(y, +m + 1, d);
return new Date(gregorianDate[0], gregorianDate[1] - 1, gregorianDate[2], h || 0, i || 0, s || 0, u || 0);
},
getMaxDayOfMonth: function (y, m) {
var maxdays = 31;
while (JalaliDate.checkDate(y, m + 1, maxdays) === false) {
maxdays--;
}
return maxdays;
},
//getNumber: function (n) {
// var i,
// nums = ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"],
// res = '';
// n = n + '';
// for (i = 0; i < n.length; i++) {
// res += nums[+n[i]];
// }
// return res;
//},
// Calendar component
firstDay: 6,
rtl: true,
dateText: 'تاریخ ',
timeText: 'زمان ',
calendarText: 'تقویم',
closeText: 'نزدیک',
// Daterange component
fromText: 'شروع ',
toText: 'پایان',
// Measurement components
wholeText: 'تمام',
fractionText: 'کسر',
unitText: 'واحد',
// Time / Timespan component
labels: ['سال', 'ماه', 'روز', 'ساعت', 'دقیقه', 'ثانیه', ''],
labelsShort: ['سال', 'ماه', 'روز', 'ساعت', 'دقیقه', 'ثانیه', ''],
// Timer component
startText: 'شروع',
stopText: 'پايان',
resetText: 'تنظیم مجدد',
lapText: 'Lap',
hideText: 'پنهان کردن',
// Listview
backText: 'پشت',
undoText: 'واچیدن'
});
})(jQuery);