Edit start date

This commit is contained in:
2026-07-25 11:51:27 +03:30
parent 3c0a797485
commit c54038d986
+35 -22
View File
@@ -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
<input type="text" id="start_date" name="start_date_display" class="ui-input"
value="{{ old('start_date_display', $defaultStartJalali) }}"
value=""
placeholder="تاریخ شروع" autocomplete="off" readonly required>
<input type="hidden" name="start_date" id="start_date_gregorian"
value="{{ old('start_date', $defaultStartGregorian) }}">
@@ -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));
}
});