- JalaliDatePicker gains an opt-in `stepwise` mode (year → month → day): the year step is a scrollable list from the current Jalali year down to 1332, used by the birthday field. Default-off so appointment/panel pickers keep the month-grid behavior. Parse incoming Jalali string values safely (fixes NaN keys). - Birthday create path now converts Jalali→Unix on send (changeDateType true), matching the update path and the Unix-based backend contract. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.3 KiB
رفع جهت تبدیل تاریخ تولد هنگام ایجاد پروفایل
پروژه
nobat724_front (سایت عمومی، داشبورد).
Cross-repo: وابسته به پرامپت بکاند
clinicpro/.claude/prompt/profile-birthday-jalali-persist.md(کهbirthdayرا بهصورت Unix ذخیره/برمیگرداند). آن اول اجرا شود.
زمینه
تاریخ تولد در فرم داشبورد بهصورت رشتهی جلالی از JalaliDatePicker میآید (information.birthday = "jYYYY/jM/jD"). تابع changeDateType(data, toTimeStamp) در helper/index.js بین جلالیرشته و Unix تبدیل میکند:
toTimeStamp=true→moment(birthday, "jYYYY/jMM/jDD").unix()(جلالی → Unix، برای ارسال)toTimeStamp=false→moment.unix(birthday).format("jYYYY/jMM/jDD")(Unix → جلالی، برای نمایش)
بکاند birthday را بهصورت Unix میپذیرد و برمیگرداند. مسیر بهروزرسانی (patchData) درست changeDateType(usedKays, true) میزند. اما مسیر ایجاد (postData) بهاشتباه changeDateType(information, false) میزند — یعنی هنگام ارسال، جهت تبدیل برعکس است و moment.unix(جلالی-رشته) یک مقدار بیمعنا تولید میکند. در نتیجه هنگام ایجاد پروفایل، تاریخ تولد خراب ذخیره میشود.
مشکل / هدف
در postData جهت changeDateType باید true باشد (مثل patchData)، تا birthday جلالی به Unix تبدیل و سپس ارسال شود.
فایلهای مرتبط
| فایل | نقش |
|---|---|
components/dashboard/userAccount/detailUser/information/ButtonSendData.js |
postData (ایجاد) — جهت اشتباه |
helper/index.js |
changeDateType (مرجع — تغییر نمیکند) |
وضعیت فعلی (کد واقعی)
const postData = () => {
request
.postUserProfile(changeDateType(information, false)) // ❌ باید true باشد (مثل patchData)
// ...
};
const patchData = () => {
const usedKays = removeAdditionalKeysDashboard(information);
request
.patchUserProfile(changeDateType(usedKays, true), information?.uuid, ...) // ✅ درست
// ...
};
وظایف
۱. اصلاح جهت در postData
request.postUserProfile(changeDateType(information, true))
- فقط
false→true. بقیهی منطقpostDataبدون تغییر.
نکات مهم
changeDateTypeوpatchDataتغییر نمیکنند؛ فقط یک آرگومان درpostDataاصلاح میشود.- نمایش (load) از قبل با
changeDateType(changedData, false)درinformation/index.jsدرست است وbirthdayکه حالا بکاند بهصورت Unix میدهد را به جلالی تبدیل میکند — تغییری لازم ندارد. - بعد از تغییر:
npm run buildبدون خطا؛ تست دستی — ایجاد پروفایل جدید با تاریخ تولد → ذخیره و سپس نمایش درستِ همان تاریخ؛ و بهروزرسانی هم همچنان درست کار کند.