feat(dashboard): stepwise Jalali birthday picker + correct send direction
- 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>
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# رفع جهت تبدیل تاریخ تولد هنگام ایجاد پروفایل
|
||||
|
||||
## پروژه
|
||||
|
||||
`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` (مرجع — تغییر نمیکند) |
|
||||
|
||||
## وضعیت فعلی (کد واقعی)
|
||||
|
||||
```js
|
||||
const postData = () => {
|
||||
request
|
||||
.postUserProfile(changeDateType(information, false)) // ❌ باید true باشد (مثل patchData)
|
||||
// ...
|
||||
};
|
||||
|
||||
const patchData = () => {
|
||||
const usedKays = removeAdditionalKeysDashboard(information);
|
||||
request
|
||||
.patchUserProfile(changeDateType(usedKays, true), information?.uuid, ...) // ✅ درست
|
||||
// ...
|
||||
};
|
||||
```
|
||||
|
||||
## وظایف
|
||||
|
||||
### ۱. اصلاح جهت در `postData`
|
||||
```js
|
||||
request.postUserProfile(changeDateType(information, true))
|
||||
```
|
||||
- فقط `false` → `true`. بقیهی منطق `postData` بدون تغییر.
|
||||
|
||||
## نکات مهم
|
||||
|
||||
- `changeDateType` و `patchData` تغییر نمیکنند؛ فقط یک آرگومان در `postData` اصلاح میشود.
|
||||
- نمایش (load) از قبل با `changeDateType(changedData, false)` در `information/index.js` درست است و `birthday` که حالا بکاند بهصورت Unix میدهد را به جلالی تبدیل میکند — تغییری لازم ندارد.
|
||||
- بعد از تغییر: `npm run build` بدون خطا؛ تست دستی — ایجاد پروفایل جدید با تاریخ تولد → ذخیره و سپس نمایش درستِ همان تاریخ؛ و بهروزرسانی هم همچنان درست کار کند.
|
||||
Reference in New Issue
Block a user