diff --git a/resources/views/tasks/create.blade.php b/resources/views/tasks/create.blade.php index f8681ff1..7d970bb6 100755 --- a/resources/views/tasks/create.blade.php +++ b/resources/views/tasks/create.blade.php @@ -57,12 +57,9 @@ if (isset($task)) { $defaultStartGregorian = $existingStart ? \App\Support\JalaliHelper::toGregorianDate($existingStart) : now()->format('Y-m-d'); - $defaultStartJalali = $existingStart - ? \App\Support\JalaliHelper::format($existingStart, 'Y/m/d', '') - : \App\Support\JalaliHelper::format(now(), 'Y/m/d', ''); @endphp @@ -211,11 +208,18 @@ if (isset($task)) { updateSelectedCount(); $(document).ready(function () { + function jalaliFromGregorianYmd(ymd) { + if (!ymd) return ''; + const parts = String(ymd).split('-').map(Number); + if (parts.length < 3 || parts.some(n => Number.isNaN(n))) return ''; + const gDate = new Date(parts[0], parts[1] - 1, parts[2]); + return new persianDate(gDate).toLocale('en').format('YYYY/MM/DD'); + } + function syncGregorianFromDisplay(displaySelector, hiddenSelector) { const displayVal = $(displaySelector).val(); if (!displayVal || $(hiddenSelector).val()) return; try { - // اگر مقدار نمایشی شمسی YYYY/MM/DD باشد const parts = String(displayVal).replace(/-/g, '/').split('/'); if (parts.length === 3) { const pDate = new persianDate([Number(parts[0]), Number(parts[1]), Number(parts[2])]); @@ -226,53 +230,62 @@ if (isset($task)) { } } - $('#start_date').persianDatepicker({ + const startPickerOptions = { format: 'YYYY/MM/DD', autoClose: true, + initialValue: false, toolbox: { calendarSwitch: {enabled: false}, todayButton: {enabled: true, text: {fa: 'امروز'}} }, onSelect: function (unix) { - let gregorian = new persianDate(unix).toCalendar('gregorian').toLocale('en'); - let dateStr = gregorian.format('YYYY-MM-DD'); - $('#start_date_gregorian').val(dateStr); + const gregorian = new persianDate(unix).toCalendar('gregorian').toLocale('en'); + $('#start_date_gregorian').val(gregorian.format('YYYY-MM-DD')); } - }); + }; + + $('#start_date').persianDatepicker(startPickerOptions); $('#target_date').persianDatepicker({ format: 'YYYY/MM/DD', autoClose: true, + initialValue: false, toolbox: { calendarSwitch: {enabled: false}, todayButton: {enabled: true, text: {fa: 'امروز'}} }, onSelect: function (unix) { - let gregorianDate = new persianDate(unix).toCalendar('gregorian').toLocale('en'); - let dateStrTarget = gregorianDate.format('YYYY-MM-DD'); - $('#target_date_gregorian').val(dateStrTarget); + const gregorianDate = new persianDate(unix).toCalendar('gregorian').toLocale('en'); + $('#target_date_gregorian').val(gregorianDate.format('YYYY-MM-DD')); } }); - // اگر تسک موجود برای ویرایش است، تاریخ‌ها را از دیتابیس ست کن + // نمایش شمسی را از روی تاریخ میلادی بساز (نه برعکس) تا دیت‌پیکر اشتباه تفسیر نکند @if(!empty($task) && !empty($task->start_date)) $('#start_date_gregorian').val(@json(\App\Support\JalaliHelper::toGregorianDate($task->start_date))); - $('#start_date').val(@json(\App\Support\JalaliHelper::format($task->start_date, 'Y/m/d', ''))); @endif + const startGregorian = $('#start_date_gregorian').val() || @json($defaultStartGregorian); + $('#start_date_gregorian').val(startGregorian); + $('#start_date').val(jalaliFromGregorianYmd(startGregorian)); + @if(!empty($task) && !empty($task->target_date)) - $('#target_date_gregorian').val(@json(\App\Support\JalaliHelper::toGregorianDate($task->target_date))); - $('#target_date').val(@json(\App\Support\JalaliHelper::format($task->target_date, 'Y/m/d', ''))); + const targetGregorian = @json(\App\Support\JalaliHelper::toGregorianDate($task->target_date)); + $('#target_date_gregorian').val(targetGregorian); + $('#target_date').val(jalaliFromGregorianYmd(targetGregorian)); @endif $('form').on('submit', function () { syncGregorianFromDisplay('#start_date', '#start_date_gregorian'); syncGregorianFromDisplay('#target_date', '#target_date_gregorian'); if (!$('#start_date_gregorian').val()) { - const todayUnix = new persianDate().valueOf(); - $('#start_date').val(new persianDate(todayUnix).format('YYYY/MM/DD')); - $('#start_date_gregorian').val( - new persianDate(todayUnix).toCalendar('gregorian').toLocale('en').format('YYYY-MM-DD') - ); + const today = new Date(); + const ymd = [ + today.getFullYear(), + String(today.getMonth() + 1).padStart(2, '0'), + String(today.getDate()).padStart(2, '0') + ].join('-'); + $('#start_date_gregorian').val(ymd); + $('#start_date').val(jalaliFromGregorianYmd(ymd)); } });