Edit start date
This commit is contained in:
@@ -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));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user