From c688f48583227e738164daea018b3159fcc2db2d Mon Sep 17 00:00:00 2001 From: hamed <15238-genius.ha@users.noreply.drupalcode.org> Date: Mon, 3 Aug 2026 13:08:31 +0330 Subject: [PATCH] fix(appointments): give the resource strip a way back to the doctor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Returning from a resource to the doctor's own booking meant clicking the doctor tab in the row above, which nobody found. The resource strip now leads with a "نوبت‌های خود پزشک" tab that clears the resource, so going in and coming back happen in the same row. Co-Authored-By: Claude Opus 5 (1M context) --- assets/admin/pages/AppointmentsPage.test.tsx | 14 ++++++++++++++ assets/admin/pages/AppointmentsPage.tsx | 9 +++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/assets/admin/pages/AppointmentsPage.test.tsx b/assets/admin/pages/AppointmentsPage.test.tsx index 5eb6ca4c..04d55cde 100644 --- a/assets/admin/pages/AppointmentsPage.test.tsx +++ b/assets/admin/pages/AppointmentsPage.test.tsx @@ -140,6 +140,20 @@ describe('AppointmentsPage — پروفایل کلینیک چندپزشکه', () expect(screen.queryByRole('button', { name: 'لیزر CO2' })).toBeNull(); }); + /** برگشت از منبع به خودِ پزشک باید در همان نوار باشد، نه با کلیک روی تب بالایی. */ + it('تب نخستِ نوار منابع، برگشت به نوبت‌دهی خود پزشک است', async () => { + const user = userEvent.setup(); + renderWithProviders(); + + await screen.findByText('دکتر محمدی'); + await user.click(await screen.findByRole('button', { name: 'لیزر CO2' })); + expect(await screen.findByText(/نوبت‌دهی این منبع سرویسی است/)).toBeInTheDocument(); + + await user.click(screen.getByRole('button', { name: 'نوبت‌های خود پزشک' })); + + expect(screen.queryByText(/نوبت‌دهی این منبع سرویسی است/)).toBeNull(); + }); + /** باگ گزارش‌شده: نمای منبع نباید اسلاتی باشد. */ it('نمای منبع سرویسی است و تایم‌لاین اسلاتی ندارد', async () => { const user = userEvent.setup(); diff --git a/assets/admin/pages/AppointmentsPage.tsx b/assets/admin/pages/AppointmentsPage.tsx index 787c6dea..dab274b8 100644 --- a/assets/admin/pages/AppointmentsPage.tsx +++ b/assets/admin/pages/AppointmentsPage.tsx @@ -888,9 +888,14 @@ export default function AppointmentsPage() { (پزشک ناظر)، پس کاربر بین نوبت‌های پزشک و دستگاه‌های تحت نظرش جابه‌جا می‌شود. */} {supervisedResources.length > 0 && (
- منابعِ این پزشک + نوبت‌دهی + {/* تب نخست راهِ بازگشت است: بدون آن، برگشتن از منبع به خودِ پزشک فقط با + کلیک روی تب بالایی ممکن بود و کاربر دنبالش می‌گشت. */} ({ uuid: r.uuid, name: r.name }))} + doctors={[ + { uuid: '', name: 'نوبت‌های خود پزشک' }, + ...supervisedResources.map((r) => ({ uuid: r.uuid, name: r.name })), + ]} selected={selectedResourceUuid} onSelect={selectResource} showAll={false}